A calculus of superimpositions for distributed systems

  • Authors:
  • Marcelo Sihman;Shmuel Katz

  • Affiliations:
  • Technion - Israel Institute of Technology, Haifa 32000, Israel;Technion - Israel Institute of Technology, Haifa 32000, Israel

  • Venue:
  • AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
  • Year:
  • 2002

Quantified Score

Hi-index 0.01

Visualization

Abstract

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.