SlideShare a Scribd company logo
Code Smell Research:
History and Future Directions
Nikolaos Tsantalis
Computer Science & Software Engineering

Second PLOW Installment - March 5, 2014

1
Changes aiming to improve the future
maintainability and reliability of the
software system.

Second PLOW Installment - March 5, 2014

2
3
• Refactoring Object-oriented Frameworks,
University of Illinois at Urbana-Champaign
– Introduced the concept of refactorings as behaviorpreserving program restructuring operations.
– Introduced the concept of preconditions as
conditions that should be examined to determine
whether a refactoring can be applied safely.

Second PLOW Installment - March 5, 2014

4
Second PLOW Installment - March 5, 2014

5
Duplicated Code:
“If you see the same code
structure in more than one
place, … find a way to unify
them.”

Second PLOW Installment - March 5, 2014

6
Second PLOW Installment - March 5, 2014

7
Second PLOW Installment - March 5, 2014

8
Second PLOW Installment - March 5, 2014

9
Second PLOW Installment - March 5, 2014

10
Second PLOW Installment - March 5, 2014

11
Code smell definition for Inappropriate Interface
inappropriateInterface(?class,?interface,?subclasses) :findall(<?itf,?scs>,
commonSubclassInterface(?class,?itf,?scs),
?result),
removeDuplicates(?result,?nodups),
member(<?interface,?subclasses>,?nodups)
Second PLOW Installment - March 5, 2014

12
Second PLOW Installment - March 5, 2014

13
Second PLOW Installment - March 5, 2014

14
Second PLOW Installment - March 5, 2014

15
• Treat the improvement of object-oriented design
as a search problem in the space of

alternative designs
• The move in the search space is achieved by
modeling refactorings (inheritance-related)
• Apply search algorithms using QMOOD as the
fitness function (rank alternative designs)
• The outcome is a sequence of refactorings
leading to the optimal design
Second PLOW Installment - March 5, 2014

16
Second PLOW Installment - March 5, 2014

17
Second PLOW Installment - March 5, 2014

18
Second PLOW Installment - March 5, 2014

19
Second PLOW Installment - March 5, 2014

20
Many code smell definitions are based on
historical change information
– Shotgun Surgery: When every time you make a
kind of change, you have to make a lot of little
changes to a lot of different classes.
– Parallel Inheritance Hierarchies: When every time
you make a subclass of one class, you also have to
make a subclass of another.

Second PLOW Installment - March 5, 2014

21
Second PLOW Installment - March 5, 2014

22
Second PLOW Installment - March 5, 2014

23
• 12 code smells
• 6 Professional developers were hired to
implement change requests
• 4 medium-sized Java systems with known
code smells
• 4 weeks of development
• Daily interviews and think-aloud sessions

Second PLOW Installment - March 5, 2014

24
Second PLOW Installment - March 5, 2014

25
Second PLOW Installment - March 5, 2014

26
Advantages:
Feasible and behavior preserving solutions
to design problems

Ranking and prioritizing solutions based on
their expected effect on design quality
A holistic approach for preventive
maintenance
Second PLOW Installment - March 5, 2014

27
1. Identify places where software should be refactored
(known as bad smells).
2. Determine which refactoring(s) should be applied to the
identified places.
3. Guarantee that the applied refactoring preserves
behavior.
4. Apply the refactoring.
5. Assess the effect of the refactoring on quality
characteristics of the software.
6. Maintain the consistency between the refactored code
and other software artifacts.
Second PLOW Installment - March 5, 2014

28
Second PLOW Installment - March 5, 2014

29
Second PLOW Installment - March 5, 2014

30
Second PLOW Installment - March 5, 2014

31
Context

State
state

- state::int
type int
- STATE_A : int = 1
- STATE_B : int = 2
+ method() {
state.method();
if state == STATE_A
} doStateA();
else
if state == STATE_B
doStateB();
}

+method()

StateA

StateB

+method() {

+method() {

}

}

Second PLOW Installment - March 5, 2014

32
Second PLOW Installment - March 5, 2014

33
Second PLOW Installment - March 5, 2014

34
Second PLOW Installment - March 5, 2014

35
Second PLOW Installment - March 5, 2014

36
Second PLOW Installment - March 5, 2014

37
Second PLOW Installment - March 5, 2014

38
Second PLOW Installment - March 5, 2014

39
Second PLOW Installment - March 5, 2014

