Abstract
Code smell is an indication of a software designing problem. The presence of code smells can have a severe impact on the software quality. Smells basically refers to the structure of the code which violates few of the design principals and so has negative effect on the quality of the software. Larger the source code, more is its presence. Software needs to be reliable, robust and easily maintainable so that it can minimize the cost of its development as well as maintenance. Smells may increase the chances of failure of the system during maintenance. A SLR has been performed based on the search of digital libraries that includes the publications since 1999 to 2016. 60 research papers are deeply analyzed that are most relevant. The objective of this paper is to provide an extensive overview of existing research in the field of bad smells, identify the detection techniques and correlation between the detection techniques, in addition to find the name of the code smells that need more attention in detection approaches. This SLR identified that code clone (code smell) receives most research attention. Our findings also show that very few papers report on the impact of code bad smells. Most of the papers focused on the detection techniques and tools. A significant correlation between detection techniques has been calculated. There are four code smells that are not yet detected are Primitive Obsession, Inappropriate Intimacy, Incomplete library class and Comments.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Fowler, M.: Refactoring: Improving the Design of Existing Code. Pearson Education, India (1999)
Zhang, M., Hall, T., Baddoo, N.: Code bad smells: a review of current knowledge. J. Softw. Maint. Evol.: Res. Pract. 23(3), 179–202 (2011)
Kessentini, M., Mahaouachi, R., Ghedira, K.: What you like in design use to correct bad-smells. Software Qual. J. 21(4), 551–571 (2013)
Rattan, D., Bhatia, R., Singh, M.: Software clone detection: a systematic review. Inf. Softw. Technol. 55(7), 1165–1199 (2013)
Moha, N., Guéhéneuc, Y.-G., Le Meur, A.-F., Duchien, L.: A domain analysis to specify design defects and generate detection algorithms. In: Fiadeiro, J.L., Inverardi, P. (eds.) FASE 2008. LNCS, vol. 4961, pp. 276–291. Springer, Heidelberg (2008). doi:10.1007/978-3-540-78743-3_20
Yamashita, A., Moonen, L.: To what extent can maintenance problems be predicted by code smell detection?-an empirical study. Inf. Softw. Technol. 55(12), 2223–2242 (2013)
Kreimer, J.: Adaptive detection of design flaws. Electron. Notes Theoret. Comput. Sci. 141(4), 117–136 (2005)
Mäntylä, M.V., Lassenius, C.: Subjective evaluation of software evolvability using code smells: an empirical study. Empir. Softw. Eng. 11(3), 395–431 (2006)
Murphy-Hill, E., Black, A.P.: An interactive ambient visualization for code smells. In: Proceedings of the 5th International Symposium on Software Visualization, pp. 5–14. ACM (2010)
Chen, C.-T., Cheng, Y.C., Hsieh, C.-Y., Wu, I.-L.: Exception handling refactorings: directed by goals and driven by bug fixing. J. Syst. Softw. 82(2), 333–345 (2009)
Boussaa, M., Kessentini, W., Kessentini, M., Bechikh, S., Chikha, S.B.: Competitive coevolutionary code-smells detection. In: Ruhe, G., Zhang, Y. (eds.) SSBSE 2013. LNCS, vol. 8084, pp. 50–65. Springer, Heidelberg (2013). doi:10.1007/978-3-642-39742-4_6
Kapdan, M., Aktas, M., Yigit, M.: On the structural code clone detection problem: a survey and software metric based approach. In: Murgante, B., Misra, S., Rocha, A.M.A.C., Torre, C., Rocha, J.G., Falcão, M.I., Taniar, D., Apduhan, B.O., Gervasi, O. (eds.) ICCSA 2014. LNCS, vol. 8583, pp. 492–507. Springer, Cham (2014). doi:10.1007/978-3-319-09156-3_35
Keele, S.: Guidelines for performing systematic literature reviews in software engineering. Technical report, Ver. 2.3 EBSE Technical report, EBSE (2007)
Yamashita, A., Counsell, S.: Code smells as system-level indicators of maintainability: an empirical study. J. Syst. Softw. 86(10), 2639–2653 (2013)
Yamashita, A., Moonen, L.: Exploring the impact of inter-smell relations on software maintainability: an empirical study. In: Proceedings of the 2013 International Conference on Software Engineering, pp. 682–691. IEEE Press (2013)
Van Emden, E., Moonen, L.: Java quality assurance by detecting code smells. In: 2002 Proceedings of Ninth Working Conference on Reverse Engineering, pp. 97–106. IEEE (2002)
Yamashita, A.: Assessing the capability of code smells to explain maintenance problems: an empirical study combining quantitative and qualitative data. Empir. Softw. Eng. 19(4), 1111–1143 (2014)
Sjoberg, D., Yamashita, A., Anda, B.C.D., Mockus, A., Dyba, T., et al.: Quantifying the effect of code smells on maintenance effort. IEEE Trans. Softw. Eng. 39(8), 1144–1156 (2013)
Mahouachi, R., Kessentini, M., Ghedira, K.: A new design defects classification: marrying detection and correction. In: Lara, J., Zisman, A. (eds.) FASE 2012. LNCS, vol. 7212, pp. 455–470. Springer, Heidelberg (2012). doi:10.1007/978-3-642-28872-2_31
Moha, N., Guéhéneuc, Y.-G., Le Meur, A.-F., Duchien, L., Tiberghien, A.: From a domain analysis to the specification and detection of code and design smells. Formal Aspects Comput. 22(3–4), 345–361 (2010)
Czibula, G., Marian, Z., Czibula, I.G.: Detecting software design defects using relational association rule mining. Knowl. Inf. Syst. 42(3), 545–577 (2015)
Kessentini, M., Sahraoui, H., Boukadoum, M., Wimmer, M.: Search-based design defects detection by example. In: Giannakopoulou, D., Orejas, F. (eds.) FASE 2011. LNCS, vol. 6603, pp. 401–415. Springer, Heidelberg (2011). doi:10.1007/978-3-642-19811-3_28
von Detten, M., Becker, S.: Combining clustering and pattern detection for the reengineering of component-based software systems. In: Proceedings of the Joint ACM SIGSOFT Conference-QoSA and ACM SIGSOFT Symposium-ISARCS on Quality of Software Architectures-QoSA and Architecting Critical Systems-ISARCS, pp. 23–32. ACM (2011)
Santos, J.A., de Mendonça, M.G., Silva, C.V.: An exploratory study to investigate the impact of conceptualization in god class detection. In: Proceedings of the 17th International Conference on Evaluation and Assessment in Software Engineering, pp. 48–59. ACM (2013)
Munro, M.J.: Product metrics for automatic identification of “bad smell” design problems in java source-code. In: 2005 11th IEEE International Symposium on Software Metrics, pp. 15–15. IEEE (2005)
Dhambri, K., Sahraoui, H., Poulin, P.: Visual detection of design anomalies. In: 2008 12th European Conference on Software Maintenance and Reengineering, CSMR 2008, pp. 279–283. IEEE (2008)
de F Carneiro, G., Silva, M., Mara, L., Figueiredo, E., Sant’Anna, C., Garcia, A., Mendonça, M.: Identifying code smells with multiple concern views. In: 2010 Brazilian Symposium on Software Engineering (SBES), pp. 128–137. IEEE (2010)
Hassaine, S., Khomh, F., Guéhéneuc, Y.-G., Hamel, S.: IDS: an immune-inspired approach for the detection of software design smells. In: 2010 Seventh International Conference on Quality of Information and Communications Technology (QUATIC), pp. 343–348. IEEE (2010)
Liu, H., Ma, Z., Shao, W., Niu, Z.: Schedule of bad smell detection and resolution: a new way to save effort. IEEE Trans. Softw. Eng. 38(1), 220–235 (2012)
Maneerat, N., Muenchaisri, P.: Bad-smell prediction from software design model using machine learning techniques. In: 2011 Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE), pp. 331–336. IEEE (2011)
Fontana, F.A., Mariani, E., Morniroli, A., Sormani, R., Tonello, A.: An experience report on using code smells detection tools. In: 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops (ICSTW), pp. 450–457. IEEE (2011)
Danphitsanuphan, P., Suwantada, T.: Code smell detecting tool and code smell-structure bug relationship. In: 2012 Spring Congress on Engineering and Technology (S-CET), pp. 1–5. IEEE (2012)
Dexun, J., Peijun, M., Xiaohong, S., Tiantian, W.: Detecting bad smells with weight based distance metrics theory. In: 2012 Second International Conference on Instrumentation, Measurement, Computer, Communication and Control (IMCCC), pp. 299–304. IEEE (2012)
Ligu, E., Chatzigeorgiou, A., Chaikalis, T., Ygeionomakis, N.: Identification of refused bequest code smells. In: 2013 29th IEEE International Conference on Software Maintenance (ICSM), pp. 392–395. IEEE (2013)
Palomba, F., Bavota, G., Di Penta, M., Oliveto, R., De Lucia, A., Poshyvanyk, D.: Detecting bad smells in source code using change history information. In: 2013 IEEE/ACM 28th International Conference on Automated Software Engineering (ASE), pp. 268–278. IEEE (2013)
Kessentini, W., Kessentini, M., Sahraoui, H., Bechikh, S., Ouni, A.: A cooperative parallel search-based software engineering approach for code-smells detection. IEEE Trans. Softw. Eng. 40(9), 841–861 (2014)
Walter, B., Matuszyk, B., Fontana, F.A.: Including structural factors into the metrics-based code smells detection. In: Scientific Workshop Proceedings of the XP2015, p. 11. ACM (2015)
Chatzigeorgiou, A., Manakos, A.: Investigating the evolution of code smells in object-oriented systems. Innov. Syst. Softw. Eng. 10(1), 3–18 (2014)
Bakota, T.: Tracking the evolution of code clones. In: Černá, I., Gyimóthy, T., Hromkovič, J., Jefferey, K., Králović, R., Vukolić, M., Wolf, S. (eds.) SOFSEM 2011. LNCS, vol. 6543, pp. 86–98. Springer, Heidelberg (2011). doi:10.1007/978-3-642-18381-2_7
Shatnawi, R., Li, W.: An investigation of bad smells in object-oriented design. In: 2006 Third International Conference on Information Technology: New Generations, ITNG 2006, pp. 161–165. IEEE (2006)
Zhang, M., Baddoo, N., Wernick, P., Hall, T.: Improving the precision of fowler’s definitions of bad smells. In: 2008 32nd Annual IEEE Software Engineering Workshop, SEW 2008, pp. 161–166. IEEE (2008)
Vaucher, S., Khomh, F., Moha, N., Guéhéneuc, Y.-G.: Tracking design smells: lessons from a study of god classes. In: 2009 16th Working Conference on Reverse Engineering, WCRE 2009, pp. 145–154. IEEE (2009)
Göde, N., Koschke, R.: Studying clone evolution using incremental clone detection. J. Softw.: Evol. Process 25(2), 165–192 (2013)
Khomh, F., Di Penta, M., Guéhéneuc, Y.-G., Antoniol, G.: An exploratory study of the impact of antipatterns on class change-and fault-proneness. Empir. Softw. Eng. 17(3), 243–275 (2012)
Thummalapenta, S., Cerulo, L., Aversano, L., Di Penta, M.: An empirical study on the maintenance of source code clones. Empir. Softw. Eng. 15(1), 1–34 (2010)
Rahman, F., Bird, C., Devanbu, P.: Clones: What is that smell? Empir. Softw. Eng. 17(4–5), 503–530 (2012)
Li, W., Shatnawi, R.: An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution. J. Syst. Softw. 80(7), 1120–1128 (2007)
Guo, Y., Seaman, C., Zazworka, N., Shull, F.: Domain-specific tailoring of code smells: an empirical study. In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, vol. 2, pp. 167–170. ACM (2010)
Counsell, S., Hamza, H., Hierons, R.: The deception of code smells: an empirical investigation. In: 2010 32nd International Conference on Information Technology Interfaces (ITI), pp. 683–688. IEEE (2010)
Abbes, M., Khomh, F., Gueheneuc, Y.-G., Antoniol, G.: An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In: 2011 15th European Conference on Software Maintenance and Reengineering (CSMR), pp. 181–190. IEEE (2011)
Olbrich, S., Cruzes, D.S., 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, pp. 390–400. IEEE Computer Society (2009)
Olbrich, S.M., Cruze, D.S., Sjøberg, D.I.: Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems. In: 2010 IEEE International Conference on Software Maintenance (ICSM), pp. 1–10. IEEE (2010)
Ouni, A., Kessentini, M., Bechikh, S., Sahraoui, H.: Prioritizing code-smells correction tasks using chemical reaction optimization. Softw. Qual. J. 23(2), 323–361 (2015)
Parnin, C., Görg, C., Nnadi, O.: A catalogue of lightweight visualizations to support code smell inspection. In: Proceedings of the 4th ACM Symposium on Software Visualization, pp. 77–86. ACM (2008)
Macia, I., Garcia, J., Popescu, D., Garcia, A., Medvidovic, N., von Staa, A.: Are automatically-detected code anomalies relevant to architectural modularity?: an exploratory analysis of evolving systems. In: Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development, pp. 167–178. ACM (2012)
Pate, J.R., Tairas, R., Kraft, N.A.: Clone evolution: a systematic review. J. Softw.: Evol. Process 25(3), 261–283 (2013)
Khomh, F., Penta, M.D., Gueheneuc, Y.-G.: An exploratory study of the impact of code smells on software change-proneness. In: 2009 16th Working Conference on Reverse Engineering, WCRE 2009, pp. 75–84. IEEE (2009)
Chatzigeorgiou, A., Manakos, A.: Investigating the evolution of bad smells in object-oriented code. In: 2010 Seventh International Conference on Quality of Information and Communications Technology (QUATIC), pp. 106–115. IEEE (2010)
Hall, T., Zhang, M., Bowes, D., Sun, Y.: Some code smells have a significant but small effect on faults. ACM Trans. Softw. Eng. Methodol. (TOSEM) 23(4), 33 (2014)
Fontana, F.A., Mäntylä, M.V., Zanoni, M., Marino, A.: Comparing and experimenting machine learning techniques for code smell detection. Empir. Softw. Eng. 21(3), 1143–1191 (2016)
Fontana, F.A., Ferme, V., Zanoni, M.: Filtering code smells detection results. In: Proceedings of the 37th International Conference on Software Engineering, vol. 2, pp. 803–804. IEEE Press (2015)
Tufano, M., Palomba, F., Bavota, G., Oliveto, R., Di Penta, M., De Lucia, A., Poshyvanyk, D.: When and why your code starts to smell bad. In: Proceedings of the 37th International Conference on Software Engineering, vol. 1, pp. 403–414. IEEE Press (2015)
Kapser, C.J., Godfrey, M.W.: Cloning considered harmful considered harmful: patterns of cloning in software. Empir. Softw. Eng. 13(6), 645–692 (2008)
Walter, B., Alkhaeir, T.: The relationship between design patterns and code smells: an exploratory study. Inf. Softw. Technol. 74, 127–142 (2016)
AyshwaryaLakshmi, S., Mary, S., Vadivu, S.S., et al.: Agent based tool for topologically sorting badsmells and refactoring by analyzing complexities in source code. In: 2013 Fourth International Conference on Computing, Communications and Networking Technologies (ICCCNT), pp. 1–7. IEEE (2013)
Aakanshi Gupta, B.S.: A survey on code clone, its behavior and applications. In: Networking Communication and Data Knowledge Engineering- Proceedings of ICRACCCS-2016 (2016)
Rasool, G., Arshad, Z.: A review of code smell mining techniques. J. Softw.: Evol. Process 27(11), 867–895 (2015)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2017 Springer International Publishing AG
About this paper
Cite this paper
Gupta, A., Suri, B., Misra, S. (2017). A Systematic Literature Review: Code Bad Smells in Java Source Code. In: Gervasi, O., et al. Computational Science and Its Applications – ICCSA 2017. ICCSA 2017. Lecture Notes in Computer Science(), vol 10408. Springer, Cham. https://doi.org/10.1007/978-3-319-62404-4_49
Download citation
DOI: https://doi.org/10.1007/978-3-319-62404-4_49
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-62403-7
Online ISBN: 978-3-319-62404-4
eBook Packages: Computer ScienceComputer Science (R0)