Refactoring is one of the most widely used techniques in practice to improve the quality of existing software. However, it is observed that refactoring does not continually improve all software quality attributes. Recent studies indicated that different refactoring techniques have significantly different, sometimes opposite, and conflicting effects on software quality attributes. In other words, there is contradictory evidence on the refactoring benefit. As a result, developers face challenges in selecting appropriate refactoring techniques when they use them to improve software quality. To the best of our knowledge, no study has investigated factors that may explain inconsistent or diverging results concerning the effect of refactoring techniques on software quality. Therefore, in this study, scenarios of using refactoring techniques factor have been identified, investigated, and thoroughly analyzed. Ten of the most commonly used refactoring techniques in practice have been chosen and individually applied in seven case studies of varying sizes (small, medium, and large). The Quality Model for Object-Oriented Design (QMOOD) is used to assess how refactoring techniques affect quality attributes. The findings provide strong evidence that this factor plays a significant role in producing the various effects of refactoring techniques on quality attributes. These findings can help software developers understand how to use refactoring techniques to improve software quality while taking this factor into account. The best scenario for using each refactoring technique to improve software system quality has been identified. The findings can provide guidelines for software developers to use refactoring techniques to improve the quality of software systems based on the best scenarios of using the refactoring techniques.
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.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.