Refactoring of Aspect-Oriented Software
Stefan Hanenberg, Christian Oberschulte, Rainer Unland
Abstract
Stefan Hanenberg, Christian Oberschulte, Rainer Unland
Abstract
The application of refactorings during an object-oriented development process improves the design and therefore the quality of software. Aspectorientation is a new programming paradigm that increases the modularity of software. Hence, it seems natural to apply both aspect-orientation as well as refactoring during a software development process since both techniques permit to increase the modularity and comprehensibility of software. However, on the one hand existing object-oriented refactoring techniques cannot directly be applied to aspect-oriented software because traditional object-oriented refactoring applied in an aspect-oriented environment is no longer behavior preserving. On the other hand, since the new features of aspect-oriented languages permit to modularize software in different ways there is a large variety of new refactorings based on these features. This paper discusses the relationship between object-oriented refactoring and aspect-orientation. We show what aspect-oriented elements conflict with existing refactorings and propose solutions for these conflicts for the aspect language AspectJ. Furthermore, we introduce a number of new aspect-oriented refactorings which help on the one hand to migrate from object-oriented to aspect-oriented software and on the other hand to restructure existing aspect-oriented code.
OpenAlex reports 97 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
The application of refactorings during an object-oriented development process improves the design and therefore the quality of software. Aspectorientation is a new programming paradigm that increases the modularity of software. Hence, it seems natural to apply both aspect-orientation as well as refactoring during a software development process since both techniques permit to increase the modularity and comprehensibility of software. However, on the one hand existing object-oriented refactoring techniques cannot directly be applied to aspect-oriented software because traditional object-oriented refactoring applied in an aspect-oriented environment is no longer behavior preserving. On the other hand, since the new features of aspect-oriented languages permit to modularize software in different ways there is a large variety of new refactorings based on these features. This paper discusses the relationship between object-oriented refactoring and aspect-orientation. We show what aspect-oriented elements conflict with existing refactorings and propose solutions for these conflicts for the aspect language AspectJ. Furthermore, we introduce a number of new aspect-oriented refactorings which help on the one hand to migrate from object-oriented to aspect-oriented software and on the other hand to restructure existing aspect-oriented code.
Key concepts: Code refactoring, Aspect-oriented programming, AspectJ, Computer science, Modularity (biology), Software development, Programming language, Object-oriented programming