ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
abc: an extensible AspectJ compiler
Proceedings of the 4th international conference on Aspect-oriented software development
Aspect-oriented programming and modular reasoning
Proceedings of the 27th international conference on Software engineering
Using Pointcut Delta Analysis to Support Evolution of Aspect-Oriented Software
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Modular Software Design with Crosscutting Interfaces
IEEE Software
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Separation of concerns with procedures, annotations, advice and pointcuts
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Managing the evolution of aspect-oriented software with model-based pointcuts
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Test-based pointcuts for robust and fine-grained join point specification
Proceedings of the 7th international conference on Aspect-oriented software development
Tool support for understanding and diagnosing pointcut expressions
Proceedings of the 7th international conference on Aspect-oriented software development
Modular aspect-oriented design with XPIs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
This paper proposes test-based pointcuts, a new aspect-oriented programming language construct that uses unit test cases as interface of crosscutting concerns. A test-based pointcut primarily specifies a set of test cases associated to a program. At execution time, it matches the join points that have the same execution history to the one of the specified test cases. The test-based approach improves pointcut definitions in two respects. First, test-based pointcuts are less fragile with respect to program changes because rather than directly relying on type and operation names in a program, they indirectly specify join points through unit test cases, which are easier to be kept up-to-date. Second, test-based pointcuts can discriminate execution histories without requiring to specify detailed execution steps, as they use test cases as abstractions of execution histories. With the abstractions, the second respect contributes to the first respect. We designed and implemented the test-based pointcuts as an extension to AspectJ, and confirmed, through an case study, test-based pointcuts are more robust against evolution when used for a practical application program.