40
Second PLOW Installment - March 5, 2014

41
Since the beginning of 2011 …

Second PLOW Installment - March 5, 2014

42
Second PLOW Installment - March 5, 2014

43
Second PLOW Installment - March 5, 2014

44
Second PLOW Installment - March 5, 2014

45
• “Debt” is the effect of incomplete, immature,
or inadequate maintenance activities
• Delayed tasks may bring a short-term benefit
(higher productivity, shorter release time)
• Might have to be paid back in the future with
“Interest” (increased effort)
• “Principal” is the effort to pay off the debt
Second PLOW Installment - March 5, 2014

46
•
•
•
•

Tracking clones as project evolves
Verifying the consistent modification of clones
Updating clones and groups as project evolves
Assessing the harmfulness of clones

Second PLOW Installment - March 5, 2014

47
Second PLOW Installment - March 5, 2014

48
Second PLOW Installment - March 5, 2014

49
Second PLOW Installment - March 5, 2014

50
• So far, we used
– Static source code analysis
– Semantic analysis
– Change history analysis

Second PLOW Installment - March 5, 2014

51
Second PLOW Installment - March 5, 2014

52
Every code smell involves a certain risk

for future maintainability

Second PLOW Installment - March 5, 2014

53
• Likelihood of occurrence of the risky event
• Exposure of the system to the event
• Consequence of the event

Second PLOW Installment - March 5, 2014

54
• Risky events  changes driven by code smells
– Ex. 1: Fixing the same bug in a clone group
– Ex. 2: Making a method more “envy” to another class

• Intuition: code that changes frequently due to
a design flaw imposes a high risk to the
maintainability of a system

• Likelihood  proneness to code smell driven
changes (estimated from the history of changes)
Second PLOW Installment - March 5, 2014

55
• Intuition: the more extensively a module is used,
the more extensive the propagation of code
smell driven changes to dependent modules

• Exposure  the number and strength of
incoming dependencies (estimated from static
and dynamic analysis)

Second PLOW Installment - March 5, 2014

56
• Consequence  cost of code smell driven
changes (effort, time, money).
From the opposite perspective:
• Consequence  effect of removing the code
smell.
• Estimated by computing the impact of the
corresponding refactoring on metrics.
Second PLOW Installment - March 5, 2014

57
Given a set of different types of refactoring
opportunities in a software system

• Conflicts
• Dependencies
Second PLOW Installment - March 5, 2014

58
Visit our project at
Second PLOW Installment - March 5, 2014

59

More Related Content

Similar to Code Smell Research: History and Future Directions

Furuyama - analysis of factors that affect productivity
Furuyama - analysis of factors that affect productivityFuruyama - analysis of factors that affect productivity
Furuyama - analysis of factors that affect productivity
International Software Benchmarking Standards Group (ISBSG)
 
Co-evolving changes in a data-intensive software system
Co-evolving changes in a data-intensive software systemCo-evolving changes in a data-intensive software system
Co-evolving changes in a data-intensive software system
Tom Mens
 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2
Fadhil Ismail
 
Iwsm2014 evaluating software product quality (ali idri)
Iwsm2014   evaluating software product quality (ali idri)Iwsm2014   evaluating software product quality (ali idri)
Iwsm2014 evaluating software product quality (ali idri)
Nesma
 
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
Florian Blum
 
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
Ivica Crnkovic
 
Tweets Classification
Tweets ClassificationTweets Classification
Tweets Classification
Varun Gupta
 
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
RootedCON
 
From requirements quality to requirements authoring
From requirements quality to requirements authoringFrom requirements quality to requirements authoring
From requirements quality to requirements authoring
The REUSE Company
 
SCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
SCAM: Multi-layer Software Configuration: Empirical Study on WordpressSCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
SCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
Simo Ssimo
 
Empirical research results for the evolution of a data-intensive software sys...
Empirical research results for the evolution of a data-intensive software sys...Empirical research results for the evolution of a data-intensive software sys...
Empirical research results for the evolution of a data-intensive software sys...
Tom Mens
 
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
ijseajournal
 
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
RootedCON
 
Framework for a Software Quality Rating System
Framework for a Software Quality Rating SystemFramework for a Software Quality Rating System
Framework for a Software Quality Rating System
Karthik Murali
 
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in IndustryAssessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Dharmalingam Ganesan
 
