Tutorial GP4
Generative Programming and Component Engineering
Program Transformation Systems: Theory and Practice for Software Generation, Maintenance and Reengineering
Description
As software demands grow, so does the need for tools to aid software engineers in designing, building and
maintaining software systems. Software maintenance costs dominate software engineering costs, partly
because most such engineering is done manually. Program transformation systems are semantically sound
tools that modify programs (implement specifications, reverse engineer, change/modify/maintain code).
These tools work by applying a knowledge base of software modification components called
transformations that capture software system implementation knowledge. The transformations
mechanically reuse domain engineering products to provide domain-specific automated analysis,
modification, and generation of software, therefore enhancing productivity and quality over conventional
methods.
Program transformation systems can capture software system implementation knowledge, as well as
mechanically reuse domain-engineering products to provide domain-specific program generation. Because
they provide automation, they can carry out massive changes to large-scale legacy systems that would be
impractical by hand, such as Y2K remediation, system porting, refactoring, etc. The implementation
knowledge available to a transformation system is key to carrying out reverse engineering, by explaining
how code can implement proposed abstractions. Lastly, from the proper perspective, these systems can
unify specification, design, and maintenance lifecycle phases.
An understanding of transformation system theory and technology can provide a deep understanding of
how code generation, modification, and reuse of code and other software engineering artifacts can work.
This tutorial provides a complete overview of transformation systems, from theory to implementation to
application. The tutorial progresses from introductory to intermediate, all the necessary background will be
provided, so attendees need only have basic software engineering knowledge and motivating experience
modifying software.
Additional information about the topics covered in this tutorial can be found at
Semantic Designs.
Location
Pan Pacific Boardroom
Date and Time
Monday 10-25-2004 8:30 - 5:00 pm (full-day)
Presenters
Ira Baxter, Semantic Designs, Inc., idbaxter (at) semdesigns.com
Hongjun Zheng, Semantic Designs, Inc., hzheng (at) semdesigns.com
Ira Baxter has been building system software since 1969. He acquired his Ph.D. with emphasis on software
engineering and reuse from the University of California at Irvine in 1990. He has worked with a number
transformation systems starting with Draco in 1975, and is presently the architect of DMS, a commercial program transformation system, and designer of the PARLANSE parallel programming language in which DMS is implemented. Dr. Baxter has been invited speaker at SSR’99, co-Chair of the 1997 International Conference on Software Reuse, Program co-Chair of the Working Conference on Reverse Engineering, and Program co-Chair of the 2002 International Conference on Software Maintenance, and has been a PC member of the International Conference on Software Maintenance for a number of years.
Hongjun Zheng, received Ph.D. on computer science at Peking University in 1997, M.S. on computer
science at Jilin University in 1994. He is an active professional in R&D of software engineering. He played
inseparable roles in diverse projects. Dr. Zheng, at Semantic Designs, is performing research on
generalized compiler framework for programming languages used in large-scale software evolution and
maintenance environment. He is member of ACM and senior member of IEEE. Dr. Zheng has served as committee member
for computer-science conferences, especially those focused on software engineering and formal methods: International
Conference on Formal Engineering Methods (2003, 2004), International Workshop on Source Code Analysis and
Manipulation (2004), International Colloquium on Theoretical Aspects of Computing (2004).