22
Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

Embed Size (px)

Citation preview

Page 1: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

Détection et correction des défauts de conception

Démonstrateurs : Marouane Kessentini, Hassen grati

Cours ift3912, responsable du cours: Bruno Dufor

22/03/2010

Page 2: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

Joueur de référence Détecter les défauts

de ce joueur?

Calcul de similarité

Tout être différent, sortant de la norme, est considéré

comme fou. [Eric Cantona]

Page 3: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

Contexte• Défaut de conception

– des problèmes d'implémentation et de conception provenant de ''mauvais'' choix conceptuels [Brown et al., 1998]

Page 4: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

4

Exemples de défaut de conception: Blob

• Blob : “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 ” (Brown et al.’98)

Page 5: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

5

Exemple du blob

Page 6: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

6

Exemple du blob

Page 7: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

7

Exemple du blob

Page 8: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

8

Exemples de défaut de conception: Spaghetti code

• Spaghetti code : “Ad hoc software structure makes it difficult to extend and optimize code. ”

(Brown et al.’98)

Page 9: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

9

Exemples de défaut de conception: Functionnal

Decomposition• Functionnal decomposition : “ Procedural

design in an OO language” (Brown et al.’98)

Page 10: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

10

Contexte

Comment détecter les défauts de conception?

Page 11: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

11

Détection des défauts

Page 12: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

12

Détection des défauts• Plusieurs techniques utilisées

– Métriques (Moha et al. ’08, Marinescu et al. ’04)

– Visualisation (Dhambri et al. ’08, Langelier et. ’05)

– Méta-heuristiques (Harman et al. ’07, O’Keeffe et al. ’08)

• Limites– Listes exhaustives des défauts de

conception– Difficile de définir les défauts– Ordonner les défauts selon un degré de

risqueDeviance from Perfection is a Better Criterion than Closeness to Evil when Identifying Risky Code

Page 13: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

13

Contexte

Refactoring

Page 14: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

14

Refactoring

• JDT has actions for refactoring Java code

Page 15: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

15

Refactoring• Refactoring actions rewrite source code

– Within a single Java source file

– Across multiple interrelated Java source files

• Refactoring actions preserve program semantics– Does not alter what program does

– Just affects the way it does it

• Encourages higher code quality– Makes it easier to rewrite poor code

Page 16: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

16

Refactoring• Full preview of all ensuing code changes

– Programmer can veto individual changes

List of changes

“before” vs. “after”

Page 17: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

17

Refactoring• Growing catalog of refactoring

actions– Rename {field, method, class, package}– Move {field, method, class}– Extract method– Extract local variable– Inline local variable– …

Page 18: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

18

• Extract Method– Crée une nouvelle méthode encapsulant les éléments

sélectionnés, et remplace toutes les références à ces éléments (même ailleurs dans le code), par un appel vers cette méthode.cette fonction permet de rapidement nettoyer une

méthode trop longue en la découpant en éléments singuliers.

Page 19: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

19

• Rename– Renomme l'élément sélectionné.

• Move– Déplace l'élément sélectionné, par

exemple enlever la classe du paquetage actuel, et la place dans un autre paquetage

Page 20: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

20

• Change Method Signature– Modifie la signature de la méthode en cours, c'est-à-dire

ses droits d'accès (public / private / protected / default). Peuvent également être modifiés par cet assistant : le type du résultat, l'ordre, le nom et le type des paramètres

et les déclarations d'exceptions.

Page 21: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

21

• Extract Local Variable... – De la même manière que Extract Method, cette fonction

crée une nouvelle variable assignée à l'expression sélectionnée.

• Convert Local Variable to Field– Transforme une variable locale, définie dans une

méthode, en champ de classe.

Page 22: Détection et correction des défauts de conception Démonstrateurs : Marouane Kessentini, Hassen grati Cours ift3912, responsable du cours: Bruno Dufor 22/03/2010

22

• Push Down, Pull Up – Ces deux fonctions marchent dans le

même sens, mais avec des directions différentes : elles déplacent la sélection respectivement vers la sous-classe ou la superclasse actuelle.