Reverse Engineering of Legacy Code is Intractable

Reverse engineering of large legacy software systems is widely recognized to be a difficult problem. How bad is it? By an argument that identifies key underlying sources of the difficulty, reverse engineering of legacy code is shown to be intractable in the usual computational complexity sense. This conclusion implies that we should not be too enthusiastic about the ultimate value of reverse engineering as the centerpiece of a cost-effective approach to constructing new generations of systems.

[1]  Richard C. Waters,et al.  Reverse engineering: progress along many dimensions , 1994, CACM.

[2]  Joseph Eugene Hollingsworth Software component design-for-reuse: a language-independent discipline applied to ADA , 1992 .

[3]  Bruce W. Weide,et al.  Copying and Swapping: Influences on the Design of Reusable Software Components , 1991, IEEE Trans. Software Eng..

[4]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

[5]  E. John,et al.  Software Quality Is Inversely Proportional to Potential LocalVeri cation E ort , 1993 .

[6]  CORPORATE Computer Science and Technology Board,et al.  Scaling up: a research agenda for software engineering , 1990, CACM.

[7]  William F. Ogden,et al.  Modular Verification of Ada Generics , 1991, Comput. Lang..

[8]  William F. Ogden,et al.  Modular Verification of Data Abstractions with Shared Realizations , 1994, IEEE Trans. Software Eng..

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

[10]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[11]  Peter G. Neumann,et al.  Are dependable systems feasible? , 1993, CACM.

[12]  J. F. Traub,et al.  Scaling Up: A Research Agenda for Software Engineering , 1989 .

[13]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[14]  Ashok K. Goel,et al.  Functional representation as design rationale , 1993, Computer.

[15]  Wojtek Kozaczynski,et al.  Automated support for legacy code understanding , 1994, CACM.

[16]  Franz Weber Getting Class Correctness and System Correctness Equivalent (How to get covariance right) , 1992, TOOLS.

[17]  Gary T. Leavens,et al.  Reasoning about object-oriented programs that use subtypes , 1990, OOPSLA/ECOOP '90.

[18]  Norman Wilde,et al.  Maintaining object-oriented software , 1993, IEEE Software.

[19]  Stephen A. Cook,et al.  Soundness and Completeness of an Axiom System for Program Verification , 1978, SIAM J. Comput..