LMO08a.ppt

401 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
401
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

LMO08a.ppt

  1. 1. Génération automatique d’algorithmes de détection des défauts de conceptionNaouel 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. 2. ContexteMoha © Génération automatique d’algorithmes de détection des défauts de conception 2
  3. 3. ContexteMoha © Génération automatique d’algorithmes de détection des défauts de conception 3
  4. 4. Défauts de conception ? 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 niveauMoha © Génération automatique d’algorithmes de détection des défauts de conception 4
  5. 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 dinstance de la classe.Moha © Génération automatique d’algorithmes de détection des défauts de conception 5
  6. 6. Défauts de conception ? 2 exemples de défauts de conception [Brown 98] 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 globalesMoha © Génération automatique d’algorithmes de détection des défauts de conception 6
  7. 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 maintenanceMoha © Génération automatique d’algorithmes de détection des défauts de conception 7
  8. 8. Method DECOR Specification Processing Validation Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 8
  9. 9. Method DECOR Specification Processing Validation Detection Analysis Domain Contributions Génération automatique des algorithmes de détection Évaluation des algorithmes générés en terme de précision et de rappelMoha © Génération automatique d’algorithmes de détection des défauts de conception 9
  10. 10. Method DECOR Specification Processing Validation Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 10
  11. 11. Method DECOR Specification Processing Validation Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 11
  12. 12. DECOR MethodSpécifications On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPATSADSL (Software Architectural Defect Specification Language) [LMO’06] Langage pour spécifier les DCs basé sur un méta-modèle 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 }; } ;Moha © Génération automatique d’algorithmes de détection des défauts de conception 12
  13. 13. DECOR Method Spécifications On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPATMéta-modèle SADDL (Software Architectural Defect Definition Language)Moha © Génération automatique d’algorithmes de détection des défauts de conception 13
  14. 14. Method DECOR Specification Processing Validation Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 14
  15. 15. Method DECOR Specification Generation Validation Algorithm Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 15
  16. 16. DECOR MethodGénération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPATMoha © Génération automatique d’algorithmes de détection des défauts de conception 16
  17. 17. DECOR MethodGénération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPATMoha © Génération automatique d’algorithmes de détection des défauts de conception 17
  18. 18. DECOR Method Génération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT Complexité : O((c+op) X n) Plateforme SAD- c : le nombre de propriétés - Méta-modèle pour représenter les programmes OO- op : le nombre d’opérateurs - Un répertoire de métriques- n : le nombre de classes - Des services pour analyser to analyse des relations structurelles - Des services pour appliquer des analyses structurelles et lexicalesMoha © Génération automatique d’algorithmes de détection des défauts de conception 18
  19. 19. DECOR MethodGénération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; 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 } Visiteur GabaritMoha © Génération automatique d’algorithmes de détection des défauts de conception 19
  20. 20. DECOR MethodGénération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; Visiteur Code généréMoha © Génération automatique d’algorithmes de détection des défauts de conception 20
  21. 21. DECOR MethodGénération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; Box-plot pour les métriques de type ordinalMoha © Génération automatique d’algorithmes de détection des défauts de conception 21
  22. 22. Method DECOR Specification Generation Validation Algorithm Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 22
  23. 23. Method DECOR Specification Generation Validation Algorithm Detection Analysis DomainMoha © Génération automatique d’algorithmes de détection des défauts de conception 23
  24. 24. ExpérimentationsBut : évaluer les algorithmes générés en terme de précision et rappelXerces: 71,217LOC, 513 classes et 162 interfaces Nbre de Défauts Défauts Temps de Défauts Précision Rappel classes existants détectés détectionBlob 39 (7,6%) 44 (8,6%) 88,6% 100% 2,45sFunctional Decomp. 15 (2,9%) 29 (5,6%) 51,7% 100% 0,91s 513Spaghetti Code 46 (9,0%) 76 (14,8%) 60,5% 100% 0,23sSwiss Army Knife 23 (4,5%) 56 (10,9%) 41,1% 100% 0,08sMoha © Génération automatique d’algorithmes de détection des défauts de conception 24
  25. 25. DémonstrationMoha © Génération automatique d’algorithmes de détection des défauts de conception 25
  26. 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 existantesMoha © Génération automatique d’algorithmes de détection des défauts de conception 26
  27. 27. Questions Contact: mohanaou@iro.umontreal.ca http://www-etud.iro.umontreal.ca/~mohanaou Merci pour votre attention !Moha © Génération automatique d’algorithmes de détection des défauts de conception 27

×