Challenge proposal: verification of refactorings

Automated refactoring tools are an essential part of a software developer's toolbox. They are most useful for gradually improving large existing code bases and it is essential that they work reliably, since even a simple refactoring may affect many different parts of a program, and the programmer should not have to inspect every individual change to ensure that the transformation went as expected. Even extensively tested industrial-strength refactoring engines, however, are fraught with many bugs that lead to incorrect, non-behaviour preserving transformations. We argue that software refactoring tools are a prime candidate for mechanical verification, offering significant challenges but also the prospect of tangible benefits for real-world software development.

[1]  Narciso Martí-Oliet,et al.  The Maude System , 1999, RTA.

[2]  Görel Hedin,et al.  Circular reference attributed grammars - their evaluation and applications , 2007, Sci. Comput. Program..

[3]  Torbjörn Ekman,et al.  Sound and extensible renaming for java , 2008, OOPSLA.

[4]  Gérard P. Huet,et al.  The Zipper , 1997, Journal of Functional Programming.

[5]  Torbjörn Ekman,et al.  Refactoring is not (yet) about transformation , 2008, WRT '08.

[6]  Jose Meseguer,et al.  Formal Specification and Verification of Java Refactorings , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[7]  Xavier Leroy,et al.  Formal certification of a compiler back-end or: programming a compiler with a proof assistant , 2006, POPL '06.

[8]  Atsushi Igarashi,et al.  On Inner Classes , 2002, Inf. Comput..

[9]  Rodney Farrow Automatic generation of fixed-point-finding evaluators for circular, but well-defined, attribute grammars , 1986, SIGPLAN '86.

[10]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[11]  Torbjörn Ekman,et al.  Formalising and Verifying Reference Attribute Grammars in Coq , 2009, ESOP.

[12]  Apostolos Syropoulos,et al.  Steps in Scala: The expression problem , 2010 .

[13]  Torbjörn Ekman,et al.  The jastadd extensible java compiler , 2007, OOPSLA.

[14]  Donald E. Knuth,et al.  Semantics of context-free languages , 1968, Mathematical systems theory.

[15]  Görel Hedin,et al.  Reference Attributed Grammars , 2000, Informatica.

[16]  Sorin Lerner,et al.  Automated soundness proofs for dataflow analyses and transformations via local rules , 2005, POPL '05.

[17]  Thomas Ruhroth,et al.  Modelchecking Correctness of Refactorings - Some Experiments , 2007, Refine@ICFEM.

[18]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..

[19]  Andrew M. Pitts,et al.  MJ: An imperative core calculus for Java and Java with effects , 2003 .

[20]  Simon J. Thompson,et al.  Mechanical verification of refactorings , 2008, PEPM '08.

[21]  Mathieu Verbaere,et al.  A language to script refactoring transformations , 2008 .

[22]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[23]  Xavier Leroy,et al.  Formal Verification of a C Compiler Front-End , 2006, FM.

[24]  Xavier Leroy,et al.  Formal certification of a compiler back - end , 2005 .