AuthorsA. Yamashita
TitleAssessing the Capability of Code Smells to Explain Maintenance Problems: an Empirical Study Combining Quantitative and Qualitative Data
AfilliationSoftware Engineering, Software Engineering, Software Engineering
Project(s)The Certus Centre (SFI)
StatusPublished
Publication TypeJournal Article
Year of Publication2014
JournalEmpirical Software Engineering
Volume19
Number4
Pagination1111-1143
Date PublishedAugust
PublisherSpringer Science + Business Media
Abstract

Code smells are indicators of deeper design problems that may cause difficulties in the evolution of a software system. This paper investigates the capability of twelve code smells to reflect actual maintenance problems. Four medium-sized systems with equivalent functionality but dissimilar design were examined for code smells. Three change requests were implemented on the systems by six software developers, each of them working for up to four weeks. During that period, we recorded problems faced by developers and the associated Java files on a daily basis. We developed a binary logistic regression model, with “problematic file” as the dependent variable. Twelve code smells, file size, and churn constituted the independent variables. We found that violation of the Interface Segregation Principle (a.k.a. ISP violation) displayed the strongest connection with maintenance problems. Analysis of the nature of the problems, as reported by the developers in daily interviews and think-aloud sessions, strengthened our view about the relevance of this code smell. We observed, for example, that severe instances of problems relating to change propagation were associated with ISP violation. Based on our results, we recommend that code with ISP violation should be considered potentially problematic and be prioritized for refactoring.

DOI10.1007/s10664-013-9250-3
Citation KeySimula.simula.1456