Software Module Clustering using a Fast Multi-objective Hyper-heuristic Evolutionary Algorithm

Software evolution is a natural phenomenon in the software development life cycle. As the software evolves, the modular structure of software degrades, and at one point it becomes a challenging task to maintain the software further. Software module clustering is an important activity during software maintenance whose main goal is to obtain good modular structures. Software engineers greatly emphasize on good modular structures as it is easier to comprehend, develop and maintain such software systems. In recent times, the problem has been converted into a Search-based Software Engineering Problem with multiple objectives. This problem is NP hard as it is an instance of graph partitioning and hence cannot be solved using traditional optimization techniques. The Multiobjective Hyper-heuristic Evolutionary Algorithm (MHypEA) is a fast and effective metaheuristic search technique for suggesting software module clusters while maximizing cohesion and minimizing coupling of the software modules. It incorporates twelve low-level heuristics which are based on different methods of selection, crossover and mutation operations of Evolutionary Algorithms. The selection mechanism to select a low-level heuristic is based on reinforcement learning with adaptive weights. The effectiveness of the algorithm has been studied on six realworld module clustering problems reported in the literature and the comparison of the results prove the efficacy of the MHypEA in terms of quality of solutions and computational time.

[1]  Andrew W. Moore,et al.  Reinforcement Learning: A Survey , 1996, J. Artif. Intell. Res..

[2]  Kata Praditwong,et al.  Solving software module clustering problem by evolutionary algorithms , 2011, 2011 Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE).

[3]  M.Y. Javed,et al.  Evolution Strategy Based Automated Software Clustering Approach , 2008, 2008 Advanced Software Engineering and Its Applications.

[4]  R. K. Ursem Multi-objective Optimization using Evolutionary Algorithms , 2009 .

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

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

[7]  Girish Parikh,et al.  Tutorial on Software Maintenance , 1983 .

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

[9]  Xin Yao,et al.  A New Multi-objective Evolutionary Optimisation Algorithm: The Two-Archive Algorithm , 2006, 2006 International Conference on Computational Intelligence and Security.

[10]  Xin Yao,et al.  Software Module Clustering as a Multi-Objective Search Problem , 2011, IEEE Transactions on Software Engineering.

[11]  Graham Kendall,et al.  A Hyperheuristic Approach to Scheduling a Sales Summit , 2000, PATAT.

[12]  Mark Harman,et al.  A New Representation And Crossover Operator For Search-based Optimization Of Software Modularization , 2002, GECCO.

[13]  Mark Harman,et al.  A multiple hill climbing approach to software module clustering , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[14]  Graham Kendall,et al.  Hyper-Heuristics: An Emerging Direction in Modern Search Technology , 2003, Handbook of Metaheuristics.

[15]  F. Glover,et al.  Handbook of Metaheuristics , 2019, International Series in Operations Research & Management Science.

[16]  Alexander Nareyek,et al.  Choosing search heuristics by non-stationary reinforcement learning , 2004 .