Reverse engineering: a roadmap

By the early 1990s the need for reengineering legacy systems was already acute, but recently the demand has increased significantly with the shift toward web-based user interfaces. The demand by all business sectors to adapt their information systems to the Web has created a tremendous need for methods, tools, and infrastructures to evolve and exploit existing applications efficiently and cost-effectively. Reverse engineering has been heralded as one of the most promising technologies to combat this legacy systems problem. This paper presents a roadmap for reverse engineering research for the first decade of the new millennium, building on the program comprehension theories of the 1980s and the reverse engineering technology of the 1990s.

[1]  Meir M. Lehman Programs, life cycles, and laws of software evolution , 1980 .

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

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

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

[5]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[6]  Ben Shneiderman,et al.  Designing the User Interface: Strategies for Effective Human-Computer Interaction , 1998 .

[7]  Stanley Letovsky,et al.  Cognitive processes in program comprehension , 1986, J. Syst. Softw..

[8]  Hausi A. Müller,et al.  Rigi: a system for programming-in-the-large , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[9]  M. T. Harandi,et al.  A knowledge-based approach to automatic program analysis , 1989 .

[10]  Watts S. Humphrey,et al.  Managing the software process , 1989, The SEI series in software engineering.

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

[12]  Spencer Rugaber,et al.  Recognizing design decisions in programs , 1990, IEEE Software.

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

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

[15]  RichCharles,et al.  Recognizing a Program's Design , 1990 .

[16]  Alan R. Hevner,et al.  Using function abstraction to understand program behavior , 1990, IEEE Software.

[17]  Hausi A. Müller,et al.  A reverse engineering environment based on spatial and visual software interconnection models , 1992, SDE 5.

[18]  Mark Guzdial,et al.  Whorf: a visualization tool for software maintenance , 1992, Proceedings IEEE Workshop on Visual Languages.

[19]  Alberto O. Mendelzon,et al.  Visualizing and querying software structures , 1992, International Conference on Software Engineering.

[20]  Ben Shneiderman,et al.  Designing the user interface (2nd ed.): strategies for effective human-computer interaction , 1992 .

[21]  David A. Penny,et al.  The software landscape: a visual formalism for programming-in-the-large , 1993 .

[22]  Joel Troster,et al.  Filtering for quality , 1993, CASCON.

[23]  Blaine A. Price,et al.  A Principled Taxonomy of Software Visualization , 1993, J. Vis. Lang. Comput..

[24]  Richard C. Waters,et al.  Challenges to the field of reverse engineering , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[25]  A. von Mayrhauser,et al.  From code understanding needs to reverse engineering tool capabilities , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[26]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[27]  Atul Prakash,et al.  Investigating Reverse Engineering Technologies for the CAS Program Understanding Project , 1994, IBM Syst. J..

[28]  Atul Prakash,et al.  A Framework for Source Code Search Using Program Patterns , 1994, IEEE Trans. Software Eng..

[29]  An approach for reverse engineering of relational databases , 1994, CACM.

[30]  Laurent Dumas,et al.  Visualizing program dependencies: An experimental study , 1994, Softw. Pract. Exp..

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

[32]  Richard C. Waters,et al.  Reverse Engineeing - Introduction to the Special Section. , 1994 .

[33]  Hausi A. Müller,et al.  Programmable Reverse Engineering , 1994, Int. J. Softw. Eng. Knowl. Eng..

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

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

[36]  Ian M. Graham,et al.  Migrating to object technology , 1994 .

[37]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem : Reverse engineering , 1994 .

[38]  Oreste Signore,et al.  Reconstruction of ER Schema from Database Applications: a Cognitive Approach , 1994, ER.

[39]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

[40]  Michael Stonebraker,et al.  Migrating Legacy Systems: Gateways, Interfaces, and the Incremental Approach , 1995 .

[41]  Michael Stonebraker,et al.  Legacy Information Systems Migration: Gateways, Interfaces, and the Incremental Approach , 1995 .

[42]  Peter H. Aiken,et al.  Data Reverse Engineering : Slaying the Legacy Dragon , 1995 .

[43]  William J. Premerlani,et al.  Observed idiosyncracies of relational database designs , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

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

[45]  James R. Cordy,et al.  Information capacity preserving of relational schemas using structural transformation , 1995 .

[46]  Watts S. Humphrey,et al.  A discipline for software engineering , 2012, Series in software engineering.

