An Integrated Environment for Reuse Reengineering C Code

Abstract The paper presents an integrated environment implemented in Prolog for reuse reengineering existing C systems. Different tools developed in the RE2 project are integrated in the environment through sharing a fine-grained representation for C programs, the Combined C Graph (CCG). Different views of a system can be abstracted and visualised from the data-base of Prolog facts implementing its CCG representation. Software metric tools evaluate the reengineering costs, while reengineering operations are expressed as transformation rules and a symbolic executor allows the production of the reusable module's specification.

[1]  Aniello Cimitile,et al.  A Logic-Based Approach to Reverse Engineering Tools Production , 1992, IEEE Trans. Software Eng..

[2]  Aniello Cimitile,et al.  A Specification Driven Slicing Process for Identifying Reusable Functions , 1996, J. Softw. Maintenance Res. Pract..

[3]  Aniello Cimitile,et al.  A reverse engineering method for identifying reusable abstract data types , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[4]  Aniello Cimitile,et al.  Extracting abstract data types from C programs: A case study , 1993, 1993 Conference on Software Maintenance.

[5]  Gerardo Canfora,et al.  An improved algorithm for identifying objects in code , 1996 .

[6]  Aniello Cimitile,et al.  Experiments in identifying reusable abstract data types in program code , 1993, [1993] IEEE Second Workshop on Program Comprehension.

[7]  Aniello Cimitile,et al.  Prolog for Software Maintenance , 1995, SEKE.

[8]  Aniello Cimitile,et al.  Qualifying reusable functions using symbolic execution , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[9]  Andrea De Lucia,et al.  A Specification Driven Slicing Process for Identifying Reusable Functions , 1996, J. Softw. Maintenance Res. Pract..

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

[11]  Aniello Cimitile,et al.  Software salvaging based on conditions , 1994, Proceedings 1994 International Conference on Software Maintenance.

[12]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[13]  Keith H. Bennett,et al.  Formal Methods to Aid the Evolution of Software , 1995, Int. J. Softw. Eng. Knowl. Eng..

[14]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[15]  Aniello Cimitile,et al.  RE2: Reverse-engineering and reuse re-engineering , 1994, J. Softw. Maintenance Res. Pract..

[16]  Giuseppe Visaggio,et al.  Software salvaging and the call dominance tree , 1995, J. Syst. Softw..

[17]  Manfred Nagl,et al.  Building integrated software development environments. Part I: tool specification , 1992, TSEM.

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

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

[20]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[21]  Brian A. Malloy,et al.  A Unified Interprocedural Program Representation for a Maintenance Environment , 1993, IEEE Trans. Software Eng..

[22]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[23]  Aniello Cimitile,et al.  Reuse reengineering and validation via concept assignment , 1993, 1993 Conference on Software Maintenance.

[24]  Anneliese Amschler Andrews,et al.  Program Comprehension During Software Maintenance and Evolution , 1995, Computer.

[25]  Malcolm Munro,et al.  Understanding C programs using the Combined C Graph representation , 1994, Proceedings 1994 International Conference on Software Maintenance.

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

[27]  Aniello Cimitile,et al.  Identifying reusable functions using specification driven program slicing: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[28]  J.A. Gomez,et al.  Locating user functionality in old code , 1992, Proceedings Conference on Software Maintenance 1992.

[29]  Premkumar T. Devanbu GENOA - A Customizable, Language- And Front-end Independent Code Analyzer , 1992, International Conference on Software Engineering.

[30]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[31]  David Notkin,et al.  Gandalf: Software development environments , 1986, IEEE Transactions on Software Engineering.