Paolo Tonella and Mariano Ceccato,
Migrating Interface Implementations to Aspects
Separation of concerns and modularization are the cornerstones of software
engineering. However, when a system is decomposed into units,
functionalities often emerge which cannot be assigned to a single element
of the decomposition. The implementation of interfaces represents a typical
instance of this problem. In fact, the code that defines the interface
methods is often scattered across several classes in the system and
tangled with the original code.
Aspect Oriented Programming provides mechanisms for the dynamic and static
composition of transversal functionalities, that can be used to factor out
the implementation of interfaces. In this paper we describe a technique
for the identification of those interface implementations that are most
likely to represent crosscutting concerns. Moreover, the code
transformation (refactoring) to migrate such interfaces to aspects is also
presented. Experimental results validate the approach.
Postscript version of the paper.