Aspect Refactoring Tools

Lead Research Organisation: University of Oxford
Department Name: Computer Science

Abstract

Software systems are rarely written from scratch: they evolve over long periods of time. When a change is made, this often affects many different locations in a system, and it is hard to make a change consistently. For that reason, automated tools to help the process of software change are desirable. Refactoring refers to the process of restructuring an existing piece of software, often prior to introducing new functionality, or to take advantage of a new technology. Refactoring must preserve the behaviour of existing code;,and tools that help in refactoring both assist in the restructuring process and in checking that the behaviour has not changed. Unfortunately today's refactoring tools are very hard to construct, they are still quite limited in functionality, and they often contain bugs.This project aims to construct a framework for better refactoring tools. In particular, the work is driven by refactorings for a new set of language features, called `aspect-oriented programming' that have recently been added to Java.Our framework will be based on developments in three separate areas of computer science:* `strategies' to control the process of rewriting program code, from the `term rewriting' community* `reference attribute grammars' to specify the conditions that guarantee behaviour is preserved, from the `compilers' community* `incremental evaluation' of declarative rules, from the `functional and logic programming' communityThe quality of our framework will be assessed by coding selected case studies using alternative methods. In particular, we shall implement several refactorings directly in Eclipse, the leading development environment for writing aspect-oriented programs in industry.

Publications

10 25 50
publication icon
Schaefer M (2010) Specifying and implementing refactorings in ACM SIGPLAN Notices

publication icon
Schäfer M (2008) Sound and extensible renaming for java in ACM SIGPLAN Notices