In LATE Workshop at AOSD, Chicago, IL, March 2005.
When performing refactoring, the principal requirement is that the refactored code should be at least functionally equivalent 1 to the original. While execution tests provide the authoritative verification of this functional equivalence, verification at the source level is often more effective because mistakes can be detected early and fixed as part of the development activity. Automatic refactoring performed by development tools such as Eclipse2 typically provides this kind of source-level verification. However, its capabilities are currently limited to changing hierarchical structures involving methods and classes.