TY - JOUR
T1 - Superimpositions and aspect-oriented programming
AU - Sihman, Marcelo
AU - Katz, Shmuel
PY - 2003
Y1 - 2003
N2 - The ideas of a classic distributed superimposition are used to design a new object-oriented version incorporating aspects. A superimposition is a collection of generic parameterized aspects and new classes (often singleton concrete classes). Superimpositions can be combined, either sequentially or in a merge, to create new ones. Superimpositions also include specifications about assumed properties of basic programs to which the superimposition can be applied and desired properties added by the superimposition. These specifications are used to define proof obligations for the correctness of superimpositions and to check feasibility of combining superimpositions. SuperJ, a notation and an implemented preprocessor over AspectJ, is described, SuperJ can be used to apply a superimposition to a basic system, generating concrete aspects from generic aspects and then weaving them to basic classes. Superimpositions are separately declared, specified and verified. Among the examples used to demonstrate the approach are a termination detection algorithm, a version of the Dining Philosophers Problem and a monitoring superimposition that gathers statistics on basic objects.
AB - The ideas of a classic distributed superimposition are used to design a new object-oriented version incorporating aspects. A superimposition is a collection of generic parameterized aspects and new classes (often singleton concrete classes). Superimpositions can be combined, either sequentially or in a merge, to create new ones. Superimpositions also include specifications about assumed properties of basic programs to which the superimposition can be applied and desired properties added by the superimposition. These specifications are used to define proof obligations for the correctness of superimpositions and to check feasibility of combining superimpositions. SuperJ, a notation and an implemented preprocessor over AspectJ, is described, SuperJ can be used to apply a superimposition to a basic system, generating concrete aspects from generic aspects and then weaving them to basic classes. Superimpositions are separately declared, specified and verified. Among the examples used to demonstrate the approach are a termination detection algorithm, a version of the Dining Philosophers Problem and a monitoring superimposition that gathers statistics on basic objects.
UR - http://www.scopus.com/inward/record.url?scp=0041910988&partnerID=8YFLogxK
U2 - 10.1093/comjnl/46.5.529
DO - 10.1093/comjnl/46.5.529
M3 - ???researchoutput.researchoutputtypes.contributiontojournal.article???
AN - SCOPUS:0041910988
SN - 0010-4620
VL - 46
SP - 529
EP - 541
JO - Computer Journal
JF - Computer Journal
IS - 5
ER -