Identifying Objects in Legacy Systems for Reuse and Reengineering

Abstract : This project investigated the problem of migrating legacy software systems into object oriented systems. We have successfully developed a technique for automatically refactoring legacy programs to make them object oriented, without changing their external behavior. The technique consists of three parts. First, all non-recursive functions of a program are inlined to create one big function. This function is then broken into smaller set of functions using certain rules of cohesion. The new set of functions are partitioned using cluster analysis such that each set of function represents a set of methods in a class. Our approach offers significant improvement over previous approaches. Since the program is factored into a new set of functions, our approach identifies objects even in poorly written programs, where other approaches fail. We are now experimenting with automatically identifying poorly written functions so that we can perform selective inlining. Our results provide an important milestone in automatic approaches for overhauling legacy software systems.

[1]  Arun Lakhotia,et al.  Toward experimental evaluation of subsystem classification recovery techniques , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[2]  Arun Lakhotia,et al.  Debugging program failure exhibited by voluminous data , 1998 .

[3]  Gregor Snelting,et al.  Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[4]  Jong-Deok Choi,et al.  Static slicing in the presence of goto statements , 1994, TOPL.

[5]  Arun Lakhotia DIME: a direct manipulation environment for evolutionary development of software , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

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

[7]  Arun Lakhotia,et al.  Experimental Evaluation of Agreement among Programmers in Applying the Rules of Cohesion , 1999, J. Softw. Maintenance Res. Pract..

[8]  Arun Lakhotia,et al.  A Unified Framework For Expressing Software Subsystem Classification Techniques , 1997, J. Syst. Softw..

[9]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[10]  J. Nandigam A measure for module cohesion , 1995 .

[11]  Arun Lakhotia,et al.  Restructuring programs by tucking statements into functions , 1998, Inf. Softw. Technol..

[12]  Arun Lakhotia Rule-based approach to computing module cohesion , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[13]  Hiralal Agrawal On slicing programs with jump statements , 1994, PLDI '94.

[14]  Arun Lakhotia,et al.  Debugging program failures exhibited by voluminous data , 1994 .