Within the aspect-oriented software development community, the use of annotation-based pointcuts has been pro-posed as a means to alleviate the fragile pointcut problem.Expressing pointcuts in terms of source-code annotations instead of the structure of the source code, decouples them from the source code of the base system and makes them more robust with respect to evolution. In this paper we demonstrate that, while annotations are suitable to capture static domain knowledge that can be leveraged by pointcut expressions, these annotations are ill-suited to capture dynamic domain knowledge. Consequently, pointcuts that rely on such dynamic knowledge still need to be defined in terms of actual source-code entities, thereby rendering them fragile again. As a means to alleviate this problem we propose Dynamic Annotations, an extension to Java annotations where the dynamic conditions under which the annotation is valid can be embedded in the annotation itself. By ex-pressing pointcuts in terms of such dynamic annotations,these pointcuts are effectively decoupled from the structure of the base program, and become less fragile with respect to evolution.
|Workshop on Reflection, AOP and Meta-Data for Software Evolution (RAM-SE)
|Published - 22 jun 2010