Abstract:
This paper proposes an approach called SCoPE, which supports user-defined analysis-based pointcuts in aspect-oriented programming (AOP) languages. The advantage of our approach is better integration with existing AOP languages than previous approaches. Instead of extending the language, SCoPE allows the programmer to write a pointcut that analyzes a program by using a conditional (if) pointcut with introspective reflection libraries. A compilation scheme automatically eliminates runtime tests for such a pointcut. The approach also makes effects of aspects visible to the analysis, which is essential for determining proper aspect interactions. We implemented a SCoPE compiler for the AspectJ language on top of the AspectBench compiler using a backpatching technique. The implementation efficiently finds analysis-based pointcuts, and generates woven code without runtime tests for those pointcuts. Our benchmark tests with JHotDraw and other programs showed that SCoPE compiles programs with less than 1% compile-time overhead, and generates a program that is as efficient as an equivalent program that uses merely static pointcuts.
Reference:
SCoPE: an AspectJ Compiler for Supporting User-Defined Analysis-Based Pointcuts (Tomoyuki Aotani and Hidehiko Masuhara), In Proceedings of the 6th International Conference on Aspect-Oriented Software Development (AOSD'07) (Oege de Moor, ed.), ACM Press, 2007.
Bibtex Entry:
@inproceedings{aotani2007aosd,
acceptanceratio = {18% (19/107)},
month = mar,
address = {New York, NY, USA},
publisher = {ACM Press},
location = {Vancouver, British Columbia, Canada},
isbn = {1-59593-615-7},
year = 2007,
booktitle = {Proceedings of the 6th International Conference on
Aspect-Oriented Software Development (AOSD'07)},
editor = {Oege de Moor},
author = {Tomoyuki Aotani and Hidehiko Masuhara},
pdf = {aosd2007.pdf},
title = {{SCoPE}: an {AspectJ} Compiler for Supporting User-Defined Analysis-Based Pointcuts},
pages = {161--172},
doi = {10.1145/1218563.1218582},
abstract = {This paper proposes an approach called SCoPE, which supports user-defined analysis-based pointcuts in aspect-oriented programming (AOP) languages. The advantage of our approach is better integration with existing AOP languages than previous approaches. Instead of extending the language, SCoPE allows the programmer to write a pointcut that analyzes a program by using a conditional (if) pointcut with introspective reflection libraries. A compilation scheme automatically eliminates runtime tests for such a pointcut. The approach also makes effects of aspects visible to the analysis, which is essential for determining proper aspect interactions. We implemented a SCoPE compiler for the AspectJ language on top of the AspectBench compiler using a backpatching technique. The implementation efficiently finds analysis-based pointcuts, and generates woven code without runtime tests for those pointcuts. Our benchmark tests with JHotDraw and other programs showed that SCoPE compiles programs with less than 1\% compile-time overhead, and generates a program that is as efficient as an equivalent program that uses merely static pointcuts.}
}