Aspect Refinement Ð Unifying AOP and Stepwise Refinement

Stepwise refinement (SWR) is fundamental to software engineering. As aspectoriented programming (AOP) is gaining momentum in software development, aspects should be considered in the light of SWR. In this paper, we elaborate the notion of aspect refinement that unifies AOP and SWR at the architectural level. To reflect this unification to the programming language level, we present an implementation technique for refining aspects based on mixin composition along with a set of language mechanisms for refining all kinds of structural elements of aspects in a uniform way (methods, pointcuts, advice). To underpin our proposal, we contribute a fully functional compiler on top of AspectJ, present a non-trivial, medium-sized case study, and derive a set of programming guidelines.

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

[2]  Tom Mens,et al.  Aspect-oriented software evolution , 2004 .

[3]  Günter Kniesel,et al.  A Definition, Overview and Taxonomy of Generic Aspect Languages , 2006, Obj. Logiciel Base données Réseaux.

[4]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[5]  Don Batory,et al.  Scaling step-wise refinement , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

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

[7]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[8]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

[9]  Gunter Saake,et al.  Implementing Bounded Aspect Quantification in AspectJ , 2006, RAM-SE.

[10]  Ondrej Lhoták,et al.  abc : An Extensible AspectJ Compiler , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[11]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

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

[13]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[14]  Roberto Erick Lopez-Herrejon,et al.  Evaluating Support for Features in Advanced Modularization Technologies , 2005, ECOOP.

[15]  Hidehiko Masuhara,et al.  Modeling Crosscutting in Aspect-Oriented Mechanisms , 2003, ECOOP.

[16]  Shmuel Katz,et al.  Superimpositions and Aspect-oriented Programming , 2003, Comput. J..

[17]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[18]  Stefan Hanenberg,et al.  AspectJ Idioms for Aspect-Oriented Software Construction , 2003, EuroPLoP.

[19]  Siobhán Clarke,et al.  Aspect-oriented analysis and design - the theme approach , 2005, Addison Wesley object technology series.

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

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

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

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

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

[25]  Sven Apel,et al.  When to use features and aspects?: a case study , 2006, GPCE '06.

[26]  Václav Rajlich,et al.  Changing the paradigm of software engineering , 2006, CACM.

[27]  Eric Bodden,et al.  Avoiding Infinite Recursion with Stratified Aspects , 2006, NODe/GSEM.

[28]  Sven Apel,et al.  On the Notion of Functional Aspects in Aspect-Oriented Refactoring , 2006 .

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

[30]  Thomas Leich,et al.  Generic feature modules: Two-staged program customization , 2006, ICSOFT.

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

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

[33]  Nissim Francez,et al.  A compositional approach to superimposition , 1988, POPL '88.

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