Test-based pointcuts for robust and fine-grained join point specification

We propose test-based pointcuts, a novel pointcut mechanism for AspectJ-like aspect-oriented programming languages. The idea behind the test-based pointcuts is to specify join points through unit test cases associated with the target program. The test-based pointcuts improve robustness and precision of pointcut languages. The test-based pointcuts are more robust against software evolution because they do not directly rely on identifier names in a target program. The test-based pointcuts are more precise because they can distinguish fine grained execution histories including conditional branches by comparing the runtime execution histories with recorded for ones of the unit test cases. This paper presents design and implementation of the test-based pointcuts as an extension of an AspectJ compiler. We evaluated robustness and runtime efficiency of test-based pointcuts through case studies that applied test-based pointcuts to several versions of practical application programs.

[1]  Yuanyuan Song,et al.  Modular software design with crosscutting interfaces , 2006, IEEE Software.

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

[3]  Martin P. Robillard,et al.  Managing Concern Interfaces , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[4]  Hidehiko Masuhara,et al.  Towards a type system for detecting never-matching pointcut compositions , 2007, FOAL.

[5]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .

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

[7]  Jürgen Graf,et al.  Using pointcut delta analysis to support evolution of aspect-oriented software , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

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

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

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

[11]  Tzilla Elrad,et al.  Joinpoint Inference from Behavioral Specification to Implementation , 2007, ECOOP.

[12]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

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

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

[15]  Hidehiko Masuhara,et al.  SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts , 2007, AOSD.

[16]  Rémi Douence,et al.  Composition, reuse and interaction analysis of stateful aspects , 2004, AOSD '04.

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

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

[19]  Hidehiko Masuhara,et al.  Test-based pointcuts: a robust pointcut mechanism based on unit test cases for software evolution , 2007, LATE@AOSD.

[20]  Oege de Moor,et al.  Adding open modules to AspectJ , 2006, AOSD.

[21]  James R. Larus,et al.  Optimally profiling and tracing programs , 1992, POPL '92.

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

[23]  Stefan Hanenberg,et al.  From aspect-oriented design to aspect-oriented programs: tool-supported translation of JPDDs into code , 2007, AOSD.

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

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

[26]  Hridesh Rajan,et al.  Aspect language features for concern coverage profiling , 2005, AOSD '05.

[27]  Kim Mens,et al.  Managing the Evolution of Aspect-Oriented Software with Model-Based Pointcuts , 2006, ECOOP.

[28]  Mario Südholt,et al.  An expressive aspect language for system applications with Arachne , 2005, AOSD '05.