Recent Advances in Electrical & Electronic Engineering

Author(s): Satnam Kaur*, Lalit K. Awasthi and Amrit L. Sangal

DOI: 10.2174/2352096513999200704140718

A Review on Software Refactoring Opportunity Identification and Sequencing in Object-oriented Software

Page: [252 - 267] Pages: 16

  • * (Excluding Mailing and Handling)

Abstract

Background: Owing to the benefits of software refactoring, the software industry started adopting this practice in the maintenance phase as a means to improve developer’s productivity and software quality. As a result, proposing new techniques for refactoring opportunity identification and sequencing has become the key area of interest for academicians and industry researchers.

Objective: This paper aims to perform a review of such existing approaches which are related to software refactoring opportunity identification and sequencing.

Methods: We discussed the background concepts of code smells and refactoring and provided their corresponding taxonomies. Moreover, comprehensive literature of several techniques that automatically or semi-automatically identify or prioritize the refactoring opportunities is presented along with considered refactoring activities, optimization algorithms, bad smells, datasets and underlying evaluation approaches.

Results: The research in the direction of refactoring opportunity identification and sequencing is highly active and is generally performed by academic researchers. Most of the techniques address Move Method and Extract Class refactoring activities in Java datasets.

Conclusion: This paper highlights various open challenges that need further investigation, including lack of dynamic analysis-based approaches, lesser utilization of industrial datasets, nonconsideration of recent optimization algorithms, etc.

Keywords: Software refactoring, refactoring opportunity identification, refactoring sequencing, software quality, optimization algorithms, metaheuristic approaches.

Graphical Abstract

