Useful software systems are constantly evolving and adapting. Often those changes require that the software be remodularized, so that the system becomes easier to understand, extend, or maintain. The technique for disciplined program transformations that change a system’s structure while preserving its behavior is called refactoring. Refactorings are parameterized transformations of a system’s source code intended to improve a system’s structure with regards to informally expressed goals, such as maintainability, changeability, or readability. While most refactoring research focuses on object-oriented (OO)
system transformations, refactorings play a similar role in an aspect-oriented programming (AOP) context, and aspect-oriented programming constructs allow for additional refactoring. In practice, refactorings are instrumental for the migration of legacy OO systems to use AOP.
Joint with Gail C. Murphy and Gregor Kiczales
Improving the structure of a code base can help developers perform tasks on a software system more efficiently and more consistently. To aid a developer who wants to refactor a scattered implementation of a crosscutting concern (for example, to modularize it using AOP techniques), we introduce a role-based approach and supporting refactoring tool. In this approach, roles are used to identify and distinguish principal elements of the concern structure and refactoring instructions are described in terms of these role elements. For a concrete refactoring, the roles are mapped to concrete program elements (this process is aided by the tool) and the refactoring instructions are executed on them. We are currently developing a library of crosscutting concern refactorings for design pattern implementations.
Joint with Hidehiko Masuhara and Günter Kniesel
This project investigates the feasibility of using a logic-based program representation to define and execute refactoring. The premise is that logic queries can identify crosscutting concerns very precisely and provide the proper role mapping as an important (but essentially free) benefit. The role mapping (information about the purpose of the individual program elements comprising the crosscutting concern) is the essential input for a role-based refactoring approach (see above), and should allow for the (semi-) automation of even complex concerns. This work is still in its early stages.
Page Information
|
Wiki Information |
Recent PBwiki Blog Posts |