Skip to main content

A Systematic Literature Review: Code Bad Smells in Java Source Code

  • Conference paper
  • First Online:
Computational Science and Its Applications – ICCSA 2017 (ICCSA 2017)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 10408))

Included in the following conference series:

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 to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Fowler, M.: Refactoring: Improving the Design of Existing Code. Pearson Education, India (1999)

    MATH  Google Scholar 

  2. 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)

    Article  Google Scholar 

  3. Kessentini, M., Mahaouachi, R., Ghedira, K.: What you like in design use to correct bad-smells. Software Qual. J. 21(4), 551–571 (2013)

    Article  Google Scholar 

  4. Rattan, D., Bhatia, R., Singh, M.: Software clone detection: a systematic review. Inf. Softw. Technol. 55(7), 1165–1199 (2013)

    Article  Google Scholar 

  5. 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

    Chapter  Google Scholar 

  6. 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)

    Article  Google Scholar 

  7. Kreimer, J.: Adaptive detection of design flaws. Electron. Notes Theoret. Comput. Sci. 141(4), 117–136 (2005)

    Article  Google Scholar 

  8. 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)

    Article  Google Scholar 

  9. 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)

    Google Scholar 

  10. 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)

    Article  Google Scholar 

  11. 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

    Chapter  Google Scholar 

  12. 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

    Google Scholar 

  13. Keele, S.: Guidelines for performing systematic literature reviews in software engineering. Technical report, Ver. 2.3 EBSE Technical report, EBSE (2007)

    Google Scholar 

  14. Yamashita, A., Counsell, S.: Code smells as system-level indicators of maintainability: an empirical study. J. Syst. Softw. 86(10), 2639–2653 (2013)

    Article  Google Scholar 

  15. 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)

    Google Scholar 

  16. 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)

    Google Scholar 

  17. 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)

    Article  Google Scholar 

  18. 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)

    Article  Google Scholar 

  19. 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

    Chapter  Google Scholar 

  20. 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)

    Article  MATH  Google Scholar 

  21. Czibula, G., Marian, Z., Czibula, I.G.: Detecting software design defects using relational association rule mining. Knowl. Inf. Syst. 42(3), 545–577 (2015)

    Article  Google Scholar 

  22. 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

    Chapter  Google Scholar 

  23. 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)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. 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)

    Google Scholar 

  26. 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)

    Google Scholar 

  27. 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)

    Google Scholar 

  28. 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)

    Google Scholar 

  29. 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)

    Article  Google Scholar 

  30. 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)

    Google Scholar 

  31. 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)

    Google Scholar 

  32. 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)

    Google Scholar 

  33. 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)

    Google Scholar 

  34. 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)

    Google Scholar 

  35. 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)

    Google Scholar 

  36. 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)

    Article  Google Scholar 

  37. 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)

    Google Scholar 

  38. Chatzigeorgiou, A., Manakos, A.: Investigating the evolution of code smells in object-oriented systems. Innov. Syst. Softw. Eng. 10(1), 3–18 (2014)

    Article  Google Scholar 

  39. 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

    Chapter  Google Scholar 

  40. 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)

    Google Scholar 

  41. 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)

    Google Scholar 

  42. 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)

    Google Scholar 

  43. Göde, N., Koschke, R.: Studying clone evolution using incremental clone detection. J. Softw.: Evol. Process 25(2), 165–192 (2013)

    Google Scholar 

  44. 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)

    Article  Google Scholar 

  45. 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)

    Article  Google Scholar 

  46. Rahman, F., Bird, C., Devanbu, P.: Clones: What is that smell? Empir. Softw. Eng. 17(4–5), 503–530 (2012)

    Article  Google Scholar 

  47. 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)

    Article  Google Scholar 

  48. 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)

    Google Scholar 

  49. 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)

    Google Scholar 

  50. 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)

    Google Scholar 

  51. 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)

    Google Scholar 

  52. 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)

    Google Scholar 

  53. 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)

    Article  Google Scholar 

  54. 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)

    Google Scholar 

  55. 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)

    Google Scholar 

  56. Pate, J.R., Tairas, R., Kraft, N.A.: Clone evolution: a systematic review. J. Softw.: Evol. Process 25(3), 261–283 (2013)

    Google Scholar 

  57. 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)

    Google Scholar 

  58. 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)

    Google Scholar 

  59. 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)

    Article  Google Scholar 

  60. 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)

    Article  Google Scholar 

  61. 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)

    Google Scholar 

  62. 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)

    Google Scholar 

  63. Kapser, C.J., Godfrey, M.W.: Cloning considered harmful considered harmful: patterns of cloning in software. Empir. Softw. Eng. 13(6), 645–692 (2008)

    Article  Google Scholar 

  64. Walter, B., Alkhaeir, T.: The relationship between design patterns and code smells: an exploratory study. Inf. Softw. Technol. 74, 127–142 (2016)

    Article  Google Scholar 

  65. 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)

    Google Scholar 

  66. 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)

    Google Scholar 

  67. Rasool, G., Arshad, Z.: A review of code smell mining techniques. J. Softw.: Evol. Process 27(11), 867–895 (2015)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sanjay Misra .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics