détection et correction des défauts de conception démonstrateurs : marouane kessentini, hassen...
TRANSCRIPT
![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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062622/551d9db7497959293b8db9c9/html5/thumbnails/22.jpg)
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.