Bibliography on Aspect Reuse
(last updated: 2010-09-16)
Reusing aspects in different applications is currently a topic of intensive discussion in the research community. A number of contributions have been made showing how reusable aspects can be produced for specific purposes, but a generic solution supporting developers in building reusable aspects has not been achieved yet. As part of my RIVAR fellowship, I am interested in making aspects more reusable. Here, I collect related work, both concerning the challenges of aspect reuse and first solutions addressing these challenges. This bibliography is by no means complete. Any hints or suggestions are more than welcome.
To enable developers to confidently reuse aspects, they need some sort of reassurance that the aspects will behave as expected in the new reuse environment. Ideally, it should be able to provide a proof that this is the case. A number of aspect properties cause particular challenges to the reuse of aspects in different contexts; or sometimes even with a modified (evolved) base. Most importantly, these are:
- Reliance on syntactic pointcuts leading to the so-called fragile-pointcut problem;
- Lack of explicit interfaces making modular reasoning more complicated; and
- Obliviousness, making it more difficult to decide which aspects need to be considered in a particular reasoning scenario.
Fragile-Pointcut Problem
Many aspect-oriented systems (most notably AspectJ) use syntactic patterns over names of elements of the base code to define where aspects should be woven into the base. As a consequence, there is a gap between a developer’s intention about the relation between aspect and base and the specification of this relation. Thus, when base code is changed or when the aspect is reused in a different context, the specification may no longer correctly represent the developer’s intention. This is often referred to as the fragile-pointcut problem.
R. Khatchadourian, P. Greenwood, and A. Rashid. On the
assessment of pointcut design in evolving aspect-oriented
software. In Proc. 2nd Workshop on Assessment of
Contemporary Modularization Techniques (ACoM.08), 2008.
Phil Greenwood, Awais Rashid, and Raffi T.
Khatchadourian. Contributing factors to pointcut fragility. In
3rd Workshop on Assessment of Contemporary
Modularization Techniques (ACoM.09), 2009.
One way of addressing the fragile-pointcut problem is to introduce more semantic pointcut specification languages that rely less on syntactic features and, thus, can narrow the gap between a developer’s intention and the pointcut specification. Ostermann et al. present one such approach using a flexible pointcut language inspired by Prolog. Chitchyan et al. discuss another approach, specifically geared at aspect-oriented requirements engineering.
K. Ostermann, M. Mezini, and C. Bockisch. Expressive pointcuts for increased modularity. In A. P. Black, editor. Proc. European Conference on
Object-Oriented Programming (ECOOP’05), volume 3586
of LNCS. Springer, 2005, pages
214–240.
Chitchyan, R., Greenwood, P., Sampaio, A., Rashid, A., Garcia, A., and Fernandes da Silva, L. 2009. Semantic vs. syntactic compositions in aspect-oriented requirements engineering: an empirical study. In Proceedings of the 8th ACM international Conference on Aspect-Oriented Software Development (Charlottesville, Virginia, USA, March 02 - 06, 2009). AOSD '09. ACM, New York, NY, 149-160.
As an alternative, Khatchadourian et al. aim to reverse-engineer the intention behind a syntactic pointcut specification and use this to guide developers in software maintenance and evolution.
R. Khatchadourian, P. Greenwood, and A. Rashid. On the
assessment of pointcut design in evolving aspect-oriented
software. In Proc. 2nd Workshop on Assessment of
Contemporary Modularization Techniques (ACoM.08), 2008.
Phil Greenwood, Awais Rashid, and Raffi T.
Khatchadourian. Contributing factors to pointcut fragility. In
3rd Workshop on Assessment of Contemporary
Modularization Techniques (ACoM.09), 2009.
Lack of Explicit Interfaces
Another approach to addressing pointcut fragility is to introduce explicit interfaces for aspects. Approaches such as Object Teams, Explicit Pointcut Interfaces (XPIs), and Open Modules aim to decouple the pointcut specifications used in an aspect from the actual names used within a core application. This is also true for Invasive Software Composition as realised in the Reuseware tool. Typically, these approaches introduce intermediary names that form an explicit interface between core modules and aspects. The interface definition is still completely based upon syntactic information only; semantic assumptions of aspect designers cannot be expressed in this form. Mapping between names used in the pointcut definition and names in the core module is still a manual and error-prone task. Because no semantic information is available, the correctness of these mappings cannot be verified or tested.
S. Herrmann: A Precise Model for Contextual Roles: The Programming Language ObjectTeams/
Java. Applied Ontology 2(2):181–207, IOS Press, 2007.
W. G. Griswold, M. Shonle, K. Sullivan, Y. Song, N. Tewari, Y. Cai, H. Rajan: Modular software design with crosscutting interfaces. IEEE Software 23(1):51-60, 2006.
J. Aldrich: Open Modules: Modular Reasoning about Advice. ECOOP 2005.
U. Aßmann: Invasive Software Composition. Springer, 2003.
Florian Heidenreich, Jakob Henriksson, Jendrik Johannes, and Steffen Zschaler: On Language-Independent Model Modularisation. Transactions on Aspect-Oriented Development VI, Special Issue on Aspects and MDE. LNCS 5560, pp. 39--82, Springer
Jakob Henriksson, Florian Heidenreich, Jendrik Johannes, Steffen Zschaler, and Uwe Assmann: Extending Grammars and Metamodels for Reuse -- The Reuseware Approach. IET Software, Special Issue on Language Engineering, 2(3):165-184, IET 2008.
In the area of aspect-oriented modelling, contracts and interfaces for aspect or base models have been proposed, for example, by Oldevik et al and by Klein and Kienzle.
J. Klein and J. Kienzle: Reusable Aspect Models. Aspect-Oriented Modeling Workshop at MODELS 2007.
Oldevik, J., Menarini, M., and Krüger, I. 2009. Model Composition Contracts. In Proceedings of the 12th international Conference on Model Driven Engineering Languages and Systems (Denver, CO, October 04 - 09, 2009). A. Schürr and B. Selic, Eds. Lecture Notes In Computer Science, vol. 5795. Springer-Verlag, Berlin, Heidelberg, 531-545.
Obliviousness
An important discussion in the AO community is whether core modules should be oblivious of aspects woven into them. This is also relevant for aspect reuse, because oblivious aspects may be manipulated by other aspects at any time, making verification harder.
R.E. Filman and D.P. Friedman: Aspect-Oriented Programming is Quantification and Obliviousness.
Workshop on Advanced Separation of Concerns, OOPSLA 2000.
A. Rashid, and A. Moreira: Domain Models Are NOT Aspect Free. MODELS 2006: 155-
169.
F. Steimann: Domain Models are Aspect Free. MODELS 2005: 171-185.
Aspect Verification
An important requirement for aspect reuse is being able to verify aspect behaviour independently.
A number of papers aim to classify aspects into categories, so that all aspects in a category share the same constraints regarding how they can at most influence properties of the base code.
S. Katz: Aspect categories and classes of temporal properties. Transactions on Aspect Oriented
Software Development (TAOSD), 1:106–134, LNCS 3880, Springer, 2006.
Curtis Clifton and Gary T. Leavens. Obliviousness, modular
reasoning, and the behavioural subtyping analogy. In Proc.
Workshop on Software-Engineering Properties of Languages
for Aspect Technologies (SPLAT’03), 2003.
Goldman and Katz present work that allows to prove that an aspect guarantees certain
LTL properties for any application that it is woven with, as long as this application fulfils certain assumptions, also expressed as an LTL formula.
M. Goldman and S. Katz: Modular generic verification of LTL properties for aspects. Foundations of Aspect Languages Workshop (FOAL06), 2006.
Max Goldman and Shmuel Katz. MAVEN: Modular aspect verification. In Orna Grumberg and Michael Huth, editors,
Proc. 13th Int’l Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’07), volume
4424 of LNCS, pages 308–322. Springer-Verlag, 2007.
A number of papers focus on showing that properties of a core module are maintained even if an aspect is woven.
J. Aldrich: Open Modules: Modular Reasoning about Advice. ECOOP 2005.
S. Katz: Aspect categories and classes of temporal properties. Transactions on Aspect Oriented
Software Development (TAOSD), 1:106–134, LNCS 3880, Springer, 2006.
S. Krishnamurthi, K. Fisler, and M. Greenberg: Verifying Aspect Advice Modularly. SIGSOFT
Soft. Eng. Not. 29(6):137–146, ACM, 2004.
Curtis Clifton and Gary T. Leavens. Obliviousness, modular
reasoning, and the behavioural subtyping analogy. In Proc.
Workshop on Software-Engineering Properties of Languages
for Aspect Technologies (SPLAT’03), 2003.
All of these approaches rely on the correct formal representation of aspect assumptions and guarantees. There is some work that aims to address this challenge: Oliviera et al. provide a Haskell-based representation of assumptions and guarantees. Katz and Katz allow formal specifications for complicated cases to be constructed interactively. Zschaler presents a retrospective study of what assumptions aspect developers make.
Bruno C. d. S. Oliveira, Tom Schrijvers, and William R.
Cook. EffectiveAdvice: Disciplined advice with explicit
effects. In Proc. 9th Int’l Conf. on Aspect-Oriented Software
Development (AOSD’10), pages 109–120. ACM, 2010.
Emilia Katz and Shmuel Katz. User queries for specification refinement treating shared aspect join points. In José Luis
Fiadeiro and Stefania Gnesi, editors, Proc. 8th IEEE Int’l
Conference on Software Engineering and Formal Methods
(SEFM’10), 2010.
Steffen Zschaler and Awais Rashid: Aspect Assumptions: A retrospective study of AspectJ developers' assumptions about aspect usage. Accepted for publication at AOSD'2011