Join point interfaces for safe and flexible decoupling of aspects
Author
dc.contributor.author
Bodden, Eric
Author
dc.contributor.author
Tanter, Éric Pierre
es_CL
Author
dc.contributor.author
Inostroza, Víctor
es_CL
Admission date
dc.date.accessioned
2015-01-07T19:23:44Z
Available date
dc.date.available
2015-01-07T19:23:44Z
Publication date
dc.date.issued
2014
Cita de ítem
dc.identifier.citation
Transactions on Software Engineering and Methodology, Vol. 23, No. 1, Article 7, Pub. date: February 2014.
en_US
Identifier
dc.identifier.other
DOI: 10.1145/2559933
Identifier
dc.identifier.uri
https://repositorio.uchile.cl/handle/2250/126984
General note
dc.description
Artículo de publicación ISI
en_US
Abstract
dc.description.abstract
In current aspect-oriented systems, aspects usually carry, through their pointcuts, explicit references to
the base code. Those references are fragile and hinder important software engineering properties such as
modular reasoning and independent evolution of aspects and base code. In this work, we introduce a novel
abstraction called Join Point Interface, which, by design, aids modular reasoning and independent evolution
by decoupling aspects from base code and by providing a modular type-checking algorithm. Join point
interfaces can be used both with implicit announcement through pointcuts, and with explicit announcement,
using closure join points. Join point interfaces further offer polymorphic dispatch on join points, with an
advice-dispatch semantics akin to multimethods. To support flexible join point matching, we incorporate
into our language an earlier proposal for generic advice, and introduce a mechanism for controlled global
quantification.We motivate each language feature in detail, showing that it is necessary to obtain a language
design that is both type safe and flexible enough to support typical aspect-oriented programming idioms.
We have implemented join point interfaces as an open-source extension to AspectJ. A case study on existing
aspect-oriented programs supports our design, and in particular shows the necessity of both generic interfaces
and some mechanism for global quantification.