Investigating Reverse Engineering Technologies for the CAS Program Understanding Project

Corporations face mounting maintenance and re-engineering costs for large legacy systems. Evolving over several years, these systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. Such knowledge is difficult to recover after many years of operation, evolution, and personnel change. To address the problem of program understanding, software engineers are spending an ever-growing amount of effort on reverse engineering technologies. This paper describes the scope and results of an ongoing research project on program understanding undertaken by the IBM Toronto Software Solutions Laboratory Centre for Advanced Studies (CAS). The project involves a team from CAS and five research groups working cooperatively on complementary reverse engineering approaches. All the groups are using the source code of SQL/DS™ (a multimillion-line relational database system) as the reference legacy system. Also discussed is an approach adopted to integrate the various tools under a single reverse engineering environment.

[1]  Elliot Soloway,et al.  PROUST: An automatic debugger for Pascal programs , 1985 .

[2]  Victor R. Basili,et al.  Tailoring the software process to project goals and environments , 1987, ICSE '87.

[3]  Hausi A. Müller,et al.  Personalized information structures , 1993, SIGDOC '93.

[4]  Alan M. Carroll Conversationbuilder: a collaborative erector set , 1993 .

[5]  Judith E. Grass Object-Oriented Design Archaeology with CIA++ , 1992, Comput. Syst..

[6]  Joel Troster,et al.  Assessing design-quality metrics on legacy software , 1992, CASCON.

[7]  J. Howard Johnson,et al.  Identifying redundancy in source code using fingerprints , 1993, CASCON.

[8]  Anthony B. O'Hare,et al.  RE-Analyzer: From Source Code to Structured Analysis , 1994, IBM Syst. J..

[9]  Harold Ossher,et al.  A Mechanism for Specifying the Structure of Large, Layered Systems , 1987, Research Directions in Object-Oriented Programming.

[10]  B. Westfechtel,et al.  GRAS, a graph-oriented database system for (software) engineering applications , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[11]  Glenford J Myers,et al.  Reliable software through composite design , 1975 .

[12]  H.A. Muller,et al.  Using virtual subsystems in project management , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[13]  Sallie M. Henry,et al.  On the relationships among three software metrics , 1981, SIGMETRICS Perform. Evaluation Rev..

[14]  Stanley Ian Letovsky,et al.  Plan analysis of programs , 1988 .

[15]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[16]  Matthias Jarke,et al.  Telos: representing knowledge about information systems , 1990, TOIS.

[17]  Linda M. Wills,et al.  Automated Program Recognition: A Feasibility Demonstration , 1987, Artif. Intell..

[18]  D. Kafura,et al.  On the relationships among three software metrics , 1981, Measurement and evaluation of software quality.

[19]  R. W. Schwanke,et al.  Discovering, visualizing, and controlling software structure , 1989, IWSSD '89.

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

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

[22]  M. Shaw Larger scale systems require higher-level abstractions , 1989, IWSSD '89.

[23]  David N. Card,et al.  Designing software for producibility , 1992, J. Syst. Softw..

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

[25]  Linore Cleveland,et al.  A Program Understanding Support Environment , 1989, IBM Syst. J..

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

[27]  Robert S. Arnold Software Reengineering , 1993 .

[28]  Kostas Kontogiannis,et al.  Toward program representation and program understanding using process algebras , 1992, CASCON.

[29]  Renato De Mori,et al.  The development of a partial design recovery environment for legacy systems , 1993, CASCON.

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

[31]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

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

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

[34]  Mark Dawood,et al.  Reengineering Technology Report. Volume 2. , 1995 .

[35]  Richard M. Karp,et al.  Efficient Randomized Pattern-Matching Algorithms , 1987, IBM J. Res. Dev..

[36]  Wojtek Kozaczynski,et al.  Program Concept Recognition and Transformation , 1992, IEEE Trans. Software Eng..

[37]  Giorgio Satta,et al.  Computation of Probabilities for an Island-Driven Parser , 1991, IEEE Trans. Pattern Anal. Mach. Intell..

[38]  Gordon Kotik,et al.  A program transformation approach to automating software re-engineering , 1990, Proceedings., Fourteenth Annual International Computer Software and Applications Conference.

[39]  Kim B. Bruce,et al.  An Algebraic Model of Subtype and Inheritance , 1990, DBPL.

[40]  Erich B. Buss,et al.  Experiences in program understanding , 1992, CASCON.

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

[42]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[43]  Atul Prakash,et al.  Source code retrieval using program patterns , 1992, [1992] Proceedings of the Fifth International Workshop on Computer-Aided Software Engineering.

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

[45]  Robert L. Glass,et al.  Measuring software design quality , 1990 .

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

[47]  Christopher W. Pidgeon,et al.  TMM: Software Maintenance by Transformation , 1986, IEEE Software.

[48]  Hans Albert Muller,et al.  Rigi: a model for software system construction, integration, and evolution based on module interface specifications , 1986 .

[49]  Erich B. Buss,et al.  A software reverse engineering experience , 2010, CASCON.