Abstract
The aim of software module clustering problems (SMCPs) is to automatically find a good quality clustering of software modules based on relationships among modules. In this paper, we propose a multi-agent evolutionary algorithm to solve this problem, labeled as MAEA-SMCPs. With the intrinsic properties of SMCPs in mind, three evolutionary operators are designed for agents to realize the purpose of competition, cooperation, and self-learning. In the experiments, practical problems are used to validate the performance of MAEA-SMCPs. The results show that MAEA-SMCPs can find clusters with high quality and small deviations. The comparison results also show that MAEA-SMCPs outperforms two existing multi-objective algorithms, namely MCA and ECA, and two existing single-objective algorithms, namely GGA and GNE, in terms of MQ.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Basil VR, Turner AJ (1975) Iterative enhancement: a practical technique for software development. IEEE Trans Softw Eng SE-1(4):390–396
Choi SC, Scacchi W (1990) Extracting and restructuring the design of large systems. IEEE Softw 7(1):66–71
Constantine LL, Yourdon E (1979) Structured design. Prentice Hall, USA
Doval D, Mancoridis S, Mitchell BS (1999) Automatic clustering of software systems using a genetic algorithm. In: Proceedings of IEEE conference on software technology and engineering practice (STEP’99), pp 73–81
Harman M, Hierons R, Proctor M (2002) A new representation and crossover operator for search-based optimization of software modularization. In: Proc. genetic and evolutionary computation conf., pp 1351–1358
Harman M, Swift S, Mahdavi K (2005) An empirical study of the robustness of two module clustering fitness functions. In: Proc. of the 7th annual conf. on genetic and evolutionary computation, pp 1029–1036
Hester SD, Parnas DL, Utter DF (1981) Using documentation as a software design medium. Bell Syst Tech J 60(8):1941–1977
Holt RC (1983) Concurrent Euclid, the UNIX system and Tunis. Addison Wesley, Reading
Holt RC, Cordy JR (1988) The turing programming language. Commun ACM 31(12):1410–1423
Hutchens DH, Basili VR (1985) System structure analysis: clustering with data bindings. IEEE Trans Softw Eng 11(8):749–757
Koschke R (2000) Atomic architectural component recovery for program understanding and evolution. PhD thesis, Inst. For Computer Science, Univ. of Stuttgart
Kumari AC, Srinivas K (2013) Software module clustering using a fast multi-objective hyper-heuristic evolutionary algorithm. Int J Appl Inf Syst 5(6):12–18
Kumari AC, Srinivas K, Gupta MP (2013) Software module clustering using a hyper-heuristic based multi-objective genetic algorithm. In: 2013 IEEE 3rd international advance computing conference (IACC), pp 813–818
Liu J, Zhong W, Jiao L (2006) A multiagent evolutionary algorithm for constraint satisfaction problems. IEEE Trans Syst Man Cybern Part B 36(1):54–73
Liu J, Zhong W, Jiao L (2010) A multiagent evolutionary algorithm for combinatorial optimization problems. IEEE Trans Syst Man Cybern Part B 40(1):229–240
Lutz R (2002) Recovering high-level structure of software systems using a minimum description length principle. In: Proc. 13th Irish conf. artificial intelligence and cognitive science
Mahdavi K (2005) A clustering genetic algorithm for software modularization with a multiple hill climbing approach. Ph.D. dissertation, Brunei University, UK
Mahdavi K, Harman M, Hierons RM (2003a) A multiple hill climbing approach to software module clustering. In: Proceedings of the international conference on software maintenance, pp 315–324
Mahdavi K, Harman M, Hierons RM (2003b) Finding building blocks for software clustering. In: Proc. of genetic and evolutionary computation conference, pp 2513–2514
Mamaghani AS, Meybodi MR (2009) Clustering of software systems using new hybrid algorithms. In: Proceedings of the ninth IEEE international conference on computer and information technology (CIT’09), vol 1
Mancoridis S, Mitchell BS, Rorres C, Chen YF, Gansner ER (1998) Using automatic clustering to produce high-level system organizations of source code. In: Proc. int’l workshop program comprehension, pp 45–53
Mancordis S, Mitchell BS, Chen Y, Gansner ER (1999) Bunch: a clustering tool for the recovery and maintenance of software system Structures. In: Proc. of int. conf. of software, maintenance, pp 50–59
Mitchell BS (2002) A heuristic search approach to solving the software clustering problem. Ph.D. dissertation, Drexel University, USA
Mitchell BS, Mancoridis S (2002) Using heuristic search techniques to extract design abstractions from source code. In: Proc. genetic and evolutionary computation conf., pp 1375–1382
Praditwong K (2011) Solving software module clustering problem by evolutionary algorithm. In: Proc. of the 8th international joint conference computer science and software engineering, pp 154–159
Praditwong K, Yao X (2006) A new multi-objective evolutionary optimisation algorithm: the two-archive algorithm. In: Cheung Y-M, Wang Y, Liu H (eds) Proc. int’l conf. computational intelligence and security, vol 1, pp 286–291
Praditwong K, Harman M, Yao X (2011) Software module clustering as a multi-objective search problem. IEEE Trans Softw Eng 37(2):264–282
Pressman RS (2005) Software engineering: a practitioner’s approach, 6th edn. McGraw-Hill Higher Education, Maidenheach
Tasgin M, Herdagdelen A, Bingol H (2007) Community detection in complex networks using genetic algorithms. arXiv:0711.0491
Zhong W, Liu J, Xue M, Jiao L (2004) A multiagent genetic algorithm for global numerical optimization. IEEE Trans Syst Man Cybern Part B 34(2):1128–1141
Acknowledgments
This work is partially supported by the EU FP7-PEOPLE-2009-IRSES project under Nature Inspired Computation and its Applications (NICaiA) (247619), the Outstanding Young Scholar Program of National Natural Science Foundation of China (NSFC) under Grant 61522311, the General Program of NSFC under Grant 61271301, the Overseas, Hong Kong and Macao Scholars Collaborated Research Program of NSFC under Grant 61528205, the Research Fund for the Doctoral Program of Higher Education of China under Grant 20130203110010, and the Fundamental Research Funds for the Central Universities under Grant K5051202052.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
The authors declare that there is no conflict of interest regarding the publication of this paper.
Additional information
Communicated by V. Loia.
Rights and permissions
About this article
Cite this article
Huang, J., Liu, J. & Yao, X. A multi-agent evolutionary algorithm for software module clustering problems. Soft Comput 21, 3415–3428 (2017). https://doi.org/10.1007/s00500-015-2018-5
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00500-015-2018-5