SlideShare a Scribd company logo
Deep Learning Anti-patterns from Code Metrics
History
35th IEEE International Conference on Software Maintenance and Evolution
September 30th - October 4th 2019
Cleveland, OH USA
Antoine Barbez Foutse Khomh Yann-Gaël Guéhéneuc
Problem
Definition
Anti-patterns
"structures in the design that indicate violation of fundamental design
principles and negatively impact design quality"
"Certain structures in the code that suggest (sometimes they scream for)
the possibility of refactoring."
Suryanarayana et al. (2014)
Fowler (1999)
1/16
Problem
Definition
Detection
- Rely on structural metrics, e.g., LOC, Cyclomatic Complexity …
- Computed for each code component to be classified
1. Structural Anti-patterns Detection
2/16
Problem
Definition
Detection
1. Structural Anti-patterns Detection
- Rely on structural metrics, e.g., LOC, Cyclomatic Complexity …
- Computed for each code component to be classified
Example 1: Rule-based approaches
Lanza and Marinescu (2007)
2/16
Problem
Definition
Detection
- Rely on structural metrics, e.g., LOC, Cyclomatic Complexity …
- Computed for each code component to be classified
Example 1: Rule-based approaches
Example 2: Machine-learning-based approaches
1. Structural Anti-patterns Detection
2/16
Problem
Definition
Detection
- Anti-patterns affect how source code evolve over time when
changes are applied to the system
- Rely on an analysis of co-changes occurring between code
components
2. Historical Anti-patterns Detection
3/16
Problem
Definition
Detection
- Anti-patterns affect how source code evolve over time when
changes are applied to the system
- Rely on an analysis of co-changes occurring between code
components
Example: HIST (Historical Information for Smell deTection)
2. Historical Anti-patterns Detection
Palomba et al. (2013)
3/16
Problem
Definition
Limitations
Structural and historical detection techniques are
complementary.
HIST does not take into account the structural properties of
the changes.
4/16
Approach Convolutional Analysis of code Metrics Evolution
Main idea:
- Analyze the history of source code metrics
- Use a Convolutional Neural Network to perform
classification
Relies on structural and historical information
Processes changes at a code-level granularity
A deep-learning-based approach
5/16
Approach Input: example
Let’s compute the history of the class Dog
for three metrics:
• Number of Methods Declared (NMD)
• Number of Attributes Declared (NAD)
• Lines Of Code (LOC)
With an history length of Lh = 10
6/16
Approach Input: example
NMD NAD LOC
2
Master (commit N)
7/16
Approach Input: example
NMD NAD LOC
2 2
Master (commit N)
7/16
Approach Input: example
NMD NAD LOC
2 2 6
Master (commit N)
7/16
Approach Input: example
NMD NAD LOC
2 2 6
2 2 6
Commit N - 1
7/16
Approach Input: example
NMD NAD LOC
2 2 6
2 2 6
1 2 6
Commit N - 2
7/16
Approach Input: example
NMD NAD LOC
2 2 6
2 2 6
1 2 6
1 1 3
Commit N - 3
7/16
Approach Input: example
NMD NAD LOC
2 2 6
2 2 6
1 2 6
1 1 3
1 1 3
Commit N - 4
7/16
Approach Input: example
NMD NAD LOC
2 2 6
2 2 6
1 2 6
1 1 3
1 1 3
1 1 3
Commit N - 5
7/16
Approach Input: example
404
File not found
NMD NAD LOC
2 2 6
2 2 6
1 2 6
1 1 3
1 1 3
1 1 3
0 0 0
0 0 0
0 0 0
0 0 0
Commit N - 6
7/16
Approach Model
8/16
Study Design God Class
«  … one object with a lion’s share of the responsibilities, while most
other objects only hold data or execute simple processes. »
Brown et al. (1998)
9/16
Study Design God Class
«  … one object with a lion’s share of the responsibilities, while most
other objects only hold data or execute simple processes. »
Brown et al. (1998)
Selected metrics:
• ATFD (Access To Foreign Data) • NADC (Number of Associated Data
Classes)
• LCOM5 (Lack of COhesion in
Methods)
• NMD (Number of Methods Declared)
• LOC (Lines Of Code) • WMC (Weighted Method Count)
• NAD (Number of Attributes
Declared)
9/16
Study Design Studied Systems
System #Class #God Class
Android Opt Telephony 192 10
Android Support 109 4
Apache Ant 694 7
Apache Lucene 155 3
Apache Tomcat 925 5
Apache Xerces 512 15
ArgoUML 1230 22
Jedit 423 5
Total 4240 71
10/16
Study Design Studied Systems
Evaluation
System #Class #God Class
Android Opt Telephony 192 10
Android Support 109 4
Apache Ant 694 7
Apache Lucene 155 3
Apache Tomcat 925 5
Apache Xerces 512 15
ArgoUML 1230 22
Jedit 423 5
Total 4240 71
10/16
Study Design Studied Systems
Evaluation
Training
&
Tuning
System #Class #God Class
Android Opt Telephony 192 10
Android Support 109 4
Apache Ant 694 7
Apache Lucene 155 3
Apache Tomcat 925 5
Apache Xerces 512 15
ArgoUML 1230 22
Jedit 423 5
Total 4240 71
10/16
Study 1 Definition
RQ1: To what extent historical values of source code metrics can
improve detection performances?
Approach: Monitor the performances achieved by CAME with different
length of metrics history: Lh ∈ {1, 10, 50, 100, 250, 500, 1000}
For each value of Lh:
- Perform hyper-parameters tuning
- Build and train 10 distinct CNNs
- Retrieve mean and std of precision, recall and F-measure
11/16
Study 1 Results
RQ1: To what extent historical values of source code metrics can
improve detection performances?
12/16
Study 2 Definition
RQ2: How does CAME compare to other static ML algorithms?
• Decision Tree
• Multi Layer Perceptron (MLP)
• Support Vector Machine (SVM)
13/16
Study 2 Definition
RQ2: How does CAME compare to other static ML algorithms?
RQ3: How does CAME compare to existing detection techniques?
• Decision Tree
• Multi Layer Perceptron (MLP)
• Support Vector Machine (SVM)
• DECOR Moha et al. (2010)
• HIST Palomba et al. (2013)
• JDeodorant Fokaefs et al. (2011)
13/16
Study 2 Results
Approaches Precision Recall F-measure
Decision Tree 68 % 29 % 40 %
MLP 41 % 86 % 56 %
SVM 68 % 14 % 24 %
CAME 71 % 86 % 77 %
RQ2: How does CAME compare to other static ML algorithms?
14/16
Study 2 Results
Approaches Precision Recall F-measure
DECOR 24 % 36 % 29 %
HIST 20 % 43 % 27 %
JDeodorant 4 % 57 % 8 %
CAME 71 % 86 % 77 %
RQ3: How does CAME compare to existing detection techniques?
15/16
Study 2 References
G. Suryanarayana, G. Samarthyam, T. Sharma, Refactoring for Software Design Smells:
Managing Technical Debt, Morgan Kaufmann, 2014.
W. J. Brown, R. C. Malveau, W. H. Brown, H. W. McCormick III, et T. J. Mowbray, Anti
Patterns: Refactoring Software, Architectures, and Projects in Crisis, 1st éd. John Wiley and
Sons, March 1998.
M. Fowler, Refactoring: Improving the Design of Existing Code. Boston, MA,
USA:Addison-Wesley, 1999.
F. Palomba, G. Bavota, M. D. Penta, R. Oliveto, A. D. Lucia, et D. Poshyvanyk, “Detecting
bad smells in source code using change history information.” dans ASE, 2013, pp. 268–278.
N. Moha, Y. Guéhéneuc, D. Laurence, et L. M. Anne-Franccoise, “Decor: A method for
the specification and detection of code and design smells”, IEEE Transactions on Software
Engineering (TSE), vol. 36, no. 1, pp. 20–36, 2010.
M. Fokaefs, N. Tsantalis, E. Stroulia, et A. Chatzigeorgiou, “Jdeodorant: identification and
application of extract class refactorings”, dans Software Engineering (ICSE), 2011 33rd
International Conference on. IEEE, 2011, pp. 1037–1039.
M. Lanza et R. Marinescu, Object-oriented metrics in practice: using software metrics to
characterize, evaluate, and improve the design of object-oriented systems. Springer Science
& Business Media, 2007. 16/16

