Object localization in procedural programs: a graph-based approach

Maintenance of legacy systems is a laborious, error-prone task. It is often difficult to define encapsulated components in procedural programs. We define a comprehensive process for re-engineering procedural, legacy code to an object-oriented architecture. The process is based on a program representation graph, called a statement dependence graph. The process includes a technique to recognize potential object hierarchies, state variables and operations. Procedures are partitioned into operations by analyzing variable use-def chains. The statement dependence graph is restructured by merging cohesive parts of the graph to produce a restructured graph. From the restructured graph, we identify hierarchies of objects. The process to encapsulate the objects includes streamlining the interfaces. Copyright © 2000 John Wiley & Sons, Ltd.

[1]  Thomas W. Reps,et al.  Identifying modules via concept analysis , 1997, 1997 Proceedings International Conference on Software Maintenance.

[2]  Daniel Jackson,et al.  A new model of program dependences for reverse engineering , 1994, SIGSOFT '94.

[3]  R. E. Kurt Stirewalt,et al.  The interleaving problem in program understanding , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[4]  William C. Chu,et al.  Software restructuring by enforcing localization and information hiding , 1992, Proceedings Conference on Software Maintenance 1992.

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

[6]  R. E. Kurt Stirewalt,et al.  Detecting interleaving , 1995, Proceedings of International Conference on Software Maintenance.

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

[8]  Harald C. Gall,et al.  Finding objects in procedural programs: an alternative approach , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[9]  D. R. Harris,et al.  Recovering abstract data types and object instances from a conventional procedural language , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[10]  T. A. Wiggerts,et al.  Using clustering algorithms in legacy systems remodularization , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

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

[12]  Victor R. Basili,et al.  System Structure Analysis: Clustering with Data Bindings , 1985, IEEE Transactions on Software Engineering.

[13]  N. Wilde,et al.  Identifying objects in a conventional procedural language: an example of data design recovery , 1990, Proceedings. Conference on Software Maintenance 1990.

[14]  Doris L. Carver,et al.  Creating object-oriented designs from legacy FORTRAN code , 1997, J. Syst. Softw..

[15]  Doris L. Carver,et al.  A representation model for procedural program maintenance , 1999, SAC '99.