skip to main content
10.1145/1481848.1481859acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Challenge proposal: verification of refactorings

Authors Info & Claims
Published:20 January 2009Publication History

ABSTRACT

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.

References

  1. Gavin M. Bierman, Matthew J. Parkinson, and Andrew M. Pitts. MJ: An imperative core calculus for Java and Java with effects. Technical Report 563, University of Cambridge, 2003.Google ScholarGoogle Scholar
  2. Sandrine Blazy, Zaynah Dargaye, and Xavier Leroy. Formal verification of a C compiler front-end. In FM 2006: International Symposium on Formal Methods, volume 4085 of LNCS, pages 460--475. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Torbjörn Ekman, Ran Ettinger, Max Schäfer, and Mathieu Verbaere. Refactoring bugs, 2008. http://progtools.comlab.ox.ac.uk/refactoring/bugreports.Google ScholarGoogle Scholar
  4. Torbjörn Ekman and Görel Hedin. The JastAdd Extensible Java Compiler. In OOPSLA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Torbjörn Ekman, Max Schäfer, and Mathieu Verbaere. Refactoring is not (yet) about transformation. In Second Workshop on Refactoring Tools (WRT), 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. H.-Christian Estler, Thomas Ruhroth, and Heike Wehrheim. Modelchecking Correctness of Refactorings -- Some Experiments. Electronic Notes in Theoretical Computer Science, 187:3--17, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Rodney Farrow. Automatic generation of fixed-point-finding evaluators for circular, but well-defined, attribute grammars. In CC, pages 85--98, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Alejandra Garrido and José Meseguer. Formal Specification and Verification of Java Refactorings. In SCAM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. The Java Language Specification. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Görel Hedin. Reference Attributed Grammars. Informatica, (24):301--317, 2000.Google ScholarGoogle Scholar
  11. Gérard P. Huet. The Zipper. J. Funct. Program., 7(5):549--554, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Atsushi Igarashi and Benjamin C. Pierce. On inner classes. Inf. and Comp., 177(1):56--89, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Gerwin Klein and Tobias Nipkow. A machine-checked model for a Java-like language, virtual machine, and compiler. ACM Trans. Program. Lang. Syst., 28(4):619--695, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Günter Kniesel and Helge Koch. Static composition of refactorings. Science of Computer Programming, 52(1-3):9--51, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Donald E. Knuth. Semantics of context-free languages. Mathematical Systems Theory, 2:127--146, 1968. Correction: Mathematical Systems Theory, 5:95--96, 1971.Google ScholarGoogle ScholarCross RefCross Ref
  16. Sorin Lerner, Todd Millstein, Erika Rice, and Craig Chambers. Automated soundness proofs for dataflow analyses and transformations via local rules. SIGPLAN Not., 40(1):364--377, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Xavier Leroy. Formal certification of a compiler back-end. In POPL, pages 42--54, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Eva Magnusson and Görel Hedin. Circular Reference Attributed Grammars. Sci. Comput. Program., 68(1):21--37, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. The Maude System. http://maude.cs.uiuc.edu.Google ScholarGoogle Scholar
  20. Max Schäfer, Torbjörn Ekman, and Oege de Moor. Formalising and Verifying Reference Attribute Grammars in Coq (Technical Report). http://progtools.comlab.ox.ac.uk/projects/refactoring/formalising-rags, 2008.Google ScholarGoogle Scholar
  21. Max Schäfer, Torbjörn Ekman, and Oege de Moor. Sound and Extensible Renaming for Java. In Gregor Kiczales, editor, OOPSLA. ACM Press, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Generic Programming with Strafunski. http://www.cs.vu.nl/Strafunski.Google ScholarGoogle Scholar
  23. Stratego/XT. http://www.program-transformation. org/Stratego.Google ScholarGoogle Scholar
  24. Nik Sultana and Simon Thompson. Mechanical Verification of Refactorings. In PEPM. ACM SIGPLAN, January 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Mathieu Verbaere. A Language to Script Refactoring Transformations. D.Phil. thesis, Oxford University Computing Laboratory, 2008.Google ScholarGoogle Scholar
  26. Philip Wadler. The Expression Problem. Message to Java-genericity mailing list, 1998.Google ScholarGoogle Scholar

Index Terms

  1. Challenge proposal: verification of refactorings

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      PLPV '09: Proceedings of the 3rd workshop on Programming languages meets program verification
      January 2009
      90 pages
      ISBN:9781605583303
      DOI:10.1145/1481848

      Copyright © 2009 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 20 January 2009

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate18of25submissions,72%

      Upcoming Conference

      POPL '25

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader