{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:44:49Z","timestamp":1760060689816,"version":"build-2065373602"},"reference-count":21,"publisher":"MDPI AG","issue":"9","license":[{"start":{"date-parts":[[2025,9,12]],"date-time":"2025-09-12T00:00:00Z","timestamp":1757635200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Symmetry"],"abstract":"<jats:p>Software maintenance is one of the most expensive phases in software development, especially when complex source code is the only available artifact. Clustering software modules and generating a structured architectural model can significantly reduce the effort and cost of maintenance. This study aims to achieve high-quality modularization by maximizing intra-cluster cohesion, minimizing inter-cluster coupling, and optimizing overall modular quality. Since finding optimal clustering is an NP-complete problem, many existing methods suffer from poor modular structures, instability, and inconsistent results. To overcome these limitations, this paper proposes a module clustering method using a discrete bedbug optimizer. In software architecture, symmetry refers to the balanced and structured arrangement of modules. In the proposed method, module clustering aims to identify and group related modules based on structural and behavioral similarities, reflecting symmetrical properties in the source code. Conversely, asymmetries, such as modules with irregular dependencies, can indicate architectural flaws. The method was evaluated on ten widely used real-world software datasets. The experimental results show that the proposed algorithm consistently delivers superior modularization quality, with an average score of 2.806 and a well-balanced trade-off between cohesion and coupling. Overall, this research presents an effective solution for software module clustering and provides better architecture recovery and more maintainable systems.<\/jats:p>","DOI":"10.3390\/sym17091523","type":"journal-article","created":{"date-parts":[[2025,9,12]],"date-time":"2025-09-12T12:08:16Z","timestamp":1757678896000},"page":"1523","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Generating Software Architectural Model from Source Code Using Module Clustering"],"prefix":"10.3390","volume":"17","author":[{"given":"Bahman","family":"Arasteh","sequence":"first","affiliation":[{"name":"Department of Software Engineering, Faculty of Engineering and Natural Science, Istinye University, Istanbul 34396, T\u00fcrkiye"},{"name":"Department of Computer Science, Khazar University, Baku 1096, Azerbaijan"},{"name":"Applied Science Research Center, Applied Science Private University, Amman 11931, Jordan"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7208-3576","authenticated-orcid":false,"given":"Seyed Salar","family":"Sefati","sequence":"additional","affiliation":[{"name":"Department of Software Engineering, Faculty of Engineering and Natural Science, Istinye University, Istanbul 34396, T\u00fcrkiye"},{"name":"Faculty of Electronics, Telecommunications and Information Technology, University Politehnica of Bucharest, 060042 Bucure\u0219ti, Romania"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5762-6678","authenticated-orcid":false,"given":"Huseyin","family":"Kusetogullari","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Blekinge Institute of Technology, 371 79 Karlskrona, Sweden"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-0354-9344","authenticated-orcid":false,"given":"Farzad","family":"Kiani","sequence":"additional","affiliation":[{"name":"Data Science Application and Research Center (VEBIM), Fatih Sultan Mehmet Vakif University, Istanbul 34445, T\u00fcrkiye"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2025,9,12]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","first-page":"107567","DOI":"10.1016\/j.infsof.2024.107567","article-title":"REARRANGE: Effort estimation approach for software clustering-based remodularisation","volume":"176","author":"Tan","year":"2024","journal-title":"Inf. Softw. Technol."},{"key":"ref_2","first-page":"619","article-title":"TA-ABC: Two-Archive Artificial Bee Colony for Multi-Objective Software Module Clustering Problem","volume":"27","author":"Chhabra","year":"2018","journal-title":"J. Intell. Syst."},{"key":"ref_3","doi-asserted-by":"crossref","first-page":"7083","DOI":"10.1007\/s13369-017-2989-x","article-title":"A Particle Swarm Optimization-Based Heuristic for Software Module Clustering Problem","volume":"43","author":"Prajapati","year":"2018","journal-title":"Arab. J. Sci. Eng."},{"key":"ref_4","doi-asserted-by":"crossref","first-page":"9","DOI":"10.1007\/s10515-024-00479-0","article-title":"Parallelization of Genetic Algorithms for Software Architecture Recovery","volume":"32","author":"Varol","year":"2025","journal-title":"Autom. Softw. Eng."},{"key":"ref_5","doi-asserted-by":"crossref","first-page":"958","DOI":"10.3103\/S0146411623080060","article-title":"Analysis of Decompiled Program Code Using Abstract Syntax Trees","volume":"57","author":"Gribkov","year":"2023","journal-title":"Autom. Control. Comput. Sci."},{"key":"ref_6","doi-asserted-by":"crossref","first-page":"111349","DOI":"10.1016\/j.jss.2022.111349","article-title":"An Efficient Heuristic Algorithm for Software Module Clustering Optimization","volume":"190","author":"Yuste","year":"2022","journal-title":"J. Syst. Softw."},{"key":"ref_7","first-page":"449","article-title":"ARAZ: A Software Modules Clustering Method Using the Combination of Particle Swarm Optimization and Genetic Algorithms","volume":"14","author":"Arasteh","year":"2020","journal-title":"Intell. Decis. Technol."},{"key":"ref_8","doi-asserted-by":"crossref","first-page":"252","DOI":"10.1016\/j.infsof.2018.09.001","article-title":"A new algorithm for software clustering considering the knowledge of dependency between artifacts in the source code","volume":"105","author":"Mohammadi","year":"2019","journal-title":"Inf. Softw. Technol."},{"key":"ref_9","first-page":"251","article-title":"B\u00f6len: Software Module Clustering Method Using the Combination of Shuffled Frog Leaping and Genetic Algorithm","volume":"55","author":"Arasteh","year":"2021","journal-title":"Data Technol. Appl."},{"key":"ref_10","doi-asserted-by":"crossref","first-page":"103252","DOI":"10.1016\/j.advengsoft.2022.103252","article-title":"Program Source Code Comprehension by Module Clustering Using a Combination of Discretized Gray Wolf and Genetic Algorithms","volume":"173","author":"Arasteh","year":"2022","journal-title":"Adv. Eng. Softw."},{"key":"ref_11","doi-asserted-by":"crossref","first-page":"3283","DOI":"10.1007\/s00521-022-07781-6","article-title":"Clustered Design-Model Generation from a Program Source Code Using Chaos-Based Metaheuristic Algorithms","volume":"35","author":"Arasteh","year":"2022","journal-title":"Neural Comput. Appl."},{"key":"ref_12","doi-asserted-by":"crossref","first-page":"e2408","DOI":"10.1002\/smr.2408","article-title":"Savalan: Multi-Objective and Homogeneous Method for Software Modules Clustering","volume":"34","author":"Arasteh","year":"2022","journal-title":"J. Softw. Evol. Process"},{"key":"ref_13","doi-asserted-by":"crossref","first-page":"111162","DOI":"10.1016\/j.jss.2021.111162","article-title":"E-SC4R: Explaining Software Clustering for Remodularisation","volume":"186","author":"Joseph","year":"2022","journal-title":"J. Syst. Softw."},{"key":"ref_14","doi-asserted-by":"crossref","first-page":"111095","DOI":"10.1016\/j.jss.2021.111095","article-title":"To Automatically Map Source Code Entities to Architectural Modules with Naive Bayes","volume":"183","author":"Olsson","year":"2022","journal-title":"J. Syst. Softw."},{"key":"ref_15","doi-asserted-by":"crossref","first-page":"107457","DOI":"10.1016\/j.infsof.2024.107457","article-title":"A Declarative Approach to Detecting Design Patterns from Java Execution Traces and Source Code","volume":"171","author":"Mohan","year":"2024","journal-title":"Inf. Softw. Technol."},{"key":"ref_16","doi-asserted-by":"crossref","unstructured":"Arasteh, B., Seyyedabbasi, A., Rasheed, J., and Abu-Mahfouz, A.M. (2023). Program Source-Code Re-Modularization Using a Discretized and Modified Sand Cat Swarm Optimization Algorithm. Symmetry, 15.","DOI":"10.3390\/sym15020401"},{"key":"ref_17","doi-asserted-by":"crossref","first-page":"2465","DOI":"10.1007\/s42235-023-00356-8","article-title":"The Bedbug Meta-Heuristic Algorithm to Solve Optimization Problems","volume":"20","author":"Rezvani","year":"2023","journal-title":"J. Bionic Eng."},{"key":"ref_18","doi-asserted-by":"crossref","first-page":"106818","DOI":"10.1016\/j.infsof.2021.106818","article-title":"Enhancing software modularization via semantic outliers filtration and label propagation","volume":"145","author":"Yang","year":"2022","journal-title":"Inf. Softw. Technol."},{"key":"ref_19","first-page":"3139","article-title":"Software Coupling and Cohesion Model for Measuring the Quality of Software Components","volume":"77","author":"Alzamil","year":"2023","journal-title":"Comput. Mater. Contin."},{"key":"ref_20","doi-asserted-by":"crossref","first-page":"107732","DOI":"10.1016\/j.infsof.2025.107732","article-title":"Reengineering software systems into microservices: State-of-the-art and future directions","volume":"183","author":"Mohottige","year":"2025","journal-title":"Inf. Softw. Technol."},{"key":"ref_21","doi-asserted-by":"crossref","first-page":"882","DOI":"10.1007\/s11227-025-07348-x","article-title":"Learning code better through structural information of data flow","volume":"81","author":"Zhang","year":"2025","journal-title":"J. Supercomput."}],"container-title":["Symmetry"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2073-8994\/17\/9\/1523\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T18:44:35Z","timestamp":1760035475000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2073-8994\/17\/9\/1523"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,9,12]]},"references-count":21,"journal-issue":{"issue":"9","published-online":{"date-parts":[[2025,9]]}},"alternative-id":["sym17091523"],"URL":"https:\/\/doi.org\/10.3390\/sym17091523","relation":{},"ISSN":["2073-8994"],"issn-type":[{"type":"electronic","value":"2073-8994"}],"subject":[],"published":{"date-parts":[[2025,9,12]]}}}