Communicating sequential processes
Communicating sequential processes
Automatic verification of finite-state concurrent systems using temporal logic specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallel program design: a foundation
Parallel program design: a foundation
Concurrency in heavily loaded neighborhood-constrained systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
A compositional approach to superimposition
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Object-oriented specification of reactive systems
ICSE '90 Proceedings of the 12th international conference on Software engineering
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
A superimposition control construct for distributed systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Model checking
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Proceedings of the Workshop on Object-Oriented Technology
Architectural views of aspects
Proceedings of the 2nd international conference on Aspect-oriented software development
Proceedings of the 5th international conference on Generative programming and component engineering
Detection and Resolution of Weaving Interactions
Transactions on Aspect-Oriented Software Development V
Coordination as an Architectural Aspect
Electronic Notes in Theoretical Computer Science (ENTCS)
Making aspects natural: events and composition
Proceedings of the tenth international conference on Aspect-oriented software development
Rigorous fault tolerance using aspects and formal methods
Rigorous Development of Complex Fault-Tolerant Systems
Temporal superimposition of aspects for dynamic software architecture
FMOODS'06 Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
On horizontal specification architectures and their aspect-oriented implementations
Transactions on Aspect-Oriented Software Development II
Hi-index | 0.01 |
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.