In this paper, we present a collection of aspect-oriented refactorings covering both the extraction of aspects from objectoriented legacy code and the subsequent tidying up of the resulting aspects. In some cases, this tidying up entails the replacement of the original implementation with a different, centralized design, made possible by modularization. The collection of refactorings includes the extraction of common various aspects into abstract superaspects. We review the traditional object-oriented code smells in the light of aspectorientation and propose some new smells for the detection of crosscutting concerns. In addition, we propose a new code smell that is specific to aspects. Keywords Aspect-oriented programming, object-oriented programming, refactoring, code smells, programming style.
Miguel P. Monteiro, João M. Fernandes