From stap
Jump to: navigation, search
  • Motivation
Aspect-oriented programming (AOP) is a new language paradigm proposed for cleanly modularizing the crosscutting structure of concerns such as exception handling, synchronization, performance optimizations, and r esource sharing, that are usually difficult to express cleanly in source code using existing programming techniques. AOP can control such code tangling and make the underlying concerns more apparent, making programs easier to develop and maintain. In aspect-oriented programs, the basic program unit is an aspect. An aspect with its encapsulation of state with associated advice, introductions, and methods (operations) is a significantly different abstraction in comparison to the procedure units within procedural programs or class units within object-oriented programs. The inclusion of join points in an aspect further complicates the static and dynamic relations between aspects and classes.
Program analysis and testing research must adapt to the emergence of new languages and design paradigms in order to analyze and verify the correctness of systems written in these new languages by presenting some new analysis and testing strategies that are relevant to these new languages and paradigms. As research in aspect-oriented programming is reaching maturity with a number of active research products, researchers in program analysis and testing need to focus on this new paradigm.
We believe that aspect-oriented programming languages present unique opportunities and problems for program analysis and testing scheme. For example, to analyze and test aspect-oriented programs, specific aspect-oriented features such as join points, pointcuts, a pieces of advice, and aspects, that are different from existing procedural or object-oriented programming languages, must be handled appropriately. Moreover, although these specific features provide great strengths for modeling crosscutting concerns in software systems, they also introduce difficulties in program analysis and testing.
Afanti is a project that aims at developing techniques and tools to support analysis and testing of aspect-oriented programs.


Personal tools