An Approach Based on Machine Learning for Predicting Software Design Problems
ResumoContext: Software design problems emerge when internal structures of source code challenge design principles or rules. The prediction of design problems plays an essential role in the software development industry, identifying defective architectural modules in advance. Problem: The current literature lacks approaches that help software developers in predicting software design problems. Consequently, design problems end up being identified late. Solution: This article proposes a machine learning-based approach to assist software developers in predicting design problems. Theory of IS: This work was conceived under the aegis of the General Theory of Systems, in particular with regard to the interfaces between the parts of a system within its borders. In this case, the parts are themselves independent systems, called constituents, which include some information systems. Method: The research has a prescriptive character, and its evaluation was carried out through experiments and proof of concept. The analysis of the results was performed with a quantitative approach. Summary of Results: The conceived approach demonstrated to be successful, being able to identify the most relevant features and identify design problems from metrics, since classification and prediction were effective in 96% and 60% of cases, respectively. Contributions and Impact in the IS area: The main contribution is to propose an approach to classify and predict ever-present design problems in IS. Thus, our research sheds light on the need for SI maintenance to avoid architectural degradation that requires either significant maintenance effort or the complete SI redesign.
Azadi et al.2018. Poster: Machine learning based code smell detection through WekaNose. In IEEE/ACM 40th ICSE-Companion. IEEE, 288–289.
Azeem et al.2019. Machine learning techniques for code smell detection: A systematic literature review and meta-analysis. IST 108 (2019), 115–138.
Arcelli Fontana et al.2016. Comparing and experimenting machine learning techniques for code smell detection. Empirical Software Engineering 21, 3 (2016), 1143–1191.
Al-Shaaby et al.2020. Bad Smell Detection Using Machine Learning Techniques: A Systematic Literature Review. Arabian Journal for Science and Engineering 45, 4 (2020), 2341–2369.
A. Uchôa et al.2020. How Does Modern Code Review Impact Software Design Degradation? An In-depth Empirical Study. In 2020 IEEE ICSME. 511–522.
Colakoglu et al.2021. Software product quality metrics: A systematic mapping study. 9 (2021), 44647–44670.
Hussain et al.2017. Software design patterns classification and selection using text categorization approach. Applied soft computing 58 (2017), 225–244.
Kaur et al.2021. Machine learning techniques for 5g and beyond. IEEE Access 9 (2021), 23472–23488.
Mhawish et al.2020. Software Metrics and tree-based machine learning algorithms for distinguishing and detecting similar structure design patterns. SN Applied Sciences 2 (2020), 1–10.
Moreno-Indias et al.2021. Statistical and machine learning techniques in human microbiome studies: contemporary challenges and solutions. Frontiers in Microbiology 12 (2021), 277.
Nguyen et al.2022. ml-Codesmell: A code smell prediction dataset for machine learning approaches. In 11th IICT. 368–374.
Pecorelli et al.2020. Developer-Driven Code Smell Prioritization. Association for Computing Machinery, New York, NY, USA.
Saputri et al.2021. Integrated framework for incorporating sustainability design in software engineering life-cycle: An empirical study. IST 129 (2021), 106407.
Uchôa et al.2021. Predicting Design Impactful Changes in Modern Code Review: A Large-Scale Empirical Study. In 2021 IEEE/ACM 18th MSR. IEEE, 471–482.
Zhang et al.2019. An empirical study of common challenges in developing deep learning applications. In 2019 IEEE 30th ISSRE. IEEE, 104–115.
Zhu et al.2021. Software defect prediction based on enhanced metaheuristic feature selection optimization and a hybrid deep neural network. JSS 180 (2021), 111026.
Martin Fowler. 2018. Refactoring: improving the design of existing code. Addison-Wesley Professional.
Ritu Garg and RK Singh. 2020. Analysis and prioritization of design metrics. Procedia Computer Science 167 (2020), 1495–1504.
Daniel Jackson. 2021. The Essence of Software: Why Concepts Matter for Great Design. Princeton University Press.
Jirayus Jiarpakdee, Chakkrit Tantithamthavorn, Hoa Khanh Dam, and John Grundy. 2020. An Empirical Study of Model-Agnostic Techniques for Defect Prediction Models. IEEE (2020), 1–1.
Peter Kokol, Marko Kokol, and Sašo Zagoranski. 2021. Code smells: A Synthetic Narrative Review. arXiv preprint arXiv:2103.01088 (2021).
Nakarin Maneerat and Pomsiri Muenchaisri. 2011. Bad-smell prediction from software design model using machine learning techniques., 331–336 pages.
Mohammad Y Mhawish and Manjari Gupta. 2020. Predicting Code Smells and Analysis of Predictions: Using Machine Learning Techniques and Software Metrics. Journal of Computer Science and Technology 35, 6 (2020), 1428–1445.
Paweł Piotrowski and Lech Madeyski. 2020. Software defect prediction using bad code smells: A systematic literature review. Data-Centric Business and Applications (2020), 77–99.
Outi Räihä. 2010. A survey on search-based software design. Computer Science Review 4, 4 (2010), 203–249.
Tushar Sharma and Diomidis Spinellis. 2018. A survey on software smells. Journal of Systems and Software 138 (2018), 158–173.
Aiko Yamashita and Leon Moonen. 2012. Do code smells reflect important maintainability aspects?. In 28th ICSM. IEEE, 306–315.