Analysis of Metric-Based Object-Oriented Code Refactoring Opportunities Identification Approaches

Full Text (PDF, 413KB), PP.46-57

Views: 0 Downloads: 0


Bassey Isong 1,* Nosipho Dladlu 1 Etim Duke 1 Bassey Ele 2

1. North-West University, Computer Science Department, Mafikeng, South Africa

2. University of Calabar, Computer Science Department, Calabar, Nigeria

* Corresponding author.


Received: 23 Mar. 2016 / Revised: 2 Jun. 2016 / Accepted: 17 Aug. 2016 / Published: 8 Jan. 2017

Index Terms

Object-oriented, Code, Metrics, Maintenance, Refactoring, Identification


Refactoring is used to improve deteriorated software design, code and their maintainability. In object-oriented (OO) code, before refactoring is performed, its opportunities must be identified and several approaches exist this regard. Among the approaches is the software metric-based approach where quality software metrics are used. Therefore, this paper provide analysis of existing empirical studies that utilized software metrics to identify refactoring opportunities in OO software systems. We performed a comprehensive analysis on 16 studies to identify the state-of-the-practice. The focal point was on the workings, refactoring activities, the programming language and the impact on software quality. The results obtained shows approaches were not unique, each was designed either for a single refactoring activity or couple of them, move method and extract class dominated the refactorings activities, and most approaches were fully automated while few were semi-automated. Moreover, OO metrics played acritical role in both opportunities detection and factoring decisions. Based on the results, it would be beneficial if generic refactoring approach is developed that is capable of identifying needs for all refactoring activities.

Cite This Paper

Bassey Isong, Nosipho Dladlu, Etim Duke, Bassey Ele, "Analysis of Metric-Based Object-Oriented Code Refactoring Opportunities Identification Approaches", International Journal of Information Technology and Computer Science(IJITCS), Vol.9, No.1, pp.46-57, 2017. DOI:10.5815/ijitcs.2017.01.06


