Refactoring Techniques for Improving Software Quality: Practitioners’ Perspectives

Authors

  • Abdullah Almogahed Department of Software Engineering, Taiz University, Yemen
  • Mazni Omar School of Computing, Universiti Utara Malaysia, Malaysia

DOI:

https://doi.org/10.32890/jict2021.20.4.3

Keywords:

Exploratory study, software refactoring, survey, refactoring techniques

Abstract

Refactoring is a critical task in software maintenance and is commonly applied to improve system design or to cope with design defects. There are 68 different types of refactoring techniques and each technique has a particular purpose and effect. However, most prior studies have selected refactoring techniques based on their common use in academic research without obtaining evidence from the software industry. This is a shortcoming that points to the existence of a clear gap between academic research and the corresponding industry practices. Therefore, to bridge this gap, this study identified the most frequently used refactoring techniques, the commonly used programming language, and methods of applying refactoring techniques in the current practices of software refactoring among software practitioners in the industry, by using an online survey. The findings from the survey revealed the most used refactoring techniques, programming language, and the methods of applying the refactoring techniques. This study contributes toward the improvement of software development practices by adding empirical evidence on software refactoring used by software developers. The findings would be beneficial for researchers to develop reference models and software tools to guide the practitioners in using these refactoring techniques based on their effect on software quality attributes to improve the quality of the software systems as a whole. 

References

Abid, C., Alizadeh, V., Kessentini, M., Ferreira, N., & Dig, D. (2020). 30 years of software refactoring research: A systematic literature review. IEEE Transactions on Software Engineering, 1(1), 1–24.

Al-Dallal, J. (2015). Identifying refactoring opportunities in object-oriented code: A systematic literature review. Information and Software Technology, 58, 231–249. https://doi.org/10.1016/j. infsof.2014.08.002 Journal of ICT, 20, No. 4 (October) 2021, pp: 511–

Al-Dallal, J., & Abdin, A. (2018). Empirical evaluation of the impact of object-oriented code refactoring on quality attributes: A systematic literature review. IEEE Transactions on Software Engineering, 44(1), 44–69. https://doi.org/10.1109/TSE.2017.2658573

Alizadeh, V., Kessentini, M., Mkaouer, W., Ocinneide, M., Ouni, A., & Cai, Y. (2019). Interactive and dynamic multi-objective software refactoring recommendations. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software. 1–30. IEEE Computer Society.

Almogahed, A., Omar, M., & Zakaria, N. H. (2018, July). Impact of software refactoring on software quality in the industrial environment: A review of empirical studies. In Proceedings of Knowledge Management International Conference (KMICe), 25 –27 July 2018. Miri Sarawak, Malaysia.

Almogahed, A., Omar, M., & Zakaria, N. H. (2019). Categorization refactoring techniques based on their effect on software quality attributes. International Journal of Innovative Technology and Exploring Engineering (IJITEE), 8(8S), 439–445.

Alves, E. L. G., Massoni, T., Duarte, P., & Machado, D. L. (2016). Test coverage of impacted code elements for detecting refactoring faults: An exploratory study. Journal of Systems and Software, 0, 1–16. https://doi.org/10.1016/j.jss.2016.02.001

Besker, T., Martini, A., & Bosch, J. (2018). Managing architectural technical debt: A unified model and systematic literature review. Journal of Systems and Software, 135, 1–16.

Chaparro, O., Bavota, G., Marcus, A., & Penta, M. Di. (2014, September). On the impact of refactoring operations on code quality metrics. In 2014 IEEE International Conference on Software Maintenance and Evolution (pp. 456–460). https://doi.org/10.1109/ICSME.2014.73

Choi, E., Fujiwara, K., Yoshida, N., & Hayashi, S. (2018). A survey of refactoring detection techniques based on change history analysis. arXiv preprint arXiv:1808.02320.

Ciraci, S., & van den Broek, P. (2006, January). Evolvability as a quality attribute of software. In The International ERCIM Workshop on Software Evolution (pp. 29–31).

