Practical use of static composition of refactoring operations

Refactoring tools are commonly used for remodularization tasks. Basic refactoring operations are combined to perform complex program transformations, but the resulting composed operations are rarely reused, even partially, because popular tools have few support for composition. In this paper, we recast two calculus for static composition of refactorings in a type system and we discuss their use for inferring useful properties. We illustrate the value of support for static composition in refactoring tools with a complex remodularization use case: a round-trip transformation between programs conforming to the Composite and Visitor patterns.

[1]  Tom Mens,et al.  Analysing refactoring dependencies using graph transformation , 2007, Software & Systems Modeling.

[2]  Rémi Douence,et al.  Invertible Program Restructurings for Continuing Modular Maintenance , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[3]  Akram Ajouli,et al.  An Automatic Reversible Transformation from Composite to Visitor in Java , 2012 .

[4]  Patrick Nixon,et al.  Composite Refactorings for Java Programs , 2000 .

[5]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[6]  Frank Tip,et al.  Correct Refactoring of Concurrent Java Code , 2010, ECOOP.

[7]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[8]  Julien Cohen,et al.  Refactoring Composite to Visitor and Inverse Transformation in Java , 2011, ArXiv.

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

[10]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[11]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[12]  Paul Klint,et al.  A Case of Visitor versus Interpreter Pattern , 2011, TOOLS.

[13]  Iman Hemati Moghadam,et al.  Automated Refactoring Using Design Differencing , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

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