• DocumentCode
    1764775
  • Title

    Quantifying the Effect of Code Smells on Maintenance Effort

  • Author

    Sjoberg, Dag I. K. ; Yamashita, Atsushi ; Anda, B.C.D. ; Mockus, Audris ; Dyba, Tore

  • Author_Institution
    Bente are with the Dept. of Inf., Univ. of Oslo, Oslo, Norway
  • Volume
    39
  • Issue
    8
  • fYear
    2013
  • fDate
    Aug. 2013
  • Firstpage
    1144
  • Lastpage
    1156
  • Abstract
    Context: Code smells are assumed to indicate bad design that leads to less maintainable code. However, this assumption has not been investigated in controlled studies with professional software developers. Aim: This paper investigates the relationship between code smells and maintenance effort. Method: Six developers were hired to perform three maintenance tasks each on four functionally equivalent Java systems originally implemented by different companies. Each developer spent three to four weeks. In total, they modified 298 Java files in the four systems. An Eclipse IDE plug-in measured the exact amount of time a developer spent maintaining each file. Regression analysis was used to explain the effort using file properties, including the number of smells. Result: None of the 12 investigated smells was significantly associated with increased effort after we adjusted for file size and the number of changes; Refused Bequest was significantly associated with decreased effort. File size and the number of changes explained almost all of the modeled variation in effort. Conclusion: The effects of the 12 smells on maintenance effort were limited. To reduce maintenance effort, a focus on reducing code size and the work practices that limit the number of changes may be more beneficial than refactoring code smells.
  • Keywords
    Java; regression analysis; software maintenance; Eclipse IDE plug-in; Java files; Java systems; code size reduction; code smell effect quantification; code smell refactoring; file properties; file size; maintainable code; maintenance effort; maintenance tasks; refused bequest; regression analysis; Context; Electronic mail; Java; Maintenance engineering; Software; Surgery; Time measurement; Maintainability; code churn; object-oriented design; product metrics;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2012.89
  • Filename
    6392174