Artículo de publicación ISIIn 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
Integration of the AFP delta-slope with conventional criteria may further improve patient selection and post-LT outcomes; prospective studies are needed to validate the present proposed model.
In standard AspectJ, aspects and base code are often insufficiently decoupled, as aspects hold pointcuts, which can contain explicit textual references to base code. This hinders aspect evolution and reuse, and may hinder reasoning about aspects on the base-code side.In this demo we present join point interfaces as an extension to the aspect-oriented programming language AspectJ. Opposed to AspectJ, with join point interfaces aspects and base code communicate only through a shared interface abstraction. Aspects themselves go without pointcuts and only reference the interface. Pointcuts are typically defined on the base-code side, or not at all, as join point interfaces also support pure explicit invocation as known from publish-subscribe systems. As a result, users obtain a language which decouples aspects from base code using a modular type-checking algorithm, and which they can use to adopt aspects gradually as they desire.One major undertaking in the design of join point interfaces was to make the language as flexible to use as standard AspectJ, while nevertheless providing interfaces supported by strong type checks that can completely avoid type errors at composition time. In this demo we will discuss this inherent trade-off, we will present JPIs as an extension to the AspectBench Compiler, and will show how the language eases the maintenance of existing AspectJ applications.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.