Software refactoring consists of the modification of internal program structure without altering the external behavior (semantic preservation). It aims at improving internal quality factors, such as modularity, in order to make the code easier to understand and evolve in the future. Among the various refactorings, a category quite unexplored is refactoring Object Oriented Programming (OOP) to Aspect Oriented Programming (AOP). AOP is expected to improve the structure of existing code by offering modular units for functionalities whose implementation is otherwise scattered through many modules.
An investigation of automated support for a programmer in the migration from OOP to AOP code is presented. In particular, the applicability of semantic-preserving code transformations to automate the migration task is considered. The contribution of this work is a list of refactorings, that are described together with the conditions under which they can be applied. Several variants of each refactoring are also considered. Supporting the refactoring activity by means of automated tools allows migration difficulties to be mitigated and thus the benefits of AOP become easier to achieve for legacy OOP applications.
PDF version of the paper.