Soft Computing

, Volume 23, Issue 21, pp 11141–11165 | Cite as

Multi-objective search-based software modularization: structural and non-structural features

  • Nafiseh Sadat Jalali
  • Habib IzadkhahEmail author
  • Shahriar Lotfi
Methodologies and Application


Software modularization techniques are employed to understand a software system. The purpose of modularization is to decompose a software system from a source code into meaningful and understandable subsystems (modules). Since modularization of a software system is an NP-hard problem, the modularization quality obtained using evolutionary algorithms is more reasonable than greedy algorithms. All evolutionary algorithms presented for software modularization only consider structural features that are dependent on the syntax of programming languages. For most programming languages, does not exist a tool to extract structural features, so it is not possible to modularize them. To overcome this problem, this paper presents a new multi-objective fitness function, named MOF, which exploits the structural (such as calling dependency and inheritance dependency) and non-structural features (such as semantic contained in the code comments and identifier names), aiming to automatically guide optimization algorithms to find a good decomposition of software systems. To evaluate the performance of this objective function, three optimization strategies, namely global-based search, combining global and local search, and Estimation of Distribution (EoD), are adapted to optimize it. The results on Mozilla Firefox indicate that the proposed algorithm which is based on EoD along with the new MOF function outperforms the algorithms that use structural-based objective functions in guiding the optimization process, in finding more understandable modules.


Evolutionary algorithms Modularization Clustering Estimation of distribution algorithm Reverse Engineering 



There is no funding for this study.

Compliance with ethical standards

Conflict of interest

All authors declare that they have no conflict of interest.

Ethical approval

