Semantic and behavioral library transformations

While software methodology encourages the use of libraries and advocates architectures of layered libraries, in practice the composition of libraries is not always seamless and the combination of two well-designed libraries not necessarily well designed, since it could result in suboptimal call sequences, lost functionality, or avoidable overhead. In this paper we introduce Simplicissimus, a framework for rewrite-based source code transformations that allows for code replacement in a systematic and safe manner. We discuss the design and implementation of the framework and illustrate its functionality with applications in several areas.

[1]  Sibylle Schupp,et al.  Concept-based component libraries and optimizing compilers , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

[2]  Gregory V. Wilson,et al.  Parallel Programming Using C , 1996 .

[3]  Sibylle Schupp,et al.  Library transformations , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[4]  Kevin A. Schneider,et al.  Software engineering by source transformation - experience with TXL , 2001, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation.

[5]  Ira D. Baxter,et al.  Mechanical Tool Support for High Integrity Software Development , 1998 .

[6]  Andreas Ludwig,et al.  Aspect Weaving with Graph Rewriting , 1999, GCSE.

[7]  Neil D. Jones,et al.  An introduction to partial evaluation , 1996, CSUR.

[8]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[9]  Charles Simonyi The Future is Intentional , 1999, Computer.

[10]  Matthew H. Austern Generic programming and the STL - using and extending the C++ standard template library , 1999, Addison-Wesley professional computing series.

[11]  Alexander A. Stepanov,et al.  Tecton: A Language for Manipulating Generic Objects , 1981, Program Specification.

[12]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

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

[14]  Calvin Lin,et al.  An annotation language for optimizing software libraries , 1999, DSL '99.

[15]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

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

[17]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[18]  W. J. Cullyer High Integrity Systems , 1991 .

[19]  Dawson R. Engler,et al.  Interface Compilation: Steps Toward Compiling Program Interfaces as Languages , 1999, IEEE Trans. Software Eng..

[20]  Stanley B. Lippman C++ gems , 1996 .

[21]  R. Wille Concept lattices and conceptual knowledge systems , 1992 .

[22]  Oege de Moor,et al.  Imperative Program Transformation by Rewriting , 2001, CC.

[23]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[24]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[25]  Alexander A. Stepanov,et al.  Generic Programming , 1988, ISSAC.

[26]  Eelco Visser,et al.  Stratego: A Language for Program Transformation Based on Rewriting Strategies , 2001, RTA.