Introduction
Cross-cutting concerns are unavoidable and create difficulties in the
development and maintenance of large-scale systems. In this paper, we
present a novel approach that identifies certain groups of code units
that potentially share some cross-cutting concerns and recommends them
for creating and updating aspects. Those code units, called
concern peers, are detected based on their similar interactions
(similar calling relations in similar contexts, either internally
or externally). The recommendation is applicable to both the
aspectization of non-aspect-oriented programs (i.e. for aspect
creation), and the evolution of aspect-oriented programs (i.e. for
aspect updating). The empirical evaluation on several real-world
software systems shows that our tool XScan is scalable and provides
useful recommendations.