Aspect-Oriented Refactoring
What is aspect-oriented software development (AOSD)?
A novel software development paradigm that allows clean modularisation of crosscutting concerns, such as debugging and profiling, in software design.
What is software configurability?
The ability to build, release and evolve a software system in a number of different configurations, sometimes called editions, such that all editions share a large portion of the code base. For instance, a standard edition may be built with a basic set of features, whereas a more expensive professional edition may be built with an extended set of features. The code for computing a certain extended feature may be syntactically tangled, e.g. in the same class or method, with the code of some other basic features. Furthermore, the development team may want to debug and profile any configuration of the system by building it with the inclusion of designated code that better be excluded from the official editions, for performance or other reasons.
Aspect-oriented refactoring
AOSD promotes software configurability by allowing flexible composition of a system out of different subsets of the code base. Our goal is to support the process of improving software configurability by providing tool support for the refactoring of object-oriented code into aspects.
AO slice extraction
The Extract Slice refactoring can be adapted to the aspect oriented context. The OO version of Extract Slice replaces the slice (after extracting it into a new method) with a method invocation (directly calling the new method). In the AO case the extracted code is only relevant in one aspect of the system, one we wish can be easily included or excluded in an edition. Therefore, instead of inserting that method call, the slice will be extracted into an aspect. There, it will be coupled with a special declaration that will cause it to be weaved back into its original position. The weaving will take place only if the system will be configured with the inclusion of that particular aspect.
Links
Back to Nate's home page