Keynote - DevOps and the bottom line.
Keynote - DevOps and the bottom line.Keynote - DevOps and the bottom line.
Keynote - DevOps and the bottom line.
especificacoes.com
 
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
Pedro Luis Mateo Navarro
 
Sd times-june-24-2015
Sd times-june-24-2015Sd times-june-24-2015
Sd times-june-24-2015
Dan Boutin
 
ERP Unit iii
ERP  Unit   iii ERP  Unit   iii
ERP Unit iii
Arasuraja Ganesan
 
The system development life cycle (SDLC)
The system development life cycle (SDLC)The system development life cycle (SDLC)
The system development life cycle (SDLC)
gourav kottawar
 

Similar to Code Smell Research: History and Future Directions (20)

Furuyama - analysis of factors that affect productivity
Furuyama - analysis of factors that affect productivityFuruyama - analysis of factors that affect productivity
Furuyama - analysis of factors that affect productivity
 
Co-evolving changes in a data-intensive software system
Co-evolving changes in a data-intensive software systemCo-evolving changes in a data-intensive software system
Co-evolving changes in a data-intensive software system
 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2
 
Iwsm2014 evaluating software product quality (ali idri)
Iwsm2014   evaluating software product quality (ali idri)Iwsm2014   evaluating software product quality (ali idri)
Iwsm2014 evaluating software product quality (ali idri)
 
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
3-D Cloud Monitoring: Enabling Effective Cloud Infrastructure and Application...
 
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
Rapid Continuous Software Engineering - Meeting the challenges of modern sof...
 
Tweets Classification
Tweets ClassificationTweets Classification
Tweets Classification
 
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
Juan Vazquez & Julián Vilas – Tú a Barcelona y yo a Tejas, a patadas con mi S...
 
From requirements quality to requirements authoring
From requirements quality to requirements authoringFrom requirements quality to requirements authoring
From requirements quality to requirements authoring
 
SCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
SCAM: Multi-layer Software Configuration: Empirical Study on WordpressSCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
SCAM: Multi-layer Software Configuration: Empirical Study on Wordpress
 
Empirical research results for the evolution of a data-intensive software sys...
Empirical research results for the evolution of a data-intensive software sys...Empirical research results for the evolution of a data-intensive software sys...
Empirical research results for the evolution of a data-intensive software sys...
 
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
A DECISION SUPPORT SYSTEM TO CHOOSE OPTIMAL RELEASE CYCLE LENGTH IN INCREMENT...
 
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
Jeremy Brown & David Seidman - Microsoft Vulnerability Research: How to be a ...
 
Framework for a Software Quality Rating System
Framework for a Software Quality Rating SystemFramework for a Software Quality Rating System
Framework for a Software Quality Rating System
 
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in IndustryAssessing Model-Based Testing: An Empirical Study Conducted in Industry
Assessing Model-Based Testing: An Empirical Study Conducted in Industry
 
Keynote - DevOps and the bottom line.
Keynote - DevOps and the bottom line.Keynote - DevOps and the bottom line.
Keynote - DevOps and the bottom line.
 
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
PhD Thesis Defense - Enhancing Software Quality and Quality of Experience thr...
 
Sd times-june-24-2015
Sd times-june-24-2015Sd times-june-24-2015
Sd times-june-24-2015
 
ERP Unit iii
ERP  Unit   iii ERP  Unit   iii
ERP Unit iii
 
The system development life cycle (SDLC)
The system development life cycle (SDLC)The system development life cycle (SDLC)
The system development life cycle (SDLC)
 

More from Nikolaos Tsantalis

Refactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolutionRefactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolution
Nikolaos Tsantalis
 
CASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award TalkCASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award Talk
Nikolaos Tsantalis
 
SANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper TalkSANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper Talk
Nikolaos Tsantalis
 
Accurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit HistoryAccurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit History
Nikolaos Tsantalis
 
Clone Refactoring with Lambda Expressions
Clone Refactoring with Lambda ExpressionsClone Refactoring with Lambda Expressions
Clone Refactoring with Lambda Expressions
Nikolaos Tsantalis
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub Contributors
Nikolaos Tsantalis
 
Migrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessorsMigrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessors
Nikolaos Tsantalis
 
JDeodorant: Clone Refactoring
JDeodorant: Clone RefactoringJDeodorant: Clone Refactoring
JDeodorant: Clone Refactoring
Nikolaos Tsantalis
 
An empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessorsAn empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessors
Nikolaos Tsantalis
 
An Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS PreprocessorsAn Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS Preprocessors
Nikolaos Tsantalis
 
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Nikolaos Tsantalis
 
Preventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the FuturePreventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the Future
Nikolaos Tsantalis
 
An Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style SheetsAn Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style Sheets
Nikolaos Tsantalis
 
Ranking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical VolatilityRanking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical Volatility
Nikolaos Tsantalis
 
Feature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web ApplicationsFeature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web Applications
Nikolaos Tsantalis
 
A Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring ActivityA Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring Activity
Nikolaos Tsantalis
 
Unification and Refactoring of Clones
Unification and Refactoring of ClonesUnification and Refactoring of Clones
Unification and Refactoring of Clones
Nikolaos Tsantalis
 

More from Nikolaos Tsantalis (17)

Refactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolutionRefactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolution
 
CASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award TalkCASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award Talk
 
SANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper TalkSANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper Talk
 
Accurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit HistoryAccurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit History
 
Clone Refactoring with Lambda Expressions
Clone Refactoring with Lambda ExpressionsClone Refactoring with Lambda Expressions
Clone Refactoring with Lambda Expressions
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub Contributors
 
Migrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessorsMigrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessors
 
JDeodorant: Clone Refactoring
JDeodorant: Clone RefactoringJDeodorant: Clone Refactoring
JDeodorant: Clone Refactoring
 
An empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessorsAn empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessors
 
An Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS PreprocessorsAn Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS Preprocessors
 
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
 
Preventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the FuturePreventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the Future
 
An Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style SheetsAn Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style Sheets
 
Ranking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical VolatilityRanking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical Volatility
 
Feature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web ApplicationsFeature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web Applications
 
A Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring ActivityA Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring Activity
 
Unification and Refactoring of Clones
Unification and Refactoring of ClonesUnification and Refactoring of Clones
Unification and Refactoring of Clones
 

Recently uploaded

Micronuclei test.M.sc.zoology.fisheries.
Micronuclei test.M.sc.zoology.fisheries.Micronuclei test.M.sc.zoology.fisheries.
Micronuclei test.M.sc.zoology.fisheries.
Aditi Bajpai
 
Gadgets for management of stored product pests_Dr.UPR.pdf
Gadgets for management of stored product pests_Dr.UPR.pdfGadgets for management of stored product pests_Dr.UPR.pdf
Gadgets for management of stored product pests_Dr.UPR.pdf
PirithiRaju
 
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
Advanced-Concepts-Team
 
Pests of Storage_Identification_Dr.UPR.pdf
Pests of Storage_Identification_Dr.UPR.pdfPests of Storage_Identification_Dr.UPR.pdf
Pests of Storage_Identification_Dr.UPR.pdf
PirithiRaju
 
Basics of crystallography, crystal systems, classes and different forms
Basics of crystallography, crystal systems, classes and different formsBasics of crystallography, crystal systems, classes and different forms
Basics of crystallography, crystal systems, classes and different forms
MaheshaNanjegowda
 
Authoring a personal GPT for your research and practice: How we created the Q...
Authoring a personal GPT for your research and practice: How we created the Q...Authoring a personal GPT for your research and practice: How we created the Q...
Authoring a personal GPT for your research and practice: How we created the Q...
Leonel Morgado
 
The cost of acquiring information by natural selection
The cost of acquiring information by natural selectionThe cost of acquiring information by natural selection
The cost of acquiring information by natural selection
Carl Bergstrom
 
Farming systems analysis: what have we learnt?.pptx
Farming systems analysis: what have we learnt?.pptxFarming systems analysis: what have we learnt?.pptx
Farming systems analysis: what have we learnt?.pptx
Frédéric Baudron
 
Modelo de slide quimica para powerpoint
Modelo  de slide quimica para powerpointModelo  de slide quimica para powerpoint
Modelo de slide quimica para powerpoint
Karen593256
 
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
vluwdy49
 
11.1 Role of physical biological in deterioration of grains.pdf
11.1 Role of physical biological in deterioration of grains.pdf11.1 Role of physical biological in deterioration of grains.pdf
11.1 Role of physical biological in deterioration of grains.pdf
PirithiRaju
 
