My research topic is Refactoring-Aware Version Control. I am an external PhD student of Professor Wilhelm Hasselbring, head of the Software Engineering Group in the Department of Computing Science at the University of Oldenburg.
Refactoring is the behavior-preserving restructuring of source code. Its target is to improve the design of the software. Refactoring consists of a sequence of refactoring operations. Renaming methods and changing method signatures are examples for refactoring operations.
Most version control systems handle source code as plain text. Frequent refactoring poses a problem for these systems, as merge conflicts may occur more often than necessary. Refactoring is also an issue for the API evolution of reusable program libraries, as refactoring the API breaks compatibility, and all clients of the API have to be adapted manually.
The goal of this thesis is to develop an approach that allows to use refactoring operations with justifiable effort for API evolution and in team development.
The solution approach used here is an operation-based versioning. Software development is modeled as a series of operations, each of them either an edit operation or a refactoring operation. Using these operations, a large number of merge conflicts may be solved automatically by taking refactoring into account. Operations that were recorded in API evolution may be applied automatically to clients of the API. Appropriate sequences of edit operations and refactoring operations even allow a number of behavior modifications of methods in team development and in API evolution.
A prototype for the programming language Java (http://java.sun.com), the integrated development environment Eclipse (http://www.eclipse.org) and the version control system Subversion (http://subversion.tigris.org/) is currently under development.
Notice: This summary is the result of updating my former research goals in 2005.