skip to main content
10.1145/3190645.3190697acmconferencesArticle/Chapter ViewAbstractPublication Pagesacm-seConference Proceedingsconference-collections
research-article

Causes, impacts, and detection approaches of code smell: a survey

Published: 29 March 2018 Publication History

Abstract

Code smells are anomalies often generated in design, implementation or maintenance phase of software development life cycle. Researchers established several catalogues characterizing the smells. Fowler and Beck developed the most popular catalogue of 22 smells covering varieties of development issues. This literature presents an overview of the existing research conducted on these 22 smells. Our motivation is to represent these smells with an easier interpretation for the software developers, determine the causes that generate these issues in applications and their impact from different aspects of software maintenance. This paper also highlights previous and recent research on smell detection with an effort to categorize the approaches based on the underlying concept.

References

[1]
KK Aggarwal, Yogesh Singh, Arvinder Kaur, and Ruchika Malhotra. 2006. Empirical Study of Object-Oriented Metrics. Journal of Object Technology 5, 8 (2006), 149--173.
[2]
Bente Anda. 2007. Assessing software system maintainability using structural measures and expert assessments. In Software Maintenance, 2007. ICSM 2007. IEEE International Conference on. IEEE, 204--213.
[3]
Jagdish Bansiya and Carl G. Davis. 2002. A hierarchical model for object-oriented design quality assessment. IEEE Transactions on software engineering 28, 1 (2002), 4--17.
[4]
Frank Buschmann, Kelvin Henney, and Douglas Schimdt. 2007. Pattern-oriented Software Architecture: On Patterns and Pattern Language. Vol. 5. John Wiley & Sons.
[5]
Shyam R Chidamber and Chris F Kemerer. 1994. A metrics suite for object oriented design. IEEE Transactions on software engineering 20, 6 (1994), 476--493.
[6]
Ignatios Deligiannis, Martin Shepperd, Manos Roumeliotis, and Ioannis Stamelos. 2003. An empirical investigation of an object-oriented design heuristic for maintainability. Journal of Systems and Software 65, 2 (2003), 127--139.
[7]
Francesca Arcelli Fontana, Mika V Mäntylä, Marco Zanoni, and Alessandro Marino. 2016. Comparing and experimenting machine learning techniques for code smell detection. Empirical Software Engineering 21, 3 (2016), 1143--1191.
[8]
Francesca Arcelli Fontana, Marco Zanoni, Alessandro Marino, and Mika V Mantyla. 2013. Code smell detection: Towards a machine learning-based approach. In Software Maintenance (ICSM), 2013 29th IEEE International Conference on. IEEE, 396--399.
[9]
Martin Fowler, {n. d.}. CodeSmell. https://martinfowler.com/bliki/CodeSmell. html. ({n. d.}). {Accessed: March 3,2017}.
[10]
Martin Fowler and Kent Beck. 1999. Refactoring: improving the design of existing code. Addison-Wesley Professional.
[11]
Shizhe Fu and Beijun Shen. 2015. Code Bad Smell Detection through Evolutionary Data Mining. In Empirical Software Engineering and Measurement (ESEM), 2015 ACM/IEEE International Symposium on. IEEE, 1--9.
[12]
SG Ganesh, Tushar Sharma, and Girish Suryanarayana. 2013. Towards a Principle-based Classification of Structural Design Smells. Journal of Object Technology 12, 2 (2013), 1--1.
[13]
Richard C Gronback. 2003. Software remodeling: Improving design and implementation quality. Borland White Paper, www.borland.com/products/white_papers/pdf/tgr_softwareremodeling.pdf (2003).
[14]
Ahmad Jbara, Adam Matan, and Dror G Feitelson. 2014. High-MCC functions in the Linux kernel. Empirical Software Engineering 19, 5 (2014), 1261--1298.
[15]
Lingxiao Jiang, Zhendong Su, and Edwin Chiu. 2007. Context-based detection of clone-related bugs. In Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. ACM, 55--64.
[16]
Elmar Juergens, Florian Deissenboeck, Benjamin Hummel, and Stefan Wagner. 2009. Do code clones matter?. In Software Engineering, 2009. ICSE 2009. IEEE 31st International Conference on. IEEE, 485--495.
[17]
Foutse Khomh, Massimiliano Di Penta, and Yann-Gael Gueheneuc. 2009. An exploratory study of the impact of code smells on software change-proneness. In Reverse Engineering, 2009. WCRE'09. 16th Working Conference on. IEEE, 75--84.
[18]
Miryung Kim, Vibha Sazawal, David Notkin, and Gail Murphy. 2005. An empirical study of code clone genealogies. In ACM SIGSOFT Software Engineering Notes, Vol. 30. ACM, 187--196.
[19]
Jochen Kreimer. 2005. Adaptive detection of design flaws. Electronic Notes in Theoretical Computer Science 141, 4 (2005), 117--136.
[20]
Michele Lanza and Radu Marinescu. 2007. Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Springer Science & Business Media.
[21]
Manny M Lehman and Laszlo A Belady. 1985. Program evolution: processes of software change. Academic Press Professional, Inc.
[22]
Richard Levins. 2010. Why programs fail. Monthly Review 61, 10 (2010), 43.
[23]
Wei Li and Raed Shatnawi. 2007. An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution. Journal of systems and software 80, 7 (2007), 1120--1128.
[24]
Angela Lozano and Michel Wermelinger. 2008. Assessing the effect of clones on changeability. In Software Maintenance, 2008. ICSM 2008. IEEE International Conference on. IEEE, 227--236.
[25]
Mika Mantyla. 2003. Bad smells in software-a taxonomy and an empirical study. Helsinki University of Technology (2003).
[26]
Mika V Mäntylä and Casper Lassenius. 2006. Subjective evaluation of software evolvability using code smells: An empirical study. Empirical Software Engineering 11, 3 (2006), 395--431.
[27]
Mika V Mantyla, Jari Vanhanen, and Casper Lassenius. 2004. Bad smells-humans as code critics. In Software Maintenance, 2004. Proceedings. 20th IEEE International Conference on. IEEE, 399--408.
[28]
Radu Marinescu. 2004. Detection strategies: Metrics-based rules for detecting design flaws. In Software Maintenance, 2004. Proceedings. 20th IEEE International Conference on. IEEE, 350--359.
[29]
Radu Marinescu. 2005. Measurement and quality in object-oriented design. In Software Maintenance, 2005. ICSM'05. Proceedings of the 21st IEEE International Conference on. IEEE, 701--704.
[30]
Naouel Moha, Yann-Gael Gueheneuc, Laurence Duchien, and Anne-Francoise Le Meur. 2010. DECOR: A method for the specification and detection of code and design smells. IEEE Transactions on Software Engineering 36, 1 (2010), 20--36.
[31]
Akito Monden, Daikai Nakae, Toshihiro Kamiya, Shin-ichi Sato, and Ken-ichi Matsumoto. 2002. Software quality analysis by code clones in industrial legacy software. In Software Metrics, 2002. Proceedings. Eighth IEEE Symposium on. IEEE, 87--94.
[32]
Matthew James Munro. 2005. Product metrics for automatic identification of" bad smell" design problems in Java source-code. In Software Metrics, 2005. 11th IEEE International Symposium. IEEE, 15--15.
[33]
Fabio Palomba, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, and Andrea De Lucia. 2014. Do they really smell bad? a study on developers' perception of bad code smells. In Software maintenance and evolution (ICSME), 2014 IEEE international conference on. IEEE, 101--110.
[34]
Fabio Palomba, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, Denys Poshyvanyk, and Andrea De Lucia. 2015. Mining version histories for detecting code smells. IEEE Transactions on Software Engineering 41, 5 (2015), 462--489.
[35]
Ralph Peters and Andy Zaidman. 2012. Evaluating the lifespan of code smells using software repository mining. In Software Maintenance and Reengineering (CSMR), 2012 16th European Conference on. IEEE, 411--416.
[36]
Jane Radatz, Anne Geraci, and Freny Katki. 1990. IEEE standard glossary of software engineering terminology. IEEE Std 610121990, 121990 (1990), 3.
[37]
Foyzur Rahman, Christian Bird, and Premkumar Devanbu. 2012. Clones: What is that smell? Empirical Software Engineering 17, 4--5 (2012), 503--530.
[38]
Arthur J Riel. 1996. Object-oriented design heuristics. Vol. 335. Addison-Wesley Reading.
[39]
Joc Sanders and Eugene Curran. 1994. Software quality: a framework for success in software development and support. ACM Press/Addison-Wesley Publishing Co.
[40]
Raed Shatnawi and Wei Li. 2006. An investigation of bad smells in object-oriented design. In Information Technology: New Generations, 2006. ITNG 2006. Third International Conference on. IEEE, 161--165.
[41]
Alexander Shvets, Gerhard Frey, and Marina Pavlova, {n. d.}. Refactoring Bad Code Smells, https://sourcemaking.com/refactoring/smells. ({n. d.}). {Accessed: April 13,2017}.
[42]
Dag IK Sjøberg, Aiko Yamashita, Bente CD Anda, Audris Mockus, and Tore Dybå. 2013. Quantifying the effect of code smells on maintenance effort. IEEE Transactions on Software Engineering 39, 8 (2013), 1144--1156.
[43]
Zéphyrin Soh, Aiko Yamashita, Foutse Khomh, and Yann-Gaël Guéhéneuc. 2016. Do Code Smells Impact the Effort of Different Maintenance Programming Activities?. In Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, Vol. 1. IEEE, 393--402.
[44]
Guilherme Travassos, Forrest Shull, Michael Fredericks, and Victor R Basili. 1999. Detecting defects in object-oriented designs: using reading techniques to increase software quality. In ACM Sigplan Notices, Vol. 34. ACM, 47--56.
[45]
Michele Tufano, Fabio Palomba, Gabriele Bavota, Rocco Oliveto, Massimiliano Di Penta, Andrea De Lucia, and Denys Poshyvanyk. 2015. When and why your code starts to smell bad. In Proceedings of the 37th International Conference on Software Engineering-Volume 1. IEEE Press, 403--414.
[46]
Eva Van Emden and Leon Moonen. 2002. Java quality assurance by detecting code smells. In Reverse Engineering, 2002. Proceedings. Ninth Working Conference on. IEEE, 97--106.
[47]
Bartosz Walter and Tarek Alkhaeir. 2016. The relationship between design patterns and code smells: An exploratory study. Information and Software Technology 74 (2016), 127 -- 142.
[48]
Bruce F Webster. 1995. Pitfalls of object oriented development. (1995).
[49]
Kurt D Welker. 2001. The software maintainability index revisited. CrossTalk 14 (2001), 18--21.
[50]
Aiko Yamashita and Steve Counsell. 2013. Code smells as system-level indicators of maintainability: An empirical study. Journal of Systems and Software 86, 10 (2013), 2639--2653.
[51]
Aiko Yamashita and Leon Moonen. 2012. Do code smells reflect important maintainability aspects?. In Software Maintenance (ICSM), 2012 28th IEEE International Conference on. IEEE, 306--315.
[52]
Aiko Yamashita and Leon Moonen. 2013. Exploring the impact of inter-smell relations on software maintainability: An empirical study. In Software Engineering (ICSE), 2013 35th International Conference on. IEEE, 682--691.
[53]
Aiko Fallas Yamashita and Leon Moonen. 2013. Do developers care about code smells? An exploratory survey. In WCRE, Vol. 13. 242--251.