ESR spectroscopy in liquid food and beverages.pptx
ESR spectroscopy in liquid food and beverages.pptxESR spectroscopy in liquid food and beverages.pptx
ESR spectroscopy in liquid food and beverages.pptx
PRIYANKA PATEL
 
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdfMending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
Selcen Ozturkcan
 
8.Isolation of pure cultures and preservation of cultures.pdf
8.Isolation of pure cultures and preservation of cultures.pdf8.Isolation of pure cultures and preservation of cultures.pdf
8.Isolation of pure cultures and preservation of cultures.pdf
by6843629
 
The debris of the ‘last major merger’ is dynamically young
The debris of the ‘last major merger’ is dynamically youngThe debris of the ‘last major merger’ is dynamically young
The debris of the ‘last major merger’ is dynamically young
Sérgio Sacani
 
The binding of cosmological structures by massless topological defects
The binding of cosmological structures by massless topological defectsThe binding of cosmological structures by massless topological defects
The binding of cosmological structures by massless topological defects
Sérgio Sacani
 
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdfwaterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
LengamoLAppostilic
 
AJAY KUMAR NIET GreNo Guava Project File.pdf
AJAY KUMAR NIET GreNo Guava Project File.pdfAJAY KUMAR NIET GreNo Guava Project File.pdf
AJAY KUMAR NIET GreNo Guava Project File.pdf
AJAY KUMAR
 
Randomised Optimisation Algorithms in DAPHNE
Randomised Optimisation Algorithms in DAPHNERandomised Optimisation Algorithms in DAPHNE
Randomised Optimisation Algorithms in DAPHNE
University of Maribor
 
aziz sancar nobel prize winner: from mardin to nobel
aziz sancar nobel prize winner: from mardin to nobelaziz sancar nobel prize winner: from mardin to nobel
aziz sancar nobel prize winner: from mardin to nobel
İsa Badur
 

Recently uploaded (20)

Micronuclei test.M.sc.zoology.fisheries.
Micronuclei test.M.sc.zoology.fisheries.Micronuclei test.M.sc.zoology.fisheries.
Micronuclei test.M.sc.zoology.fisheries.
 
Gadgets for management of stored product pests_Dr.UPR.pdf
Gadgets for management of stored product pests_Dr.UPR.pdfGadgets for management of stored product pests_Dr.UPR.pdf
Gadgets for management of stored product pests_Dr.UPR.pdf
 
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
ESA/ACT Science Coffee: Diego Blas - Gravitational wave detection with orbita...
 
Pests of Storage_Identification_Dr.UPR.pdf
Pests of Storage_Identification_Dr.UPR.pdfPests of Storage_Identification_Dr.UPR.pdf
Pests of Storage_Identification_Dr.UPR.pdf
 
Basics of crystallography, crystal systems, classes and different forms
Basics of crystallography, crystal systems, classes and different formsBasics of crystallography, crystal systems, classes and different forms
Basics of crystallography, crystal systems, classes and different forms
 
Authoring a personal GPT for your research and practice: How we created the Q...
Authoring a personal GPT for your research and practice: How we created the Q...Authoring a personal GPT for your research and practice: How we created the Q...
Authoring a personal GPT for your research and practice: How we created the Q...
 
The cost of acquiring information by natural selection
The cost of acquiring information by natural selectionThe cost of acquiring information by natural selection
The cost of acquiring information by natural selection
 
Farming systems analysis: what have we learnt?.pptx
Farming systems analysis: what have we learnt?.pptxFarming systems analysis: what have we learnt?.pptx
Farming systems analysis: what have we learnt?.pptx
 
Modelo de slide quimica para powerpoint
Modelo  de slide quimica para powerpointModelo  de slide quimica para powerpoint
Modelo de slide quimica para powerpoint
 
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
在线办理(salfor毕业证书)索尔福德大学毕业证毕业完成信一模一样
 
11.1 Role of physical biological in deterioration of grains.pdf
11.1 Role of physical biological in deterioration of grains.pdf11.1 Role of physical biological in deterioration of grains.pdf
11.1 Role of physical biological in deterioration of grains.pdf
 
ESR spectroscopy in liquid food and beverages.pptx
ESR spectroscopy in liquid food and beverages.pptxESR spectroscopy in liquid food and beverages.pptx
ESR spectroscopy in liquid food and beverages.pptx
 
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdfMending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
Mending Clothing to Support Sustainable Fashion_CIMaR 2024.pdf
 
