Expressive Pointcuts for Increased Modularity

In aspect-oriented programming, pointcuts are used to describe crosscutting structure. Pointcuts that abstract over irrelevant implementation details are clearly desired to better support maintainability and modular reasoning. We present an analysis which shows that current pointcut languages support localization of crosscutting concerns but are problematic with respect to information hiding. To cope with the problem, we present a pointcut language that exploits information from different models of program semantics, such as the execution trace, the syntax tree, the heap, static type system, etc., and supports abstraction mechanisms analogous to functional abstraction. We show how this raises the abstraction level and modularity of pointcuts and present first steps toward an efficient implementation by means of a static analysis technique.

[1]  Kris De Volder Aspect-Oriented Logic Meta Programming , 1998, ECOOP Workshops.

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

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

[4]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[5]  Robert J. Walker,et al.  Implementing protocols via declarative event patterns , 2004, SIGSOFT '04/FSE-12.

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

[7]  Steven P. Reiss,et al.  Encoding program executions , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

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

[9]  Kris De Volder,et al.  Navigating and querying code without getting lost , 2003, AOSD '03.

[10]  Mireille Ducassé,et al.  Generic program monitoring by trace analysis , 2002, Theory Pract. Log. Program..

[11]  Kim Mens,et al.  Building Composable Aspect-Specific Languages with Logic Metaprogramming , 2002, GPCE.

[12]  Paul Dourish,et al.  Beyond AOP: toward naturalistic programming , 2003, SIGP.

[13]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[14]  Michael Eichberg,et al.  Pointcuts as Functional Queries , 2004, APLAS.

[15]  Rémi Douence,et al.  A Framework for the Detection and Resolution of Aspect Interactions , 2002, GPCE.

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

[17]  Doug Kimelman,et al.  Modeling Object-Oriented Program Execution , 1994, ECOOP.

[18]  Oege de Moor,et al.  Static analysis of aspects , 2003, AOSD '03.

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

[20]  Naoyasu Ubayashi,et al.  Association aspects , 2004, AOSD '04.

[21]  Klaus Ostermann,et al.  Back to the Future: Pointcuts as Predicates over Traces , 2005 .

[22]  Hidehiko Masuhara,et al.  A Compilation and Optimization Model for Aspect-Oriented Programs , 2003, CC.

[23]  Michael Codish,et al.  Meta-circular Abstract Interpretation in Prolog , 2002, The Essence of Computation.

[24]  Stéphane Ducasse,et al.  Recovering high-level views of object-oriented applications from static and dynamic information , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[25]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[26]  Wim Vanhoof,et al.  Offline specialisation in Prolog using a hand-written compiler generator , 2002, Theory and Practice of Logic Programming.

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

[28]  Paul Dourish,et al.  Beyond AOP: Toward naturalistic programming : OOPSLA Onward! Track , 2003 .

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

[30]  Kris Gybels,et al.  Towards Linguistic Symbiosis of an Object-Oriented and a Logic Programming Language , 2002 .

[31]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

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

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

[34]  Danny B. Lange,et al.  Interactive visualization of design patterns can help in framework understanding , 1995, OOPSLA.

[35]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[36]  Olivier Motelet,et al.  A Formal Definition of Crosscuts , 2001, Reflection.

[37]  Muga Nishizawa,et al.  An Easy-to-Use Toolkit for Efficient Java Bytecode Translators , 2003, GPCE.