Program: Using Automated Transformation Systems for Software Maintenance

Software maintenance activities are largely done manually at present, yet they are the largest software engineering expense. Considerable productivity and quality enhancements are possible with a new generation of automated change tools called program transformation systems. Transformation systems use generalized compiler technology to analyze, modify, generate and/or reshape existing code. An engineer-customizable base of "transforms" (a kind of generative reuse of programming knowledge) enables custom analyses and modifications to large-scale software systems. Examples include redocumenting code, reverse/re-engineering, changing APIs, porting to new platforms, rearranging system structure, etc. EURO currency remediation is a very interesting special case (as was Y2K); these will reappear in the future in the form of longer SSNs, phone numbers, etc.

This tutorial presents a unified framework covering the theory and implementation of transformation systems, including parsing, pretty-printing, transforms, metaprogramming, a theory of software maintenance using transformational foundations. It will cover a number of practical issues related to all of the above, including scaling to handle large software systems. A number of existing transformation tools will be examined, to show how they fit into the framework. Finally, a number of sample applications will be shown, including detection and removal of duplicate code from real million-line systems in COBOL and Java.

This new class of tools will become a part of every software engineer's toolkit over the next decade, just like editors, compilers, linkers and debuggers. The tutorial will provide the researcher and the practitioner alike with the necessary background to understand where these tools are useful, and how to determine the capabilities and limitations of a particular system. This will enable them to start performing previously impractical maintenance tasks.

Presenters: Ira Baxter, Ph.D.

Dr. Baxter has been designing system software and program manipulation tools such as compilers and transformation systems since 1969. Studying software reuse in long-term software maintenance contexts in the 1980s lead to his doctoral thesis work defining a formal model of software maintenance. He has worked on or with a number of transformation systems, including REFINE (a commercial offering currently popular for reengineering), Draco (multiple domain notations and source of the term "domain analysis"), Sinapse (generation of PDE solvers for supercomputers), and IP (Microsoft Research's transformation tool). Dr. Baxter is presently the principal architect of Semantic Design's transformational Design Maintenance System (DMS), designed to use software componentry to enhance software maintenance for large-scale software systems. He is no stranger to ICSM; the seed idea for DMS was presented at ICSM'85 (Transformational Model of Maintenance), and he showed a scale (duplicate code) Clone Detector at ICSM'98. He is the principal designer and compiler implementer of PARLANSE, SD's parallel programming language for Wintel Symmetric Multiprocessors. Dr. Baxter was Program CoChair of the 1996 and 1997 Working Conference on Reverse Engineering (WCRE3/4), Co-General chair of the 5th International Conference on Software Reuse (June, 1998). He was recently a keynote speaker at the 1999 Symposium on Software Reusability and the 1999 Conference on Java and SmallTalk (Germany), and is presently a Program Committee member for COSET'2000 (Construction of Software Engineering Tools) at ICSE'2000.