SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Génération automatique d’algorithmes de
détection des défauts de conception
Naouel Moha, Foutse Khomh, Yann-Gaël Guéhéneuc,
Laurence Duchien, Anne-Françoise Le Meur
Ptidej Team, GEODES, Université de Montréal, Canada
LIFL, INRIA Lille - Nord Europe / ADAM Team, Université de Lille, France
LMO’08
5-7 mars, 2008
Moha © Génération automatique d’algorithmes de détection des défauts de conception 2
Contexte
Moha © Génération automatique d’algorithmes de détection des défauts de conception 3
Contexte
Moha © Génération automatique d’algorithmes de détection des défauts de conception 4
Patrons de conception sont de “bonnes” solutions à des
problèmes de conception récurrents
Défauts de conception (DCs)
sont de “mauvaises” solutions à des problèmes récurrents
2 catégories:
Problèmes de haut niveau (global) : antipatterns [Brown 98]
Problèmes de bas niveau (local) : mauvaises odeurs* [Fowler 99]
“ déviations de spécifications ou d’exigences qui peuvent entraîner des
défaillances dans les operations ”
* Certaines mauvaises odeurs peuvent être considérées comme
défauts de haut niveau
Défauts de conception ?
≠
Moha © Génération automatique d’algorithmes de détection des défauts de conception 5
Défauts de conception ?
2 exemples de défauts de conception [Brown 98]
Blob (God Class)
“ Procedural-style design leads to one object with a
lion’s share of the responsibilities while most other
objects only hold data or execute simple processes ”
Large classe contrôleur
Beaucoup de champs et méthodes avec une
faible cohésion*
Dépendent des données localisées dans des
classes de données associées
* À quel point les méthodes sont étroitement liées aux variables
d'instance de la classe.
Moha © Génération automatique d’algorithmes de détection des défauts de conception 6
2 exemples de défauts de conception [Brown 98]
Défauts de conception ?
Spaghetti Code
“ Ad hoc software structure makes it difficult to extend
and optimize code. ”
Pensée procédurale dans la programmation OO
Manque de structure : pas d’héritage, pas de
réutilisation, pas de polymorphisme
Longues méthodes sans paramètres avec une
faible cohésion
Noms des classes suggèrent une
programmation procédurale
Utilisation excessive de variables globales
Moha © Génération automatique d’algorithmes de détection des défauts de conception 7
Motivation
Pourquoi il est important de détecter les DCs ?
DCs atténuent la qualité des architectures OO et entravent leur
évolution et leur maintenance
La maintenance est coûteuse à cause des DCs [PER 92] : ajout,
debuggage, et évolution des fonctionnalités sont plus difficiles
Une bonne architecture logicielle sans DCs: plus facile à
comprendre, changer, et donc maintenir
Motivation
Atteindre un haut niveau de qualité logicielle
Réduire les coûts du développement logiciel et de maintenance
Moha © Génération automatique d’algorithmes de détection des défauts de conception 8
Method DECOR
Specification
Domain
Analysis
Detection
Processing
Validation
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 9
Method DECOR
Contributions
Génération automatique des algorithmes de détection
Évaluation des algorithmes générés en terme de précision et de
rappel
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 10
Method DECOR
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 11
Method DECOR
Moha ©
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
RULE_CARD : SpaghettiCode {
...
RULE: LongMethodMethodNoParameter { INTER LongMethod MethodNoParameter };
RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
RULE: MethodNoParameter { METRIC NMNOPARAM VERY_HIGH 10.0 };
...
RULE: NoInheritance { METRIC DIT 1 0.0 } ;
RULE: NoPolymorphism { STRUCT NO_POLYMORPHISM } ;
RULE: ProceduralNameGlobalVariable { UNION ProceduralName GlobalVariable };
RULE: ProceduralName { LEXIC CLASS_NAME (Make, Create, System, Exec) };
RULE: UseGlobalVariable { STRUCT USE_GLOBAL_VARIABLE };
} ;
12
Spécifications
SADSL (Software Architectural Defect Specification Language) [LMO’06]
Langage pour spécifier les DCs basé sur un méta-modèle
Génération automatique d’algorithmes de détection des défauts de conception
Moha © 13
Spécifications
Méta-modèle SADDL (Software Architectural Defect Definition Language)
Génération automatique d’algorithmes de détection des défauts de conception
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 14
Method DECOR
Moha ©
Specification
Domain
Analysis
Detection
Algorithm
Generation
Validation
Génération automatique d’algorithmes de détection des défauts de conception 15
Method DECOR
Moha © Génération automatique d’algorithmes de détection des défauts de conception 16
Génération des algos
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Moha © Génération automatique d’algorithmes de détection des défauts de conception 17
Génération des algos
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Moha © Génération automatique d’algorithmes de détection des défauts de conception 18
Génération des algos
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Plateforme SAD
- Méta-modèle pour représenter les programmes OO
- Un répertoire de métriques
- Des services pour analyser to analyse des relations
structurelles
- Des services pour appliquer des analyses
structurelles et lexicales
Complexité : O((c+op) X n)
- c : le nombre de propriétés
- op : le nombre d’opérateurs
- n : le nombre de classes
Moha ©
1 public class <CODESMELL>Detection
2 extends CodeSmellDetection
3 implements ICodeSmellDetection {
4 public Set performDetection() {
5 IClass c = iteratorOnClasses.next();
6 LOCofSetOfClasses.add(
7 Metrics.compute(<METRIC>, c));
8 ...
9 BoxPlot boxPlot = new BoxPlot(
10 <METRIC>ofSetOfClasses, <FUZZINESS>);
11 Map setOfOutliers =
12 boxPlot.<ORDINAL_VALUE>();
13 ...
14 suspiciousCodeSmells.add( new CodeSmell(
15 <CODESMELL>, setOfOutliers));
16 ...
17 return suspiciousCodeSmells;
18 }
Génération automatique d’algorithmes de détection des défauts de conception 19
Génération des algos
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
Visiteur Gabarit
Moha © Génération automatique d’algorithmes de détection des défauts de conception 20
Génération des algos
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Visiteur Code généré
RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
Moha ©
RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
21
Génération des algos
Box-plot pour les métriques de type ordinal
Génération automatique d’algorithmes de détection des défauts de conception
On all defects On each defect
1
Specification
2
Domain
Analysis
Vocabulary
Taxonomy
Operational
specifications
Brown et al. (1998)
Demeyer (2002)
Dudney (2003)
Fowler (1999)
Riel (1996)
Webster (1995)
Marinescu (2004)
Munro (2005)
Alikacem (2006)
Suspicious
classes
Text-based descriptions
of design defects
Marinescu (2004)
Alikacem (2006)
Travassos : manual detection (1999)
Tools: SmallLint, PMD, CROCOPAT
Detection
4
DECOR Method
Source code
of the system
Processing
3
Specifications Classes having
design defects
Validation
5
Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
Moha ©
Specification
Domain
Analysis
Detection
Algorithm
Generation
Validation
Génération automatique d’algorithmes de détection des défauts de conception 22
Method DECOR
Moha ©
Specification
Domain
Analysis
Detection
Algorithm
Generation
Validation
Génération automatique d’algorithmes de détection des défauts de conception 23
Method DECOR
Moha © 24
Expérimentations
But : évaluer les algorithmes générés en terme de précision et rappel
Temps de
détection
RappelPrécision
Défauts
détectés
Défauts
existants
Nbre de
classes
Défauts
2,45s100%88,6%44 (8,6%)39 (7,6%)
513
Blob
0,91s100%51,7%29 (5,6%)15 (2,9%)Functional Decomp.
0,23s100%60,5%76 (14,8%)46 (9,0%)Spaghetti Code
0,08s100%41,1%56 (10,9%)23 (4,5%)Swiss Army Knife
Génération automatique d’algorithmes de détection des défauts de conception
Xerces: 71,217LOC, 513 classes et 162 interfaces
Moha © 25
Démonstration
Génération automatique d’algorithmes de détection des défauts de conception
Moha © Génération automatique d’algorithmes de détection des défauts de conception 26
Conclusion
Method DECOR
Méthode pour générer des algorithmes de détection des DCs
Contributions
Processus explicite de génération des algorithmes de détection
Évaluation des algorithmes de détection en terme de précision et
de rappel
Travaux futurs
- Expérimentations sur d’autres systèmes et défauts
- Plus de flexibilité dans la génération de code en utilisant XML
- Intégrer les plateformes existantes
Moha © Génération automatique d’algorithmes de détection des défauts de conception 27
Questions
Merci pour votre attention !
Contact: mohanaou@iro.umontreal.ca
http://www-etud.iro.umontreal.ca/~mohanaou

Contenu connexe

Tendances

Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 
Cycle de vie d’un logiciel
Cycle de vie d’un logicielCycle de vie d’un logiciel
Cycle de vie d’un logicielMehdi Abed
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieMohammed Amine Mostefai
 
Traçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquesTraçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquescontactregiscanioncqfr
 

Tendances (7)

Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
Cycle de vie d’un logiciel
Cycle de vie d’un logicielCycle de vie d’un logiciel
Cycle de vie d’un logiciel
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
Traçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquesTraçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiques
 
Maintenance logicielle
Maintenance logicielleMaintenance logicielle
Maintenance logicielle
 
Modèle en cascade
Modèle en cascadeModèle en cascade
Modèle en cascade
 

Similaire à Lmo08a.ppt

1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppthbadir
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logicielMohamed Diallo
 
Comparaison de outils mda
Comparaison de outils mdaComparaison de outils mda
Comparaison de outils mdaShili Mohamed
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction MansouriMansouri Khalifa
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxssuserec8501
 
130621 wei wu - mofae - multi-objective optimization approach to framework ...
130621   wei wu - mofae - multi-objective optimization approach to framework ...130621   wei wu - mofae - multi-objective optimization approach to framework ...
130621 wei wu - mofae - multi-objective optimization approach to framework ...Ptidej Team
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développementsLeClubQualiteLogicielle
 

Similaire à Lmo08a.ppt (20)

Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
Comparaison de outils mda
Comparaison de outils mdaComparaison de outils mda
Comparaison de outils mda
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
UML Part1-Introduction Mansouri
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction Mansouri
 
PrésQL.pdf
PrésQL.pdfPrésQL.pdf
PrésQL.pdf
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
 
Lmo06.ppt
Lmo06.pptLmo06.ppt
Lmo06.ppt
 
Agl2012
Agl2012Agl2012
Agl2012
 
130621 wei wu - mofae - multi-objective optimization approach to framework ...
130621   wei wu - mofae - multi-objective optimization approach to framework ...130621   wei wu - mofae - multi-objective optimization approach to framework ...
130621 wei wu - mofae - multi-objective optimization approach to framework ...
 
Qualite1
Qualite1Qualite1
Qualite1
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 
merise-slides.pdf
merise-slides.pdfmerise-slides.pdf
merise-slides.pdf
 
Uml partie 1
Uml partie 1Uml partie 1
Uml partie 1
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements
 

Plus de 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.5Yann-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.1Yann-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 22Yann-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.3Yann-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.9Yann-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 ConsequencesYann-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
 
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.1Yann-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.6Yann-Gaël Guéhéneuc
 

Plus de Yann-Gaël Guéhéneuc (20)

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
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Lmo08a.ppt

  • 1. Génération automatique d’algorithmes de détection des défauts de conception Naouel Moha, Foutse Khomh, Yann-Gaël Guéhéneuc, Laurence Duchien, Anne-Françoise Le Meur Ptidej Team, GEODES, Université de Montréal, Canada LIFL, INRIA Lille - Nord Europe / ADAM Team, Université de Lille, France LMO’08 5-7 mars, 2008
  • 2. Moha © Génération automatique d’algorithmes de détection des défauts de conception 2 Contexte
  • 3. Moha © Génération automatique d’algorithmes de détection des défauts de conception 3 Contexte
  • 4. Moha © Génération automatique d’algorithmes de détection des défauts de conception 4 Patrons de conception sont de “bonnes” solutions à des problèmes de conception récurrents Défauts de conception (DCs) sont de “mauvaises” solutions à des problèmes récurrents 2 catégories: Problèmes de haut niveau (global) : antipatterns [Brown 98] Problèmes de bas niveau (local) : mauvaises odeurs* [Fowler 99] “ déviations de spécifications ou d’exigences qui peuvent entraîner des défaillances dans les operations ” * Certaines mauvaises odeurs peuvent être considérées comme défauts de haut niveau Défauts de conception ? ≠
  • 5. Moha © Génération automatique d’algorithmes de détection des défauts de conception 5 Défauts de conception ? 2 exemples de défauts de conception [Brown 98] Blob (God Class) “ Procedural-style design leads to one object with a lion’s share of the responsibilities while most other objects only hold data or execute simple processes ” Large classe contrôleur Beaucoup de champs et méthodes avec une faible cohésion* Dépendent des données localisées dans des classes de données associées * À quel point les méthodes sont étroitement liées aux variables d'instance de la classe.
  • 6. Moha © Génération automatique d’algorithmes de détection des défauts de conception 6 2 exemples de défauts de conception [Brown 98] Défauts de conception ? Spaghetti Code “ Ad hoc software structure makes it difficult to extend and optimize code. ” Pensée procédurale dans la programmation OO Manque de structure : pas d’héritage, pas de réutilisation, pas de polymorphisme Longues méthodes sans paramètres avec une faible cohésion Noms des classes suggèrent une programmation procédurale Utilisation excessive de variables globales
  • 7. Moha © Génération automatique d’algorithmes de détection des défauts de conception 7 Motivation Pourquoi il est important de détecter les DCs ? DCs atténuent la qualité des architectures OO et entravent leur évolution et leur maintenance La maintenance est coûteuse à cause des DCs [PER 92] : ajout, debuggage, et évolution des fonctionnalités sont plus difficiles Une bonne architecture logicielle sans DCs: plus facile à comprendre, changer, et donc maintenir Motivation Atteindre un haut niveau de qualité logicielle Réduire les coûts du développement logiciel et de maintenance
  • 8. Moha © Génération automatique d’algorithmes de détection des défauts de conception 8 Method DECOR Specification Domain Analysis Detection Processing Validation
  • 9. Moha © Specification Domain Analysis Detection Processing Validation Génération automatique d’algorithmes de détection des défauts de conception 9 Method DECOR Contributions Génération automatique des algorithmes de détection Évaluation des algorithmes générés en terme de précision et de rappel
  • 10. Moha © Specification Domain Analysis Detection Processing Validation Génération automatique d’algorithmes de détection des défauts de conception 10 Method DECOR
  • 11. Moha © Specification Domain Analysis Detection Processing Validation Génération automatique d’algorithmes de détection des défauts de conception 11 Method DECOR
  • 12. Moha © On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system RULE_CARD : SpaghettiCode { ... RULE: LongMethodMethodNoParameter { INTER LongMethod MethodNoParameter }; RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; RULE: MethodNoParameter { METRIC NMNOPARAM VERY_HIGH 10.0 }; ... RULE: NoInheritance { METRIC DIT 1 0.0 } ; RULE: NoPolymorphism { STRUCT NO_POLYMORPHISM } ; RULE: ProceduralNameGlobalVariable { UNION ProceduralName GlobalVariable }; RULE: ProceduralName { LEXIC CLASS_NAME (Make, Create, System, Exec) }; RULE: UseGlobalVariable { STRUCT USE_GLOBAL_VARIABLE }; } ; 12 Spécifications SADSL (Software Architectural Defect Specification Language) [LMO’06] Langage pour spécifier les DCs basé sur un méta-modèle Génération automatique d’algorithmes de détection des défauts de conception
  • 13. Moha © 13 Spécifications Méta-modèle SADDL (Software Architectural Defect Definition Language) Génération automatique d’algorithmes de détection des défauts de conception On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system
  • 14. Moha © Specification Domain Analysis Detection Processing Validation Génération automatique d’algorithmes de détection des défauts de conception 14 Method DECOR
  • 15. Moha © Specification Domain Analysis Detection Algorithm Generation Validation Génération automatique d’algorithmes de détection des défauts de conception 15 Method DECOR
  • 16. Moha © Génération automatique d’algorithmes de détection des défauts de conception 16 Génération des algos On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system
  • 17. Moha © Génération automatique d’algorithmes de détection des défauts de conception 17 Génération des algos On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system
  • 18. Moha © Génération automatique d’algorithmes de détection des défauts de conception 18 Génération des algos On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system Plateforme SAD - Méta-modèle pour représenter les programmes OO - Un répertoire de métriques - Des services pour analyser to analyse des relations structurelles - Des services pour appliquer des analyses structurelles et lexicales Complexité : O((c+op) X n) - c : le nombre de propriétés - op : le nombre d’opérateurs - n : le nombre de classes
  • 19. Moha © 1 public class <CODESMELL>Detection 2 extends CodeSmellDetection 3 implements ICodeSmellDetection { 4 public Set performDetection() { 5 IClass c = iteratorOnClasses.next(); 6 LOCofSetOfClasses.add( 7 Metrics.compute(<METRIC>, c)); 8 ... 9 BoxPlot boxPlot = new BoxPlot( 10 <METRIC>ofSetOfClasses, <FUZZINESS>); 11 Map setOfOutliers = 12 boxPlot.<ORDINAL_VALUE>(); 13 ... 14 suspiciousCodeSmells.add( new CodeSmell( 15 <CODESMELL>, setOfOutliers)); 16 ... 17 return suspiciousCodeSmells; 18 } Génération automatique d’algorithmes de détection des défauts de conception 19 Génération des algos On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; Visiteur Gabarit
  • 20. Moha © Génération automatique d’algorithmes de détection des défauts de conception 20 Génération des algos On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system Visiteur Code généré RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
  • 21. Moha © RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; 21 Génération des algos Box-plot pour les métriques de type ordinal Génération automatique d’algorithmes de détection des défauts de conception On all defects On each defect 1 Specification 2 Domain Analysis Vocabulary Taxonomy Operational specifications Brown et al. (1998) Demeyer (2002) Dudney (2003) Fowler (1999) Riel (1996) Webster (1995) Marinescu (2004) Munro (2005) Alikacem (2006) Suspicious classes Text-based descriptions of design defects Marinescu (2004) Alikacem (2006) Travassos : manual detection (1999) Tools: SmallLint, PMD, CROCOPAT Detection 4 DECOR Method Source code of the system Processing 3 Specifications Classes having design defects Validation 5 Source code of the system Marinescu (2004) Munro (2005) On each system
  • 22. Moha © Specification Domain Analysis Detection Algorithm Generation Validation Génération automatique d’algorithmes de détection des défauts de conception 22 Method DECOR
  • 23. Moha © Specification Domain Analysis Detection Algorithm Generation Validation Génération automatique d’algorithmes de détection des défauts de conception 23 Method DECOR
  • 24. Moha © 24 Expérimentations But : évaluer les algorithmes générés en terme de précision et rappel Temps de détection RappelPrécision Défauts détectés Défauts existants Nbre de classes Défauts 2,45s100%88,6%44 (8,6%)39 (7,6%) 513 Blob 0,91s100%51,7%29 (5,6%)15 (2,9%)Functional Decomp. 0,23s100%60,5%76 (14,8%)46 (9,0%)Spaghetti Code 0,08s100%41,1%56 (10,9%)23 (4,5%)Swiss Army Knife Génération automatique d’algorithmes de détection des défauts de conception Xerces: 71,217LOC, 513 classes et 162 interfaces
  • 25. Moha © 25 Démonstration Génération automatique d’algorithmes de détection des défauts de conception
  • 26. Moha © Génération automatique d’algorithmes de détection des défauts de conception 26 Conclusion Method DECOR Méthode pour générer des algorithmes de détection des DCs Contributions Processus explicite de génération des algorithmes de détection Évaluation des algorithmes de détection en terme de précision et de rappel Travaux futurs - Expérimentations sur d’autres systèmes et défauts - Plus de flexibilité dans la génération de code en utilisant XML - Intégrer les plateformes existantes
  • 27. Moha © Génération automatique d’algorithmes de détection des défauts de conception 27 Questions Merci pour votre attention ! Contact: mohanaou@iro.umontreal.ca http://www-etud.iro.umontreal.ca/~mohanaou