logo

Configuration Management and Refactorings in Eclipse

Background
Configuration management is one of the key techniques for coordinating people working together in software projects. This is commonly understood and most Software Development Environments offers support for CM. In Eclipse this is trough Stellation and the CVS technology. When using a CM tool one quickly realize that there are operations that are less well supported. Structural changes, often called refactorings, such as renaming modules or moving them between directories are typically problematic, not supported by the CM tool. As a result such operations has to be performed outside of the tool, and the tool cheated by performing the operations as a Delete and a Create and thus loosing historical data as well as risking manual mistakes. When merging parallel work in systems that have undergone such changes the situation gets even worse.

The importance of the problem sketched above depends on how often such changes might occur. In a traditional situation, with considerable upfront design and careful structuring before coding, the need for refactorings might be smaller. With the current growing interest for eXtreme Programming with its focus on simplicity and refactorings the problem gets much worse since structural changes is a frequent activity. Eclipse include support to perform refactorings, but the CM support for refactorings is much less developed.

The severity of this problem has become clear to us during teaching a project course using XP technology. We have plans to introduce Eclipse as development environment in this course, in part for its powerful support for refactorings. Unfortunately it does not solve one of the most severe problems we had during the course due to the lack of CM support fro merge of refactored branches of a system.

Objectives
Improve the support offered when refactorings are performed. The idea is to represent such a structural change as a single operation rather than a series of deletes/create or renames. The advantage would be that the same refactoring could then be applied when merging with a parallel branch, greatly simplifying the work during merge. The development of a system would most likely also be easier to grasp when performed refactorings are explicit rather than implicit.

Methodology
The open and well-engineered Eclipse environment seems to be ideal to use as a platform for an experiment of this kind. There seems to be powerful enough APIs available both towards the CVS-based version-control system and editors to make the kind of extension outlined here. We value in particular the Abstract Syntax Tree-based interface that we believe will serve as a suitable level for interaction. The model used here for propagating changes hierarchically matches the scheme we developed for the Unified Extentional Versioning Model and published at SCM - the main conference in the field. UEVM extends this model to also comprise versioned configurations. We also intend to, at least initially, make use of the implementation of a versioning server supporting the UEVM which we developed as part of the COOP/Orm collaborative system. The project will be run in the XP tradition where initial focus is on developing a framework and then filling it with functionality.

Milestones
Client-side Java API for UEVM Storing Java programs in AST form Representation of refactoring operations on the AST level Develop merge-support for branches with refactorings

Personnel
Boris Magnusson, prof - environments, OO, configuration management
Görel Hedin, ass prof - languages, OO, compilers
Torbjörn Ekman, grad student - languages, compilers
Ulf Asklund, dr - Configuration Management.

Long term objectives
Improved support for Configuration Management in general and in connection with practices introduced with XP is crucial for efficient and reliable development of software. As Eclipse gets popular in the XP community it is vital to offer a flexible solution to the CM problems introduced with an aggressive use of refactoring techniques.

© Center for Applied Software Research 2001-2007. Jonas.Wisbrant@cs.lth.se

Last update: