An Exploratory Study of the Impact
    of Code Smells on Software Change-
                proneness

                  Foutse Khomh, Massimiliano Di Penta,
                       and Yann-Gaël Guéhéneuc
                                                  WCRE’09
                                                 2009/10/13



Ptidej Team – OO Programs Quality Evaluation and Enhancement using Patterns
Department of Computer Science and Operations Research
University of Montréal, Québec, Canada                                        © Khomh, 2009
Context and Motivation

        Code smells are “poor” solutions to recurring
        implementation problems
        Code smells are in between design and
        implementation
        Code smells are conjectured in the literature
        to hinder object-oriented software evolution
        No previous study has investigated the
        relationship between code smells and
        change-proneness
2/27
Objective

        Study the impact of code smells on the
        change-proneness of classes

        Study the impact of the composition of
        code smells on the change-proneness
        of classes


3/27
Outline

        Study Definition
        Study Context
        Study Design
        Analysis Method
        Results
        Conclusion and Future Work

4/27
Study Definition                  (1/2)
        Goal: investigate the relation
        between the presence of smells in
        classes and their change-proneness

        Quality focus: the increase of
        maintenance effort and cost is due to
        the presence of code smells

5/27
Study Definition                    (2/2)
        Perspective: both researchers,
        practitioners, and managers should be
        aware of the impact of code smells on
        classes to make inform design and
        implementation choices
        – The presence of change-prone classes
          increases maintenance effort and cost



6/27
Study Context                        (1/2)

        Programs
        – 9 versions of Azureus (5,858,041 LOCs)
        – 13 versions of Eclipse (31,579,975 LOCs)


        Change history between each analysed
        releases in the programs’ concurrent
        Versions System (CVS)

7/27
Study Context                       (2/2)
        29 code smells




        Detected using our tool, DECOR (based on
8/27    metrics and lexical information)
Study Design                                         (1/3)
        RQ1: What is the relation between smells and change
        proneness?
        – H01: the proportion of classes undergoing at least one
          change between two releases does not significantly differ
          between classes with code smells and other classes.

        RQ2: What is the relation between the number of
        smells in a class and its change-proneness?
        – H02: the numbers of smells in change-prone classes are not
          significantly higher than the numbers of smells in classes
          that do not change.




9/27
Study Design                           (2/3)

         RQ3: What is the relation between
         particular kinds of smells and change
         proneness?
         – H03: classes with particular kinds of code
           smells are not significantly more change-
           prone than other classes.



10/27
Study Design                             (3/3)
         Independent Variables
         – 29 kind of code smells.
         – Each variable si,j,k indicates the number of
           times a class i has a smell j in a release rk.

         Dependent variables
         – Classes change proneness.
         – Measured as the number of changes ci,k
           that a “smelly class” underwent between
           release rk and subsequent release rk+1.
11/27
Analysis Method                        (1/3)
         For RQ1, we:
         – Test the proportions of classes exhibiting
           (or not) at least one change with (some)
           smells vs. other classes.

         – Use Fisher’s exact test.

         – We compute the Odds ratios (OR).

12/27
Analysis Method                            (2/3)
         For RQ2, we:
         – Compare the numbers of smells in change-
           prone classes vs. non-change-prone
           classes.

         – Use a Mann-Whitney non-parametric test.

         – Estimate the magnitude of differences with
           the Cohen d effect size
           • Small: 0.2 ≤ d ≤ 0.3, medium: around 0.5, and
             large: ≥ 0.8.
13/27
Analysis Method                          (3/3)
         For RQ3, we:
         – Relate change-proneness with the
           presence of particular kinds of smells.

         – We use a logistic regression model.

         – We decide that a relation is significant if
           the null-hypothesis is rejected for at least
           75% of the releases.
14/27
Results                         (1/6)
        RQ1: smells and changes (Azureus)




15/27
Results                             (2/6)
        RQ1: smells and changes (Eclipse)




16/27
Results          (3/6)

         RQ2:
         composition
         of smells and
         changes
         (Azureus)

17/27
Results          (4/6)

         RQ2:
         composition
         of smells and
         changes
         (Eclipse)

18/27
Results        (5/6)

         RQ3: kinds
         of smells
         and changes
         (Azureus)




19/27
Results        (6/6)

         RQ3: kinds
         of smells
         and changes
         (Eclipse)




20/27
Discussion
         Classes with smells are more change-
         prone, some odds ratio 3 to 8 times
         bigger for these classes.
         HasChildren, MessageChains,
         NotComplex, and NotAbstract lead
         almost consistently to change-prone
         classes.
         Existing smells are generally removed
         from the system while some new are
         introduced in the context of new
