Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Free access
Just Accepted

Beyond Cohesion and Coupling: Integrating Control Flow in Software Modularization Process for Better Code Comprehensibility

Online AM: 06 December 2024 Publication History

Abstract

As software systems evolve to meet the changing needs of users, understanding the source code becomes a critical step in the process. Clustering techniques, also known as modularization techniques, offer a solution to breaking down complex source code into smaller, more manageable parts. This facilitates improved analysis and understanding of the software’s structure. However, the effectiveness of clustering algorithms in code understanding heavily relies on the chosen criteria. While existing methods typically consider cohesion, coupling, and balance between clusters, we argue that these criteria alone may not fully satisfy one of the primary objectives of clustering, which is to enhance understanding. This is because spaghetti-like structures can be created even when these criteria are satisfied. To address this issue, we introduce two new criteria incorporating program control flow to regulate cluster dependencies. By controlling the uniformity of input and output directions, as well as the distribution of inputs and outputs, clustering algorithms can generate clusters that are more developer-friendly and easier to comprehend. We provide intuitive explanations and real-world projects to demonstrate the effectiveness of our approach, and also incorporate feedback from academics and expert programmers. This paper reveals that integrating these new criteria into existing clustering algorithms enables developers to gain deeper insights into the structure of software systems. This, in turn, leads to better design decisions and improved developer understanding of the source code.

References