Cited By

View all
  • (2025)Smell-ML: A Machine Learning Framework for Detecting Rarely Studied Code SmellsIEEE Access10.1109/ACCESS.2025.353092713(12966-12980)Online publication date: 2025
  • (2025)A generalized, rule-based method for the detection of intermittent faults in software programsJournal of Systems and Software10.1016/j.jss.2024.112228219:COnline publication date: 1-Jan-2025
  • (2024)Machine Learning-Based Methods for Code Smell Detection: A SurveyApplied Sciences10.3390/app1414614914:14(6149)Online publication date: 15-Jul-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ACMSE '18: Proceedings of the 2018 ACM Southeast Conference
March 2018
246 pages
ISBN:9781450356961
DOI:10.1145/3190645
  • Conference Chair:
  • Ka-Wing Wong,
  • Program Chair:
  • Chi Shen,
  • Publications Chair:
  • Dana Brown
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 29 March 2018

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. code smell
  2. software engineering
  3. survey

Qualifiers

  • Research-article

Conference

ACM SE '18
Sponsor:
ACM SE '18: Southeast Conference
March 29 - 31, 2018
Kentucky, Richmond

Acceptance Rates

ACMSE '18 Paper Acceptance Rate 34 of 41 submissions, 83%;
Overall Acceptance Rate 502 of 1,023 submissions, 49%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)39
  • Downloads (Last 6 weeks)7
