Design of a generic reverse engineering assistant tool

Reverse engineering is a knowledge-intensive process. We believe the involvement of a domain expert is critical in any but a trivial reverse engineering task. Our approach to reverse engineering assumes close cooperation between a domain expert and a knowledge-based reverse engineering assistant tool. Reverse engineering progresses in steps. At each step, a tool applies heuristic rules to extract design views, while a domain expert accepts/rejects decisions made by a tool and provides additional input to tune in the reverse engineering process. In our projects, we reverse engineer to enhance program understanding and to facilitate software reengineering. We apply reverse engineering to variety of sources, produce many types of design views, use many design view presentation methods and, finally, deal with a rich, evolving set of reverse engineering heuristics. Therefore, we designed a flexible reverse engineering tool that can be easily customized to a reverse engineering task in hand. In particular, our tool (1) can be customized to work with different source languages, (2) contains an end-user facility to specify reverse engineering heuristics, to inspect design views extracted from source programs and to specify filters to tune in the reverse engineering process, and (3) can export design views to other tools for further processing.

[1]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[2]  Hausi A. Müller,et al.  Structural Redocumentation: A Case Study , 1995, IEEE Softw..

[3]  Benjamin Yu LARGE Software System Maintenance , 1991, Proceedings., 6th Annual Knowledge-Based Software Engineering Conference.

[4]  Eric J. Byrne Software reverse engineering: A case study , 1991, Softw. Pract. Exp..

[5]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[6]  Kathi Hogshead Davis,et al.  A Methodology for Translating a Conventional File System into an Entity-Relationship Model , 1985, ER.

[7]  Stan Jarzabek Systematic design of static program analyzers , 1994, Proceedings Eighteenth Annual International Computer Software and Applications Conference (COMPSAC 94).

[8]  Mark A. Linton Implementing relational views of programs , 1984 .

[9]  Gordon Kotik,et al.  A program transformation approach to automating software re-engineering , 1990, Proceedings., Fourteenth Annual International Computer Software and Applications Conference.

[10]  Erik G. Nilsson The Translation of a Cobol Data Structure to an Entity-Relationship Type Conceptual Schema , 1985, ER.

[11]  Stan Jarzabek PQL: A Language for Specifying Abstract Program Views , 1995, ESEC.

[12]  Stan Jarzabek Specifying and generating multilanguage software development environments , 1990, Softw. Eng. J..

[13]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[14]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[15]  Han Shen,et al.  A hybrid program knowledge base for static program analyzers , 1994, Proceedings of 1st Asia-Pacific Software Engineering Conference.

[16]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[17]  Premkumar T. Devanbu GENOA - A Customizable, Language- And Front-end Independent Code Analyzer , 1992, International Conference on Software Engineering.

[18]  Peter P. Chen The Entity-Relationship Model: Towards a unified view of Data , 1976 .

[19]  Aniello Cimitile,et al.  A logic based approach to reverse engineering tools production , 1991, Proceedings. Conference on Software Maintenance 1991.

[20]  Peter P. Chen The entity-relationship model: toward a unified view of data , 1975, VLDB '75.

[21]  H. J. van Zuylen The REDO compendium: reverse engineering for software maintenance , 1993 .

[22]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[23]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[24]  A. Davies,et al.  Domain-specific issues in reverse engineering , 1993 .