Abstract

Code smells are symptoms of poor design and implementation choices that may hinder code comprehensibility and maintainability. Despite the effort devoted by the research community in studying code smells, the extent to which code smells in software systems affect software maintainability remains still unclear. In this paper we present a large scale empirical investigation on the diffuseness of code smells and their impact on code change- and fault-proneness. The study was conducted across a total of 395 releases of 30 open source projects and considering 17,350 manually validated instances of 13 different code smell kinds. The results show that smells characterized by long and/or complex code (e.g., Complex Class) are highly diffused, and that smelly classes have a higher change- and fault-proneness than smell-free classes.

Highlights

  • Bad code smells were defined as symptoms of poor design and implementation choices applied by programmers during the development of a software project (Fowler 1999)

  • To cope with the aforementioned issues, this paper aims at corroborating previous empirical research on the impact of code smells by analyzing their diffuseness and effect on change- and fault-proneness on a large set of software projects

  • We report the literature related to (i) empirical studies aimed at understanding to what extent code smells are diffused in software systems and how they evolve over time, (ii) the impact of code smells on change- and fault-proneness, and (iii) user studies conducted in order to comprehend the phenomenon from a developer’s perspective

Read more

Summary

Introduction

Bad code smells ( known as “code smells” or “smells”) were defined as symptoms of poor design and implementation choices applied by programmers during the development of a software project (Fowler 1999). Researchers investigated how relevant code smells are for developers (Yamashita and Moonen 2013; Palomba et al 2014), when and why they are introduced (Tufano et al 2015), how they evolve over time (Arcoverde et al 2011; Chatzigeorgiou and Manakos 2010; Lozano et al 2007; Ratiu et al 2004; Tufano et al 2017), and whether they impact on software quality properties, such as program comprehensibility (Abbes et al 2011), fault- and change-proneness (Khomh et al 2012; Khomh et al 2009a; D’Ambros et al 2010), and code maintainability (Yamashita and Moonen 2012, 2013; Deligiannis et al 2004; Li and Shatnawi 2007; Sjoberg et al 2013)

Objectives
Methods
Findings
Conclusion

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.