{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,16]],"date-time":"2025-10-16T03:57:00Z","timestamp":1760587020458,"version":"3.40.5"},"reference-count":71,"publisher":"Wiley","license":[{"start":{"date-parts":[[2020,9,30]],"date-time":"2020-09-30T00:00:00Z","timestamp":1601424000000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Complexity"],"published-print":{"date-parts":[[2020,9,30]]},"abstract":"<jats:p>Software refactoring is a software maintenance action to improve the software internal quality without changing its external behavior. During the maintenance process, structural refactoring is performed by remodularizing the source code. Software clustering is a modularization technique to remodularize artifacts of source code aiming to improve readability and reusability. Due to the NP hardness of the clustering problem, evolutionary approaches such as the genetic algorithm have been used to solve this problem. In the structural refactoring literature, there exists no search-based algorithm that employs a hierarchical approach for modularization. Utilizing global and local search strategies, in this paper, a new search-based top-down hierarchical clustering approach, named TDHC, is proposed that can be used to modularize the system. The output of the algorithm is a tree in which each node is an artifact composed of all artifacts in its subtrees and is a candidate to be a software module (i.e., cluster). This tree helps a software maintainer to have better vision on source code structure to decide appropriate composition points of artifacts aiming to create modules (i.e., files, packages, and components). Experimental results on seven folders of Mozilla Firefox with different functionalities and five other software systems show that the TDHC produces modularization closer to the human expert\u2019s decomposition (i.e., directory structure) than the other existing algorithms. The proposed algorithm is expected to help a software maintainer for better remodularization of a source code. The source codes and dataset related to this paper can be accessed at https:\/\/github.com\/SoftwareMaintenanceLab.<\/jats:p>","DOI":"10.1155\/2020\/1794947","type":"journal-article","created":{"date-parts":[[2020,10,1]],"date-time":"2020-10-01T02:36:40Z","timestamp":1601519800000},"page":"1-25","source":"Crossref","is-referenced-by-count":8,"title":["A New Metaheuristic-Based Hierarchical Clustering Algorithm for Software Modularization"],"prefix":"10.1155","volume":"2020","author":[{"given":"Masoud","family":"Aghdasifam","sequence":"first","affiliation":[{"name":"Department of Computer Science, Faculty of Mathematical Sciences, University of Tabriz, Tabriz, Iran"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7595-8350","authenticated-orcid":true,"given":"Habib","family":"Izadkhah","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Faculty of Mathematical Sciences, University of Tabriz, Tabriz, Iran"}]},{"given":"Ayaz","family":"Isazadeh","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Faculty of Mathematical Sciences, University of Tabriz, Tabriz, Iran"}]}],"member":"311","reference":[{"key":"1","doi-asserted-by":"publisher","DOI":"10.1145\/2928268"},{"key":"2","article-title":"A systematic literature review on bad smells-5 w\u2019s: which, when, what, who, where","volume":"2","author":"E. V. de Paulo Sobrinho","year":"2018","journal-title":"IEEE Transactions on Software Engineering"},{"article-title":"Refactoring: improving the design of existing programs","year":"1999","author":"M. Fowler","key":"3"},{"key":"4","doi-asserted-by":"crossref","DOI":"10.1007\/978-3-319-63346-6","volume-title":"Source Code Modularization: Theory and Techniques","author":"A. Isazadeh","year":"2017"},{"volume-title":"A Heuristic Search Approach to Solving the Software Clustering Problem","year":"2002","author":"S. M. Brian","key":"5"},{"volume-title":"Software Engineering: A Practitioner\u2019s Approach","year":"2005","author":"R. S. Pressman","key":"6"},{"key":"7","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2006.31"},{"issue":"21","key":"8","doi-asserted-by":"crossref","first-page":"11141","DOI":"10.1007\/s00500-018-3666-z","article-title":"Multi-objective search-based software modularization: structural and non-structural features","volume":"23","author":"N. S. Jalali","year":"2019","journal-title":"Soft Computing"},{"first-page":"69","article-title":"Comparing software architecture recovery techniques using accurate dependencies","author":"T. Lutellier","key":"9"},{"issue":"2","key":"10","doi-asserted-by":"crossref","first-page":"159","DOI":"10.1109\/TSE.2017.2671865","article-title":"Measuring the impact of code dependencies on software architecture recovery techniques","volume":"44","author":"T. Lutellier","year":"2017","journal-title":"IEEE Transactions on Software Engineering"},{"first-page":"486","article-title":"A comparative analysis of software architecture recovery techniques","author":"J. Garcia","key":"11"},{"key":"12","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2010.26"},{"key":"13","doi-asserted-by":"publisher","DOI":"10.1016\/s0895-7177(03)90134-8"},{"key":"14","doi-asserted-by":"publisher","DOI":"10.1016\/j.compeleceng.2019.106500"},{"issue":"1","key":"15","first-page":"127","article-title":"A new encoding scheme and a framework to investigate genetic clustering algorithms","volume":"37","author":"S. Parsa","year":"2005","journal-title":"Journal of Research and Practice in Information Technology"},{"key":"16","doi-asserted-by":"publisher","DOI":"10.1515\/cait-2016-0035"},{"key":"17","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2004.1265817"},{"key":"18","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2009.19"},{"key":"19","first-page":"201","article-title":"Anti-pattern detection: methods, challenges, and open issues","volume-title":"Advances in Computers","author":"F. Palomba","year":"2014"},{"key":"20","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2017.2658573"},{"issue":"1","key":"21","doi-asserted-by":"crossref","first-page":"77","DOI":"10.1007\/s00500-007-0218-3","article-title":"On the evaluation of the bunch search-based software modularization algorithm","volume":"12","author":"B. S. Mitchell","year":"2008","journal-title":"Soft Computing"},{"key":"22","doi-asserted-by":"publisher","DOI":"10.1515\/jacsm-2016-0007"},{"key":"23","doi-asserted-by":"publisher","DOI":"10.1007\/s00500-017-2687-3"},{"key":"24","doi-asserted-by":"publisher","DOI":"10.1007\/s13369-017-2989-x"},{"first-page":"1106","article-title":"Pareto optimal search based refactoring at the design level","author":"M. Harman","key":"25"},{"key":"26","doi-asserted-by":"publisher","DOI":"10.1109\/32.748920"},{"first-page":"1909","article-title":"Search-based determination of refactorings for improving the class structure of object-oriented systems","author":"O. Seng","key":"27"},{"key":"28","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2017.03.009"},{"first-page":"813","article-title":"Software module clustering using a hyper-heuristic based multi-objective genetic algorithm","author":"A. C. Kumari","key":"29"},{"key":"30","doi-asserted-by":"publisher","DOI":"10.1016\/j.ins.2016.01.030"},{"key":"31","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-012-9226-8"},{"key":"32","doi-asserted-by":"publisher","DOI":"10.1145\/2559935"},{"key":"33","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-013-9256-x"},{"first-page":"18","article-title":"Coupling and cohesion measures for evaluation of component reusability","author":"G. Gui","key":"34"},{"key":"35","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2010.11.918"},{"issue":"1","key":"36","doi-asserted-by":"crossref","first-page":"5","DOI":"10.1007\/s10664-008-9088-2","article-title":"Using information retrieval based coupling measures for impact analysis","volume":"14","author":"D. Poshyvanyk","year":"2009","journal-title":"Empirical Software Engineering"},{"key":"37","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2013.60"},{"first-page":"103","article-title":"Supporting program comprehension using semantic and structural information","author":"J. I. Maletic","key":"38"},{"first-page":"1","article-title":"A textual-based technique for smell detection","author":"F. Palomba","key":"39"},{"key":"40","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2018.09.001"},{"key":"41","doi-asserted-by":"publisher","DOI":"10.1007\/s11390-018-1892-6"},{"key":"42","doi-asserted-by":"publisher","DOI":"10.1109\/4235.996017"},{"key":"43","doi-asserted-by":"publisher","DOI":"10.1002\/smr.1843"},{"key":"44","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2017.07.013"},{"key":"45","first-page":"1","article-title":"A hybrid genetic algorithm for software architecture re-modularization","volume":"92","author":"L. Mu","year":"2019","journal-title":"Information Systems Frontiers"},{"key":"46","doi-asserted-by":"publisher","DOI":"10.1007\/s11227-019-02995-3"},{"volume-title":"A Clustering Genetic Algorithm for Software Modularisation with a Multiple Hill Climbing Approach","year":"2005","author":"K. Mahdavi","key":"47"},{"key":"48","doi-asserted-by":"publisher","DOI":"10.1016\/j.cor.2017.10.004"},{"first-page":"55","article-title":"Semantic-based software clustering using hill climbing","author":"M. Kargar","key":"49"},{"key":"50","doi-asserted-by":"publisher","DOI":"10.1007\/s00500-015-2018-5"},{"key":"51","doi-asserted-by":"crossref","first-page":"153","DOI":"10.1016\/j.cl.2016.09.003","article-title":"Harmony search based remodularization for object-oriented software systems","volume":"47","author":"J. K. Chhabra","year":"2017","journal-title":"Computer Languages, Systems & Structures"},{"key":"52","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2016.04.007"},{"first-page":"296","article-title":"An efficient scheme for candidate solutions of search-based multi-objective software remodularization","author":"A. Prajapati","key":"53"},{"key":"54","doi-asserted-by":"publisher","DOI":"10.1142\/s0218194017500395"},{"key":"55","doi-asserted-by":"publisher","DOI":"10.1016\/j.ins.2018.06.034"},{"first-page":"565","article-title":"Hybrid of genetic algorithm and krill herd for software clustering problem","author":"M. Akbari","key":"56"},{"issue":"19","key":"57","doi-asserted-by":"crossref","first-page":"6341","DOI":"10.1007\/s00500-017-2687-3","article-title":"Many-objective artificial bee colony algorithm for large-scale software module clustering problem","volume":"22","author":"J. K. Chhabra","year":"2018","journal-title":"Soft Computing"},{"issue":"1","key":"58","first-page":"18","article-title":"Information theoretic objective function for genetic software clustering","volume":"46","author":"H. Izadkhah","year":"2019","journal-title":"Multidisciplinary Digital Publishing Institute Proceedings"},{"key":"59","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2007.70732"},{"key":"60","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2006.10.017"},{"key":"61","doi-asserted-by":"publisher","DOI":"10.1109\/tse.2005.25"},{"issue":"12","key":"62","first-page":"1731","article-title":"Clustering for software remodularization by using structural, conceptual and evolutionary features","volume":"24","author":"A. Rathee","year":"2018","journal-title":"Journal of Universal Computer Science"},{"first-page":"3","article-title":"Applying spectral methods to software clustering","author":"A. Shokoufandeh","key":"63"},{"first-page":"258","article-title":"Acdc: an algorithm for comprehension-driven clustering","author":"V. Tzerpos","key":"64"},{"first-page":"343","article-title":"Pr\u00fcfer numbers: a poor representation of spanning trees for evolutionary search","author":"J. Gottlieb","key":"65"},{"author":"I. Oliver","key":"66","article-title":"Study of permutation crossover operators on the traveling salesman problem"},{"first-page":"525","article-title":"Comparison of clustering algorithms in the context of software evolution","author":"J. Wu","key":"67"},{"first-page":"194","article-title":"An effectiveness measure for software clustering algorithms","author":"Z. Wen","key":"68"},{"key":"69","doi-asserted-by":"publisher","DOI":"10.1080\/00207721.2015.1102359"},{"author":"J. Cohen","key":"70","article-title":"Things i have learned (so far)"},{"key":"71","first-page":"171","article-title":"Critical values and probability levels for the wilcoxon rank sum test and the wilcoxon signed rank test","volume":"1","author":"F. Wilcoxon","year":"1970","journal-title":"Selected Tables in Mathematical Statistics"}],"container-title":["Complexity"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/downloads.hindawi.com\/journals\/complexity\/2020\/1794947.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/downloads.hindawi.com\/journals\/complexity\/2020\/1794947.xml","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/downloads.hindawi.com\/journals\/complexity\/2020\/1794947.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,10,1]],"date-time":"2020-10-01T02:37:14Z","timestamp":1601519834000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.hindawi.com\/journals\/complexity\/2020\/1794947\/"}},"subtitle":[],"editor":[{"given":"Narayanan","family":"Kumarappan","sequence":"additional","affiliation":[]}],"short-title":[],"issued":{"date-parts":[[2020,9,30]]},"references-count":71,"alternative-id":["1794947","1794947"],"URL":"https:\/\/doi.org\/10.1155\/2020\/1794947","relation":{},"ISSN":["1099-0526","1076-2787"],"issn-type":[{"type":"electronic","value":"1099-0526"},{"type":"print","value":"1076-2787"}],"subject":[],"published":{"date-parts":[[2020,9,30]]}}}