Software reverse engineering: A case study

This paper presents lessons learned from an experiment to reverse engineer a program. A reverse engineering process was used as part of a project to develop an Ada implementation of a Fortran program and upgrade the existing documentation. To accomplish this, design information was extracted from the Fortran source code and entered into a software development environment. The extracted design information was used to implement a new version of the program written in Ada. This experiment revealed issues about recovering design information, such as, separating design details from implementation details, dealing with incomplete or erroneous information, traceability of information between implementation and recovered design, and re‐engineering. The reverse engineering process used to recover the design, and the experience gained during the study are reported.

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

[2]  Harry M. Sneed Software Renewal: A case Study , 1984, IEEE Software.

[3]  D. J. Collington Structured design: Fundamentals of a discipline of computer program and systems design: Edward Yourdon and Larry L. Constantine Prentice-Hall, Englewood Cliffs, 1979. £13.70 , 1980 .

[4]  P. J. L. Wallis Automatic language conversion and its place in the transition to Ada , 1985, SIGAda '85.

[5]  C. V. Ramamoorthy,et al.  The C Information Abstraction System , 1990, IEEE Trans. Software Eng..

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

[7]  Song C. Choi,et al.  Extracting and restructuring the design of large systems , 1990, IEEE Software.

[8]  Robert N. Charette,et al.  Software Engineering Environments: Concepts and Technology , 1986 .

[9]  Richard C. Waters Program Translation via Abstraction and Reimplementation , 1988, IEEE Trans. Software Eng..

[10]  J. A. Ricketts,et al.  Data reengineering for application systems , 1989, Proceedings. Conference on Software Maintenance - 1989.

[11]  Robert N. Britcher,et al.  Using Modem Design Practices to Upgrade Aging Software Systems , 1986, IEEE Software.

[12]  Pearl Brereton,et al.  Software engineering environments , 1988 .

[13]  Derek J. Hatley,et al.  Strategies for Real-Time System Specification , 1987 .

[14]  Edward Yourdon,et al.  Structured design : fundamentals of a discip!ine of computer proqram and system desiqn , 1979 .

[15]  James R. Cordy,et al.  TuringTool: A User Interface to Aid in the Software Maintenance Task , 1990, IEEE Trans. Software Eng..

[16]  Aniello Cimitile,et al.  A reverse engineering methodology to reconstruct hierarchical data flow diagrams for software maintenance , 1989, Proceedings. Conference on Software Maintenance - 1989.