More Related Content

What's hot

Source code comprehension on evolving software
Source code comprehension on evolving softwareSource code comprehension on evolving software
Source code comprehension on evolving software
Sung Kim
 
Data collection for software defect prediction
Data collection for software defect predictionData collection for software defect prediction
Data collection for software defect prediction
AmmAr mobark
 
Web Service Antipatterns Detection Using Genetic Programming
Web Service Antipatterns Detection Using Genetic ProgrammingWeb Service Antipatterns Detection Using Genetic Programming
Web Service Antipatterns Detection Using Genetic Programming
Ali Ouni
 
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Sung Kim
 
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
Feng Zhang
 
Review Participation in Modern Code Review: An Empirical Study of the Android...
Review Participation in Modern Code Review: An Empirical Study of the Android...Review Participation in Modern Code Review: An Empirical Study of the Android...
Review Participation in Modern Code Review: An Empirical Study of the Android...
The University of Adelaide
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Partitioning composite code changes to facilitate code review
Partitioning composite code changes to facilitate code reviewPartitioning composite code changes to facilitate code review
Partitioning composite code changes to facilitate code review
Yida Tao
 
Mining Sociotechnical Information From Software Repositories
Mining Sociotechnical Information From Software RepositoriesMining Sociotechnical Information From Software Repositories
Mining Sociotechnical Information From Software Repositories
Marco Aurelio Gerosa
 
