lmo08a.ppt

27
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

Upload: ptidej-team

Post on 15-Jul-2015

78 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LMO08a.ppt

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

Moha © Génération automatique d’algorithmes de détection des défauts de conception 2

Contexte

Page 3: LMO08a.ppt

Moha © Génération automatique d’algorithmes de détection des défauts de conception 3

Contexte

Page 4: LMO08a.ppt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Moha © 25

Démonstration

Génération automatique d’algorithmes de détection des défauts de conception

Page 26: LMO08a.ppt

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

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