An Evolutionary Approach for Partitioning Weighted Module Dependency Graphs

The structure of most software systems is large and complex. Therefore, understanding these software systems is difficult. The reason for this complexity is the dependency of their varied modules on each other. The type of dependencies in software systems may be function calls, variable references, macro invocations, and so on. Dependencies of modules of a software system can be viewed as a weighted directed graph that in this paper is referred to as weighted module dependency graph (WMDG). Software clustering is the process that divides the WMDG of a large software system into different partitions with maximum intra-connectivity and minimum inter-connectivity. Software clustering problem is NP-hard and therefore software clustering algorithms try to find near optimal partitions. All algorithms, proposed for software clustering, use module dependency graphs and don't consider weights for them. In this paper, a new genetic algorithm is proposed for clustering WMDGs. Experimental results show that using WMDGs increases the efficiency of clustering algorithm.

[1]  Emden R. Gansner,et al.  Using automatic clustering to produce high-level system organizations of source code , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[2]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[3]  Dorothea Heiss-Czedik,et al.  An Introduction to Genetic Algorithms. , 1997, Artificial Life.

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

[5]  Ian Sommerville,et al.  Software Engineering, 6. Auflage , 2001 .

[6]  Richard C. Holt,et al.  On the stability of software clustering algorithms , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[7]  Ali Asghar Pourhaji Kazem,et al.  A modified genetic algorithm for software clustering problem , 2006 .

[8]  Spiros Mancoridis,et al.  Comparing the decompositions produced by software clustering algorithms using similarity measurements , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[9]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

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

[11]  Randy L. Haupt,et al.  Practical Genetic Algorithms , 1998 .

[12]  Richard C. Holt,et al.  ACCD: an algorithm for comprehension-driven clustering , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[13]  Byung Ro Moon,et al.  Genetic Algorithm and Graph Partitioning , 1996, IEEE Trans. Computers.

[14]  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.

[15]  Renée J. Miller,et al.  Reverse engineering meets data analysis , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[16]  Emden R. Gansner,et al.  Bunch: a clustering tool for the recovery and maintenance of software system structures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[17]  Richard C. Holt,et al.  MoJo: a distance metric for software clusterings , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).