Loading [MathJax]/extensions/MathMenu.js
DEPICTER: A Design-Principle Guided and Heuristic-Rule Constrained Software Refactoring Approach | IEEE Journals & Magazine | IEEE Xplore

DEPICTER: A Design-Principle Guided and Heuristic-Rule Constrained Software Refactoring Approach


Abstract:

Software refactoring is one of the most significant practices in software maintenance as the quality of software design tends to deteriorate during software evolution. Bu...Show More

Abstract:

Software refactoring is one of the most significant practices in software maintenance as the quality of software design tends to deteriorate during software evolution. But, refactoring software is a very challenging task as it requires a holistic view of the entire software system. To this end, recent studies introduced search-based algorithms to facilitate software refactoring. However, they still have the following major limitations: 1) the searched solutions may violate the design principles as their fitness functions do not directly reflect the degree of software’s compliance with design principles; 2) most approaches start the searching process from a completely random initial population, which may lead to unoptimal solutions. In this article, we aim to develop effective search-based refactoring approach to recommend better refactoring activities for developers which can improve the degree of software’s compliance with design principles as well as the software design quality. We propose DEPICTER, a design-principle guided and heuristic-rule constrained software refactoring recommendation approach. In particular, DEPICTER uses non-dominated sorting genetic algorithm (NSGA)-II genetic algorithm and employs design-principle metrics as fitness functions. Besides, DEPICTER leverages heuristic rules to improve the quality of initial population for subsequent generic evolution. Our evaluations, based on four widely used systems, show that DEPICTER is effective for guiding the development of better refactoring models in practice.
Published in: IEEE Transactions on Reliability ( Volume: 71, Issue: 2, June 2022)
Page(s): 698 - 715
Date of Publication: 22 April 2022

ISSN Information:

Funding Agency:


I. Introduction

For object-oriented software development, especially large-scale system, the quality of software design has a great impact on software quality [1]. The software that follows the software design principles tends to have higher scalability, readability, and maintainability [1]. However, in practice, the quality of software design often decreases gradually with the evolution of software [2]. As software evolves, developers often need to make changes to software for fixing bugs and adding new features, which lead to architectural drift and erosion, hence increasing the deviation from the initial design and growing difficulty for system maintenance [3]. To this end, developers often turn to refactor software. Software refactoring aims to improve the internal structure of software, without changing software functions and external behavior, so as to optimize the software design and improve the maintainability of code. Since manual refactoring is time-consuming and error-prone [4], many approaches have been proposed to help developers refactor more efficiently and effectively.

Contact IEEE to Subscribe

References

References is not available for this document.