21/27    features addition.
Threats to the validity                       (1/2)
        Construct validity
         – The count of changes occurred to classes is
           based on the CVS change log.
         – Subjectivity of the definitions of code smells
            • We were interested in code smells as defined by
              our tool.
         – Dependence between code smells
            • We perform a Spearman rank correlation
              analysis.
            • Our logistic regression only selected non-
22/27         correlated smells.
Threats to the validity                                  (2/2)
         Internal validity
          – We do not claim causation, only relation.
         Conclusion validity
          – Statistic tests properly used.
              • We verified their underlying assumptions.
         Reliability validity
          – We provide all the details for the replication of our study.
         External validity
          – The generalisation will require further studies.
              • We chose programs from different domains and a
                representative set of code smells.
23/27
Conclusion                                 (1/2)
         We provide empirical evidence of the
         negative impact of code smells on classes
         change-proneness.
         We show that:
         – Classes with smells are significantly more likely
           to be the subject of changes, than other classes.
         – The more a class have smells, the more it
           changes.
         – Some specific code smells, are more likely to be
           of concern during evolution: e.g.,
           MessageChains, NotComplex (and Lazy classes)
24/27
Conclusion                                 (2/2)
         Previous studies correlated source code
         metrics with change-proneness.

         – But, we believe that smells can provide to
           developers recommendations easier to
           understand than what metric profiles can do.

         – However, we found that metrics still perform
           better than smells on building change-
           proneness/fault-proneness prediction models.

25/27
Future work
         Our future work includes:
         – Replicating this study
         – Studying the effect of anti patterns which
           are at a higher level of abstraction
         – Relates smells, anti patterns to fault-
           proneness



         The data of our study are available online
         http://www.ptidej.net/downloads/experiments/prop-WCRE09
26/27
Questions




         Thank you for listening
27/27

More Related Content

PDF
Software Refactoring Under Uncertainty: A Robust Multi-Objective Approach
PDF
Ijess complimentary copy vol1issue3
PDF
Smells Like Teen Spirit: Improving Bug Prediction Performance using the Inten...
PPTX
Identifying and Managing Technical Debt
PPT
Code Refactoring
PDF
Refactoring - An Introduction
PDF
Technical Debt: Do Not Underestimate The Danger
PDF
Software Refactoring Under Uncertainty: A Robust Multi-Objective Approach
Ijess complimentary copy vol1issue3
Smells Like Teen Spirit: Improving Bug Prediction Performance using the Inten...
Identifying and Managing Technical Debt
Code Refactoring
Refactoring - An Introduction
Technical Debt: Do Not Underestimate The Danger

Similar to WCRE09a.ppt (20)

PPTX
Code Smell, Software Engineering
DOCX
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
PDF
PhD Symposium 2014
PDF
Multi step automated refactoring for code smell
PDF
Multi step automated refactoring for code smell
PDF
On The Relation of Test Smells to Software Code Quality
PPTX
Software Craftsmanship - 2
PDF
DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALE
PPTX
Code smell overview
PDF
Functional over related classes bad smell detection and refactoring suggestions
PDF
A survey on software smells
PDF
Principle based classification of design smells
PDF
When and Why Your Code Starts to Smell Bad
PDF
Finding Bad Code Smells with Neural Network Models
PDF
PDF
Msr17a.ppt
PDF
Code smells
PDF
Code Smells and Its type (With Example)
PDF
PDF
Saner16a.ppt
Code Smell, Software Engineering
A Study on Code Smell Detection with Refactoring Tools in Object Oriented Lan...
PhD Symposium 2014
Multi step automated refactoring for code smell
Multi step automated refactoring for code smell
On The Relation of Test Smells to Software Code Quality
Software Craftsmanship - 2
DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALE
Code smell overview
Functional over related classes bad smell detection and refactoring suggestions
A survey on software smells
Principle based classification of design smells
When and Why Your Code Starts to Smell Bad
Finding Bad Code Smells with Neural Network Models
Msr17a.ppt
Code smells
Code Smells and Its type (With Example)
Saner16a.ppt
Ad

More from Ptidej Team (20)

PDF
From IoT to Software Miniaturisation
PDF
Presentation
PDF
Presentation
PDF
Presentation
PDF
Presentation by Lionel Briand
PDF
Manel Abdellatif
PDF
Azadeh Kermansaravi
PDF
Mouna Abidi
PDF
CSED - Manel Grichi
PDF
Cristiano Politowski
PDF
Will io t trigger the next software crisis
PDF
PDF
Thesis+of+laleh+eshkevari.ppt
PDF
Thesis+of+nesrine+abdelkafi.ppt
PDF
Medicine15.ppt
PDF
Qrs17b.ppt
PDF
Icpc11c.ppt
PDF
Icsme16.ppt
PDF
Icsoc15.ppt
PDF
Thesis+of+étienne+duclos.ppt
From IoT to Software Miniaturisation
Presentation
Presentation
Presentation
Presentation by Lionel Briand
Manel Abdellatif
Azadeh Kermansaravi
Mouna Abidi
CSED - Manel Grichi
Cristiano Politowski
Will io t trigger the next software crisis
Thesis+of+laleh+eshkevari.ppt
Thesis+of+nesrine+abdelkafi.ppt
Medicine15.ppt
Qrs17b.ppt
Icpc11c.ppt
Icsme16.ppt
Icsoc15.ppt
Thesis+of+étienne+duclos.ppt
Ad

