Content area
Full text
Abstract- This paper explores the combination of AOP and refactoring, two techniques that deals with the problems of permanent evolution of software. AOP has evolved to deal with a large legacy of object-oriented (OO) code. Most of the work has been done in the area of refactoring the object oriented code but little with the procedural code and that too with aspect orientation. But the AO concept when applied to the procedural source code can be used to solve the existence of potential problems in the code thus improving the underlying design. The poorly designed procedural code when refactored with aspect orientation yields a better code. This paper documents a collection of novel refactorings enabling the extraction of crosscutting concerns from the procedural legacy source code. Therefore we establish a systematic approach for refactoring and then propose a refactoring catalog to deal with the procedural code that establishes a systematic approach to refactor the procedural code. To this end, we first investigate the impact of existing object-oriented refactorings such as those proposed by Fowler on procedural code. Then we propose some novel refactorings that are unique to the procedural code and the ones using the aspect concept are termed as aspect-oriented refactorings. We use AspeCt oriented C, an AOP language for C to demonstrate our approach.
Keywords: Refactoring, legacy software, aspect oriented programming, object oriented refactoring
1 Introduction
Refactoring is an approach that facilitates the continuous change of source code, enabling it to evolve in line with changes in environments and requirements. [1]
Software engineering is a discipline that is dedicated to designing, implementing and modifying software so that it is of higher quality, more affordable, maintainable and easier to build. It creates models and tools for the support of abstraction [12][13]. We cannot concentrate on many subjects or concerns simultaneously. Instead, we need to abstract from most of the concerns so that we can concentrate on a particular concern in order to deal with it effectively. The abstraction can be achieved by applying the separation of concern technique. Loose coupling is an essential property of any software. We need to break, or decompose systems and problems into smaller subsystems and sub-problems, in order to concentrate on each sub problem by turns. The...