[1]
T. Mens, and T. Tourwé, "A survey of software refactoring", IEEE Trans. Softw. Eng., vol. 30, no. 2, pp. 126-139, 2004.
[http://dx.doi.org/10.1109/TSE.2004.1265817]
[2]
M. Fowler, Refactoring: Improving the design of existing code., Addison-Wesley Longman Publishing Co., Inc.: Boston, MA, 1999.
[3]
W.F. Opdyke, "Refactoring: A Program restructuring aid in designing object-oriented application frameworks", Ph.D. thesis, Univ. of Illinois at Urbana-Champaign, 1992.
[4]
T. Mariani, and S.R. Vergilio, "A systematic review on search-based refactoring", Inf. Softw. Technol., vol. 83, pp. 14-34, 2017.
[http://dx.doi.org/10.1016/j.infsof.2016.11.009]
[5]
M. Kim, T. Zimmermann, and N. Nagappan, "An empirical study of refactoring challenges and benefits at Microsoft", IEEE Trans. Softw. Eng., vol. 40, no. 7, pp. 633-649, 2014.
[http://dx.doi.org/10.1109/TSE.2014.2318734]
[6]
R. Moser, P. Abrahamsson, W. Pedrycz, A. Sillitti, and G. Succi, "A case study on the impact of refactoring on quality and productivity in an agile team", IFIP Central and East European Conference on Software Engineering Techniques, 2007pp. 252-266
[7]
A. Ouni, M. Kessentini, S. Bechikh, and H. Sahraoui, "Prioritizing code-smells correction tasks using chemical reaction optimization", Softw. Qual. J., vol. 23, no. 2, pp. 323-361, 2015.
[http://dx.doi.org/10.1007/s11219-014-9233-7]
[8]
I. Griffith, S. Wahl, and C. Izurieta, "TrueRefactor: An automated refactoring tool to improve legacy system and application comprehensibility", In: Proceedings of the International Conference on Computer Applications in Industry and Engineering, 2011pp. 316-321
[9]
W. Mkaouer, M. Kessentini, A. Shaout, P. Koligheu, S. Bechikh, K. Deb, and A. Ouni, "Many-objective software remodularization using NSGA-III", ACM Trans. Softw. Eng. Methodol., vol. 24, no. 3, pp. 1-45, 2015.
[http://dx.doi.org/10.1145/2729974]
[10]
M. Mäntylä, J. Vanhanen, and C. Lassenius, "A taxonomy and an initial empirical study of bad smells in code", In: Proceedings of the International Conference on Software Maintenance, 2003pp. 381-384
[http://dx.doi.org/10.1109/ICSM.2003.1235447]
[11]
A. Kaur, "A Systematic Literature Review on Empirical Analysis of the Relationship Between Code Smells and Software Quality Attributes", Arch. Comput. Methods Eng., vol. 27, pp. 1267-1296, 2019.
[http://dx.doi.org/10.1007/s11831-019-09348-6]
[12]
M.V. Mäntylä, and C. Lassenius, "Subjective evaluation of software evolvability using code smells: An empirical study", Empir. Softw. Eng., vol. 11, no. 3, pp. 395-431, 2006.
[http://dx.doi.org/10.1007/s10664-006-9002-8]
[13]
W.C. Wake, Refactoring Workbook., Addison-Wesley Longman Publishing Co., Inc.: Boston, MA, 2003.
[14]
A-R. Han, and D-H. Bae, "Dynamic profiling-based approach to identifying cost-effective refactorings", Inf. Softw. Technol., vol. 55, no. 6, pp. 966-985, 2013.
[http://dx.doi.org/10.1016/j.infsof.2012.12.002]
[15]
S. Kumar, and J.K. Chhabra, "Two level dynamic approach for feature envy detection", In: Proceedings of the International Conference on Computer and Communication Technology, 2014pp. 41-46
[http://dx.doi.org/10.1109/ICCCT.2014.7001467]
[16]
L. Tahvildari, and K. Kontogiannis, "A metric-based approach to enhance design quality through meta-pattern transformations", In: Proceedings of the 7th European Conference on Software Maintenance and Reengineering, 2003pp. 183-192
[http://dx.doi.org/10.1109/CSMR.2003.1192426]
[17]
Y. Higo, T. Kamiya, S. Kusumoto, K. Inoue, and K. Words, "ARIES: Refactoring support environment based on code clone analysis", Proceedings of the 8th IASTED International Conference on Software Engineering and Applications, 2004pp. 222-229
[18]
T. Kamiya, S. Kusumoto, and K. Inoue, "CCFinder: a multilinguistic token-based code clone detection system for large scale source code", IEEE Trans. Softw. Eng., vol. 28, no. 7, pp. 654-670, 2002.
[http://dx.doi.org/10.1109/TSE.2002.1019480]
[19]
Y. Higo, Y. Ueda, T. Kamiya, S. Kusumoto, and K. Inoue, "On software maintenance process improvement based on code clone analysis", In: Proceedings of the 8th IASTED International Conference on product focused software process improvement, 2002pp. 185-197
[http://dx.doi.org/10.1007/3-540-36209-6_17]
[20]
M. Fokaefs, N. Tsantalis, and A. Chatzigeorgiou, "Jdeodorant: Identification and removal of feature envy bad smells", In: Proceedings of the 23rd International Conference on Software Maintenance, 2007pp. 519-520
[http://dx.doi.org/10.1109/ICSM.2007.4362679]
[21]
Y. Higo, S. Kusumoto, and K. Inoue, "A metric-based approach to identifying refactoring opportunities for merging code clones in a Java software system", J. Software Maintenance and Evolution: Research and Practice, vol. 20, no. 6, pp. 435-461, 2008.
[http://dx.doi.org/10.1002/smr.394]
[22]
L. Yang, H. Liu, and Z. Niu, "Identifying fragments to be extracted from long methods", In: Proceedings of the 16th Asia-Pacific Software Engineering Conference, 2009pp. 43-49
[http://dx.doi.org/10.1109/APSEC.2009.20]
[23]
G. Bavota, R. Oliveto, A. De Lucia, G. Antoniol, and Y-G. Gueheneuc, "Playing with refactoring: Identifying extract class opportunities through game theory", In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2010pp. 1-5
[http://dx.doi.org/10.1109/ICSM.2010.5609739]
[24]
R. Oliveto, M. Gethers, G. Bavota, D. Poshyvanyk, and A. De Lucia, "Identifying method friendships to remove the feature envy bad smell (NIER track", In: Proceedings of the 33rd International Conference on Software Engineering, 2011pp. 820-823
[25]
J.A. Dallal, and L.C. Briand, "A precise method-method interaction-based cohesion metric for object-oriented classes", ACM Trans. Softw. Eng. Methodol., vol. 21, no. 2, pp. 1-34, 2012.
[http://dx.doi.org/10.1145/2089116.2089118]
[26]
G. Bavota, A. De Lucia, A. Marcus, and R. Oliveto, "Using structural and semantic measures to improve software modularization", Empir. Softw. Eng., vol. 18, no. 5, pp. 901-932, 2013.
[http://dx.doi.org/10.1007/s10664-012-9226-8]
[27]
J. Al Dallal, "Predicting move method refactoring opportunities in object-oriented code", Inf. Softw. Technol., vol. 92, pp. 105-120, 2017.
[http://dx.doi.org/10.1016/j.infsof.2017.07.013]
[28]
R. Terra, M.T. Valente, S. Miranda, and V. Sales, "JMove: A novel heuristic and tool to detect move method refactoring opportunities", J. Syst. Softw., vol. 138, pp. 19-36, 2018.
[http://dx.doi.org/10.1016/j.jss.2017.11.073]
[29]
M. Hammad, and M. Alnabhan, Int. J. Comput. Appl. Technol., vol. 61, no. 3, pp. 198-206, 2019.
[http://dx.doi.org/10.1504/IJCAT.2019.102841]
[30]
N. Tsantalis, and A. Chatzigeorgiou, "Identification of extract method refactoring opportunities for the decomposition of methods", J. Syst. Softw., vol. 84, no. 10, pp. 1757-1782, 2011.
[http://dx.doi.org/10.1016/j.jss.2011.05.016]
[31]
R.D. Wangberg, "A literature review on code smells and refactoring", Master Thesis, Department of Informatics, University of Oslo, 2010.
[32]
M. Misbhauddin, and M. Alshayeb, "UML model refactoring: A systematic literature review", Empir. Softw. Eng., vol. 20, no. 1, pp. 206-251, 2015.
[http://dx.doi.org/10.1007/s10664-013-9283-7]
[33]
M. Abebe, and C-J. Yoo, "Trends, opportunities and challenges of software refactoring: A systematic literature review", Int. J. Softw. Eng. Appl., vol. 8, no. 6, pp. 299-318, 2014.
[34]
J. Al Dallal, and A. Abdin, "Empirical evaluation of the impact of object-oriented code refactoring on quality attributes: A systematic literature review", IEEE Trans. Softw. Eng., vol. 44, no. 1, pp. 44-69, 2017.
[http://dx.doi.org/10.1109/TSE.2017.2658573]
[35]
S. Kaur, and P. Singh, "How does object-oriented code refactoring influence software quality? Research landscape and challenges", J. Syst. Softw., vol. 157, p. 110394, 2019.
[http://dx.doi.org/10.1016/j.jss.2019.110394]
[36]
A. Alkhalid, M. Alshayeb, and S. Mahmoud, "Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm", Adv. Eng. Softw., vol. 41, no. 10, pp. 1160-1178, 2010.
[http://dx.doi.org/10.1016/j.advengsoft.2010.08.002]
[37]
A-R. Han, D-H. Bae, and S. Cha, "An efficient approach to identify multiple and independent move method refactoring candidates", Inf. Softw. Technol., vol. 59, pp. 53-66, 2015.
[http://dx.doi.org/10.1016/j.infsof.2014.10.007]
[38]
N. Tsantalis, and A. Chatzigeorgiou, "Identification of move method refactoring opportunities", IEEE Trans. Softw. Eng., vol. 35, no. 3, pp. 347-367, 2009.
[http://dx.doi.org/10.1109/TSE.2009.1]
[39]
N. Tsantalis, and A. Chatzigeorgiou, "Identification of refactoring opportunities introducing polymorphism", J. Syst. Softw., vol. 83, no. 3, pp. 391-404, 2010.
[http://dx.doi.org/10.1016/j.jss.2009.09.017]
[40]
K. Hotta, Y. Higo, and S. Kusumoto, "Identifying, tailoring, and suggesting form template method refactoring opportunities with program dependence graph", In: Proceedings of the 16th European Conference on Software Maintenance and Reengineering, 2012pp. 53-62
[http://dx.doi.org/10.1109/CSMR.2012.16]
[41]
H. Liu, Z. Niu, Z. Ma, and W. Shao, "Identification of generalization refactoring opportunities", Autom. Softw. Eng., vol. 20, no. 1, pp. 81-110, 2013.
[http://dx.doi.org/10.1007/s10515-012-0100-0]
[42]
Y. Kataoka, D. Notkin, M.D. Ernst, and W.G. Griswold, "Automated support for program refactoring using invariants", In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM’01), 2001pp. 736-743
[http://dx.doi.org/10.1109/ICSM.2001.972794]
[43]
S. Kimura, Y. Higo, H. Igak, and S. Kusumoto, "Move code refactoring with dynamic analysis", In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2012pp. 575-578
[44]
H. van Vliet, Software engineering: Principles and practice., 2nd ed John Wiley and Sons: Chichester, 2000.
[45]
R. Zarnekow, and W. Brenner, "Distribution of cost over the application lifecycle-a multi-case study", Proceedings of the European Conference on Information Systems, pp. 1-13, 2005.
[46]
T. Sharma, G. Suryanarayana, and G. Samarthyam, "Challenges to and solutions for refactoring adoption: An industrial perspective", IEEE Softw., vol. 32, no. 6, pp. 44-51, 2015.
[http://dx.doi.org/10.1109/MS.2015.105]
[47]
A. Ouni, M. Kessentini, H. Sahraoui, and M.S. Hamdi, "Search-based refactoring: Towards semantics preservation", In: Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2012pp. 347-356
[48]
A. Ouni, M. Kessentini, H. Sahraoui, and M. Boukadoum, Maintainability defects detection and correction: a multi-objective approachAutomated Software Engineering, vol. 20. 2013, no. no. 1, pp. 47-79.
[49]
A. Ouni, M. Kessentini, and H. Sahraoui, "Search-based refactoring using recorded code changes", Proceedings of the 17th European Conference on Software Maintenance and Reengineering, 2013pp. 221-230
[http://dx.doi.org/10.1109/CSMR.2013.31]
[50]
A. Ouni, M. Kessentini, H. Sahraoui, and M.S. Hamdi, "The use of development history in software refactoring using a multi-objective evolutionary algorithm", In: Proceedings of the 15th annual conference on Genetic and evolutionary computation, 2013pp. 1461-1468
[http://dx.doi.org/10.1145/2463372.2463554]
[51]
M.W. Mkaouer, M. Kessentini, S. Bechikh, and M.Ó. Cinnéide, "A robust multi-objective approach for software refactoring under uncertainty", In: Proceedings of International Symposium on Search Based Software Engineering, 2014pp. 168-183
[http://dx.doi.org/10.1007/978-3-319-09940-8_12]
[52]
M.W. Mkaouer, M. Kessentini, S. Bechikh, K. Deb, and M.Ó. Cinnéide, "Recommendation system for software refactoring using innovization and interactive dynamic optimization", In: Proceedings of the 29th ACM/IEEE international conference on Automated software engineering, 2014pp. 331-336
[http://dx.doi.org/10.1145/2642937.2642965]
[53]
A. Ouni, M. Kessentini, and H. Sahraoui, "Multiobjective optimization for software refactoring and evolution", Adv. Comput., vol. 94, pp. 103-167, 2014.
[http://dx.doi.org/10.1016/B978-0-12-800161-5.00004-9]
[54]
A. Ouni, M. Kessentini, H. Sahraoui, K. Inoue, and M.S. Hamdi, "Improving multi-objective code-smells correction using development history", J. Syst. Softw., vol. 105, pp. 18-39, 2015.
[http://dx.doi.org/10.1016/j.jss.2015.03.040]
[55]
H. Wang, M. Kessentini, W. Grosky, and H. Meddeb, "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, 2015pp. 35-42
[http://dx.doi.org/10.1145/2857218.2857224]
[56]
A. Ouni, M. Kessentini, H. Sahraoui, K. Inoue, and K. Deb, "Multi-criteria code refactoring using search-based software engineering: An industrial case study", ACM Trans. Softw. Eng. Methodol., vol. 25, no. 3, 2016.
[http://dx.doi.org/10.1145/2932631]
[57]
M.W. Mkaouer, M. Kessentini, M.Ó. Cinnéide, S. Hayashi, and K. Deb, "A robust multi-objective approach to balance severity and importance of refactoring opportunities", Empir. Softw. Eng., vol. 22, no. 2, pp. 894-927, 2017.
[http://dx.doi.org/10.1007/s10664-016-9426-8]
[58]
M. Mohan, and D. Greer, "MultiRefactor: automated refactoring to improve software quality", In: Proceedings of the International Conference on Product-Focused Software Process Improvement, 2017pp. 556-572
[http://dx.doi.org/10.1007/978-3-319-69926-4_46]
[59]
V. Alizadeh, M. Kessentini, W. Mkaouer, M. Ocinneide, A. Ouni, and Y. Cai, "An interactive and dynamic search-based approach to software refactoring recommendations", IEEE Trans. Softw. Eng., 2018.
[60]
V. Alizadeh, and M. Kessentini, "Reducing interactive refactoring effort via clustering-based multi-objective search", In: Proceedings of the International Conference on Automated Software Engineering, 2018pp. 464-474
[http://dx.doi.org/10.1145/3238147.3238217]
[61]
M. Mohan, and D. Greer, "An approach to prioritize classes in a multi-objective software maintenance framework", In: Proceedings of the International Conference on Evaluation of Novel Approaches to Software Engineering, 2018pp. 215-222
[http://dx.doi.org/10.5220/0006631902150222]
[62]
M. Mohan, and D. Greer, "Automated refactoring of software using version history and a code element recentness measure", In: Proceedings of the International Conference on Evaluation of Novel Approaches to Software Engineering, 2018pp. 455-462
[http://dx.doi.org/10.5220/0006815304550462]
[63]
M. Mohan, and D. Greer, "Automated multi-objective refactoring based on quality and code element", In: Proceedings of the International Conference on Evaluation of Novel Approaches to Software Engineering, 2018pp. 334-351
[64]
M. Mohan, D. Greer, and P. McMullan, "Maximizing refactoring coverage in an automated maintenance approach using multi-objective optimization", In: Proceedings of the International Workshop on Refactoring, 2019pp. 31-38
[http://dx.doi.org/10.1109/IWoR.2019.00014]
[65]
S. Kaur, L.K. Awasthi, and A.L. Sangal, "HMOSHSSA: a hybrid meta-heuristic approach for solving constrained optimization problems", Eng. Comput., pp. 1-37, 2020.
[http://dx.doi.org/10.1007/s00366-020-00989-x]
[66]
G. Dhiman, and V. Kumar, "Spotted hyena optimizer: a novel bio-inspired based metaheuristic technique for engineering applications", Adv. Eng. Softw., vol. 114, pp. 48-70, 2017.
[http://dx.doi.org/10.1016/j.advengsoft.2017.05.014]
[67]
G. Dhiman, and V. Kumar, "Emperor penguin optimizer: A bio-inspired algorithm for engineering problems", Knowl. Base. Syst., vol. 159, pp. 20-50, 2018.
[http://dx.doi.org/10.1016/j.knosys.2018.06.001]
[68]
G. Dhiman, and V. Kumar, "Multi-objective spotted hyena optimizer: a multi-objective optimization algorithm for engineering problems", Knowl. Base. Syst., vol. 150, pp. 175-197, 2018.
[http://dx.doi.org/10.1016/j.knosys.2018.03.011]
[69]
G. Dhiman, and V. Kumar, "Seagull optimization algorithm: Theory and its applications for large-scale industrial engineering problems", Knowl. Base. Syst., vol. 165, pp. 169-196, 2019.
[http://dx.doi.org/10.1016/j.knosys.2018.11.024]
[70]
A. Kaur, S. Kaur, and G. Dhiman, "A quantum method for dynamic nonlinear programming technique using Schrödinger equation and Monte Carlo approach", Mod. Phys. Lett. B, vol. 32, p. 1850374, 2018.
[http://dx.doi.org/10.1142/S0217984918503748]
[71]
G. Dhiman, S. Guo, and S. Kaur, "ED-SHO: A framework for solving nonlinear economic load power dispatch problem using spotted hyena optimizer", Mod. Phys. Lett. A, vol. 33, p. 1850239, 2018.
[http://dx.doi.org/10.1142/S0217732318502395]
[72]
S. Kaur, L.K. Awasthi, A.L. Sangal, and G. Dhiman, "Tunicate Swarm Algorithm: A new bio-inspired based metaheuristic paradigm for global optimization", Eng. Appl. Artif. Intell., vol. 90, p. 103541, 2020.
[http://dx.doi.org/10.1016/j.engappai.2020.103541]
[73]
G. Dhiman, and A. Kaur, "STOA: a bio-inspired based optimization algorithm for industrial engineering problems", Eng. Appl. Artif. Intell., vol. 82, pp. 148-174, 2019.
[http://dx.doi.org/10.1016/j.engappai.2019.03.021]
[74]
G. Dhiman, and A. Kaur, "A hybrid algorithm based on particle swarm and spotted hyena optimizer for global optimization", Soft Comput. Problem Solving, pp. 599-615, 2019.
[http://dx.doi.org/10.1007/978-981-13-1592-3_47]
[75]
E. Murphy-Hill, C. Parnin, and A. Black, "How we refactor, and how we know it", IEEE Trans. Softw. Eng., vol. 38, no. 1, pp. 5-18, 2012.
[http://dx.doi.org/10.1109/TSE.2011.41]
[76]
D. Silva, N. Tsantalis, and M.T. Valente, "Why we refactor? confessions of github contributors", In: Proceedings of the International Symposium on Foundations of Software Engineering, 2016pp. 858-870
[http://dx.doi.org/10.1145/2950290.2950305]