Recently uploaded (20)

PDF
Susan Semmelmann: Enriching the Lives of others through her Talents and Bless...
PPTX
CTG - Business Update 2Q2025 & 6M2025.pptx
PDF
533158074-Saudi-Arabia-Companies-List-Contact.pdf
PDF
Charisse Litchman: A Maverick Making Neurological Care More Accessible
PDF
#1 Safe and Secure Verified Cash App Accounts for Purchase.pdf
PPTX
TRAINNING, DEVELOPMENT AND APPRAISAL.pptx
PDF
ICv2 White Paper - Gen Con Trade Day 2025
PDF
Kishore Vora - Best CFO in India to watch in 2025.pdf
PPTX
operations management : demand supply ch
DOCX
FINALS-BSHhchcuvivicucucucucM-Centro.docx
PPTX
svnfcksanfskjcsnvvjknsnvsdscnsncxasxa saccacxsax
PPTX
Board-Reporting-Package-by-Umbrex-5-23-23.pptx
PDF
ANALYZING THE OPPORTUNITIES OF DIGITAL MARKETING IN BANGLADESH TO PROVIDE AN ...
PDF
Daniels 2024 Inclusive, Sustainable Development
PDF
Nante Industrial Plug Factory: Engineering Quality for Modern Power Applications
PDF
NISM Series V-A MFD Workbook v December 2024.khhhjtgvwevoypdnew one must use ...
PDF
Satish NS: Fostering Innovation and Sustainability: Haier India’s Customer-Ce...
PDF
PMB 401-Identification-of-Potential-Biotechnological-Products.pdf
PDF
TyAnn Osborn: A Visionary Leader Shaping Corporate Workforce Dynamics
PDF
Chapter 2 - AI chatbots and prompt engineering.pdf
Susan Semmelmann: Enriching the Lives of others through her Talents and Bless...
CTG - Business Update 2Q2025 & 6M2025.pptx
533158074-Saudi-Arabia-Companies-List-Contact.pdf
Charisse Litchman: A Maverick Making Neurological Care More Accessible
#1 Safe and Secure Verified Cash App Accounts for Purchase.pdf
TRAINNING, DEVELOPMENT AND APPRAISAL.pptx
ICv2 White Paper - Gen Con Trade Day 2025
Kishore Vora - Best CFO in India to watch in 2025.pdf
operations management : demand supply ch
FINALS-BSHhchcuvivicucucucucM-Centro.docx
svnfcksanfskjcsnvvjknsnvsdscnsncxasxa saccacxsax
Board-Reporting-Package-by-Umbrex-5-23-23.pptx
ANALYZING THE OPPORTUNITIES OF DIGITAL MARKETING IN BANGLADESH TO PROVIDE AN ...
Daniels 2024 Inclusive, Sustainable Development
Nante Industrial Plug Factory: Engineering Quality for Modern Power Applications
NISM Series V-A MFD Workbook v December 2024.khhhjtgvwevoypdnew one must use ...
Satish NS: Fostering Innovation and Sustainability: Haier India’s Customer-Ce...
PMB 401-Identification-of-Potential-Biotechnological-Products.pdf
TyAnn Osborn: A Visionary Leader Shaping Corporate Workforce Dynamics
Chapter 2 - AI chatbots and prompt engineering.pdf