Using cyclomatic complexity to measure code complexity
Using cyclomatic complexity to measure code complexityUsing cyclomatic complexity to measure code complexity
Using cyclomatic complexity to measure code complexity
Jane Chung
 
Saner16b.ppt
Saner16b.pptSaner16b.ppt
Uncovering hidden relationships from past changes: evolutionary dependencies ...
Uncovering hidden relationships from past changes: evolutionary dependencies ...Uncovering hidden relationships from past changes: evolutionary dependencies ...
Uncovering hidden relationships from past changes: evolutionary dependencies ...
Marco Aurelio Gerosa
 
An overview of automated test suites and defect density in Android
An overview of automated test suites and defect density in AndroidAn overview of automated test suites and defect density in Android
An overview of automated test suites and defect density in Android
Vahid Garousi
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
Sung Kim
 
Findability through Traceability - A Realistic Application of Candidate Tr...
Findability through Traceability  - A Realistic Application of Candidate Tr...Findability through Traceability  - A Realistic Application of Candidate Tr...
Findability through Traceability - A Realistic Application of Candidate Tr...
Markus Borg
 
Cser13.ppt
Cser13.pptCser13.ppt
Cser13.ppt
Ptidej Team
 
A Method to Detect License Inconsistencies for Large-Scale Open Source Projects
A Method to Detect License Inconsistencies for Large-Scale Open Source ProjectsA Method to Detect License Inconsistencies for Large-Scale Open Source Projects
A Method to Detect License Inconsistencies for Large-Scale Open Source Projects
Yuhao Wu
 

What's hot (19)

Source code comprehension on evolving software
Source code comprehension on evolving softwareSource code comprehension on evolving software
Source code comprehension on evolving software
 
Data collection for software defect prediction
Data collection for software defect predictionData collection for software defect prediction
Data collection for software defect prediction
 
Web Service Antipatterns Detection Using Genetic Programming
Web Service Antipatterns Detection Using Genetic ProgrammingWeb Service Antipatterns Detection Using Genetic Programming
Web Service Antipatterns Detection Using Genetic Programming
 
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
 
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
Cross-project Defect Prediction Using A Connectivity-based Unsupervised Class...
 
Review Participation in Modern Code Review: An Empirical Study of the Android...
Review Participation in Modern Code Review: An Empirical Study of the Android...Review Participation in Modern Code Review: An Empirical Study of the Android...
Review Participation in Modern Code Review: An Empirical Study of the Android...
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
WCRE11b.ppt
WCRE11b.pptWCRE11b.ppt
WCRE11b.ppt
 
Partitioning composite code changes to facilitate code review
Partitioning composite code changes to facilitate code reviewPartitioning composite code changes to facilitate code review
Partitioning composite code changes to facilitate code review
 
PhD-viva_ver0.4
PhD-viva_ver0.4PhD-viva_ver0.4
PhD-viva_ver0.4
 
Mining Sociotechnical Information From Software Repositories
Mining Sociotechnical Information From Software RepositoriesMining Sociotechnical Information From Software Repositories
Mining Sociotechnical Information From Software Repositories
 