[1]Singh, Y. Kaur, A. and Malhotra, R. Empirical validation of object-oriented metrics for predicting fault proneness models. Software Quality Journal, vol.18 pp. 3–35, 2010
[2]Ruchika, Malhotra, Nakul Pritam and Yogesh Singh: On the Applicability of Evolutionary Computation for Software Defect Prediction. International Conference on Advances in Computing, Communications and Informatics (ICACCI, 2014). Pp. 2249 – 2257, 2014
[3]Marcus, A. Poshyvanyk, D., Ferenc, R. Using the conceptual cohesion of classes for fault prediction in object-oriented systems. TSE, 34(2):287–300, 2008.
[4]Liu Y, Poshyvanyk D., Ferenc R., Gyimóthy T., Chrisochoides N. Modelling class cohesion as mixtures of latent topics. In: Proceedings of the 25th IEEE international conference on software maintenance. IEEE Press, Edmonton, pp 233–242, 2009
[5]Sommerville, I. Software Engineering. Nineth ed., Addison-Wesley, 2011.
[6]Bohner, S. A.: “Extending software change impact analysis into COTS components” Proceedings of the 27th Annual NASA Goddard Software Engineering Workshop, Greenbelt, USA, pp.175 -182, 2000
[7]Lehman MM, Ramil JF. Rules and tools for software evolution planning and management. Ann Softw Eng 11:15–44, 2001
[8]Mens T, Tourw´e T. A survey of software refactoring. IEEE Transaction on Software Engineering, 30(2): 126–139, 2004.
[9]Olbrich S, Cruzes DS, Basili, V, Zazworka N. The evolution and impact of code smells: a case study of two open source systems. In: Proceedings of the 2009 3rd international symposium on empirical software engineering and measurement, ESEM ’09, pp 390–400, 2009.
[10]Bavota, G. De Lucia, A. Marcus, A. Oliveto, R. Automating extract class refactoring: an improved method and its evaluation, Empir. Softw. Eng. (2013) 1–48.
[11]R. Oliveto, R. Gethers, M., Bavota, G. Poshyvanyk, D. De Lucia, A. Identifying method friendships to remove the feature envy bad smell (NIER track), In: Proceedings of the 33rd International Conference on Software Engineering, 2011, pp. 820–823
[12]Bavota, G. Gethers, M. Oliveto, R. Poshyvanyk, D. De Lucia, A. Improving software modularization via automated analysis of latent topics and dependencies, ACM Transact. Softw. Eng. Methodol. 23 (1) (2014).
[13]Mahouachi, R. Kessentini, M. Ghedira, K. A new design defects classification: marrying detection and correction, in: Proceedings of the 15th International Conference on Fundamental Approaches to Software Engineering, 2012, pp. 455–470
[14]Fowler, M. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, USA, 1999
[15]W. Pan, B. Li, Y. Ma, J. Liu, Y. Qin, Class structure refactoring of object-oriented softwares using community detection in dependency networks, Frontiers Comput. Sci. China 3 (3)396–404, 2009.
[16] Alshayeb, M. Empirical investigation of refactoring effect on software quality. Information and Software Technology 51 (2009) 1319–1326
[17]Al Dallal, J. Identifying refactoring opportunities in object-oriented code: A systematic literature review. Information and Software Technology 58, 231–249, 2015
[18]Al Dallal, J. Constructing models for predicting extract subclass refactoring opportunities using object-oriented quality metrics, J. Inform. Softw. Technol. Arch. 54 (10) pp.1125–1141, 2012.
[19]Bavota, G. De Lucia, A. Marcus, A. Oliveto, R. Using structural and semantic measures to improve software modularization, Empir. Softw. Eng. 18 (5) (2013) 901–932.
[20]Bavota, G. Oliveto, R. De Lucia, A. Antoniol, G. Gueheneuc, Y. Playing with refactoring: identifying extract class opportunities through game theory, in: IEEE International Conference on Software Maintenance (ICSM), 2010, pp. 1–5.
[21]Bavota, R. Oliveto, M. Gethers, D. Poshyvanyk, A. De Lucia, Methodbook: recommending move method refactorings via relational topic models, IEEE Trans. Software Eng. (2013)
[22]Zhao, L. Hayes, J. Predicting classes in need of refactoring: an application of static metrics, in: Proceedings of the 2nd International PROMISE Workshop, Philadelphia, Pennsylvania USA, 2006
[23]Tokuda, L., Batory, D. Evolving object-oriented designs with refactorings. Automated Software Engineering 8, 89–120, 2001.
[24]H. Liu, Q. Liu, Y. Liu, and Z. Wang. Identifying renaming opportunities by expanding conducted rename refactorings. IEEE Transactions on Software Engineering, (99):1–1, 2015.
[25]Al Dallal, J., Briand, L.C. A Precise Method-Method Interaction-Based Cohesion Metric for Object-Oriented Classes, ACM Transact. Softw. Eng. Methodol. (TOSEM) TOSEM 21 (2) (2012). Article No. 8.
[26]Kosker, Y. Turhan, B. Bener, A. An expert system for determining candidate software classes for refactoring, Expert Systems with Applications 36 (6) (2009) 10000–10003
[27]Fokaefs, M. Tsantalis, N. Stroulia, E. Chatzigeorgiou, A. JDeodorant: Identification and removal of Feature Envy bad smells, in: Proceedings of IEEE International Conference on Software Maintenance, 2007, pp. 467–468.
[28]Higo, Y. Kamiya, T. Kusumoto, S. Inoue, K. Aries: Refactoring support environment based on code clone analysis, in: Proceedings of the 8th IASTED International Conference on Software Engineering and Applications, Article No. 436–084, 2004, pp. 222–229.
[29]Higo, Y. Kusumoto, S. Inoue, K. A metric-based approach to identifying refactoring opportunities for merging code clones in a Java software system, J. Software Maintenance Evolution.: Res. Practice 20 (6) (2008) 435–461
[30]Sales, V. Terra, R. Miranda, L.F., Valente, M.T. Recommending move method refactorings using dependency sets, in: IEEE 20th Working Conference on Reverse Engineering (WCRE), 2013, pp. 232–241.
[31]Yang, L. Liu, H. Niu, Z. Identifying Fragments to be Extracted from Long Methods, in: Proceedings of the 16th Asia-Pacific Software Engineering Conference, 2009, pp. 43–49.
[32]Chidamber, S.R., Kemerer, C.F.A metrics suite for object oriented design. IEEETransactions on Software Engineering 20, 476–493, 1994
[33]Isong, B.E. and Ekabua, O.O. “A Systematic Review of the Empirical Validation of Object-oriented Metrics towards Fault-proneness Prediction”. International Journal of Software Engineering and Knowledge Engineering (IJSEKE) WSPC. Vol. 23, No. 10. pp. 1513–1540, 2013.
[34]Fenton, N., Neil, M. Software metrics: successes, failures, and new directions. Journal of Systems and Software vol. 47, pp. 149-157, 1999
[35]Zhang, M., Hall, T., Baddoo, N. Code Bad Smells: a review of current knowledge, J. Software Maintenance Evolut.: Res. Practice 23 (3) (2011) 179–202.
[36]Wangberg, R.D. A literature review on code smells and refactoring, Master Thesis, Department of Informatics, University of Oslo, 2010.
[37]Misbhauddin, M. Alshayeb, M. UML model refactoring: a systematic literature review, Empir. Softw. Eng. (2013) 1–46.