Reflects downloads up to 17 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Smell-ML: A Machine Learning Framework for Detecting Rarely Studied Code SmellsIEEE Access10.1109/ACCESS.2025.353092713(12966-12980)Online publication date: 2025
  • (2025)A generalized, rule-based method for the detection of intermittent faults in software programsJournal of Systems and Software10.1016/j.jss.2024.112228219:COnline publication date: 1-Jan-2025
  • (2024)Machine Learning-Based Methods for Code Smell Detection: A SurveyApplied Sciences10.3390/app1414614914:14(6149)Online publication date: 15-Jul-2024
  • (2024)DataRecipe --- How to Cook the Data for CodeLLM?Proceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695593(1206-1218)Online publication date: 27-Oct-2024
  • (2024)Toward a novel taxonomy to capture code smells caused by refactoringScience of Computer Programming10.1016/j.scico.2024.103120236:COnline publication date: 1-Sep-2024
  • (2024)Automatic detection of Feature Envy and Data Class code smells using machine learningExpert Systems with Applications: An International Journal10.1016/j.eswa.2023.122855243:COnline publication date: 25-Jun-2024
  • (2023)Identification of Code Properties that Support Code Smell Analysis2023 46th MIPRO ICT and Electronics Convention (MIPRO)10.23919/MIPRO57284.2023.10159875(1664-1669)Online publication date: 22-May-2023
  • (2023)Enhanced Machine Learning-Based Code Smell Detection Through Hyper-Parameter Optimization2023 20th International Joint Conference on Computer Science and Software Engineering (JCSSE)10.1109/JCSSE58229.2023.10202124(297-302)Online publication date: 28-Jun-2023
  • (2023)The Effects of Extract Function Refactoring On High Cyclomatic Complexity Code Smell and Maintainability Index2023 International Conference on Electrical Engineering and Informatics (ICEEI)10.1109/ICEEI59426.2023.10346897(1-6)Online publication date: 10-Oct-2023
  • (2023)Research Trends, Detection Methods, Practices, and Challenges in Code Smell: SLRIEEE Access10.1109/ACCESS.2023.333425811(129536-129551)Online publication date: 2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media