8.Isolation of pure cultures and preservation of cultures.pdf
8.Isolation of pure cultures and preservation of cultures.pdf8.Isolation of pure cultures and preservation of cultures.pdf
8.Isolation of pure cultures and preservation of cultures.pdf
 
The debris of the ‘last major merger’ is dynamically young
The debris of the ‘last major merger’ is dynamically youngThe debris of the ‘last major merger’ is dynamically young
The debris of the ‘last major merger’ is dynamically young
 
The binding of cosmological structures by massless topological defects
The binding of cosmological structures by massless topological defectsThe binding of cosmological structures by massless topological defects
The binding of cosmological structures by massless topological defects
 
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdfwaterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
waterlessdyeingtechnolgyusing carbon dioxide chemicalspdf
 
AJAY KUMAR NIET GreNo Guava Project File.pdf
AJAY KUMAR NIET GreNo Guava Project File.pdfAJAY KUMAR NIET GreNo Guava Project File.pdf
AJAY KUMAR NIET GreNo Guava Project File.pdf
 
Randomised Optimisation Algorithms in DAPHNE
Randomised Optimisation Algorithms in DAPHNERandomised Optimisation Algorithms in DAPHNE
Randomised Optimisation Algorithms in DAPHNE
 
aziz sancar nobel prize winner: from mardin to nobel
aziz sancar nobel prize winner: from mardin to nobelaziz sancar nobel prize winner: from mardin to nobel
aziz sancar nobel prize winner: from mardin to nobel
 

