Program metamorphosis

Research output: Chapter in Book/Report/Conference proceedingPaper in conference proceeding


Modern development environments support refactoring by providing atomically behaviour-preserving transformations. While useful, these transformations are limited in three ways: (i) atomicity forces transformations to be complex and opaque, (ii) the behaviour preservation requirement disallows deliberate behaviour evolution, and (iii) atomicity limits code reuse opportunities for refactoring implementers. We present 'program metamorphosis', a novel approach for program evolution and refactoring that addresses the above limitations by breaking refactorings into smaller steps that need not preserve behaviour individually. Instead, we ensure that sequences of transformations preserve behaviour together, and simultaneously permit selective behavioural change. To evaluate program metamorphosis, we have implemented a prototype plugin for Eclipse. Our analysis and experiments show that (1) our plugin provides correctness guarantees on par with those of Eclipse's own refactorings, (2) both our plugin and our approach address the aforementioned limitations, and (3) our approach fully subsumes traditional refactoring.


External organisations
  • University of Colorado
Research areas and keywords

Subject classification (UKÄ) – MANDATORY

  • Computer Science


  • Program Evolution, Refactoring
Original languageEnglish
Title of host publicationECOOP 2009 - Object-Oriented Programming - 23rd European Conference, Proceedings
Number of pages25
ISBN (Print)3642030122, 9783642030123
Publication statusPublished - 2009 Sep 14
Publication categoryResearch
Externally publishedYes
Event23rd European Conference on Object-Oriented Programming, ECOOP 2009 - Genoa, Italy
Duration: 2009 Jul 62009 Jul 10

Publication series

NameLecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
Volume5653 LNCS
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349


Conference23rd European Conference on Object-Oriented Programming, ECOOP 2009