Reverse Engineering: Why and How to Reverse Engineer Software

Today especially large organizations are not only faced with the problem of replacing their information systems with completely new ones, but they have to maintain and to gain control over their legacy applications. Reverse engineering provides the means for this purpose supporting in recapturing lost information, restructuring complex systems or transforming old systems to a new and more maintainable architecture. This paper introduces the basic concepts of reverse engineering, clarifies related terms and indicates important reverse engineering approaches. Furthermore, a particular reverse engineering methodology for re-architecturing legacy applications is introduced and its impact on software engineering is discussed.

[1]  Peter Wegner,et al.  Concepts and paradigms of object-oriented programming , 1990, OOPS.

[2]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

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

[4]  Ivar Jacobson,et al.  Reengineering of old systems to an object-oriented architecture , 1991, OOPSLA '91.

[5]  Harry M. Sneed,et al.  Extracting object-oriented specification from procedurally oriented programs , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

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

[7]  Harald C. Gall,et al.  Capsule Oriented Reverse Engineering for Software Reuse , 1993, ESEC.

[8]  Norman Wilde,et al.  Dependency analysis tools: reusable components for software maintenance , 1989, Proceedings. Conference on Software Maintenance - 1989.

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

[10]  Spencer Rugaber,et al.  The representation problem in reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[11]  Steven P. Reiss,et al.  Support for Maintaining Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[12]  Roland Mittermeir,et al.  Using Domain Knowledge to Improve Reverse Engineering , 1996, Int. J. Softw. Eng. Knowl. Eng..

[13]  Harald C. Gall,et al.  COREM — Objektorientiertes Reverse Engineering , 1995 .

[14]  A. L. Gilbert,et al.  Documentation in a software maintenance environment , 1988, Proceedings. Conference on Software Maintenance, 1988..

[15]  Ted J. Biggerstaff,et al.  The concept assignment problem in program understanding , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[16]  H. M. SNEED,et al.  Economics of software re-engineering , 1991, J. Softw. Maintenance Res. Pract..

[17]  Jim Q. Ning,et al.  Knowledge-based program analysis , 1990, IEEE Software.

[18]  Roland Mittermeir,et al.  Improving program understanding by unfolding layers of interacting patterns , 1996, WPC '96. 4th Workshop on Program Comprehension.

[19]  Roland Mittermeir,et al.  Object-Oriented Re-Architecturing , 1995, ESEC.

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

[21]  Coln Atkinson,et al.  Object-oriented development: The fusion method , 1996 .

[22]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[23]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[24]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[25]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[26]  E. B. Swanson,et al.  Software maintenance management , 1980 .

[27]  B. K. Das A knowledge-based approach to the analysis of code and program design language (PDL) , 1989, Proceedings. Conference on Software Maintenance - 1989.

[28]  Aniello Cimitile,et al.  Reverse engineering processes, design document production, and structure charts , 1992, J. Syst. Softw..

[29]  Linda M. Wills,et al.  Recognizing a program's design: a graph-parsing approach , 1990, IEEE Software.

[30]  Victor R. Basili,et al.  Identifying and qualifying reusable software components , 1991, Computer.

[31]  Gill Smith,et al.  Object-oriented analysis , 1988, WADAS '88.

[32]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[33]  John W. Daly,et al.  The effect of inheritance on the maintainability of object-oriented software: an empirical study , 1995, Proceedings of International Conference on Software Maintenance.

[34]  Stephen J. Mellor,et al.  Object Oriented Systems Analysis: Modeling the World in Data , 1988 .

[35]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[37]  Roland Mittermeir,et al.  Pattern-Driven Reverse Engineering , 1995, SEKE.

[38]  Harald C. Gall,et al.  Finding objects in procedural programs: an alternative approach , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[39]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

[40]  C.,et al.  Application Patterns in Re-Engineering : Identifying and Using Reusable , 1996 .

[41]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem , 1994, CACM.

[42]  H. M. Sneed,et al.  A study on the effect of reengineering upon software maintainability , 1990, Proceedings. Conference on Software Maintenance 1990.

[43]  Wojtek Kozaczynski,et al.  Recovering reusable components from legacy systems by program segmentation , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[44]  WegnerPeter Concepts and paradigms of object-oriented programming , 1990 .

[45]  Genny Tortora,et al.  An integrated and interactive reverse engineering environment for existing software comprehension , 1993, [1993] IEEE Second Workshop on Program Comprehension.