Exploring Design smells for smell-based defect prediction

Bruno Sotto-Mayor, Amir Elmishali, Meir Kalech, Rui Abreu

Research output: Contribution to journalArticlepeer-review

6 Scopus citations


Defect prediction is commonly used to reduce the effort from the testing phase of software development. A promising strategy is to use machine learning techniques to predict which software components may be defective. Features are key factors to the prediction's success, and thus extracting significant features can improve the model's accuracy. In particular, code smells are a category of those features that have been shown to improve the prediction performance significantly. However, Design code smells, a state-of-the-art collection of code smells based on the violations of the object-oriented programming principles, have not been studied in the context of defect prediction. In this paper, we study the performance of defect prediction models by training multiple classifiers for 97 real projects. We compare using Design code smells as features and using other Traditional smells from the literature and both. Moreover, we cluster and analyze the models’ performance based on the categories of Design code smells. We conclude that the models trained with both the Design code smells and the smells from the literature performed the best, with an improvement of 4.1% for the AUC score, compared to models trained with only Traditional smells. Consequently, Design smells are a good addition to the smells commonly studied in the literature for defect prediction.

Original languageEnglish
Article number105240
JournalEngineering Applications of Artificial Intelligence
StatePublished - Oct 2022
Externally publishedYes

Bibliographical note

Publisher Copyright:
© 2022 Elsevier Ltd


  • Code smell
  • Defect prediction
  • Mining software repositories
  • Software engineering
  • Software quality


Dive into the research topics of 'Exploring Design smells for smell-based defect prediction'. Together they form a unique fingerprint.

Cite this