Using cyclomatic complexity to measure code complexity
Using cyclomatic complexity to measure code complexityUsing cyclomatic complexity to measure code complexity
Using cyclomatic complexity to measure code complexity
 
Saner16b.ppt
Saner16b.pptSaner16b.ppt
Saner16b.ppt
 
Uncovering hidden relationships from past changes: evolutionary dependencies ...
Uncovering hidden relationships from past changes: evolutionary dependencies ...Uncovering hidden relationships from past changes: evolutionary dependencies ...
Uncovering hidden relationships from past changes: evolutionary dependencies ...
 
An overview of automated test suites and defect density in Android
An overview of automated test suites and defect density in AndroidAn overview of automated test suites and defect density in Android
An overview of automated test suites and defect density in Android
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
Findability through Traceability - A Realistic Application of Candidate Tr...
Findability through Traceability  - A Realistic Application of Candidate Tr...Findability through Traceability  - A Realistic Application of Candidate Tr...
Findability through Traceability - A Realistic Application of Candidate Tr...
 
Cser13.ppt
Cser13.pptCser13.ppt
Cser13.ppt
 
A Method to Detect License Inconsistencies for Large-Scale Open Source Projects
A Method to Detect License Inconsistencies for Large-Scale Open Source ProjectsA Method to Detect License Inconsistencies for Large-Scale Open Source Projects
A Method to Detect License Inconsistencies for Large-Scale Open Source Projects
 

Similar to Icsm19.ppt

CORRECT-ICSE2016
CORRECT-ICSE2016CORRECT-ICSE2016
CORRECT-ICSE2016
Masud Rahman
 
A Tale of Experiments on Bug Prediction
A Tale of Experiments on Bug PredictionA Tale of Experiments on Bug Prediction
A Tale of Experiments on Bug Prediction
Martin Pinzger
 
Code-Review-COW56-Meeting
Code-Review-COW56-MeetingCode-Review-COW56-Meeting
Code-Review-COW56-Meeting
Masud Rahman
 
Digital Signal Processinf (DSP) Course Outline
Digital Signal Processinf (DSP) Course OutlineDigital Signal Processinf (DSP) Course Outline
Digital Signal Processinf (DSP) Course Outline
Mohammad Sohai Khan Niazi
 
MBSE and Model-Based Testing with Capella
MBSE and Model-Based Testing with CapellaMBSE and Model-Based Testing with Capella
MBSE and Model-Based Testing with Capella
Obeo
 
CORRECT-ToolDemo-ASE2016
CORRECT-ToolDemo-ASE2016CORRECT-ToolDemo-ASE2016
CORRECT-ToolDemo-ASE2016
Masud Rahman
 
Applying static code analysis for domain-specific languages
Applying static code analysis for domain-specific languagesApplying static code analysis for domain-specific languages
Applying static code analysis for domain-specific languages
Iván Ruiz-Rube
 
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...paupo
 
Creating and Analyzing Source Code Repository Models - A Model-based Approach...
Creating and Analyzing Source Code Repository Models - A Model-based Approach...Creating and Analyzing Source Code Repository Models - A Model-based Approach...
Creating and Analyzing Source Code Repository Models - A Model-based Approach...
Markus Scheidgen
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
Lionel Briand
 
Btech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdfBtech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdf
AdityaBhateja1
 
Csmr10a.ppt
Csmr10a.pptCsmr10a.ppt
Example PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docxExample PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docx
cravennichole326
 
Not Only Statements: The Role of Textual Analysis in Software Quality
Not Only Statements: The Role of Textual Analysis in Software QualityNot Only Statements: The Role of Textual Analysis in Software Quality
Not Only Statements: The Role of Textual Analysis in Software Quality
Rocco Oliveto
 
130817 latifa guerrouj - context-aware source code vocabulary normalization...
130817   latifa guerrouj - context-aware source code vocabulary normalization...130817   latifa guerrouj - context-aware source code vocabulary normalization...
130817 latifa guerrouj - context-aware source code vocabulary normalization...
Ptidej Team
 
Model-based development of CANopen systems
Model-based development of CANopen systemsModel-based development of CANopen systems
Model-based development of CANopen systems
Alexios Lekidis
 
A Validation of Object-Oriented Design Metrics as Quality Indicators
A Validation of Object-Oriented Design Metrics as Quality IndicatorsA Validation of Object-Oriented Design Metrics as Quality Indicators
A Validation of Object-Oriented Design Metrics as Quality Indicatorsvie_dels
 
COSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical SystemsCOSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical Systems
Sebastiano Panichella
 
16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniquesMajong DevJfu
 
Example PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docxExample PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docx
elbanglis
 

Similar to Icsm19.ppt (20)

CORRECT-ICSE2016
CORRECT-ICSE2016CORRECT-ICSE2016
CORRECT-ICSE2016
 
A Tale of Experiments on Bug Prediction
A Tale of Experiments on Bug PredictionA Tale of Experiments on Bug Prediction
A Tale of Experiments on Bug Prediction
 
Code-Review-COW56-Meeting
Code-Review-COW56-MeetingCode-Review-COW56-Meeting
Code-Review-COW56-Meeting
 
Digital Signal Processinf (DSP) Course Outline
Digital Signal Processinf (DSP) Course OutlineDigital Signal Processinf (DSP) Course Outline
Digital Signal Processinf (DSP) Course Outline
 
MBSE and Model-Based Testing with Capella
MBSE and Model-Based Testing with CapellaMBSE and Model-Based Testing with Capella
MBSE and Model-Based Testing with Capella
 
CORRECT-ToolDemo-ASE2016
CORRECT-ToolDemo-ASE2016CORRECT-ToolDemo-ASE2016
CORRECT-ToolDemo-ASE2016
 
Applying static code analysis for domain-specific languages
Applying static code analysis for domain-specific languagesApplying static code analysis for domain-specific languages
Applying static code analysis for domain-specific languages
 
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...
Holistic Analysis and Optimization of Heterogeneous Fault-Tolerant Embedded S...
 
Creating and Analyzing Source Code Repository Models - A Model-based Approach...
Creating and Analyzing Source Code Repository Models - A Model-based Approach...Creating and Analyzing Source Code Repository Models - A Model-based Approach...
Creating and Analyzing Source Code Repository Models - A Model-based Approach...
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Btech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdfBtech IT Sem VII and VIII-1 (1).pdf
Btech IT Sem VII and VIII-1 (1).pdf
 
Csmr10a.ppt
Csmr10a.pptCsmr10a.ppt
Csmr10a.ppt
 
Example PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docxExample PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docx
 
Not Only Statements: The Role of Textual Analysis in Software Quality
Not Only Statements: The Role of Textual Analysis in Software QualityNot Only Statements: The Role of Textual Analysis in Software Quality
Not Only Statements: The Role of Textual Analysis in Software Quality
 
130817 latifa guerrouj - context-aware source code vocabulary normalization...
130817   latifa guerrouj - context-aware source code vocabulary normalization...130817   latifa guerrouj - context-aware source code vocabulary normalization...
130817 latifa guerrouj - context-aware source code vocabulary normalization...
 
Model-based development of CANopen systems
Model-based development of CANopen systemsModel-based development of CANopen systems
Model-based development of CANopen systems
 
A Validation of Object-Oriented Design Metrics as Quality Indicators
A Validation of Object-Oriented Design Metrics as Quality IndicatorsA Validation of Object-Oriented Design Metrics as Quality Indicators
A Validation of Object-Oriented Design Metrics as Quality Indicators
 
COSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical SystemsCOSMOS: DevOps for Complex Cyber-physical Systems
COSMOS: DevOps for Complex Cyber-physical Systems
 
16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniques
 
Example PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docxExample PseudocodeProblem Given a sorted array a with n elements .docx
Example PseudocodeProblem Given a sorted array a with n elements .docx
 

More from Yann-Gaël Guéhéneuc

Some Pitfalls with Python and Their Possible Solutions v1.0
Some Pitfalls with Python and Their Possible Solutions v1.0Some Pitfalls with Python and Their Possible Solutions v1.0
Some Pitfalls with Python and Their Possible Solutions v1.0
Yann-Gaël Guéhéneuc
 
Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
Yann-Gaël Guéhéneuc
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
Yann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Yann-Gaël Guéhéneuc
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
Yann-Gaël Guéhéneuc
 
ICSOC'21
ICSOC'21ICSOC'21
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
Yann-Gaël Guéhéneuc
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
Yann-Gaël Guéhéneuc
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
Yann-Gaël Guéhéneuc
 
Msr20.ppt
Msr20.pptMsr20.ppt
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt

More from Yann-Gaël Guéhéneuc (20)

Some Pitfalls with Python and Their Possible Solutions v1.0
Some Pitfalls with Python and Their Possible Solutions v1.0Some Pitfalls with Python and Their Possible Solutions v1.0
Some Pitfalls with Python and Their Possible Solutions v1.0
 
Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Recently uploaded

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 

Recently uploaded (20)

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 

Icsm19.ppt

  • 1. Deep Learning Anti-patterns from Code Metrics History 35th IEEE International Conference on Software Maintenance and Evolution September 30th - October 4th 2019 Cleveland, OH USA Antoine Barbez Foutse Khomh Yann-Gaël Guéhéneuc
  • 2. Problem Definition Anti-patterns "structures in the design that indicate violation of fundamental design principles and negatively impact design quality" "Certain structures in the code that suggest (sometimes they scream for) the possibility of refactoring." Suryanarayana et al. (2014) Fowler (1999) 1/16
  • 3. Problem Definition Detection - Rely on structural metrics, e.g., LOC, Cyclomatic Complexity … - Computed for each code component to be classified 1. Structural Anti-patterns Detection 2/16
  • 4. Problem Definition Detection 1. Structural Anti-patterns Detection - Rely on structural metrics, e.g., LOC, Cyclomatic Complexity … - Computed for each code component to be classified Example 1: Rule-based approaches Lanza and Marinescu (2007) 2/16
  • 5. Problem Definition Detection - Rely on structural metrics, e.g., LOC, Cyclomatic Complexity … - Computed for each code component to be classified Example 1: Rule-based approaches Example 2: Machine-learning-based approaches 1. Structural Anti-patterns Detection 2/16
  • 6. Problem Definition Detection - Anti-patterns affect how source code evolve over time when changes are applied to the system - Rely on an analysis of co-changes occurring between code components 2. Historical Anti-patterns Detection 3/16
  • 7. Problem Definition Detection - Anti-patterns affect how source code evolve over time when changes are applied to the system - Rely on an analysis of co-changes occurring between code components Example: HIST (Historical Information for Smell deTection) 2. Historical Anti-patterns Detection Palomba et al. (2013) 3/16
  • 8. Problem Definition Limitations Structural and historical detection techniques are complementary. HIST does not take into account the structural properties of the changes. 4/16
  • 9. Approach Convolutional Analysis of code Metrics Evolution Main idea: - Analyze the history of source code metrics - Use a Convolutional Neural Network to perform classification Relies on structural and historical information Processes changes at a code-level granularity A deep-learning-based approach 5/16
  • 10. Approach Input: example Let’s compute the history of the class Dog for three metrics: • Number of Methods Declared (NMD) • Number of Attributes Declared (NAD) • Lines Of Code (LOC) With an history length of Lh = 10 6/16
  • 11. Approach Input: example NMD NAD LOC 2 Master (commit N) 7/16
  • 12. Approach Input: example NMD NAD LOC 2 2 Master (commit N) 7/16
  • 13. Approach Input: example NMD NAD LOC 2 2 6 Master (commit N) 7/16
  • 14. Approach Input: example NMD NAD LOC 2 2 6 2 2 6 Commit N - 1 7/16
  • 15. Approach Input: example NMD NAD LOC 2 2 6 2 2 6 1 2 6 Commit N - 2 7/16
  • 16. Approach Input: example NMD NAD LOC 2 2 6 2 2 6 1 2 6 1 1 3 Commit N - 3 7/16
  • 17. Approach Input: example NMD NAD LOC 2 2 6 2 2 6 1 2 6 1 1 3 1 1 3 Commit N - 4 7/16
  • 18. Approach Input: example NMD NAD LOC 2 2 6 2 2 6 1 2 6 1 1 3 1 1 3 1 1 3 Commit N - 5 7/16
  • 19. Approach Input: example 404 File not found NMD NAD LOC 2 2 6 2 2 6 1 2 6 1 1 3 1 1 3 1 1 3 0 0 0 0 0 0 0 0 0 0 0 0 Commit N - 6 7/16
  • 21. Study Design God Class «  … one object with a lion’s share of the responsibilities, while most other objects only hold data or execute simple processes. » Brown et al. (1998) 9/16
  • 22. Study Design God Class «  … one object with a lion’s share of the responsibilities, while most other objects only hold data or execute simple processes. » Brown et al. (1998) Selected metrics: • ATFD (Access To Foreign Data) • NADC (Number of Associated Data Classes) • LCOM5 (Lack of COhesion in Methods) • NMD (Number of Methods Declared) • LOC (Lines Of Code) • WMC (Weighted Method Count) • NAD (Number of Attributes Declared) 9/16
  • 23. Study Design Studied Systems System #Class #God Class Android Opt Telephony 192 10 Android Support 109 4 Apache Ant 694 7 Apache Lucene 155 3 Apache Tomcat 925 5 Apache Xerces 512 15 ArgoUML 1230 22 Jedit 423 5 Total 4240 71 10/16
  • 24. Study Design Studied Systems Evaluation System #Class #God Class Android Opt Telephony 192 10 Android Support 109 4 Apache Ant 694 7 Apache Lucene 155 3 Apache Tomcat 925 5 Apache Xerces 512 15 ArgoUML 1230 22 Jedit 423 5 Total 4240 71 10/16
  • 25. Study Design Studied Systems Evaluation Training & Tuning System #Class #God Class Android Opt Telephony 192 10 Android Support 109 4 Apache Ant 694 7 Apache Lucene 155 3 Apache Tomcat 925 5 Apache Xerces 512 15 ArgoUML 1230 22 Jedit 423 5 Total 4240 71 10/16
  • 26. Study 1 Definition RQ1: To what extent historical values of source code metrics can improve detection performances? Approach: Monitor the performances achieved by CAME with different length of metrics history: Lh ∈ {1, 10, 50, 100, 250, 500, 1000} For each value of Lh: - Perform hyper-parameters tuning - Build and train 10 distinct CNNs - Retrieve mean and std of precision, recall and F-measure 11/16
  • 27. Study 1 Results RQ1: To what extent historical values of source code metrics can improve detection performances? 12/16
  • 28. Study 2 Definition RQ2: How does CAME compare to other static ML algorithms? • Decision Tree • Multi Layer Perceptron (MLP) • Support Vector Machine (SVM) 13/16
  • 29. Study 2 Definition RQ2: How does CAME compare to other static ML algorithms? RQ3: How does CAME compare to existing detection techniques? • Decision Tree • Multi Layer Perceptron (MLP) • Support Vector Machine (SVM) • DECOR Moha et al. (2010) • HIST Palomba et al. (2013) • JDeodorant Fokaefs et al. (2011) 13/16
  • 30. Study 2 Results Approaches Precision Recall F-measure Decision Tree 68 % 29 % 40 % MLP 41 % 86 % 56 % SVM 68 % 14 % 24 % CAME 71 % 86 % 77 % RQ2: How does CAME compare to other static ML algorithms? 14/16
  • 31. Study 2 Results Approaches Precision Recall F-measure DECOR 24 % 36 % 29 % HIST 20 % 43 % 27 % JDeodorant 4 % 57 % 8 % CAME 71 % 86 % 77 % RQ3: How does CAME compare to existing detection techniques? 15/16
  • 32. Study 2 References G. Suryanarayana, G. Samarthyam, T. Sharma, Refactoring for Software Design Smells: Managing Technical Debt, Morgan Kaufmann, 2014. W. J. Brown, R. C. Malveau, W. H. Brown, H. W. McCormick III, et T. J. Mowbray, Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis, 1st éd. John Wiley and Sons, March 1998. M. Fowler, Refactoring: Improving the Design of Existing Code. Boston, MA, USA:Addison-Wesley, 1999. F. Palomba, G. Bavota, M. D. Penta, R. Oliveto, A. D. Lucia, et D. Poshyvanyk, “Detecting bad smells in source code using change history information.” dans ASE, 2013, pp. 268–278. N. Moha, Y. Guéhéneuc, D. Laurence, et L. M. Anne-Franccoise, “Decor: A method for the specification and detection of code and design smells”, IEEE Transactions on Software Engineering (TSE), vol. 36, no. 1, pp. 20–36, 2010. M. Fokaefs, N. Tsantalis, E. Stroulia, et A. Chatzigeorgiou, “Jdeodorant: identification and application of extract class refactorings”, dans Software Engineering (ICSE), 2011 33rd International Conference on. IEEE, 2011, pp. 1037–1039. M. Lanza et R. Marinescu, Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Springer Science & Business Media, 2007. 16/16