Cook, S., Ji, H., & Harrison, R. (2000). Software evolution and software evolvability. University of Reading, UK. 1–12.

Elish, K. O., & Alshayeb, M. (2011). A classification of refactoring methods based on software quality attributes. Arabian Journal Journal of ICT, 20, No. 4 (October) 2021, pp: 511– for Science and Engineering, 36(7), 1253–1267. https://doi.org/10.1007/s13369-011-0117-x

Fernández-Sáez, A. M., Chaudron, M. R., & Genero, M. (2018). An industrial case study on the use of UML in software maintenance and its perceived benefits and hurdles. Empirical Software Engineering, 23(6), 1–65.

Fisher, C. M. (2007). Researching and writing a dissertation: A guidebook for business students. England: Prentice Hall.

Fowler, M., Beck, K. (2019). Refactoring: Improving the design of existing code (2nd ed.). Addison-Wesley Professional. https://doi.org/10.1007/3-540-45672-4_31

Fowler, M., Beck, K., Brant, J., Opdyke, W., & Roberts, D. (2002). Refactoring: Improving the design of existing code (1st ed.). Addison-Wesley Professional.

Gay, L. R., Mills, G. E., & Airasian, P. (2012). Educational research: Competencies for analysis and application (10th ed.). Pearson.

Ghannem, A., Kessentini, M., Hamdi, M. S. S., & Boussaidi, G. El. (2017). Model refactoring by example: A multi‐objective search-based software engineering approach. Journal of Software: Evolution and Process, 30(4), e1916. https://doi.org/10.1002/smr.1916

Godfrey, M. W., & German, D. M. (2008, September). The past, present, and future of software evolution. In 2008 Frontiers of Software Maintenance (pp. 129–138).

Ikart, E. M. (2019). Survey questionnaire survey pretesting method: An evaluation of survey questionnaire via expert reviews technique. Asian Journal of Social Science Studies, 4(2), 1–17. https://doi.org/10.20849/ajsss.v4i2.565

Kaur, G., & Singh, B. (2017, June). Improving the quality of software by refactoring. In 2017 International Conference on Intelligent Computing and Control Systems (ICICCS) (pp. 185–191). IEEE.

Kaur, S., & Singh, P. (2019). How does object-oriented code refactoring influence software quality? Research landscape and challenges. Journal of Systems and Software, 157, 110394. https://doi.org/10.1016/j.jss.2019.110394

Kim, M., Zimmermann, T., & Nagappan, N. (2014). An empirical study of refactoring challenges and benefits at Microsoft. IEEE Transactions on Software Engineering, 40(7), 633–649. https://doi.org/10.1109/TSE.2014.2318734 Journal of ICT, 20, No. 4 (October) 2021, pp: 511–

L’Erario, A., & Thomazinho, H. C. S. (2020). An approach to software maintenance: A case study. International Journal of Software Engineering and Knowledge Engineering, 30(5), 603–630. https://doi.org/10.1142/S0218194020500217

Lacerda, G., Petrillo, F., Pimenta, M., & Gaël, Y. (2020). Code smells and refactoring: A tertiary systematic review of challenges and observations. Journal of Systems and Software, 167, 110610. https://doi.org/10.1016/j.jss.2020.110610

Malhotra, R., & Jain, J. (2019, March). Analysis of refactoring effect on software quality of object-oriented. In International Conference on Innovative Computing and Communications (pp. 197–212). Springer Singapore. https://doi.org/10.1007/978-981-13-2354-6

Mariani, T., & Vergilio, S. R. (2017). A systematic review on search-based refactoring. Information and Software Technology, 83, 14–34. https://doi.org/10.1016/j.infsof.2016.11.009

Mkaouer, W., Kessentini, M., Bechikh, S., Deb, K., & Cinnéide, M. Ó. (2014, September). Recommendation system for software refactoring using innovation and interactive dynamic optimization. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (pp. 331–336).

