Loading [MathJax]/extensions/MathZoom.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:

References is not available for this document.

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.

Select All
1.
G. Booch, R. A. Maksimchuk, M. W. Engle, B. J. Young, J. Connallen and K. A. Houston, "Object-oriented analysis and design with applications", ACM SIGSOFT Softw. Eng. Notes, vol. 33, no. 5, pp. 29-29, 2008.
2.
C. C. Venters et al., "Software sustainability: Research and practice from a software architecture viewpoint", J. Syst. Softw., vol. 138, pp. 174-188, 2018.
3.
W. E. Wong and S. Gokhale, "Static and dynamic distance metrics for feature-based code analysis", J. Syst. Softw., vol. 74, no. 3, pp. 283-295, 2005.
4.
M. Kim, T. Zimmermann and N. Nagappan, "A field study of refactoring challenges and benefits", Proc. ACM SIGSOFT 20th Int. Symp. Found. Softw. Eng., pp. 1-11, 2012.
5.
A. B. Hassanat, V. Prasath, M. A. Abbadi, S. A. Abu-Qdari and H. Faris, "An improved genetic algorithm with a new initialization mechanism based on regression techniques" in Information, vol. 9, no. 7, pp. 167, 2018.
6.
W. Mkaouer et al., "Many-objective software remodularization using NSGA-III", ACM Trans. Softw. Eng. Methodol., vol. 24, no. 3, pp. 1-45, 2015.
7.
S. M. H. Dehaghani and N. Hajrahimi, "Which factors affect software projects maintenance cost more", Acta Informatica Medica, vol. 21, no. 1, pp. 63-66, 2013.
8.
W. E. Wong, J. R. Horgan, M. Syring, W. Zage and D. Zage, "Applying design metrics to a large-scale software system", Proc. 9th Int. Symp. Softw. Rel. Eng. (Cat. No. 98TB100257), pp. 273-282, 1998.
9.
E. Tempero, T. Gorschek and L. Angelis, "Barriers to refactoring", Commun. ACM, vol. 60, no. 10, pp. 54-61, 2017.
10.
A. A. B. Baqais and M. Alshayeb, "Automatic software refactoring: A systematic literature review", Softw. Qual. J., vol. 28, no. 2, pp. 459-502, 2020.
11.
T. Mariani and S. R. Vergilio, "A systematic review on search-based refactoring", Inf. Softw. Technol., vol. 83, pp. 14-34, 2017.
12.
K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, "A fast and elitist multiobjective genetic algorithm: NSGA-II", IEEE Trans. Evol. Comput., vol. 6, no. 2, pp. 182-197, Apr. 2002.
13.
M. Harman, "Software engineering: An ideal set of challenges for evolutionary computation", Proc. 15th Annu. Conf. Companion Genet. Evol. Comput., pp. 1759-1760, 2013.
14.
S. Sarkar, A. C. Kak and G. M. Rama, "Metrics for measuring the quality of modularization of large-scale object-oriented software", IEEE Trans. Softw. Eng., vol. 34, no. 5, pp. 700-720, Sep./Oct. 2008.
15.
M. Zhao, D. Li, L. Zhang, H. Liu and S.-Y. Lee, "Optimization scheduling design of monitoring resources using a process-improved adaptive genetic algorithm", Proc. 7th Int. Symp. Syst. Softw. Rel., pp. 167-177, 2021.
16.
T. Vernazza, G. Granatella, G. Succi, L. Benedicenti and M. Mintchev, "Defining metrics for software components", Proc. World Multiconference Systemics Cybern. Inform., vol. 11, pp. 16-23, 2000.
17.
L. Ponisio and O. Nierstrasz, "Using contextual information to assess package cohesion", Inst. Appl. Math. Comput. Sci., 2006.
18.
K. Praditwong, M. Harman and X. Yao, "Software module clustering as a multi-objective search problem", IEEE Trans. Softw. Eng., vol. 37, no. 2, pp. 264-282, Mar./Apr. 2011.
19.
G. Bavota, F. Carnevale, A. De Lucia, M. Di Penta and R. Oliveto, "Putting the developer in-the-loop: An interactive GA for software re-modularization", Proc. Int. Symp. Search Based Softw. Eng., pp. 75-89, 2012.
20.
I. Candela, G. Bavota, B. Russo and R. Oliveto, "Using cohesion and coupling for software remodularization: Is it enough?", ACM Trans. Softw. Eng. Methodol., vol. 25, no. 3, pp. 1-28, 2016.
21.
S.-J. Huang and N.-H. Chiu, "Optimization of analogy weights by genetic algorithm for software effort estimation", Inf. Softw. Technol., vol. 48, no. 11, pp. 1034-1045, 2006.
22.
F. Ferrucci, C. Gravino, R. Oliveto and F. Sarro, "Genetic programming for effort estimation: An analysis of the impact of different fitness functions", Proc. 2nd Int. Symp. Search Based Softw. Eng., pp. 89-98, 2010.
23.
S. Stevanetic and U. Zdun, "Software metrics for measuring the understandability of architectural structures: A systematic mapping study", Proc. 19th Int. Conf. Eval. Assessment Softw. Eng., pp. 1-14, 2015.
24.
Z. Li, P. Liang, P. Avgeriou, N. Guelfi and A. Ampatzoglou, "An empirical investigation of modularity metrics for indicating architectural technical debt", Proc. 10th Int. ACM SIGSOFT Conf. Qual. Softw. Architectures, pp. 119-128, 2014.
25.
Y. Zhao, Y. Yang, H. Lu, Y. Zhou, Q. Song and B. Xu, "An empirical analysis of package-modularization metrics: Implications for software fault-proneness", Inf. Softw. Technol., vol. 57, pp. 186-203, 2015.
26.
V. B. Misic, "Cohesion is structural coherence is functional: Different views different measures", Proc. 7th Int. Softw. Metrics Symp., pp. 135-144, 2001.
27.
H. Abdeen, S. Ducasse and H. Sahraoui, "Modularization metrics: Assessing package organization in legacy large object-oriented software", Proc. 18th Work. Conf. Reverse Eng., pp. 394-398, 2011.
28.
T. Zhou, B. Xu, L. Shi, Y. Zhou and L. Chen, "Measuring package cohesion based on context", Proc. IEEE Int. Workshop Semantic Comput. Syst., pp. 127-132, 2008.
29.
J. Gorman, "OO design principles & metrics", Online Verfügbar Unter Zuletzt Geprüft Amer., vol. 15, pp. 2009, 2006, [online] Available: http://www.parlezuml.com/metrics/OO%20Design%20Principles%20&%20Metrics.pdf.
30.
F. Wilcoxon, "Individual comparisons by ranking methods" in Breakthroughs in Statistics, Berlin, Germany: Springer, pp. 196-202, 1992.
Contact IEEE to Subscribe

References

References is not available for this document.