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
[http://dx.doi.org/10.1109/TSE.2004.1265817]
[http://dx.doi.org/10.1016/j.infsof.2016.11.009]
[http://dx.doi.org/10.1109/TSE.2014.2318734]
[http://dx.doi.org/10.1007/s11219-014-9233-7]
[http://dx.doi.org/10.1145/2729974]
[http://dx.doi.org/10.1109/ICSM.2003.1235447]
[http://dx.doi.org/10.1007/s11831-019-09348-6]
[http://dx.doi.org/10.1007/s10664-006-9002-8]
[http://dx.doi.org/10.1016/j.infsof.2012.12.002]
[http://dx.doi.org/10.1109/ICCCT.2014.7001467]
[http://dx.doi.org/10.1109/CSMR.2003.1192426]
[http://dx.doi.org/10.1109/TSE.2002.1019480]
[http://dx.doi.org/10.1007/3-540-36209-6_17]
[http://dx.doi.org/10.1109/ICSM.2007.4362679]
[http://dx.doi.org/10.1002/smr.394]
[http://dx.doi.org/10.1109/APSEC.2009.20]
[http://dx.doi.org/10.1109/ICSM.2010.5609739]
[http://dx.doi.org/10.1145/2089116.2089118]
[http://dx.doi.org/10.1007/s10664-012-9226-8]
[http://dx.doi.org/10.1016/j.infsof.2017.07.013]
[http://dx.doi.org/10.1016/j.jss.2017.11.073]
[http://dx.doi.org/10.1504/IJCAT.2019.102841]
[http://dx.doi.org/10.1016/j.jss.2011.05.016]
[http://dx.doi.org/10.1007/s10664-013-9283-7]
[http://dx.doi.org/10.1109/TSE.2017.2658573]
[http://dx.doi.org/10.1016/j.jss.2019.110394]
[http://dx.doi.org/10.1016/j.advengsoft.2010.08.002]
[http://dx.doi.org/10.1016/j.infsof.2014.10.007]
[http://dx.doi.org/10.1109/TSE.2009.1]
[http://dx.doi.org/10.1016/j.jss.2009.09.017]
[http://dx.doi.org/10.1109/CSMR.2012.16]
[http://dx.doi.org/10.1007/s10515-012-0100-0]
[http://dx.doi.org/10.1109/ICSM.2001.972794]
[http://dx.doi.org/10.1109/MS.2015.105]
[http://dx.doi.org/10.1109/CSMR.2013.31]
[http://dx.doi.org/10.1145/2463372.2463554]
[http://dx.doi.org/10.1007/978-3-319-09940-8_12]
[http://dx.doi.org/10.1145/2642937.2642965]
[http://dx.doi.org/10.1016/B978-0-12-800161-5.00004-9]
[http://dx.doi.org/10.1016/j.jss.2015.03.040]
[http://dx.doi.org/10.1145/2857218.2857224]
[http://dx.doi.org/10.1145/2932631]
[http://dx.doi.org/10.1007/s10664-016-9426-8]
[http://dx.doi.org/10.1007/978-3-319-69926-4_46]
[http://dx.doi.org/10.1145/3238147.3238217]
[http://dx.doi.org/10.5220/0006631902150222]
[http://dx.doi.org/10.5220/0006815304550462]
[http://dx.doi.org/10.1109/IWoR.2019.00014]
[http://dx.doi.org/10.1007/s00366-020-00989-x]
[http://dx.doi.org/10.1016/j.advengsoft.2017.05.014]
[http://dx.doi.org/10.1016/j.knosys.2018.06.001]
[http://dx.doi.org/10.1016/j.knosys.2018.03.011]
[http://dx.doi.org/10.1016/j.knosys.2018.11.024]
[http://dx.doi.org/10.1142/S0217984918503748]
[http://dx.doi.org/10.1142/S0217732318502395]
[http://dx.doi.org/10.1016/j.engappai.2020.103541]
[http://dx.doi.org/10.1016/j.engappai.2019.03.021]
[http://dx.doi.org/10.1007/978-981-13-1592-3_47]
[http://dx.doi.org/10.1109/TSE.2011.41]
[http://dx.doi.org/10.1145/2950290.2950305]