A Definition, Overview and Taxonomy of Generic Aspect Languages

Many aspect languages do not provide the degree of aspect reusability initially hoped for. In this paper, we show that the problem stems from lacking support for genericity. Aspect genericity is the ability to express aspect effects that vary depending on the context of a join point, without falling back to run-time reflection. We identify the ability to parameterize aspect effects with meta-variables ranging over base language elements as the technical prerequisite for achieving genericity and describe the design space for generic aspect languages in terms of five basic questions that a language designer should consider. Within this space we review existing proposals for generic aspect languages, and discuss which part of the possible design space they explore. Finally, we identify open problems they are specific to aspect genericity or aggravated in the presence of genericity.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[3]  Renaud Pawlak Spoon: annotation-driven program transformation --- the AOP case , 2005, AOMD '05.

[4]  Fernando Castor,et al.  A Language for Specifying Java Transformations , 2001 .

[5]  John R. Gurd,et al.  Using AspectJ to separate concerns in parallel scientific Java code , 2004, AOSD '04.

[6]  John R. Gurd,et al.  A join point for loops in AspectJ , 2006, AOSD '06.

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

[8]  Ralf Lämmel,et al.  Strategic programming meets adaptive programming , 2003, AOSD '03.

[9]  Doug Orleans Separating Behavioral Concerns With Predicate Dispatch, or, If Statement Considered Harmful , 2001 .

[10]  Maja D'Hondt,et al.  Hybrid aspects for weaving object-oriented functionality and rule-based knowledge , 2004, AOSD '04.

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

[12]  Shan Shan Huang,et al.  Generating AspectJ Programs with Meta-AspectJ , 2004, GPCE.

[13]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[14]  Günter Kniesel,et al.  Generic Aspect Languages – Needs, Options and Challenges , 2005 .

[15]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[16]  Craig S. Kaplan,et al.  Predicate Dispatching: A Unified Theory of Dispatch , 1998, ECOOP.

[17]  Eelco Visser,et al.  Combining Aspect-Oriented and Strategic Programming , 2005, RULE@RDP.

[18]  Lodewijk Bergmans,et al.  An Object-Oriented Language-Database Integration Model: The Composition-Filters Approach , 1992, ECOOP.

[19]  Steve Freeman,et al.  Endo-testing: unit testing with mock objects , 2001 .

[20]  Kris Gybels,et al.  On the Existence of the AOSD-Evolution Paradox , 2003 .

[21]  Youssef Hassoun,et al.  Considerations on component visibility and code reusability in AspectJ , 2003 .

[22]  Günter Kniesel,et al.  Fine-Grained Generic Aspects , 2006 .

[23]  Alfred Strohmeier,et al.  Better Generative Programming with Generic Aspects , 2003, OOPSLA 2003.

[24]  Günter Kniesel,et al.  Uniform Genericity for Aspect Languages , 2004 .

[25]  Stefan Hanenberg,et al.  Refactoring of Aspect-Oriented Software , 2003 .

[26]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[27]  Jordi Alvarez Canal Parametric Aspects: A Proposal , 2004, RAM-SE.

[28]  Shigeru Chiba,et al.  Josh: an open AspectJ-like language , 2004, AOSD '04.

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

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

[31]  Lewis J. Pinson,et al.  Objective-C - object-oriented programming techniques , 1991 .

[32]  Kris De Volder,et al.  Type-Oriented Logic Meta Programming , 1998 .

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

[34]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[35]  Roel Wuyts,et al.  A Logic Meta-Programming Approach to Support the Co-Evolution of Object-Oriented Design and Implementation , 2001 .

[36]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[37]  Harold Ossher,et al.  Using multidimensional separation of concerns to (re)shape evolving software , 2001, CACM.

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