lmo08a.ppt
TRANSCRIPT
![Page 1: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/1.jpg)
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, CanadaLIFL, INRIA Lille - Nord Europe / ADAM Team, Université de Lille, France
LMO’085-7 mars, 2008
![Page 2: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/2.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 2
Contexte
![Page 3: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/3.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 3
Contexte
![Page 4: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/4.jpg)
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 desdéfaillances dans les operations ”
* Certaines mauvaises odeurs peuvent être considérées comme défauts de haut niveau
Défauts de conception ?
≠
![Page 5: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/5.jpg)
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.
![Page 6: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/6.jpg)
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
![Page 7: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/7.jpg)
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
![Page 8: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/8.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 8
Method DECOR
Specification
Domain
Analysis
Detection
Processing
Validation
![Page 9: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/9.jpg)
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 derappel
![Page 10: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/10.jpg)
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 10
Method DECOR
![Page 11: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/11.jpg)
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 11
Method DECOR
![Page 12: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/12.jpg)
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
5Source 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
![Page 13: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/13.jpg)
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
5Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
![Page 14: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/14.jpg)
Moha ©
Specification
Domain
Analysis
Detection
Processing
Validation
Génération automatique d’algorithmes de détection des défauts de conception 14
Method DECOR
![Page 15: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/15.jpg)
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
![Page 16: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/16.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 16
Génération des algosOn 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
5Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
![Page 17: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/17.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 17
Génération des algosOn 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
5Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
![Page 18: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/18.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 18
Génération des algosOn 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
5Source 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
![Page 19: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/19.jpg)
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 algosOn 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
5Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 };
�Visiteur �Gabarit
![Page 20: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/20.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 20
Génération des algosOn 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
5Source 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 };
![Page 21: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/21.jpg)
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
5Source code
of the system
Marinescu (2004)
Munro (2005)
On each system
![Page 22: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/22.jpg)
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
![Page 23: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/23.jpg)
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
![Page 24: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/24.jpg)
Moha © 24
Expérimentations But : évaluer les algorithmes générés en terme de précision et rappel
Temps de détection
RappelPrécisionDé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
![Page 25: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/25.jpg)
Moha © 25
Démonstration
Génération automatique d’algorithmes de détection des défauts de conception
![Page 26: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/26.jpg)
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
![Page 27: LMO08a.ppt](https://reader031.vdocuments.us/reader031/viewer/2022020307/55a68ee21a28abbe7d8b48c6/html5/thumbnails/27.jpg)
Moha © Génération automatique d’algorithmes de détection des défauts de conception 27
Questions
Merci pour votre attention !
Contact: [email protected]
http://www-etud.iro.umontreal.ca/~mohanaou