Author:
Akhtar Salwa Muhammad,Nazir Makia,Ali Arshad,Khan Ahmad Salman,Atif Muhammad,Naseer Mudassar
Abstract
Software-refactoring improves the quality and reduces the complexity during the whole life cycle of the software system. The objective of this work is to elicit the existing challenges and refactoring techniques and practices to counter those challenges. This study presents a systematic literature review based upon the scientific literature published since January 2000. After rigorously applying the SLR protocol defined by Barbara Kitchenham, we identify 36 articles discussing software- refactoring challenges, techniques, and practices. We point out complexity, understandability, and maintainability as three challenges of traditional software engineering that are resolved by software-refactoring. This SLR identifies assertions, program slicing, graph transformation, software metrics, and metamodeling, as five commonly used refactoring techniques. Moreover, eight main challenges of software-refactoring, namely determining refactoring and code location, selecting refactoring type and technique, managing refactoring dependency, consistency maintenance, refactoring ordering and increase in testing cost, are also highlighted. The findings of this work suggest that software-refactoring techniques can resolve challenges of traditional software engineering.
Reference52 articles.
1. A. Alkhalid, M. Alshayeb, and S. A. Mahmoud, “Software refactoring at the class level using clustering techniques,” J. Res. Pract. Inf. Technol., vol. 43, no. 4, pp. 285–306, 2011.
2. E. L. G. Alves, M. Song, T. Massoni, P. D. L. MacHado, and M. Kim, “Refactoring Inspection Support for Manual Refactoring Edits,” IEEE Trans. Softw. Eng., vol. 44, no. 4, pp. 365–383, 2018, doi: 10.1109/TSE.2017.2679742.
3. P. Techapalokul and E. Tilevich, “Position: Manual Refactoring (by Novice Programmers) Considered Harmful,” Proc. - 2019 IEEE Blocks Beyond Work. B B 2019, pp. 79–80, 2019, doi: 10.1109/BB48857.2019.8941201.
4. R. R. Singh and D. Tiwari, “an Ai Approach for Software Defect Prediction – a Review of Literature,” Int. J. Tech. Res. Appl., vol. 3, no. 6, pp. 45–48, 2015.
5. G. Kaur and B. Singh, “Improving the quality of software by refactoring,” Proc. 2017 Int. Conf. Intell. Comput. Control Syst. ICICCS 2017, vol. 2018-Janua, pp. 185–191, 2017, doi: 10.1109/ICCONS.2017.8250707.