Aspects and Superimpositions
Shmuel M. Katz, Joseph A. Gil · 1999
this paper is that the aspect-oriented programming (AOP) community should become familiar with and exploit an existing body of research in distributed systems that explores a notion called superimposition. Just as in AOP, superimposition is orthogonal to the usual breakdown into modules. Superimposition makes it possible to break the design of a system into several subtasks. One subtask is to be solved by the basic algorithm that the system has to implement. Other subtasks could insure liveness (progress of the computation), increase parallelism, take snapshots, etc. A superimposer then interleaves these separate designs into a single program operating in the same state space.