WCRE09a.ppt

  • 1. An Exploratory Study of the Impact of Code Smells on Software Change- proneness Foutse Khomh, Massimiliano Di Penta, and Yann-Gaël Guéhéneuc WCRE’09 2009/10/13 Ptidej Team – OO Programs Quality Evaluation and Enhancement using Patterns Department of Computer Science and Operations Research University of Montréal, Québec, Canada © Khomh, 2009
  • 2. Context and Motivation Code smells are “poor” solutions to recurring implementation problems Code smells are in between design and implementation Code smells are conjectured in the literature to hinder object-oriented software evolution No previous study has investigated the relationship between code smells and change-proneness 2/27
  • 3. Objective Study the impact of code smells on the change-proneness of classes Study the impact of the composition of code smells on the change-proneness of classes 3/27
  • 4. Outline Study Definition Study Context Study Design Analysis Method Results Conclusion and Future Work 4/27
  • 5. Study Definition (1/2) Goal: investigate the relation between the presence of smells in classes and their change-proneness Quality focus: the increase of maintenance effort and cost is due to the presence of code smells 5/27
  • 6. Study Definition (2/2) Perspective: both researchers, practitioners, and managers should be aware of the impact of code smells on classes to make inform design and implementation choices – The presence of change-prone classes increases maintenance effort and cost 6/27
  • 7. Study Context (1/2) Programs – 9 versions of Azureus (5,858,041 LOCs) – 13 versions of Eclipse (31,579,975 LOCs) Change history between each analysed releases in the programs’ concurrent Versions System (CVS) 7/27
  • 8. Study Context (2/2) 29 code smells Detected using our tool, DECOR (based on 8/27 metrics and lexical information)
  • 9. Study Design (1/3) RQ1: What is the relation between smells and change proneness? – H01: the proportion of classes undergoing at least one change between two releases does not significantly differ between classes with code smells and other classes. RQ2: What is the relation between the number of smells in a class and its change-proneness? – H02: the numbers of smells in change-prone classes are not significantly higher than the numbers of smells in classes that do not change. 9/27
  • 10. Study Design (2/3) RQ3: What is the relation between particular kinds of smells and change proneness? – H03: classes with particular kinds of code smells are not significantly more change- prone than other classes. 10/27
  • 11. Study Design (3/3) Independent Variables – 29 kind of code smells. – Each variable si,j,k indicates the number of times a class i has a smell j in a release rk. Dependent variables – Classes change proneness. – Measured as the number of changes ci,k that a “smelly class” underwent between release rk and subsequent release rk+1. 11/27
  • 12. Analysis Method (1/3) For RQ1, we: – Test the proportions of classes exhibiting (or not) at least one change with (some) smells vs. other classes. – Use Fisher’s exact test. – We compute the Odds ratios (OR). 12/27
  • 13. Analysis Method (2/3) For RQ2, we: – Compare the numbers of smells in change- prone classes vs. non-change-prone classes. – Use a Mann-Whitney non-parametric test. – Estimate the magnitude of differences with the Cohen d effect size • Small: 0.2 ≤ d ≤ 0.3, medium: around 0.5, and large: ≥ 0.8. 13/27
  • 14. Analysis Method (3/3) For RQ3, we: – Relate change-proneness with the presence of particular kinds of smells. – We use a logistic regression model. – We decide that a relation is significant if the null-hypothesis is rejected for at least 75% of the releases. 14/27
  • 15. Results (1/6) RQ1: smells and changes (Azureus) 15/27
  • 16. Results (2/6) RQ1: smells and changes (Eclipse) 16/27
  • 17. Results (3/6) RQ2: composition of smells and changes (Azureus) 17/27
  • 18. Results (4/6) RQ2: composition of smells and changes (Eclipse) 18/27
  • 19. Results (5/6) RQ3: kinds of smells and changes (Azureus) 19/27
  • 20. Results (6/6) RQ3: kinds of smells and changes (Eclipse) 20/27
  • 21. Discussion Classes with smells are more change- prone, some odds ratio 3 to 8 times bigger for these classes. HasChildren, MessageChains, NotComplex, and NotAbstract lead almost consistently to change-prone classes. Existing smells are generally removed from the system while some new are introduced in the context of new 21/27 features addition.
  • 22. Threats to the validity (1/2) Construct validity – The count of changes occurred to classes is based on the CVS change log. – Subjectivity of the definitions of code smells • We were interested in code smells as defined by our tool. – Dependence between code smells • We perform a Spearman rank correlation analysis. • Our logistic regression only selected non- 22/27 correlated smells.
  • 23. Threats to the validity (2/2) Internal validity – We do not claim causation, only relation. Conclusion validity – Statistic tests properly used. • We verified their underlying assumptions. Reliability validity – We provide all the details for the replication of our study. External validity – The generalisation will require further studies. • We chose programs from different domains and a representative set of code smells. 23/27
  • 24. Conclusion (1/2) We provide empirical evidence of the negative impact of code smells on classes change-proneness. We show that: – Classes with smells are significantly more likely to be the subject of changes, than other classes. – The more a class have smells, the more it changes. – Some specific code smells, are more likely to be of concern during evolution: e.g., MessageChains, NotComplex (and Lazy classes) 24/27
  • 25. Conclusion (2/2) Previous studies correlated source code metrics with change-proneness. – But, we believe that smells can provide to developers recommendations easier to understand than what metric profiles can do. – However, we found that metrics still perform better than smells on building change- proneness/fault-proneness prediction models. 25/27
  • 26. Future work Our future work includes: – Replicating this study – Studying the effect of anti patterns which are at a higher level of abstraction – Relates smells, anti patterns to fault- proneness The data of our study are available online http://www.ptidej.net/downloads/experiments/prop-WCRE09 26/27
  • 27. Questions Thank you for listening 27/27