Nardi, P. M. (2003). Doing survey research: A guide to quantitative methods. Boston: Pearson Education.

Nyamawe, A. S., Liu, H., Niu, Z., Wang, W., & Niu, N. (2018). Recommending refactoring solutions based on traceability and code metrics. IEEE Access, 4(c), 49460–49475. https://doi.org/10.1109/ACCESS.2018.2868990.

Nyamawe, A. S., Liu, H., Niu, N., Umer, Q., & Niu, Z. (2019, September). Automated recommendation of software refactorings based on feature requests. In 2019 IEEE 27th International Requirements Engineering Conference (RE) (pp. 187–198). IEEE. https://doi.org/10.1109/RE.2019.00029

Opdyke, W. F. (1992). Refactoring object-oriented frameworks. (Doctoral dissertation, University of Illinois).

Ouni, A., Kessentini, M., Sahraoui, H., Cinnéide, M. Ó., Deb, K., & Inoue, K. (2015, February). A multi-objective refactoring approach to introduce design patterns and fix anti-patterns. In First North American Search Based Software Engineering Symposium (NASBASE) (pp. 1–16). Journal of ICT, 20, No. 4 (October) 2021, pp: 511–

Ouni, A., Kessentini, M., Sahraoui, H., Inoue, K., & Deb, K. (2016). Multi-criteria code refactoring using search-based software engineering: An industrial case study. ACM Transactions on Software Engineering and Methodology (TOSEM), 25(3), 1–53.

Rajlich, V. (2014, May). Software evolution and maintenance. In Proceedings of the on Future of Software Engineering (FOSE) (pp. 133–144). ACM.

Rehman, F., Maqbool, B., Riaz, M. Q., Qamar, U., & Abbas, M. (2018, April). Scrum software maintenance model: Efficient software maintenance in agile methodology. In 2018 21st Saudi Computer Society National Computer Conference (NCC) (pp. 1–5). IEEE.

Rochimah, S., Arifiani, S., & Insanittaqwa, V. F. (2015). Non-source code refactoring: A systematic literature review. International Journal of Software Engineering and Its Applications, 9(6), 197–214. https://doi.org/10.14257/ijseia.2015.9.6.19

Roscoe, J. T. (1975). Fundamental research statistics for the behavioral sciences. Holt.

Saunders, M., Lewis, P., & Thornhill, A. (2015). Research methods for business students. Pearson Education Limited.

Sekaran, U. (2003). Research methods for business (4th ed.). John Wiley

Sekaran, U., & Bougie, R. (2016). Research methods for business: A skill building approach (7th ed.). John Wiley & Sons Ltd.

Sun, X., Li, B., Leung, H., Li, B., & Li, Y. (2015). MSR4SM: Using topic models to effectively mining software repositories for software maintenance tasks. Information and Software Technology, 66, 1–12. https://doi.org/10.1016/j.infsof.2015.05.003

Wang, H., Kessentini, M., Grosky, W., & Meddeb, H. (2015, October). On the use of time series and search based software engineering for refactoring recommendation. In Proceedings of the 7th International Conference on Management of computational and collective intElligence in Digital EcoSystems (pp. 35–42). ACM.

Zikmund, W. G., Babin, B. J., Carr, J. C., & Griffin, M. (2010). Business research methods. (8th ed.). South-Western: Cengage Learning.

Downloads

Published

27-09-2021

How to Cite

Almogahed, A., & Omar, M. (2021). Refactoring Techniques for Improving Software Quality: Practitioners’ Perspectives. Journal of Information and Communication Technology, 20(4), 511-539. https://doi.org/10.32890/jict2021.20.4.3

Research impact

Harvested 2026-09-06
35 citations, from Scopus — the highest of the sources checked

Counts differ between services because each indexes a different body of literature. None of them is the whole picture.

Identifiers DOI 10.32890/jict2021.20.4.3 OpenAlex W3204913240 Scopus 85116851786

Most read articles by the same author(s)