Automating three modes of evolution for object-oriented software architectures
COOTS'99 Proceedings of the 5th conference on USENIX Conference on Object-Oriented Technologies & Systems - Volume 5
Hi-index | 0.00 |
Refactorings are behavior-preserving program transformations that automate design level changes in object-oriented applications. Many schema transformations, design patterns, and hot-spot meta-patterns are automatable. Thus, it seems possible to develop practical tools that could significantly simplify the evolution of object-oriented applications by automating common, yet tedious and error-prone, tasks. Our research evaluates whether refactoring technology can be transferred to the mainstream by restructuring non-trivial C++ applications. The applications that we examine were evolved manually by software engineers. We show that an equivalent evolution could be reproduced significantly faster and cheaper by applying a handful of general-purpose refactorings. In one application, over 14K lines of code were transformed automatically that otherwise would have been coded by hand. Our experiments expose requirements, limitations, and topics of further research before refactoring technology can be delivered to a production environment.