Design Migration from Procedural to Object Oriented Paradigm by Clustering Data Call Graph

Management of legacy software and its code, generally written in procedural languages, is often costly and time-consuming. To help this management, a migration from procedural to object oriented paradigm could be a cost effective option. One approach for such migration can be based on the underlying dependency structure of the procedural source code. In this work, we propose a new heuristic algorithm that utilizes such structure for the design migration using agglomerative hierarchical clustering. The dependency structure that has been used involve functions, parameters and global data of the procedural code. Given a procedural code, the proposed approach produces candidate classes for an object oriented design. The proposed algorithm was tested against a database of procedural codes. The results obtained have been empirically validated using Jaccard similarity coefficient. It is observed that the proposed method yields 75.6% similarity with respect to the ground truth in the average case.

[1]  Edie M. Rasmussen,et al.  Clustering Algorithms , 1992, Information Retrieval: Data Structures & Algorithms.

[2]  Charu C. Aggarwal,et al.  Graph Clustering , 2010, Encyclopedia of Machine Learning and Data Mining.

[3]  Ying Zou,et al.  A framework for migrating procedural code to object-oriented platforms , 2001, Proceedings Eighth Asia-Pacific Software Engineering Conference.

[4]  Michael W. Trosset,et al.  Distance Matrix Completion by Numerical Optimization , 2000, Comput. Optim. Appl..

[5]  John Domingue,et al.  Redressing ITS Fallacies Via Software Visualization , 1993 .

[6]  Hong Cheng,et al.  Graph Clustering Based on Structural/Attribute Similarities , 2009, Proc. VLDB Endow..

[7]  Giuseppe A. Di Lucca,et al.  Migrating legacy systems towards object-oriented platforms , 1997, 1997 Proceedings International Conference on Software Maintenance.

[8]  Pierre Hansen,et al.  Cluster analysis and mathematical programming , 1997, Math. Program..

[9]  Standard Glossary of Software Engineering Terminology , 1990 .

[10]  Shah Mostafa Khaled,et al.  Approximating object based architecture for legacy software written in procedural languages using Variable Neighborhood Search , 2014, The 8th International Conference on Software, Knowledge, Information Management and Applications (SKIMA 2014).

[11]  Katsuhiko Gondow,et al.  Static Call Graph Generator for C++ using Debugging Information , 2007, 14th Asia-Pacific Software Engineering Conference (APSEC'07).

[12]  Lionel C. Briand,et al.  Investigating quality factors in object-oriented designs: an industrial case study , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[13]  P. E. Livadas,et al.  Program dependence analysis , 1992, Proceedings Conference on Software Maintenance 1992.

[14]  Peter Freeman,et al.  Classifying Software for Reusability , 1987, IEEE Software.

[15]  Philip S. Yu,et al.  Fast algorithms for projected clustering , 1999, SIGMOD '99.

[16]  Michael A. Heroux,et al.  Barely sufficient software engineering: 10 practices to improve your CSE software , 2009, 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering.

[17]  R. W. Schwanke,et al.  An Intelligent Tool For Reengineering Software Modularity , 1991, ICSE 1991.

[18]  Harry M. Sneed,et al.  Integrating legacy software into a service oriented architecture , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[19]  Barbara G. Ryder,et al.  Constructing the Call Graph of a Program , 1979, IEEE Transactions on Software Engineering.

[20]  Keith H. Bennett,et al.  Legacy Systems: Coping with Success , 1995, IEEE Softw..

[21]  Dineshkumar,et al.  Code to Design Migration from Structured to Object Oriented Paradigm , 2011 .

[22]  Harry M. Sneed,et al.  Extracting object-oriented specification from procedurally oriented programs , 1995, Proceedings of 2nd Working Conference on Reverse Engineering.

[23]  Xiaogang Wang,et al.  Clustering large software systems at multiple layers , 2007, Inf. Softw. Technol..

[24]  Shah Mostafa Khaled,et al.  A direction of migrating procedural paradigm to object based architecture by forming cluster of functions using local search heuristics , 2014, 2014 International Conference on Informatics, Electronics & Vision (ICIEV).

[25]  Onaiza Maqbool,et al.  Hierarchical Clustering for Software Architecture Recovery , 2007, IEEE Transactions on Software Engineering.

[26]  Arie van Deursen,et al.  Identifying objects using cluster and concept analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

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

[28]  구용완,et al.  Context Free Grammar 의 자동변환 알고리즘 연구 , 1984 .

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

[30]  Miin-Shen Yang,et al.  Alternative c-means clustering algorithms , 2002, Pattern Recognit..

[31]  Shah Mostafa Khaled,et al.  A Genetic Algorithm for Software Design Migration from Structured to Object Oriented Paradigm , 2014, ArXiv.

[32]  Spiros Mancoridis,et al.  Automatic clustering of software systems using a genetic algorithm , 1999, STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice.

[33]  Rachel Harrison,et al.  Coupling metrics for object-oriented design , 1998, Proceedings Fifth International Software Metrics Symposium. Metrics (Cat. No.98TB100262).

[34]  Alan Bundy,et al.  Context-Free Grammar , 1984 .

[35]  J. C. Lisonbee,et al.  The use of computer language compilers in legacy code migration , 1999, 1999 IEEE AUTOTESTCON Proceedings (Cat. No.99CH36323).

[36]  Md. Saidur Rahman,et al.  A new hierarchical clustering technique for restructuring software at the function level , 2013, ISEC.

[37]  Wei Li,et al.  Object-Oriented Metrics Which Predict Maintainability , 1993 .

[38]  Sagar Pidaparthi,et al.  Case study in migration to object-oriented system structure using design transformation methods , 1997, Proceedings. First Euromicro Conference on Software Maintenance and Reengineering.

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

[40]  Denys Poshyvanyk,et al.  The conceptual cohesion of classes , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[41]  Alan Snyder,et al.  Encapsulation and inheritance in object-oriented programming languages , 1986, OOPLSA '86.

[42]  Mark Shtern,et al.  Methods for selecting and improving software clustering algorithms , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[43]  Shah Mostafa Khaled,et al.  Optimizing software design migration from structured programming to object oriented paradigm , 2014, 16th Int'l Conf. Computer and Information Technology.

[44]  E. H. Khan,et al.  Object-Oriented Programming for Structured Procedural Programmers , 1995, Computer.