An Intermediate Representation for Reverse Engineering Analyses

Intermediate representations (IR) are a key issue both for compilers as well as for reverse engineering tools to enable efficient analyses. Research in the field of compilers has proposed many sophisticated IRS that can be used in the domain of reverse engineering, especially in the case of deep analyses, but reverse engineering has also its own requirements for intermediate representations not covered by traditional compiler technology This paper discusses requirements of IRS for reverse engineering. It shows then how extending and integrating existing IRS can meet most of these requirements. These extensions include a generalized AST and a mechanism supporting multiple views on programs. Moreover, the paper shows how these views can efficiently be implemented.

[1]  Aniello Cimitile,et al.  Reverse engineering: Algorithms for program graph production , 1991, Softw. Pract. Exp..

[2]  David Garlan,et al.  Formalizing architectural connection , 1994, Proceedings of 16th International Conference on Software Engineering.

[3]  Aniello Cimitile,et al.  Qualifying reusable functions using symbolic execution , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[4]  Hausi A. Müller,et al.  Composing subsystem structures using (k,2)-partite graphs , 1990, Proceedings. Conference on Software Maintenance 1990.

[5]  Jean-Francois Girard,et al.  Comparison of abstract data type and abstract state encapsulation detection techniques for architectural understanding , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[6]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[7]  Rick Kazman,et al.  Requirements for integrating software architecture and reengineering models: CORUM II , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[8]  Spencer Rugaber,et al.  Creating a research infrastructure for reengineering , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[9]  Paul Klint,et al.  Evolutionary software engineering: a component-based approach , 1998, Systems Implementation 2000.