Introduction

 

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.

 

Role-Based Refactoring

 

Joint with Gail C. Murphy and Gregor Kiczales

 

Overview

 

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.

 

Publications

 

  • Hannemann, J., Murphy, G.C., and Kiczales, G. Role-Based Refactoring of Crosscutting Concerns, Proceedings of the 4th International Conference on Aspect-Oriented Software Development (AOSD'05), March 2005.
  • Hannemann, J. Role-Based Refactoring of Crosscutting Concerns . Ph.D. Thesis, University of British Columbia, November 2005. (thesis)

 

Logic-Based Program Restructuring

 

Joint with Hidehiko Masuhara and Günter Kniesel

 

Overview

 

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.

 

Publications

 

  • Guenter Kniesel, Jan Hannemann, and Tobias Rho. A Comparison of Logic-Based Infrastructures for Concern Detection and Extraction. Workshop on Linking Aspect Technology and Evolution (LATE’07). 6th International Conference on Aspect-Oriented Software Development (AOSD’07). Bonn, Germany, 2007.  [Link]

 


Last modified: 2007/10/16;

 

 


Page Information

  • 10 months ago [history]
  • View page source
  • You're not logged in
  • No tags yet learn more

Wiki Information

Recent PBwiki Blog Posts