Software maintenance costs dominate software engineering costs, partly because most such engineering is done manually. Program Transformation tools leverage an engineer-provided base of "transforms" (a kind of generative reuse of programming knowledge), to automate analysis, modification, and generation of software, enhancing productivity and quality over conventional methods. This tutorial provides a complete overview of Program Transformation, from theory to implementation to application. Several real transformation systems will be examined, with application examples including automated detection and removal of duplicate code from large systems, and the potential for semi-automated refactoring of large object frameworks. The tutorial progresses from introductory to intermediate, but all the necessary background will be provided, so attendees need only basic software engineering knowledge and motivating experience modifying software. 1 Transformation Systems Transformation ...
Ira D. Baxter