This article does not contain any studies with human participants performed by any of the authors.


  1. Abualigah LM, Khader AT (2017) Unsupervised text feature selection technique based on hybrid particle swarm optimization algorithm with genetic operators for the text clustering. J Supercomput 73(11):4773–4795CrossRefGoogle Scholar
  2. Abualigah LM, Khader AT, Al-Betar MA (2016, July) Unsupervised feature selection technique based on genetic algorithm for improving the text clustering. In: Computer science and information technology (CSIT), 2016 7th international conference on. IEEE, pp 1–6Google Scholar
  3. Abualigah LM, Khader AT, Hanandeh ES, Gandomi AH (2017a) A novel hybridization strategy for krill herd algorithm applied to clustering techniques. Appl Soft Comput 60:423–435CrossRefGoogle Scholar
  4. Abualigah LM, Khader AT, Al-Betar MA, Alomari OA (2017b) Text feature selection with a robust weight scheme and dynamic dimension reduction to text document clustering. Expert Syst Appl 84:24–36CrossRefGoogle Scholar
  5. Abualigah LM, Khader AT, Hanandeh ES (2018) Hybrid clustering analysis using improved krill herd algorithm. Appl Intell 48(11):4047–4071. CrossRefGoogle Scholar
  6. Alswaitti M, Albughdadi M, Isa NAM (2018) Density-based particle swarm optimization algorithm for data clustering. Expert Syst Appl 91:170–186CrossRefGoogle Scholar
  7. Andritsos P, Tzerpos V (2005) Information-theoretic software clustering. IEEE Trans Softw Eng 31(2):150–165CrossRefGoogle Scholar
  8. Bavota G, Carnevale F, De Lucia A, Di Penta M, Oliveto R (2012, September) Putting the developer in-the-loop: an interactive GA for software re-modularization. In: International symposium on search based software engineering. Springer, Berlin, pp 75–89Google Scholar
  9. Candela I, Bavota G, Russo B, Oliveto R (2016) Using cohesion and coupling for software remodularization: is it enough? ACM Trans Softw Eng Methodol (TOSEM) 25(3):24CrossRefGoogle Scholar
  10. Chang L, Li W, Qin L, Zhang W, Yang S (2017) pSCAN: fast and exact structural graph clustering. IEEE Trans Knowl Data Eng 29(2):387–401CrossRefGoogle Scholar
  11. Chhabra JK (2015) Search-based object-oriented software re-structuring with structural coupling strength. Procedia Comput Sci 54:380–389CrossRefGoogle Scholar
  12. Chhabra JK (2017) Harmony search based remodularization for object-oriented software systems. Comput Lang Syst Struct 47:153–169Google Scholar
  13. Cincotti A, Cuttelo V, Pavone M (2002, May) Graph partitioning using genetic algorithms with ODPX. In: Proceedings of the world congress on computational intelligenceGoogle Scholar
  14. Corazza A, Di Martino S, Scanniello G (2010, March) A probabilistic based approach towards software system clustering. In: Software maintenance and reengineering (CSMR), 2010 14th European conference on. IEEE, pp 88–96Google Scholar
  15. Dumais ST (2004) Latent semantic analysis. Ann Rev Inf Sci Technol 38(1):188–230CrossRefGoogle Scholar
  16. Garcia J, Krka I, Mattmann C, Medvidovic N (2013, May) Obtaining ground-truth software architectures. In: Proceedings of the 2013 international conference on software engineering. IEEE Press, pp 901–910Google Scholar
  17. Huang J, Liu J (2016) A similarity-based modularization quality measure for software module clustering problems. Inf Sci 342:96–110CrossRefGoogle Scholar
  18. Huang J, Liu J, Yao X (2017) A multi-agent evolutionary algorithm for software module clustering problems. Soft Comput 21(12):3415–3428CrossRefGoogle Scholar
  19. Isazadeh A, Izadkhah H, Elgedawy I (2017) Source code modularization: theory and techniques. Springer. ISBN 978-3-319-63346-6Google Scholar
  20. Izadkhah H, Elgedawy I, Isazadeh A (2016) E-CDGM: an evolutionary call dependency graph modularization approach for software systems. Cybern Inf Technol 16(3):70–90Google Scholar
  21. Jeet K, Dhir R (2016a) Software module clustering using hybrid socio-evolutionary algorithms. Int J Inf Eng Electron Bus 8(4):43zbMATHGoogle Scholar
  22. Jeet K, Dhir R (2016) Software clustering using hybrid multi-objective black hole algorithm. In: SEKE, pp 650–653Google Scholar
  23. Kumari AC, Srinivas K (2016) Hyper-heuristic approach for multi-objective software module clustering. J Syst Softw 117:384–401CrossRefGoogle Scholar
  24. Liu S, Zhou B, Huang D, Shen L (2017) Clustering mixed data by fast search and find of density peaks. Math Probl Eng 2017:1–7Google Scholar
  25. Lutellier T, Chollak D, Garcia J, Tan L, Rayside D, Medvidovic N, Kroeger R (2017) Measuring the impact of code dependencies on software architecture recovery techniques. IEEE Trans Softw Eng 44:159–181CrossRefGoogle Scholar
  26. Mahdavi K (2005) A clustering genetic algorithm for software modularisation with a multiple hill climbing approach. Doctoral Dissertation, Brunel UniversityGoogle Scholar
  27. Mahdavi K, Harman M, Hierons R (2003, July) Finding building blocks for software clustering. In: Genetic and evolutionary computation conference. Springer, Berlin, pp 2513–2514Google Scholar
  28. Mamaghani AS, Hajizadeh M (2014, September). Software modularization using the modified firefly algorithm. In: Software engineering conference (MySEC), 2014 8th Malaysian. IEEE, pp 321–324Google Scholar
  29. Mamaghani AS, Meybodi MR (2009, October) Clustering of software systems using new hybrid algorithms. In: Computer and information technology, 2009. CIT’09. Ninth IEEE international conference on, vol 1. IEEE, pp 20–25Google Scholar
  30. Maqbool O, Babri HA (2004, March) The weighted combined algorithm: A linkage algorithm for software clustering. In: Software maintenance and reengineering, 2004. CSMR 2004. Proceedings. Eighth European conference on. IEEE, pp 15–24Google Scholar
  31. Maqbool O, Babri H (2007) Hierarchical clustering for software architecture recovery. IEEE Trans Softw Eng 33(11):759–780CrossRefGoogle Scholar
  32. Misra J (2012) Java source-code clustering: unifying syntactic and semantic features. arXiv preprint arXiv:1208.6408
  33. Misra J, Annervaz KM, Kaulgud V, Sengupta S, Titus G (2012, October) Software clustering: unifying syntactic and semantic features. In: Reverse engineering (WCRE), 2012 19th working conference on. IEEE, pp 113–122Google Scholar
  34. Mitchell BS, Mancoridis S (2002) A heuristic search approach to solving the software clustering problem. Drexel University, PhiladelphiaGoogle Scholar
  35. Mitchell BS, Mancoridis S (2006) On the automatic modularization of software systems using the bunch tool. IEEE Trans Softw Eng 32(3):193–208CrossRefGoogle Scholar
  36. Mitchell BS, Mancoridis S (2008) On the evaluation of the Bunch search-based software modularization algorithm. Soft Comput 12(1):77–93CrossRefGoogle Scholar
  37. Mkaouer W, Kessentini M, Shaout A, Koligheu P, Bechikh S, Deb K, Ouni A (2015) Many-objective software remodularization using NSGA-III. ACM Trans Softw Eng Methodol (TOSEM) 24(3):17CrossRefGoogle Scholar
  38. Mohammadi S, Izadkhah H (2018) A new algorithm for software clustering considering the knowledge of dependency between artifacts in the source code. Inf Softw Technol 105:252–256. CrossRefGoogle Scholar
  39. Monçores MC, Alvim AC, Barros MO (2018) Large neighborhood search applied to the software module clustering problem. Comput Oper Res 91:92–111MathSciNetCrossRefGoogle Scholar
  40. Naseem R, Maqbool O, Muhammad S (2013) Cooperative clustering for software modularization. J Syst Softw 86(8):2045–2062CrossRefGoogle Scholar
  41. Naseem R, Deris MBM, Maqbool O (2014, December) Software modularization using combination of multiple clustering. In: Multi-topic conference (INMIC), 2014 IEEE 17th international. IEEE, pp 277–281Google Scholar
  42. Parsa S, Bushehrian O (2005) A new encoding scheme and a framework to investigate genetic clustering algorithms. J Res Pract Inf Technol 37(1):127zbMATHGoogle Scholar
  43. Pfleeger SL (2001) Software engineering: theory and practice, 2nd edn. Prentice Hall, Upper Saddle RiverGoogle Scholar
  44. Pigoski TM (1996) Practical software maintenance: best practices for managing your software investment. Wiley, HobokenGoogle Scholar
  45. Praditwong K, Harman M, Yao X (2011) Software module clustering as a multi-objective search problem. IEEE Trans Softw Eng 37(2):264–282CrossRefGoogle Scholar
  46. Qiu D, Zhang Q, Fang S (2015) Reconstructing software high-level architecture by clustering weighted directed class graph. Int J Softw Eng Knowl Eng 25(04):701–726CrossRefGoogle Scholar
  47. Rathee A, Chhabra JK (2017) Software remodularization by estimating structural and conceptual relations among classes and using hierarchical clustering. In: Advanced informatics for computing research. Springer, Singapore, pp 94–106Google Scholar
  48. Saeed M, Maqbool O, Babri HA, Hassan SZ, Sarwar SM (2003, March) Software clustering techniques and the use of combined algorithm. In: Software maintenance and reengineering, 200 Proceedings. Seventh European conference on. IEEE, pp 301–306Google Scholar
  49. Shokoufandeh A, Mancoridis S, Maycock M (2002) Applying spectral methods to software clustering. In Reverse engineering, 2002. Proceedings. Ninth working conference on. IEEE, pp 3–10Google Scholar
  50. Shokoufandeh A, Mancoridis S, Denton T, Maycock M (2005) Spectral and meta-heuristic algorithms for software clustering. J Syst Softw 77(3):213–223CrossRefGoogle Scholar
  51. Srinivas C, Radhakrishna V, Rao CG (2013a) Clustering software components for program restructuring and component reuse using hybrid XOR similarity function. AASRI Procedia 4:319–328CrossRefGoogle Scholar
  52. Srinivas C, Radhakrishna V, Rao CV (2013, December) Clustering software components for component reuse and program restructuring. In Proceedings of the second international conference on innovative computing and cloud computing. ACM, p 261Google Scholar
  53. Tajgardan M, Izadkhah H, Lotfi S (2016) Software systems clustering using estimation of distribution approach. J Appl Comput Sci Methods 8(2):99–113CrossRefGoogle Scholar
  54. Tzerpos V, Holt RC (1999, October) MoJo: A distance metric for software clusterings. In: Reverse engineering, 1999. Proceedings. Sixth working conference on. IEEE, pp 187–193Google Scholar
  55. Wen Z, Tzerpos V (2004, June) An effectiveness measure for software clustering algorithms. In: Program comprehension, 2004. Proceedings. 12th IEEE international workshop on. IEEE, pp 194–203Google Scholar
  56. Wen D, Qin L, Zhang Y, Chang L, Lin X (2017) Efficient structural graph clustering: an index-based approach. Proc VLDB Endow 11(3):243–255CrossRefGoogle Scholar

Copyright information

© Springer-Verlag GmbH Germany, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Department of Computer Science, Faculty of Mathematical SciencesUniversity of TabrizTabrizIran

Personalised recommendations