Abstract
Software module clustering problem is an important and challenging problem in software reverse engineering whose main goal is to obtain a good modular structure of the software system. The large complex software system can be divided into some subsystems that are easy to understand and maintain through the software module clustering. Aiming at solving the problem of slow convergence speed, the poor clustering result, and the complex algorithm, a software module clustering algorithm using probability selection is proposed. Firstly, we convert the software system into complex network diagram, and then we use the operation of merger, adjustment and optimization to get the software module clustering scheme. To evaluate the effectiveness of the algorithm, a set of experiments was performed on 5 real-world module clustering problems. The comparison of the experimental results proves the simplicity of the algorithm as well as the low time complexity and fast convergence speed. This algorithm provides a simple and effective engineering method for software module clustering problem.
Similar content being viewed by others
References
Wang Y, Chen X, Cao C. Study on cost of application software system maintenance[J]. Computer Engineering, 2001, 27(7): 65–66.
Bishnoi M, Singh P. Modularizing software systems using PSO optimized hierarchical clustering [C] //International Conference on Computational Techniques in Information and Communication Technologies. Washington D C: IEEE, 2016: 659–664.
Hussain I, Khanum A. A novel approach for software architecture recovery using particle swarm optimization[J]. The International Arab Journal of Information Technology, 2015, 12(1): 32–41.
Praditwong K, Harman M, Yao X. Software module clustering as a multi-objective search problem[J]. IEEE Transactions on Software Engineering, 2010, 37(2): 264–282.
Praditwong K, Yao X. A new multi-objective evolutionary optimisation algorithm: The two-archive algorithm [C] //Proceedings of the 2006 International Conference on Computational Intelligence and Security. Washington D C: IEEE, 2006: 286–291.
Praditwong K. Solving software module clustering problem by evolutionary algorithms[C] //Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE 2011). Washington D C: IEEE, 2011: 154–159.
Huang J, Liu J. A similarity-based modularization quality measure for software module clustering problems[J]. Information Sciences, 2016, 342: 96–110.
Sun S, Xia C, Wang L. Survey of the measurement of software structures based on complex networks[J]. CAAI Transactions on Intelligent Systems, 2011, 6(3): 208–212.
Watts D J, Strogatz S H. Collective dynamics of small world networks[J]. Nature, 1998, 393(6684): 440–442.
Barabasi A L, Albert R. Emergence of scaling in random networks[J]. Science, 1999, 286(5439): 509–512.
Wang B, Lu J. Software networks nodes impact analysis of complex software systems[J]. Journal of Software, 2013, 24(12): 2814–2829(Ch).
Potanin A, Noble J, Frean M, et al. Scale-free geometry in object-oriented programs[J]. Communications of the ACM, 2005, 48(5): 99–103.
Kumari A C, Srinivas K. Software module clustering using a hyper-heuristic based multi-objective genetic algorit-hm[C] //Proceedings of the 2013 3rd IEEE International Advance Computing Conference. Ghaziabad: Advance Computing Conference, 2013: 813–818.
Ma Y, He K, Li B, et al. Empirical study on the characteristics of complex networks in networked software[J]. Journal of Software, 2011, 22(3): 381–407(Ch).
Myers C R. Software systems as complex networks: structure, function, and evolvability of software collaboration graphs[J]. Physical Review E, 2003, 68(2): 352–375.
Mitchell B S. A heuristic search approach to solving the software clustering problem[C]//Proceedings of the International Conference on Software. Washington D C: IEEE, 2003: 285–288.
Mancoridis S, Mitchell B S, Chen Y F, et al. Bunch: a clustering tool for the recovery and maintenance of software system structures[C]//Proc of Int Conf of Software Maintenance. Washington D C: IEEE, 1999: 50–59.
Doval D, Mancoridis S, Mitchell B S. Automatic clustering of software systems using a genetic algorithm[C] //Proceesings of IEEE Conference on Software Technology and Engineering Practice(STEP’99). Washington D C: IEEE, 1999: 73–81.
Bavota G, Gethers M, Oliveto R, et al. Improving software modularization via automated analysis of latent topics and dependencies[J]. ACM Trans Softw Eng Method, 2014, 23(1): 1–33.
Kumara A C, Srinivas K. Software module clustering using a fast multi-objective hyper-heuristic evolutionary algorithm[J]. International Journal of Applied Information Systems, 2013, 5(6): 12–13.
Liu C, Liu J, Jiang Z. A multi objective evolutionary algorithm based on similarity for community detection from signed social networks[J]. IEEE Trans Cybern, 2014, 44(12): 2274–2287.
Praditwong K. Solving software module clustering problem by evolutionary algorithms[C] //Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE 2011). Washington D C: IEEE, 2011: 154–159.
Wang G, Zhang Q, Ma X, et al. Granular computing models for knowledge uncertainty[J]. Journal of Software, 2011, 22(4): 676–694(Ch).
Qian G, Zhang L, Zhang L, et al. Modeling method and characteristics analysis of software dependency networks[J]. Computer Science, 2008, 35(11): 239–243(Ch).
Pan W, Li B, Ma Y, et al. Multi-granularity evolution analysis of software using complex network theory[J]. Journal of Systems Science and Complexity, 2011, 24(6): 1068–1082(Ch).
Pan W, Li B, Ma Y, et al. Measuring structural quality of object-oriented software via bug propagation analysis on weighted software networks[J]. Journal of Computer Science and Technology, 2010, 25(6): 1202–1213.
Britoe A F, Goulao M. Coupling and cohesion as modularization drivers: Are we being over-persuaded[C]//Proceedings of the 15th European Conference on Software Maintenance and Reengineering. Washington D C: IEEE Computer Society, 2001: 47–57.
Mahdavi K, Harman M, Hierons R M. A multiple hill climbing approach to software module clustering [C] //Proceedings of the International Conference on Software Maintenance. Washington D C: IEEE, 2003: 315–324.
Huang J, Liu J, Yao X. A multi-agent evolutionary algorithm for software module clustering problems[J]. Soft Computing, 2016, 21(12): 3415–3428.
Author information
Authors and Affiliations
Corresponding author
Additional information
Foundation item: Supported by the Science Foundation of Education Ministry of Shaanxi Province (15JK1672), the Industrial Research Project of Shaanxi Province (2016GY-089) and the Innovation Fund of Xi’an University of Posts and Telecommunications(103-602080012)
Rights and permissions
About this article
Cite this article
Sun, J., Ling, B. Software Module Clustering Algorithm Using Probability Selection. Wuhan Univ. J. Nat. Sci. 23, 93–102 (2018). https://doi.org/10.1007/s11859-018-1299-9
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11859-018-1299-9