Overview of reverse engineering and reuse research

Abstract While much progress has been made in software reverse engineering and reuse, significant problems remain. Reverse engineering methods predominantly address the code level, and for full effect the purpose for which the software was built, the application domain, should be understood. Reuse methods focus on library organization and on standards for component production, with much interest in object-oriented methods, but similarly to reuse software effectively it is necessary to understand the application domain, so that it is possible to choose the appropriate parts, organize these effectively in libraries, and deploy the library components in the solution to new problems. Research is now moving towards domain analysis, and current European and other research projects in reuse and reverse engineering are reviewed from the viewpoint of domain knowledge and how it is used. Other management, social, and economic issues also remain to be solved.

[1]  Jeff Magee,et al.  Dynamic Configuration for Distributed Systems , 1985, IEEE Transactions on Software Engineering.

[2]  Peter Wegner Capital-Intensive Software Technology , 1984, IEEE Software.

[3]  Ian Sommerville,et al.  An information retrieval system for software components , 1988, Softw. Eng. J..

[4]  Frank W. Calliss,et al.  Two module factoring techniques , 1989, J. Softw. Maintenance Res. Pract..

[5]  Toby J. Teorey,et al.  Design of Database Structures , 1982 .

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

[7]  F. Wolff Long-term controlling of software reuse , 1992, Inf. Softw. Technol..

[8]  Edward A. Fox,et al.  From the Editor / Growth of IRList Digest , 1987, SIGIR Forum.

[9]  Henry Ledgard ADA An Introduction , 1981, Springer New York.

[10]  Walter F. Tichy Software development control based on module interconnection , 1979, ICSE 1979.

[11]  Thomas A. Standish An Essay on Software Reuse , 1984, IEEE Transactions on Software Engineering.

[12]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[13]  Wojtek Kozaczynski,et al.  SRE: a knowledge-based environment for large-scale software re-engineering activities , 1989, ICSE '89.

[14]  Padmini Srinivasan,et al.  Thesaurus Construction , 1992, Information Retrieval: Data Structures & Algorithms.

[15]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[16]  Morris Sloman,et al.  The CONIC toolkit for building distributed systems , 1985 .

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

[18]  M. D. Lubars,et al.  Affording higher reliability through software reusability , 1986, SOEN.

[19]  Edwin H. Satterthwaite,et al.  The Impact of Mesa on System Design , 1979, ICSE.

[20]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..

[21]  Peter Freeman,et al.  Classifying Software for Reusability , 1987, IEEE Software.

[22]  Roger C. Schank,et al.  Conceptual dependency: A theory of natural language understanding , 1972 .

[23]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

[24]  Peter T. Breuer,et al.  From Programs to Z Specifications , 1989, Z User Workshop.

[25]  T. Capers Jones Reusability in Programming: A Survey of the State of the Art , 1984, IEEE Transactions on Software Engineering.

[26]  Ralph E. Johnson,et al.  Surveying current research in object-oriented design , 1990, CACM.

[27]  Shari Lawrence Pfleeger,et al.  Economics of reuse: issues and alternatives , 1990 .

[28]  Michael Z. Spivey,et al.  The Z notation , 1989 .

[29]  John A. Mariani,et al.  Software reclamation , 1990, Softw. Eng. J..

[30]  Rubén Prieto-Díaz,et al.  Domain analysis: an introduction , 1990, SOEN.

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

[32]  P. J. Lupton Promoting Forward Simulation , 1990, Z User Workshop.

[33]  Peter Freeman A Conceptual Analysis of the Draco Approach to Constructing Software Systems , 1987, IEEE Transactions on Software Engineering.

[34]  Joseph A. Goguen,et al.  Reusing and Interconnecting Software Components , 1986, Computer.

[35]  Mm Lehman,et al.  Concepts of an integrated project support environment , 1985 .

[36]  Robert G. Lanergan,et al.  Software Engineering with Reusable Designs and Code , 1984, IEEE Transactions on Software Engineering.

[37]  Walter F. Tichy Software Development Control Based On System Structure Description , 1980 .

[38]  B. Littlewood Software Reliability Model for Modular Program Structure , 1979, IEEE Transactions on Reliability.

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

[40]  Robert S. Arnold Tutorial on software restructuring , 1986 .

[41]  Grady Booch,et al.  Book Reviews , 1936, Computer.

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

[43]  R. P. Carasik,et al.  Domain description grammar: application of linguistic semantics , 1990, SOEN.

[44]  James M. Neighbors,et al.  The Draco Approach to Constructing Software from Reusable Components , 1984, IEEE Transactions on Software Engineering.

[45]  William B. Frakes,et al.  Software reuse through information retrieval , 1986, SIGF.