home · mobile · calendar · defenses · 2009-2010 · 

Thesis Defense - Reichenbach

Program Metamorphosis
Computer Science PhD Candidate

Modern approaches to software development emphasise that developers should treat change to existing code as a fundamental component of program development. However, the increasing complexity of modern programming languages and software systems makes it harder and harder for developers to understand the global effect of their local changes.

Existing approaches to support programmers in program evolution have largely limited themselves to highly specific forms of behaviour-preserving one-step changes, or refactoring. However, we argue that it is possible to give programmers more powerful tools that not only aid in a greater variety of software evolution tasks but are also more transparent to use.

In this work, we present program metamorphosis, a technique for flexible program transformation with a safety net. In our approach, programmers can perform almost free-form changes to their changes, while a program analysis framework gauges the semantic impact of the sum of all changes and visualises behavioural changes to guide the program evolution process with minimal intrusion. Users can then choose which behavioural changes they are comfortable with and which they wish to revert.

Our experiments over three program metamorphosis prototypes show that our approach is a viable contender for traditional refactoring work, for behaviour evolution, and for algorithmic optimisation, all within the same framework. For refactoring, we show that a program metamorphosis tool can provide state-of-the-art safety guarantees as well as support for refactorings that elude traditional refactoring tools, whereas for algorithmic optimisation we illustrate that our mechanisms can facilitate complex datatype and algorithm replacements without costly context-sensitive analyses.

Committee: Amer Diwan, Associate Professor (Chair)
Bor-Yuh Evan Chang, Assistant Professor
Jeremy Siek, Department of Electrical and Computer Engineering
Kenneth Anderson, Associate Professor
James Martin, Professor
Department of Computer Science
University of Colorado Boulder
Boulder, CO 80309-0430 USA
May 5, 2012 (14:20)