Increasingly, aspect-oriented programming (AOP) [1] has been considered to pursue a better modularization of object-oriented programs, especially when representing crosscutting concerns. However, current aspect-oriented frameworks such as AspectJ [2], AspectWerkz [3], JMangler [4] and others, operate in a way directly related to the code. They define some points in the computational flow, named join points, loci of the crosscutting concerns and provide a pointcut definition language that allows the definition of some predicates on those join points to detect where and when a decoupled crosscutting concern has to be woven again. Unfortunately, these mechanisms are too tightly connected to the program structure and syntax, in fact join points consider only simple cases, such as method calls, and the pointcut languages are based on a linguistic pattern matching, respectively. Therefore, when using it massively, a number of problems raise due to the strict coupling between the pointcut definitions and the implementation:
[1]
Cristina V. Lopes,et al.
Aspect-oriented programming
,
1999,
ECOOP Workshops.
[2]
Günter Kniesel,et al.
JMangler – A Powerful Back-End for Aspect-Oriented Programming
,
2003
.
[3]
Andy Kellens,et al.
Inductively Generated Pointcuts to Support Refactoring to Aspects
,
2004
.
[4]
Cristina V. Lopes,et al.
Aspect-oriented programming
,
1999,
ECOOP Workshops.
[5]
Bran Selic,et al.
The Pragmatics of Model-Driven Development
,
2003,
IEEE Softw..
[6]
Ramnivas Laddad,et al.
Aspectj in Action: Practical Aspect-Oriented Programming
,
2003
.
[7]
Walter Cazzola,et al.
AOP for software evolution: a design oriented approach
,
2005,
SAC '05.
[8]
Kris Gybels,et al.
On the Existence of the AOSD-Evolution Paradox
,
2003
.