ACM SIGPLAN Notices · 2010 · 17 citations · 14 references
ComputingComputer ScienceDesign AutomationFormal MethodsProgramming LanguagesObject-oriented ProgrammingSoftware DesignSoftware RefactoringSpecification LanguagesAutomated RefactoringObject-oriented ArchitectureObject-oriented RefactoringPrecondition CheckingRefactoring
Modern IDEs provide basic automated refactorings, but specifying their behavior precisely is difficult, resulting in complex, hard‑to‑maintain implementations that are the only precise specifications of many refactorings. This paper demonstrates that a dependency‑based approach with microrefactorings can supply high‑level specifications for many Eclipse refactorings. The authors advocate using complementary dependency notions to guide implementation and microrefactorings to structure the process. These specifications enable a compact clean‑room reimplementation that matches Eclipse’s feature set and outperforms it in correctness.
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.
14
The jastadd extensible java compiler
Torbjörn Ekman, Görel Hedin · 2007 · 292 citations
Refactoring support for class library migration
Ittai Balaban, Frank Tip, Robert M. Fuhrer · 2005 · 142 citations
Refactoring for generalization using type constraints
Frank Tip, Adam Kieżun, Dirk Bäumer · 2003 · 125 citations