Evolution Strategy Based Automated Software Clustering Approach

In the software development life cycle, maintenance is a key phase that determines long term and effective use of any software. Maintenance can become very lengthy and costly for large software systems when structure of the system is complicated. One of the factors complicating the structure of the software system is subsystem boundaries becoming ambiguous due to system evolution, lack of up to date documentation and high turn over rate of software professionals (leading to non availability of original designers of the software systems). Software module clustering helps software professionals to recover high-level structure of the system by decomposing the system into smaller manageable subsystems, containing interdependent modules. Automated approaches simplify the software clustering process, which otherwise is quite a tedious task for medium and large software systems. We treat software clustering as an optimization problem and propose an automated technique to get near optimal decompositions of relatively independent subsystems, containing interdependent modules. We propose the use of self adaptive Evolution Strategies to search a large solution space consisting of modules and their relationships. We compare our proposed approach with a widely used genetic algorithm based approach on a number of test systems. Our proposed approach shows considerable improvement in terms of quality and effectiveness of the solutions for all tests cases.

[1]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[2]  Goldberg,et al.  Genetic algorithms , 1993, Robust Control Systems with Genetic Algorithms.

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

[4]  Balachander Krishnamurthy,et al.  Practical reusable UNIX software , 1995 .

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

[6]  Laszlo A. Belady,et al.  System partitioning and its measure , 1981, J. Syst. Softw..

[7]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[8]  Silja Meyer-Nieberg,et al.  Self-adaptation in evolution strategies , 2008 .

[9]  Brian S. Mitchell,et al.  A heuristic approach to solving the software clustering problem , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[10]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

[11]  Hans-Paul Schwefel,et al.  Evolution strategies – A comprehensive introduction , 2002, Natural Computing.

[12]  Nicolas Anquetil,et al.  Recovering software architecture from the names of source files , 1999, J. Softw. Maintenance Res. Pract..

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

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

[15]  Hans-Georg Beyer,et al.  The Theory of Evolution Strategies , 2001, Natural Computing Series.

[16]  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).

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

[18]  Probal Chaudhuri,et al.  On The Use of Genetic Algorithm with Elitism in Robust and Nonparametric Multivariate Analysis , 2003 .