- Refactoring is the process of changing a program to improve its internal structure and reusability, without altering the external behavior of the program. It is a disciplined way to clean up code that minimizes the chances of introducing bugs. Essentially, when developers refactor they are improving the design of code while it is being written, and in fact, during the entire software life cycle. Refactoring tools helps software developers to safely and efficiently restructure their code to greatly improve its quality, reliability, and maintainability.
- Aspect-Oriented Programming (AOP) is a programming technique for expressing programs involving encapsulated, crosscutting concerns through composition techniques, and through reuse of the crosscutting code. The AOP is able to modularize crosscutting aspects of a software system. As objects in object-oriented software, aspects in aspect-oriented software may arise at any stage of the software life cycle, including requirements specification, design, implementation, etc. Some examples of crosscutting aspects are exception handling, synchronization, and resource sharing.
- The current research so far in AOP is focused on problem analysis, software design, and implementation techniques. Even if refactoring is important to improve software quality, development of refactorings and their tool support for aspect-oriented software is still ignored during the current stage of the technical development. Since aspect-oriented programming introduces some new kinds of modules such as advice, introduction, pointcuts, and aspects that are different from methods in a class, existing approaches to refactoring procedural and object-oriented programs can not be directly applied to the AOP domain. In order to improve the code quality for aspect-oriented software, refactorings and their tool support that are appropriate for aspect-oriented programs are required.
- When performing refactoring on aspect-oriented programs, we are interested in the following issues.
- Can existing object-oriented refactorings such as those proposed by Fowler be adapted to aspect-oriented programs? If not, how should we do when applying these refactorings to aspect-oriented programs?
- Are there some new refactorings that are unique to aspect-oriented programs but different from existing object-oriented refactorings?
- How to support automatic refactoring of aspect-oriented programs?
- ART is a project that aims at developing techniques and tools to support refactoring of aspect-oriented programs.
- Masanori Iwamoto, Jianjun Zhao. Refactoring Aspect-Oriented Programs. 4th AOSD Modeling With UML Workshop, UML"2003, San Francisco, California, USA, October 20, 2003.
- Jianjun Zhao (Principal Investigator)
- Related Links