Mechanical verification of refactorings
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Challenge proposal: verification of refactorings
Proceedings of the 3rd workshop on Programming languages meets program verification
Specifying and implementing refactorings
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Iterative development of consistency-preserving rule-based refactorings
ICMT'11 Proceedings of the 4th international conference on Theory and practice of model transformations
A language generic solution for name binding preservation in refactorings
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
Practical use of static composition of refactoring operations
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Hi-index | 0.00 |
There is an extensive literature about refactorings of object-oriented programs, and many refactoring tools for the Java programming language. However, except for a few studies, in practice it is difficult to find precise formal specifications of the preconditions and mechanisms of automated refactorings. Moreover, there is usually no formal proof that a refactoring is correct, i.e., that it preserves the behavior of the program. We present an equational semantics based approach to Java refactoring. Specifically, we use an executable Java formal semantics in the Maude language to: (i) formally specify three useful Java refactorings; and (ii) give detailed proofs of correctness for two of those refactorings, showing that they are behavior-preserving transformations. Besides the obvious benefits of providing rigorous specifications for refactoring tool builders and rigorous correctness guarantees, our approach has the additional advantage of its executability: our formal refactoring specifications can be used directly to refactor Java programs and yield a provably correct Java refactoring tool.