Code Smell Research: History and Future Directions

  • 1. Code Smell Research: History and Future Directions Nikolaos Tsantalis Computer Science & Software Engineering Second PLOW Installment - March 5, 2014 1
  • 2. Changes aiming to improve the future maintainability and reliability of the software system. Second PLOW Installment - March 5, 2014 2
  • 3. 3
  • 4. • Refactoring Object-oriented Frameworks, University of Illinois at Urbana-Champaign – Introduced the concept of refactorings as behaviorpreserving program restructuring operations. – Introduced the concept of preconditions as conditions that should be examined to determine whether a refactoring can be applied safely. Second PLOW Installment - March 5, 2014 4
  • 5. Second PLOW Installment - March 5, 2014 5
  • 6. Duplicated Code: “If you see the same code structure in more than one place, … find a way to unify them.” Second PLOW Installment - March 5, 2014 6
  • 7. Second PLOW Installment - March 5, 2014 7
  • 8. Second PLOW Installment - March 5, 2014 8
  • 9. Second PLOW Installment - March 5, 2014 9
  • 10. Second PLOW Installment - March 5, 2014 10
  • 11. Second PLOW Installment - March 5, 2014 11
  • 12. Code smell definition for Inappropriate Interface inappropriateInterface(?class,?interface,?subclasses) :findall(<?itf,?scs>, commonSubclassInterface(?class,?itf,?scs), ?result), removeDuplicates(?result,?nodups), member(<?interface,?subclasses>,?nodups) Second PLOW Installment - March 5, 2014 12
  • 13. Second PLOW Installment - March 5, 2014 13
  • 14. Second PLOW Installment - March 5, 2014 14
  • 15. Second PLOW Installment - March 5, 2014 15
  • 16. • Treat the improvement of object-oriented design as a search problem in the space of alternative designs • The move in the search space is achieved by modeling refactorings (inheritance-related) • Apply search algorithms using QMOOD as the fitness function (rank alternative designs) • The outcome is a sequence of refactorings leading to the optimal design Second PLOW Installment - March 5, 2014 16
  • 17. Second PLOW Installment - March 5, 2014 17
  • 18. Second PLOW Installment - March 5, 2014 18
  • 19. Second PLOW Installment - March 5, 2014 19
  • 20. Second PLOW Installment - March 5, 2014 20
  • 21. Many code smell definitions are based on historical change information – Shotgun Surgery: When every time you make a kind of change, you have to make a lot of little changes to a lot of different classes. – Parallel Inheritance Hierarchies: When every time you make a subclass of one class, you also have to make a subclass of another. Second PLOW Installment - March 5, 2014 21
  • 22. Second PLOW Installment - March 5, 2014 22
  • 23. Second PLOW Installment - March 5, 2014 23
  • 24. • 12 code smells • 6 Professional developers were hired to implement change requests • 4 medium-sized Java systems with known code smells • 4 weeks of development • Daily interviews and think-aloud sessions Second PLOW Installment - March 5, 2014 24
  • 25. Second PLOW Installment - March 5, 2014 25
  • 26. Second PLOW Installment - March 5, 2014 26
  • 27. Advantages: Feasible and behavior preserving solutions to design problems Ranking and prioritizing solutions based on their expected effect on design quality A holistic approach for preventive maintenance Second PLOW Installment - March 5, 2014 27
  • 28. 1. Identify places where software should be refactored (known as bad smells). 2. Determine which refactoring(s) should be applied to the identified places. 3. Guarantee that the applied refactoring preserves behavior. 4. Apply the refactoring. 5. Assess the effect of the refactoring on quality characteristics of the software. 6. Maintain the consistency between the refactored code and other software artifacts. Second PLOW Installment - March 5, 2014 28
  • 29. Second PLOW Installment - March 5, 2014 29
  • 30. Second PLOW Installment - March 5, 2014 30
  • 31. Second PLOW Installment - March 5, 2014 31
  • 32. Context State state - state::int type int - STATE_A : int = 1 - STATE_B : int = 2 + method() { state.method(); if state == STATE_A } doStateA(); else if state == STATE_B doStateB(); } +method() StateA StateB +method() { +method() { } } Second PLOW Installment - March 5, 2014 32
  • 33. Second PLOW Installment - March 5, 2014 33
  • 34. Second PLOW Installment - March 5, 2014 34
  • 35. Second PLOW Installment - March 5, 2014 35
  • 36. Second PLOW Installment - March 5, 2014 36
  • 37. Second PLOW Installment - March 5, 2014 37
  • 38. Second PLOW Installment - March 5, 2014 38
  • 39. Second PLOW Installment - March 5, 2014 39
  • 40. Second PLOW Installment - March 5, 2014 40
  • 41. Second PLOW Installment - March 5, 2014 41
  • 42. Since the beginning of 2011 … Second PLOW Installment - March 5, 2014 42
  • 43. Second PLOW Installment - March 5, 2014 43
  • 44. Second PLOW Installment - March 5, 2014 44
  • 45. Second PLOW Installment - March 5, 2014 45
  • 46. • “Debt” is the effect of incomplete, immature, or inadequate maintenance activities • Delayed tasks may bring a short-term benefit (higher productivity, shorter release time) • Might have to be paid back in the future with “Interest” (increased effort) • “Principal” is the effort to pay off the debt Second PLOW Installment - March 5, 2014 46
  • 47. • • • • Tracking clones as project evolves Verifying the consistent modification of clones Updating clones and groups as project evolves Assessing the harmfulness of clones Second PLOW Installment - March 5, 2014 47
  • 48. Second PLOW Installment - March 5, 2014 48
  • 49. Second PLOW Installment - March 5, 2014 49
  • 50. Second PLOW Installment - March 5, 2014 50
  • 51. • So far, we used – Static source code analysis – Semantic analysis – Change history analysis Second PLOW Installment - March 5, 2014 51
  • 52. Second PLOW Installment - March 5, 2014 52
  • 53. Every code smell involves a certain risk for future maintainability Second PLOW Installment - March 5, 2014 53
  • 54. • Likelihood of occurrence of the risky event • Exposure of the system to the event • Consequence of the event Second PLOW Installment - March 5, 2014 54
  • 55. • Risky events  changes driven by code smells – Ex. 1: Fixing the same bug in a clone group – Ex. 2: Making a method more “envy” to another class • Intuition: code that changes frequently due to a design flaw imposes a high risk to the maintainability of a system • Likelihood  proneness to code smell driven changes (estimated from the history of changes) Second PLOW Installment - March 5, 2014 55
  • 56. • Intuition: the more extensively a module is used, the more extensive the propagation of code smell driven changes to dependent modules • Exposure  the number and strength of incoming dependencies (estimated from static and dynamic analysis) Second PLOW Installment - March 5, 2014 56
  • 57. • Consequence  cost of code smell driven changes (effort, time, money). From the opposite perspective: • Consequence  effect of removing the code smell. • Estimated by computing the impact of the corresponding refactoring on metrics. Second PLOW Installment - March 5, 2014 57
  • 58. Given a set of different types of refactoring opportunities in a software system • Conflicts • Dependencies Second PLOW Installment - March 5, 2014 58
  • 59. Visit our project at Second PLOW Installment - March 5, 2014 59