Identification of software quality attributes from code defect prediction: a systematic literature review
Abstract
Identifying and understanding reasons for deriving software development defects is crucial for ensuring software product quality attributes such as maintainability. This paper presents a systematic literature review and the objective is to analyze the suggestions of other authors regarding software code defect prediction using machine learning, deep learning, or other artificial intelligence methods for the identification of software quality. The systemic literature review reveals that many analyzed papers considered multiple software code defects, but they were analyzed individually. However, more is needed to identify software quality attributes. The more profound analysis of code smells indicates the significance when considering multiple detected code smells and their interconnectedness; it helps to identify the software quality sub-attributes of maintainability.
Keyword : code smell, machine learning, software quality attribute, systematic literature review
This work is licensed under a Creative Commons Attribution 4.0 International License.
References
Albuquerque, D., Guimarães, E., Perkusich, M., Rique, T., Cunha, F., Almeida, H., & Perkusich, Â. (2023). On the assessment of interactive detection of code smells in practice: A controlled experiment. IEEE Access, 11, 84589–84606. https://doi.org/10.1109/access.2023.3302260
Al Hilmi, M. A., Puspaningrum, A., Darsih, Siahaan, D. O., Samosir, H. S., & Rahma, A. S. (2023). Research trends, detection methods, practices, and challenges in Code Smell: SLR. IEEE Access, 11, 129536–129551. https://doi.org/10.1109/access.2023.3334258
Alkharabsheh, K., Alawadi, S., Ignaim, K., Zanoon, N., Crespo, Y., Manso, E., & Taboada, J. A. F. (2022). Prioritization of god class design smell: A multi-criteria based approach. Journal of King Saud University – Computer and Information Sciences, 34(10), 9332–9342. https://doi.org/10.1016/j.jksuci.2022.09.011
Boutaib, S., Bechikh, S., Palomba, F., Elarbi, M., Makhlouf, M., & Saïd, L. B. (2021). Code smell detection and identification in imbalanced environments. Expert Systems with Applications, 166, Article 114076. https://doi.org/10.1016/j.eswa.2020.114076
Dewangan, S., Rao, R. S., Mishra, A., & Gupta, M. (2022). Code smell detection using ensemble machine learning algorithms. Applied Sciences, 12(20), Article 10321. https://doi.org/10.3390/app122010321
Di Nucci, D., Palomba, F., Tamburri, D. A., Serebrenik, A., & De Lucia, A. (2018). Detecting code smells using machine learning techniques: Are we there yet? In 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). https://doi.org/10.1109/saner.2018.8330266
Draz, M. M., Salah, M., Abdulkader, S. N., & Gamal, M. (2021). Code smell detection using a whale optimization algorithm. Computers, Materials & Continua, 68(2), 1919–1935. https://doi.org/10.32604/cmc.2021.015586
Dybå, T., & Dingsøyr, T. (2008). Empirical studies of agile software development: A systematic review. Information & Software Technology, 50(9–10), 833–859. https://doi.org/10.1016/j.infsof.2008.01.006
Fontana, F. A., Mäntylä, M., Zanoni, M., & Marino, A. (2016). Comparing and experimenting machine learning techniques for code smell detection. Empirical Software Engineering, 21(3), 1143–1191. https://doi.org/10.1007/s10664-015-9378-4
Fowler, M., Beck, K., Brant, J., Opdyke, W., & Roberts, D. (1990). Refactoring: Improving the design of existing code. Addison Wesley.
Fowler, M. (2002). Refactoring: improving the design of existing code. In D. Wells & L. Williams (Eds.), Lecture notes in computer science (p. 256). Springer. https://doi.org/10.1007/3-540-45672-4_31
Guggulothu, T., & Moiz, S. A. (2020). Code smell detection using a multi-label classification approach. Software Quality Journal, 28(3), 1063–1086. https://doi.org/10.1007/s11219-020-09498-y
Hozano, M., Garcia, A., Fonseca, B., & De Barros Costa, E. (2018). Are you smelling it? Investigating how similar developers detect code smells. Information & Software Technology, 93, 130–146. https://doi.org/10.1016/j.infsof.2017.09.002
International Organization for Standardization. (2023). Systems and software engineering Systems and software Quality Requirements and Evaluation (ISO Standard No. ISO/IEC 25010:2023). https://www.iso.org/standard/78176.html
Ivarsson, M., & Gorschek, T. (2010). A method for evaluating rigor and industrial relevance of technology evaluations. Empirical Software Engineering, 16(3), 365–395. https://doi.org/10.1007/s10664-010-9146-4
Kaur, K., & Kaur, P. (2017). Evaluation of sampling techniques in software fault prediction using metrics and code smells. In International Conference on Advances in Computing, Communications, and Informatics, (pp. 1377–1387). IEEE. https://doi.org/10.1109/icacci.2017.8126033
Kaur, A., Kaur, K., & Jain, S. (2016). Predicting software change-proneness with code smells and class imbalance learning. International Conference on Advances in Computing, Communications and Informatics. IEEE. https://doi.org/10.1109/icacci.2016.7732136
Kessentini, W., Kessentini, M., Sahraoui, H., Bechikh, S., & Ouni, A. (2014). A cooperative parallel Search-Based software engineering approach for Code-Smells detection. IEEE Transactions on Software Engineering, 40(9), 841–861. https://doi.org/10.1109/tse.2014.2331057
Kitchenham, B., & Brereton, P. (2013). A systematic review of systematic review process research in software engineering. Information & Software Technology, 55(12), 2049–2075. https://doi.org/10.1016/j.infsof.2013.07.010
Kitchenham, B., Brereton, O. P., Budgen, D., Turner, M., Bailey, J., & Linkman, S. (2009). Systematic literature reviews in software engineering – A systematic literature review. Information & Software Technology, 51(1), 7–15. https://doi.org/10.1016/j.infsof.2008.09.009
Kovačević, A., Slivka, Ј., Vidaković, D., Grujić, K., Luburić, N., Prokić, S., & Sladić, G. (2022). Automatic detection of Long Method and God Class code smells through neural source code embeddings. Expert Systems with Applications, 204, Article 117607. https://doi.org/10.1016/j.eswa.2022.117607
Liu, H., Jin, J., Xu, Z., Zou, Y., Bu, Y., & Zhang, L. (2021). Deep learning-based code smell Detection. IEEE Transactions on Software Engineering, 1. https://doi.org/10.1109/tse.2019.2936376
Luburić, N., Prokić, S., Grujić, K., Slivka, Ј., Kovačević, A., Sladić, G., & Vidaković, D. (2023). Towards a systematic approach to manual annotation of code smells. Science of Computer Programming, 230, Article 102999. https://doi.org/10.36227/techrxiv.14159183
Mansoor, U., Kessentini, M., Maxim, B. R., & Deb, K. (2017). Multi-objective code-smells detection using good and bad design examples. Software Quality Journal, 25(2), 529–552. https://doi.org/10.1007/s11219-016-9309-7
Mhawish, M. Y., & Gupta, M. (2020). Predicting code smells and analysis of predictions: using machine learning techniques and software metrics. Journal of Computer Science and Technology, 35(6), 1428–1445. https://doi.org/10.1007/s11390-020-0323-7
Oliveira, D., Assunção, W. K. G., Garcia, A., Fonseca, B., & Ribeiro, M. (2022). Developers’ perception matters machine learning to detect developer-sensitive smells. Empirical Software Engineering, 27(7), Article 195. https://doi.org/10.1007/s10664-022-10234-2
Paiva, T., Damasceno, A., Figueiredo, E., & Sant’Anna, C. (2017). On the evaluation of code smells and detection tools. Journal of Software Engineering Research and Development, 5(1), Article 7. https://doi.org/10.1186/s40411-017-0041-1
Sae‐Lim, N., Hayashi, S., & Saeki, M. (2018). Context‐based approach to prioritize code smells for refactoring. Journal of Software: Evolution and Process, 30(6), Article e1886. https://doi.org/10.1002/smr.1886
Sahin, D., Kessentini, M., Bechikh, S., & Deb, K. (2014). Code-Smell detection as a bilevel problem. ACM Transactions on Software Engineering and Methodology, 24(1), 1–44. https://doi.org/10.1145/2675067
Sandouka, R., & Aljamaan, H. (2023). Python code smells detection using conventional machine learning models. PeerJ, 9, Article e1370. https://doi.org/10.7717/peerj-cs.1370
Singh, R., Bindal, A. K., & Kumar, A. (2019). A user feedback centric approach for detecting and mitigating god class code smell using frequent usage patterns. Journal of Communications Software and Systems, 15(3). https://doi.org/10.24138/jcomss.v15i3.720
Sousa, B. L., Bigonha, M. a. S., & Ferreira, K. a. M. (2019). An exploratory study on cooccurrence of design patterns and bad smells using software metrics. Software: Practice and Experience, 49(7), 1079–1113. https://doi.org/10.1002/spe.2697
Tufano, M., Palomba, F., Bavota, G., Oliveto, R., Di Penta, M., De Lucia, A., & Poshyvanyk, D. (2017). When and why your code starts to smell bad (and whether the smells go away). IEEE Transactions on Software Engineering, 43(11), 1063–1088. https://doi.org/10.1109/tse.2017.2653105