[1]
Teymourian, Navid, Habib Izadkhah, and Ayaz Isazadeh. “A fast clustering algorithm for modularization of large-scale software systems.” IEEE Transactions on Software Engineering, Volume: 48, Issue: 4, April, 2022.
[2]
Isazadeh, Ayaz, Habib Izadkhah, and Islam Elgedawy. Source code modularization: theory and techniques. Springer, ISBN 978-3-319-63344-2, 2017.
[3]
Lutellier, Thibaud, Devin Chollak, Joshua Garcia, Lin Tan, Derek Rayside, Nenad Medvidović, and Robert Kroeger. “Measuring the impact of code dependencies on software architecture recovery techniques.” IEEE Transactions on Software Engineering 44, no. 2 (2017): 159-181.
[4]
Alsarhan, Qusay, Bestoun S. Ahmed, Miroslav Bures, and Kamal Zuhairi Zamli. “Software module clustering: An in-depth literature analysis.” IEEE Transactions on Software Engineering (2020).
[5]
Mohammadi, Sina, and Habib Izadkhah. “A new algorithm for software clustering considering the knowledge of dependency between artifacts in the source code.” Information and Software Technology 105 (2019): 252-256.
[6]
Pourasghar, Babak, Habib Izadkhah, Ayaz Isazadeh, and Shahriar Lotfi. “A graph-based clustering algorithm for software systems modularization.” Information and Software Technology 133 (2021): 106469.
[7]
Mitchell, Brian S., and Spiros Mancoridis. “On the automatic modularization of software systems using the bunch tool.” IEEE Transactions on Software Engineering 32, no. 3 (2006): 193-208.
[8]
Tzerpos, Vassilios, and Richard C. Holt. “Acdc: an algorithm for comprehension-driven clustering.” In Proceedings Seventh Working Conference on Reverse Engineering, pp. 258-267. IEEE, 2000.
[9]
Garcia, Joshua, Daniel Popescu, Chris Mattmann, Nenad Medvidovic, and Yuanfang Cai. “Enhancing architectural recovery using concerns.” In 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), pp. 552-555. IEEE, 2011.
[10]
Maqbool, Onaiza, and Haroon Babri. “Hierarchical clustering for software architecture recovery.” IEEE Transactions on Software Engineering 33, no. 11 (2007): 759-780.
[11]
Naseem, Rashid, Onaiza Maqbool, and Siraj Muhammad. “Improved similarity measures for software clustering.” In 2011 15th European Conference on Software Maintenance and Reengineering, pp. 45-54. IEEE, 2011.
[12]
Naseem, Rashid, Mustafa Mat Deris, Onaiza Maqbool, and Sara Shahzad. “Euclidean space based hierarchical clusterer's combinations: an application to software clustering.” Cluster Computing 22, no. 3 (2019): 7287-7311.
[13]
Saeed, Mehreen, Onaiza Maqbool, Haroon Atique Babri, Syed Zahoor Hassan, and S. Mansoor Sarwar. “Software clustering techniques and the use of combined algorithm.” In Seventh European Conference on Software Maintenance and Reengineering, 2003. Proceedings, pp. 301-306. IEEE, 2003.
[14]
Kuhn, Adrian, Stéphane Ducasse, and Tudor Gîrba. “Semantic clustering: Identifying topics in source code.” Information and Software Technology 49, no. 3 (2007): 230-243.
[15]
Puchala, Shiva Prasad Reddy, Jitender Kumar Chhabra, and Amit Rathee. “Ensemble clustering based approach for software architecture recovery.” International Journal of Information Technology (2022): 1-7.
[16]
Aghdasifam, Masoud, Habib Izadkhah, and Ayaz Isazadeh. “A new metaheuristic-based hierarchical clustering algorithm for software modularization.” Complexity 2020 (2020).
[17]
Tajgardan, Mahjoubeh, Habib Izadkhah, and Shahriar Lotfi. “IAFCO: an intelligent agent-based framework for combinatorial optimization.” The Journal of Supercomputing 80.8 (2024): 10863-10930.
[18]
Sadat Jalali, Nafiseh, Habib Izadkhah, and Shahriar Lotfi. “Multi-objective search-based software modularization: structural and non-structural features.” Soft Computing 23, no. 21 (2019): 11141-11165.
[19]
Benala, Tirimula Rao, Anupama Kaushik, Satchidananda Dehuri, and Lakhmi C. Jain. “Computational intelligence for estimating software development effort: a systematic mapping study.” Iran Journal of Computer Science (2024): 1-24.
[20]
Praditwong, Kata, Mark Harman, and Xin Yao. “Software module clustering as a multi-objective search problem.” IEEE Transactions on Software Engineering 37, no. 2 (2010): 264-282.
[21]
Tan, Alvin Jian Jia, Chun Yong Chong, and Aldeida Aleti. “E-sc4r: Explaining software clustering for remodularisation.” Journal of Systems and Software 186 (2022): 111162.
[22]
Kargar, Masoud, Ayaz Isazadeh, and Habib Izadkhah. “Multi-programming language software systems modularization.” Computers & Electrical Engineering 80 (2019): 106500.
[23]
Kargar, Masoud, Ayaz Isazadeh, and Habib Izadkhah. “Improving the modularization quality of heterogeneous multi-programming software systems by unifying structural and semantic concepts.” The Journal of Supercomputing 76, no. 1 (2020): 87-121.
[24]
Huang, Jinhuang, Jing Liu, and Xin Yao. “A multi-agent evolutionary algorithm for software module clustering problems.” Soft Computing 21, no. 12 (2017): 3415-3428.
[25]
Huang, Jinhuang, and Jing Liu. “A similarity-based modularization quality measure for software module clustering problems.” Information Sciences 342 (2016): 96-110.
[26]
Yang, Kaiyuan, Junfeng Wang, Zhiyang Fang, Peng Wu, and Zihua Song. “Enhancing software modularization via semantic outlier's filtration and label propagation.” Information and Software Technology (2022): 106818.
[27]
Monçores, Marlon C., Adriana CF Alvim, and Márcio O. Barros. “Large neighborhood search applied to the software module clustering problem.” Computers & Operations Research 91 (2018): 92-111.
[28]
Yuste, Javier, Abraham Duarte, and Eduardo G. Pardo. “An efficient heuristic algorithm for software module clustering optimization.” Journal of Systems and Software (2022): 111349.
[29]
Chhabra, Jitender Kumar. “FP-ABC: Fuzzy-Pareto dominance driven artificial bee colony algorithm for many-objective software module clustering.” Computer Languages, Systems & Structures 51 (2018): 1-21.
[30]
Arasteh, Bahman, Razieh Sadegi, and Keyvan Arasteh. “Bölen: software module clustering method using the combination of shuffled frog leaping and genetic algorithm.” Data Technologies and Applications (2020).
[31]
Zainal, Nurul Asyikin, Kamal Z. Zamli, and Fakhrud Din. “A modified symbiotic organism search algorithm with lévy flight for software module clustering problem.” In InECCE2019, pp. 219-229. Springer, Singapore, 2020.
[32]
Akbari, Mehdi, and Habib Izadkhah. “Hybrid of genetic algorithm and krill herd for software clustering problem.” In 2019 5th Conference on Knowledge Based Engineering and Innovation (KBEI), pp. 565-570. IEEE, 2019.
[33]
Misra, Janardan, K. M. Annervaz, Vikrant Kaulgud, Shubhashis Sengupta, and Gary Titus. “Software clustering: Unifying syntactic and semantic features.” In 2012 19th Working Conference on Reverse Engineering, pp. 113-122. IEEE, 2012.
[34]
Arasteh, Bahman, Razieh Sadegi, and Keyvan Arasteh. “ARAZ: A software modules clustering method using the combination of particle swarm optimization and genetic algorithms.” Intelligent Decision Technologies 14, no. 4 (2020): 449-462.
[35]
Alwis, Adambarage Anuruddha Chathuranga De, Alistair Barros, Colin Fidge, and Artem Polyvyanyy. “Remodularization Analysis for Microservice Discovery Using Syntactic and Semantic Clustering.” In International Conference on Advanced Information Systems Engineering, pp. 3-19. Springer, Cham, 2020.
[36]
Prajapati, Amarjeet, and Jitender Kumar Chhabra. “A particle swarm optimization-based heuristic for software module clustering problem.” Arabian Journal for Science and Engineering 43, no. 12 (2018): 7083-7094.
[37]
Chhabra, Jitender Kumar. “Many-objective artificial bee colony algorithm for large-scale software module clustering problem.” Soft Computing 22, no. 19 (2018): 6341-6361.
[38]
Andritsos P, Tzerpos V (2005) Information-theoretic software clustering. IEEE Trans Software Eng 31(2):150–165. https://doi.org/10.1109/tse.2005.25
[39]
Hatami, Elmira, and Bahman Arasteh. “An efficient and stable method to cluster software modules using ant colony optimization algorithm.” The Journal of Supercomputing 76.9 (2020): 6786-6808.
[40]
Arasteh, Bahman, Ahmad Fatolahzadeh, and Farzad Kiani. “Savalan: Multi objective and homogeneous method for software modules clustering.” Journal of Software: Evolution and Process 34.1 (2022): e2408.
[41]
Arasteh, Bahman, Amir Seyyedabbasi, Jawad Rasheed, and Adnan M. Abu-Mahfouz. “Program source-code re-modularization using a discretized and modified sand cat swarm optimization algorithm.” Symmetry 15, no. 2 (2023): 401.
[42]
Kargar, Masoud, Ayaz Isazadeh, and Habib Izadkhah. “New internal metric for software clustering algorithms validity.” IET Software 14.4 (2020): 402-410.
[43]
Wilcoxon, Frank, S. Katti, and Roberta A. Wilcox. “Critical values and probability levels for the Wilcoxon rank sum test and the Wilcoxon signed rank test.” Selected tables in mathematical statistics 1 (1970): 171-259.
[44]
Alatawi, Mohammed Naif. “Forecasting the software engineering model’s effort estimation using constructive cost estimation models.” Iran Journal of Computer Science (2024): 1-20.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology Just Accepted
EISSN:1557-7392
Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Online AM: 06 December 2024
Accepted: 07 November 2024
Revised: 22 September 2024
Received: 19 February 2024

Check for updates

Author Tags

  1. Source code
  2. modularization
  3. clustering
  4. source code comprehensibility
  5. graph partitioning

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 114
    Total Downloads
  • Downloads (Last 12 months)114
  • Downloads (Last 6 weeks)50
Reflects downloads up to 09 Feb 2025

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media