TY - GEN
T1 - A Calculus of Superimpositions for Distributed Systems
AU - Sihman, Marcelo
AU - Katz, Shmuel
PY - 2002
Y1 - 2002
N2 - A superimposition is a program module that can augment an underlying distributed program with added functionality, while cutting across usual language modularity constructs like processes, packages, or objects. Two ways of combining superimpositions to create new superimpositions are presented. In sequential combinations a new superimposition is obtained that is equivalent to first applying one, and then applying the second to the result. In merging combinations, it is as if each component superimposition is applied independently to a basic program, without mutual influences. In both cases the applicability conditions and the result assertions of the component superimpositions are compared and used to determine whether the combination is possible. If so, they are then combined along with the code of the components to obtain both the specification and the code of the resultant superimposition, without considering any specific basic program. By using combinations of superimpositions from libraries, fewer components need be constructed manually, and programming techniques for independent issues can be codified. Among the examples we consider are versions of dining philosopher algorithms (exemplifying different scheduling techniques), a superimposition to make a program with a fixed number of processes able to handle process addition and deletion, and snapshot algorithms.
AB - A superimposition is a program module that can augment an underlying distributed program with added functionality, while cutting across usual language modularity constructs like processes, packages, or objects. Two ways of combining superimpositions to create new superimpositions are presented. In sequential combinations a new superimposition is obtained that is equivalent to first applying one, and then applying the second to the result. In merging combinations, it is as if each component superimposition is applied independently to a basic program, without mutual influences. In both cases the applicability conditions and the result assertions of the component superimpositions are compared and used to determine whether the combination is possible. If so, they are then combined along with the code of the components to obtain both the specification and the code of the resultant superimposition, without considering any specific basic program. By using combinations of superimpositions from libraries, fewer components need be constructed manually, and programming techniques for independent issues can be codified. Among the examples we consider are versions of dining philosopher algorithms (exemplifying different scheduling techniques), a superimposition to make a program with a fixed number of processes able to handle process addition and deletion, and snapshot algorithms.
UR - http://www.scopus.com/inward/record.url?scp=0141761290&partnerID=8YFLogxK
U2 - 10.1145/508387.508391
DO - 10.1145/508387.508391
M3 - ???researchoutput.researchoutputtypes.contributiontobookanthology.conference???
AN - SCOPUS:0141761290
SN - 158113469X
SN - 9781581134698
T3 - 1st International Conference on Aspect-Oriented Software Development
SP - 28
EP - 40
BT - 1st International Conference on Aspect-Oriented Software Development
A2 - Kinzales, G.
PB - Association for Computing Machinery (ACM)
T2 - 1st International Conference on Aspect-Oriented Software Development (AOSD 2002)
Y2 - 22 April 2002 through 26 April 2002
ER -