Mixin-Based Aspect Inheritance

Introducing mixin-based inheritance to AOP improves the capabilities of aspects to implement incremental designs. Since it enhances the inheritance mechanism with more flexibility, it is a key technology to reuse, compose, and evolve aspects in a step-wise manner over several development stages (step-wise aspect refinement). The introduction of mixin capabilities to aspects leads to the unification of the aspect’s structural elements with respect to step-wise refinement, i.e. in a chain of refining aspects every element (methods, pointcuts, advice) can be refined by subsequent elements without knowing the exact type of the enclosing aspect. In this context we introduce anonymous calls to parent pointcuts as well as named advice, a unification of advice and methods. Making these extensions to aspects, aspect refinement enables the programmer to implement higher-order aspects – aspects that modify other aspects. Furthermore, we show how to tame aspects using a bounded aspect quantification based on the knowledge of incremental designs. We contribute an extended AspectJ grammar, its formal semantics, as well as an implementation approach based on program transformation.

[1]  Kris Gybels,et al.  Arranging language features for more robust pattern-based crosscuts , 2003, AOSD '03.

[2]  Awais Rashid,et al.  Framed Aspects: Supporting Variability and Configurability for AOP , 2004, ICSR.

[3]  Mira Mezini,et al.  Variability management with feature-oriented programming and aspects , 2004, SIGSOFT '04/FSE-12.

[4]  Thomas Leich,et al.  FeatureC++: on the symbiosis of feature-oriented and aspect-oriented programming , 2005, GPCE'05.

[5]  Stefan Hanenberg,et al.  Using and Reusing Aspects in AspectJ , 2001 .

[6]  Linda G. DeMichiel,et al.  The Common Lisp Object System: An Overview , 1987, ECOOP.

[7]  Shriram Krishnamurthi,et al.  Pointcuts and advice in higher-order languages , 2003, AOSD '03.

[8]  Antero Taivalsaari,et al.  On the notion of inheritance , 1996, CSUR.

[9]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[10]  Erik Ernst,et al.  Family Polymorphism , 2001, ECOOP.

[11]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[12]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[13]  H. Rajan,et al.  Classpects: unifying aspect- and object-oriented language design , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[14]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[15]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[16]  Jia Liu,et al.  Refinements and multi-dimensional separation of concerns , 2003, ESEC/FSE-11.

[17]  Stefan Hanenberg,et al.  Idioms for Building Software Frameworks in AspectJ , 2003 .

[18]  Stefan Hanenberg,et al.  Parametric introductions , 2003, AOSD '03.

[19]  Jonathan Aldrich,et al.  Open Modules: Modular Reasoning About Advice , 2005, ECOOP.

[20]  K.J. Lieberherr,et al.  Controlling the complexity of software designs , 2004, Proceedings. 26th International Conference on Software Engineering.

[21]  Stefan Hanenberg,et al.  Evolvable Pattern Implementations Need Generic Aspects , 2004, RAM-SE.

[22]  Radha Jagadeesan,et al.  A Calculus of Untyped Aspect-Oriented Programs , 2003, ECOOP.

[23]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[24]  Don S. Batory,et al.  Creating reference architectures: an example from avionics , 1995, SSR '95.

[25]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[26]  Don S. Batory,et al.  P2: A Lightweight DBMS Generator , 1997, Journal of Intelligent Information Systems.

[27]  Sven Apel,et al.  Towards the Development of Ubiquitous Middleware Product Lines , 2004, SEM.

[28]  Olaf Spinczyk,et al.  Generic Advice: On the Combination of AOP with Generative Programming in AspectC++ , 2004, GPCE.

[29]  Thomas Leich,et al.  Aspect refinement and bounding quantification in incremental designs , 2005, 12th Asia-Pacific Software Engineering Conference (APSEC'05).

[30]  Thomas Leich,et al.  Aspectual mixin layers: aspects and features in concert , 2006, ICSE '06.

[31]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

[32]  G. Kiczales,et al.  Aspect-oriented programming and modular reasoning , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[33]  Roger T. Alexander,et al.  Distributing classes with woven concerns: an exploration of potential fault scenarios , 2005, AOSD '05.

[34]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[35]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[36]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[37]  Calvin Lin,et al.  Using mixins to build flexible widgets , 2002, AOSD '02.