[47]  Alberto O. Mendelzon,et al.  Reverse Engineering by Visualizing and Querying , 1995, Softw. Concepts Tools.

[48]  Gottfried Vossen,et al.  Transforming Relational Database Schemas into Object-Oriented Schemas according to ODMG-93 , 1995, DOOD.

[49]  Alan W. Brown,et al.  A Framework for Evaluating Software Technology , 1996, IEEE Softw..

[50]  Vincent Englebert,et al.  Database Design Recovery , 1996, CAiSE.

[51]  Hausi A. Müller,et al.  On designing an experiment to evaluate a reverse engineering tool , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[52]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[53]  Wilhelm Schäfer,et al.  Generic fuzzy reasoning nets as a basis for reverse engineering relational database applications , 1997, ESEC '97/FSE-5.

[54]  Hausi A. Müller,et al.  How do program understanding tools affect how programmers understand programs? , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[55]  Shari Lawrence Pfleeger,et al.  Software metrics (2nd ed.): a rigorous and practical approach , 1997 .

[56]  T. Lethbridge,et al.  Understanding Software Maintenance Tools: Some Empirical Research , 1997 .

[57]  Klaus R. Dittrich,et al.  On the Migration of Relational Schemas and Data to Object-OrientedDatabase Systems , 1997 .

[58]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[59]  Amjad Umar,et al.  Application (re)engineering: building Web-based applications and dealing with legacies , 1997 .

[60]  Jakob Nielsen,et al.  Usability engineering , 1997, The Computer Science and Engineering Handbook.

[61]  Perdita Stevens,et al.  Systems reengineering patterns , 1998, SIGSOFT '98/FSE-6.

[62]  J. Mylopoulos,et al.  Code migration through transformations: an experience report , 2010, CASCON.

[63]  Rick Kazman,et al.  Requirements for integrating software architecture and reengineering models: CORUM II , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[64]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[65]  Charles L. A. Clarke,et al.  Archetypal source code searches: a survey of software developers and maintainers , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[66]  Scott Tilley Coming Attractions in Program Understanding II: Highlights of 1997 and Opportunities in 1998 , 1998 .

[67]  M. N. Armstrong,et al.  Evaluating architectural extractors , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[68]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[69]  T. Dean Hendrix,et al.  Scalable visualizations to support reverse engineering: a framework for evaluation , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[70]  Spencer Rugaber,et al.  On the knowledge required to understand a program , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[71]  Annette Clewett,et al.  Network Resource Planning For SAP R/3, BAAN IV, and PeopleSoft: A Guide to Planning Enterprise Applications , 1998 .

[72]  Janice Singer,et al.  Studying work practices to assist tool design in software engineering , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[73]  Michael R. Blaha On reverse engineering of vendor databases , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[74]  Harald C. Gall,et al.  An evaluation of reverse engineering tool capabilities , 1998, J. Softw. Maintenance Res. Pract..

[75]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[76]  Nelson Weiderman,et al.  Options Analysis for Reengineering (OAR): Issues and Conceptual Approach , 1999 .

[77]  Jens H. Weber,et al.  Integration of analysis and redesign activities in information system reengineering , 1999, Proceedings of the Third European Conference on Software Maintenance and Reengineering (Cat. No. PR00090).

[78]  Jens H. Weber Management of uncertainty and inconsistency in database reengineering processes , 1999 .

[79]  T. Systa,et al.  On the relationships between static and dynamic models in reverse engineering Java software , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[80]  Johannes Martin Leveraging IBM visual age for C++ for reverse engineering tasks , 1999, CASCON.

[81]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[82]  Tarja Systä,et al.  On the Relationships between Static and Dynamic Models in Reverse Engineering Java Software , 1999, WCRE.

[83]  Ulrike Kölsch Methodische Integration und Migration von Informationssystemen in objektorientierte Umgebungen , 2000, DISDBIS.

[84]  Kenny Wong,et al.  The reverse engineering notebook , 1999 .

[85]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[86]  Mary Shaw,et al.  Software engineering education: a roadmap , 2000, ICSE '00.

[87]  Scott R. Tilley,et al.  The canonical activities of reverse engineering , 2000, Ann. Softw. Eng..

[88]  Adam A. Porter,et al.  Empirical studies of software engineering: a roadmap , 2000, ICSE '00.

[89]  Harold Ossher,et al.  Software engineering tools and environments: a roadmap , 2000, ICSE '00.