Source transformation in software engineering using the TXL transformation system

Abstract Many tasks in software engineering can be characterized as source to source transformations. Design recovery, software restructuring, forward engineering, language translation, platform migration, and code reuse can all be understood as transformations from one source text to another. The tree transformation language, TXL, is a programming language and rapid prototyping system specifically designed to support rule-based source to source transformation. Originally conceived as a tool for exploring programming language dialects, TXL has evolved into a general purpose source transformation system that has proven well suited to a wide range of software maintenance and reengineering tasks, including the design recovery, analysis and automated reprogramming of billions of lines of commercial Cobol, PL/I, and RPG code for the Year 2000. In this paper, we introduce the basic features of modern TXL and its use in a range of software engineering applications, with an emphasis on how each task can be achieved by source transformation.

[1]  Andrew J. Malton,et al.  The Denotational Semantics of a Functional Tree-Manipulation Language , 1993, Comput. Lang..

[2]  Ted J. Biggerstaff,et al.  Design recovery for maintenance and reuse , 1989, Computer.

[3]  Martin P. Ward Assembler to C migration using the FermaT transformation system , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[4]  Ira D. Baxter DMS: Practical Code Generation and Enhancement by Program Transformation , 2002 .

[5]  Andy Schürr,et al.  GXL: toward a standard exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[6]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[7]  James R. Cordy,et al.  The TXL Programming Language-Version 10 , 2000 .

[8]  C. M. Sperberg-McQueen,et al.  Extensible markup language , 1997 .

[9]  Kevin A. Schneider,et al.  Formalization of information hiding design methods , 1992, CASCON.

[10]  James R. Cordy,et al.  Practical metaprogramming , 1992, CASCON.

[11]  James R. Cordy,et al.  TXL: A Rapid Prototyping System for Programming Language Dialects , 1991, Comput. Lang..

[12]  Christopher W. Pidgeon,et al.  Software change through design maintenance , 1997, 1997 Proceedings International Conference on Software Maintenance.

[13]  Morris Sloman,et al.  An overview of the REX software architecture , 1990, [1990] Proceedings. Second IEEE Workshop on Future Trends of Distributed Computing Systems.

[14]  R. S. Arnold,et al.  Software restructuring , 1989, Proc. IEEE.

[15]  Kevin A. Schneider,et al.  HSML: design directed source code hot spots , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[16]  Arthur G. Ryman Constructing Software Design Theories and Models , 1993, ICSE Workshop on Studies of Software Design.

[17]  David Alex Lamb,et al.  IDL: sharing intermediate representations , 1987, TOPL.

[18]  C. M. Sperberg-McQueen,et al.  eXtensible Markup Language (XML) 1.0 (Second Edition) , 2000 .

[19]  James M. Purtilo,et al.  Parse tree annotations , 1989, CACM.

[20]  Arie van Deursen,et al.  The Asf+Sdf Meta-Environment: a Component-Based Language Development Environment , 2001, LDTA@ETAPS.

[21]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[22]  Richard C. Holt,et al.  The Turing programming language , 1988, CACM.