Union schemas as a basis for a C++ extractor

An extractor is a program which processes source code and outputs facts about the code in a software exchange format (SEF). An SEF can be further specified by a schema, analogous to a schema for a database. This paper explains how two such schemas can be combined into a union schema as the basis for creating an extractor. We describe CPPX (C Plus Plus eXtractor), which transforms a schema designed as the internals of a compiler (GCC) to a schema designed for software exchange (Datrix). CPPX performs this transformation as a pipelined sequence of sub-transformations. At each stage in the pipeline, the intermediate data conforms to the union of the two schemas.

[1]  Richard C. Holt,et al.  E/R schema for the Datrix C/C++/Java exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[2]  Jacob N. Chung,et al.  Refine user's guide , 1989 .

[3]  Rainer Koschke,et al.  Towards a standard schema for C/C++ , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[4]  Michael W. Godfrey,et al.  Connecting architecture reconstruction frameworks , 2000, Inf. Softw. Technol..

[5]  Lee Wendell Cooprider The representation of families of software systems. , 1978 .

[6]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[7]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[8]  Walter F. Tichy Software Development Control Based On System Structure Description , 1980 .

[9]  Richard C. Holt,et al.  Using graph rewriting to specify software architectural transformations , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

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

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

[12]  Thomas Reps,et al.  The synthesizer generator , 1984 .

[13]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

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

[15]  Yih-Farn Robin Chen,et al.  The C++ Information Abstractor , 1990, C++ Conference.

[16]  Georg Sander,et al.  Graph Layout through the VCG Tool , 1994, GD.