2010 · 80 citations · 18 references
ComputingComputer ScienceDesign AutomationFormal MethodsProgramming LanguagesObject-oriented ProgrammingSoftware DesignSoftware RefactoringSpecification LanguagesAutomated RefactoringObject-oriented ArchitectureObject-oriented RefactoringPrecondition CheckingRefactoring
Modern IDEs for object-oriented languages like Java provide support for a basic set of simple automated refactorings whose behaviour is easy to describe intuitively. It is, however, surprisingly difficult to specify their behaviour in detail. In particular, the popular precondition-based approach tends to produce somewhat unwieldy descriptions if advanced features of the object language are taken into account. This has resulted in refactoring implementations that are complex, hard to understand, and even harder to maintain, yet these implementations themselves are the only precise specification of many refactorings. We have in past work advocated a different approach based on several complementary notions of dependencies that guide the implementation, and on the concept of microrefactorings that structure it. We show in this work that these concepts are powerful enough to provide high-level specifications of many of the refactorings implemented in Eclipse. These specifications are precise enough to serve as the basis of a clean-room reimplementation of these refactorings that is very compact, yet matches Eclipse's for features and outperforms it in terms of correctness.
18
Refactoring object-oriented frameworks
William F. Opdyke · 1992 · 1K citations
The jastadd extensible java compiler
Torbjörn Ekman, Görel Hedin · 2007 · 292 citations
Program restructuring as an aid to software maintenance
William G. Griswold · 1992 · 158 citations