SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Une taxonomie et un métamodèle pour la détection des
défauts de conception
Naouel Moha – Duc-loc Huynh – Yann-Gaël Guéhéneuc
GEODES – Groupe de recherche sur les systèmes
ouverts et distribués et en génie logiciel expérimental
Université de Montréal
{mohanaou, huynhduc, guehene}@iro.umontreal.ca
LMO 2006
Moha et al. 1/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Plan
Objectifs de notre travail
Modéliser les défauts de conception afin de pouvoir les détecter automatiquement
dans le code.
1 Introduction
2 Méthodologie (5 phases)
3 Phases 1 et 2 : analyse et taxonomie
4 Phase 3 : métamodélisation
5 Phases 4 et 5 : modélisation et validation
6 Conclusion
Moha et al. 2/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les défauts de conception
Défauts de conception vs. Patrons de conception
“Mauvaises” solutions à des problèmes récurrents dans les architectures à objets
Problèmes
Pas de représentation précise et structurée
Sous forme de descriptions textuelles sujettes à interprétation
Difficile de les détecter précisément et efficacement
Solution
Représentation précise et structurée des défauts de conception basée sur un
métamodèle à partir d’une taxonomie des défauts
Moha et al. 3/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Motivations
Pourquoi détecter les défauts de conception ?
Améliorer la qualité des architectures à objets
Faciliter l’évolution
Réduire les coûts de maintenance
Pourquoi une taxonomie ?
Confusion entre : défauts, anti-patrons, problèmes, mauvaises odeurs, anomalies, etc.
Définir, comparer et classer les défauts
Pourquoi un métamodèle ?
Limite les ambiguïtés en structurant les concepts
Facilite le développement d’algorithmes et d’outils
Pourquoi une méthodologie ?
Définir une démarche systématique à appliquer pour la représentation des défauts
Peut être appliquée à d’autres spécifications
Moha et al. 4/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 5/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Blob
DataClass1
D1_attr
getD1_attr()
setD1_attr()
DataClass2
D2_attr1
D2_attr2
getD2_attr1()
setD2_attr1()
getD2_attr2()
setD2_attr2()
ControllerClass
C_attr1 : Data1
C_attr2 : Data2
C_attr3
C_attr4
C_attr5
...
m1(D : Data1)
m2(D: Data2)
m3() {... m1(this.C_attr1)...}
m4() {... m2(this.C_attr2)...}
m5() {...uses this.C_attr3...}
m6(D : Data1)
m7(D : Data2)
.
.
.
.
.
.
.
m31() {...uses this.C_attr3...}
m32() {...m8()...}
m33() {...}
m34() {...}
m35() {...}
DataClass3
D3_attr
getD3_attr()
setD3_attr()
DataClass4
D4_attr
getD4_attr()
setD4_attr()
DataClass5
D5_attr
getD5_attr()
setD5_attr()
Moha et al. 6/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
RULE_CARD : Blob {
RULE : Blob {ASSOC: associated FROM: ControllerClass ONE TO: DataClass MANY } ;
RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ;
RULE : LargeClassLowCohesion {INTER LargeClass ClassLowCohesion } ;
RULE : LargeClass {INTER (METRIC: NM, HIGH) (METRIC: NA, HIGH) } ;
RULE : ClassLowCohesion {(METRIC: LCOM, HIGH) } ;
RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Controller}) } ;
RULE : DataClass {INTER (STRUCT: METHOD, Accessor) (METRIC: LCOM, LOW) } ;
} ;
Phase 1 : analyse
Description littéraire → Synthétique
Moha et al. 7/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 8/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 9/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 10/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Phase 4 : modélisation
Modèle obtenu pour le Blob
-get ( )
-set ( )
Accessor Field MethodField
-high
Cohesion
Controller ClassData Class
Method
-low
Cohesion
Blob
**
* 1
many many
1
Moha et al. 11/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 12/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Phases 1 et 2 : analyse et taxonomie
Phase 1 : Analyse
Extraction des concepts clefs
Spécification des fiches de règles
Phase 2 : Taxonomie
Terminologie et classification
Les défauts de patrons
Les anti-patrons
Les symptômes
Carte des défauts
Moha et al. 13/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les défauts de patrons
Terminologie
Les défauts de patrons sont de mauvaises applications des solutions des patrons
de conception [MOH 05c]
Classification
2 types :
1 Les patrons déformés
2 Les patrons dégradés
Basée sur la classification de Gamma et al.
DesignPatternDefect
Degraded
Distorted
Pattern
Creational
Structural
Behavioral
Singleton
Builder
FactoryMethod
Prototype
AbstractFactory
Moha et al. 14/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les anti-patrons [BRO 98]
Terminologie
“Mauvaises” solutions à des problèmes récurrents dans les architectures à objets,
dont l’utilisation a des effets négatifs sur la qualité
AntiPattern
Inter-Class
Intra-Class
Structural
Behavioral
Semantic
Blob
Poltergeist
DataVision
LavaFlow
SpaghettiCode
Cut&Paste Programming
Functional Decomposition
Structural
Behavioral
Semantic
MultiService
TinyService
TooMuchCode
SwissArmyKnife
Stovepipe
Moha et al. 15/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les symptômes ou mauvaises odeurs
Terminologie
Indicateurs de la présence possible de défauts
Structures dans le code source qui suggèrent la possibilité d’une restructuration
du code [FOW 99]
Exemples : code dupliqué, larges classes & longues méthodes
BadSmell
Inter-Class
Intra-Class
Structural
Behavioral
Semantic
Semantic
Behavioral
Structural
Transient Associations
Stateless
Dead Code
Unjustified Code
ShortDuration
Comments
Duplicated Code
ShotgunSurgery
Message Chain
LongMethod
Divergent Change
LargeClass
DataClassMoha et al. 16/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Carte des défauts de conception
Relations entre les défauts de conception
Blob
linked
LavaFlow
DeadCode
has
has
CommentsLack of
documentation
{TODO, To be
replaced, In Flux}
Poltergeist
is
Message
Chain UnjustifiedCode
has
LargeClass
is
has
Spaghetti
Code
is
Process
Oriented
is
DataClass
ShortDuration
SingleAction
does
Complex
is
No Polymorphism
has No Inheritance
has
has
Low Cohesion
Class & Global
Variables
has
SwissArmy
Knife
LargeInterface
is
Signatures
has
have
Abstraction
relates
Moha et al. 17/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Phase 3 : Métamodélisation
PADL (Pattern and Abstract-level Description Language)
Décrit la structure des programmes OO et les patrons de conception [ALB 02]
SADDL étend PADL (Software Architectural Defects Description Language)
Décrit les défauts de conception
SAD
AntiPattern
BadSmell
AntiPatternsRepository
related
0..*
0..*
0..*
Entity
InterfaceClass
+attachTo(Element)()
Element
Assoc FieldMethod Comment
ClassVariable GlobalVariable
0..*
0..*
0..10..*
DelegatingMethod
0..1
targetAssoc
targetEntity
0..*
+compare(Pattern)()
Pattern
Observer Composite
0..*
related
Signature
0..*
-name
-visibility
RootElement
inherit
Role
Abstraction
related0..*
0..* 0..*
Composition Agregation
Accessor
has same
name
0..* Parameter
Coupling
0..*
Cohesion
shouldimplement
declares
0..* Relationshipcontains 0..*
targets
DesignPatternDefect
resemble
0..*
1..*
ElemSADDL
ElemPADL
Légende
Élément du métamodèle SADDL
Élément du métamodèle PADL
Moha et al. 18/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Phases 4-5 : Modélisation et validation
Modélisation
Instancier des défauts de conception à partir de SADDL sous forme de modèles
Quinzaine de défauts dont une dizaine d’anti-patrons
Validation
Modèles ↔ Fiches
Corriger et enrichir le métamodèle
Inférer les algorithmes de détection
Moha et al. 19/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les défauts de patron
+Attach(Observer)()
+Detach(Observer)()
+Notify()()
Subject
+GetState()
+SetState()
-subjectState
ConcreteSubject
Observer
+Update()
-observerState
ConcreteObserver
observers
subject
(a) Patron Observer
+GetState()
+SetState()
+Attach(Observer)()
+Detach(Observer)()
+Notify()()
-subjectState
ConcreteSubject
Observer
+Update()
-observerState
ConcreteObserver
observers
subject
(b) Patron déformé
FIG.: Le patron Observer et son patron déformé
Moha et al. 20/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les anti-patrons
Controller Class
Interface
Method
-low
Cohesion
Signature
SwissArmyKnife
many
implements
implements
many
1
(a) Modèle
RULE_CARD : SwissArmyKnife {
RULE : SwissArmyKnife {AGGREG: associated FROM: Interface ONE TO: Signature MANY} ;
RULE : Interface {IMPL: ControllerClass } ;
RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ;
RULE : LargeClassLowCohesion {INTER (METRIC: NM, HIGH) (METRIC: LCOM, HIGH)} ;
RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver,
Controller}) } ;
RULE : Signature {(METRIC: NM, HIGH) } ;
} ;
(b) Fiche de règles
FIG.: Le couteau suisse
Moha et al. 21/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Les symptômes
Class
-high
Coupling1..*
1
Shotgun Surgery
1
(a) Shotgun Surgery
MethodClass
1..*
-low
Cohesion1..*
1
Divergent Change
1
(b) Divergent Change
FIG.: Les modèles du Shotgun Surgery et du Divergent Change
Moha et al. 22/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et
Classification
Entity
InterfaceClass Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefectAntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèle PADL
Métamodèle SADDL
Controller Class
Interface
Method
-low
CohesionSignature
Abstraction
SwissArmyKnife
Modèles de défauts
de conception
Description textuelle
1 Analyse
2 Taxonomie
4
5
Modélisation
3 Métamodèlisation
(b) Instancier
Définir
et classifier
Intégrer
Intégrer
(a) Intégrer
(c)Vérifier
Fiches de
règles
(d) A
ffiner
et corrigerValidation
Détection
Inférer
Algorithmes
Moha et al. 23/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Experimentations
Objectif
Montrer l’utilité de notre méthodologie et de son implémentation (métamodèle SADDL)
Hypothèses
Possibilité de spécifier un grand nombre de défauts de conception
La précision de nos algos est raisonnable
Objets
5 programmes open source entre 140 et 1200 classes.
Traitement
4 anti-patrons : Blob, Functional decomposition, Swiss Army Knife, Spaghetti
Code
Implémentation des algorithmes de détection
Validation manuelle : Précision vs. Rappel
Moha et al. 24/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Détection des défauts de conception
Blob
ArgoUML Azureus GanttProject PMD QuickUML Total
113KLOC 192KLOC 21KLOC 42KLOC 9KLOC
1230c 1449c 188c 423c 142c
Effectifs 91 143 19 15 3 271
Precisions
70/91 82/143 10/19 3/15 1/3 166/271
= 76.9% = 57.3% = 52.6% = 20% = 33.3% 61.5%
Swiss Army Knife
ArgoUML Azureus GanttProject PMD QuickUML Total
Effectifs 2 22 0 0 0 24
Precisions
2/2 22/22 - - - 24/24
= 100% = 100% = -% = -% = -% = 100%
Functional Decomposition
ArgoUML Azureus GanttProject PMD QuickUML Total
Effectifs 14 22 9 13 1 59
Precisions
9/14 19/22 0 0 0 28/59
= 64.2% = 86.3% = 0% = 0% = 0% = 47.6%
Spaghetti Code
ArgoUML Azureus GanttProject PMD QuickUML Total
Effectifs 26 35 8 11 1 81
Precisions
21/26 29/35 6 6 0 62/81
= 80.7% = 82.8% = 75% = 54.5% = 0% = 76.6%
Moha et al. 25/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Conclusion
Objectifs de notre travail
Modéliser les défauts de conception afin de pouvoir les détecter automatiquement
dans le code.
Objectifs atteints
Manque de travaux sur la spécification des défauts
Nécessiter de représentations précises et structurées
Une taxonomie et un métamodèle
Fournir un cadre de développement de techniques et d’outils pour la détection des
défauts
À faire...
Affiner la description des règles (règles comportementales)
Augmenter notre base de défauts
Améliorer la précision de nos algorithmes de détection
Développer des techniques de correction
Moha et al. 26/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion
Références
ALB 02 ALBIN-AMIOT H., COINTE P., GUÉHÉNEUC Y.-G., Un méta-modèle pour coupler application et détection des design patterns,
DAO M., HUCHARD M., Eds., actes du 8e colloque Langages et Modèles à Objets, vol. 8, numéro 1–2/2002 de RSTI L’objet,
Hermès Science Publications, janvier 2002, p. 41–58.
BRO 98 BROWN W. J., MALVEAU R. C., BROWN W. H., III H. W. M., MOWBRAY T. J., Anti Patterns : Refactoring Software, Architectures,
and Projects in Crisis, John Wiley and Sons, 1st édition, March 1998.
FOW 99 FOWLER M., Refactoring – Improving the Design of Existing Code, Addison- Wesley, 1st édition, June 1999.
GUÉ 01 GUÉHÉNEUC Y.-G., ALBIN-AMIOT H., Using Design Patterns and Constraints to Automate the Detection and Correction of
Inter-Class Design Defects, LI Q., RIEHLE R., POUR G., MEYER B., Eds., proceedings of the 39th conference on the Technology
of Object-Oriented Languages and Systems, IEEE Computer Society Press, July 2001, p. 296 ˝U 305.
GAM 94 GAMMA E., HELM R., JOHNSON R., VLISSIDES J., Design Patterns – Elements of Reusable Object-Oriented Software,
Addison-Wesley, 1st édition, 1994.
MOH 05c MOHA N., HUYNH D.-L., GUÉHÉNEUC Y.-G., A Taxonomy and a First Study of Design Pattern Defects, ANTONIOL G.,
GUÉHÉNEUC Y.-G., Eds., Proceedings of the STEP International Workshop on Design Pattern Theory and Practice (IWDPTP05),
September 2005.
Moha et al. 27/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception

Contenu connexe

Similaire à Lmo06.ppt

Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008
Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008
Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008camillegrange
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4Emmanuel Hugonnet
 
Audit technique de code
Audit technique de codeAudit technique de code
Audit technique de codeMehdi TAZI
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats Gilbert Paquette
 
Learning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéLearning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéSerge Garlatti
 
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v160 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16CERTyou Formation
 
Comparaison de outils mda
Comparaison de outils mdaComparaison de outils mda
Comparaison de outils mdaShili Mohamed
 
Normes et qualité et Trac
Normes et qualité et TracNormes et qualité et Trac
Normes et qualité et TracnaPila
 
Application lifecycle management
Application lifecycle managementApplication lifecycle management
Application lifecycle managementKlee Group
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et traccharlottejallut
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et traccharlottejallut
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et traccharlottejallut
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests typemadspock
 
12-Cours de Géniel Logiciel
12-Cours de Géniel Logiciel12-Cours de Géniel Logiciel
12-Cours de Géniel Logiciellauraty3204
 
Introduction aux systèmes de recommandation part 3.pptx
Introduction aux systèmes  de recommandation part 3.pptxIntroduction aux systèmes  de recommandation part 3.pptx
Introduction aux systèmes de recommandation part 3.pptxbahija babzine
 

Similaire à Lmo06.ppt (20)

Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008
Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008
Conceptualisation du construit d'utilisabilité - HEC Montréal - Février 2008
 
Amdec 6 annexes
Amdec 6 annexesAmdec 6 annexes
Amdec 6 annexes
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
 
Audit technique de code
Audit technique de codeAudit technique de code
Audit technique de code
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats
 
Learning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et RéalitéLearning Analytics : entre Promesses et Réalité
Learning Analytics : entre Promesses et Réalité
 
Amdec
AmdecAmdec
Amdec
 
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v160 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
0 a005g formation-introduction-a-ibm-spss-modeler-et-au-data-mining-v16
 
Presentation Dess Ebi
Presentation Dess EbiPresentation Dess Ebi
Presentation Dess Ebi
 
Comparaison de outils mda
Comparaison de outils mdaComparaison de outils mda
Comparaison de outils mda
 
Tests de performances
Tests de performancesTests de performances
Tests de performances
 
Normes et qualité et Trac
Normes et qualité et TracNormes et qualité et Trac
Normes et qualité et Trac
 
Application lifecycle management
Application lifecycle managementApplication lifecycle management
Application lifecycle management
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et trac
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et trac
 
Normes et qualité et trac
Normes et qualité et tracNormes et qualité et trac
Normes et qualité et trac
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests type
 
12-Cours de Géniel Logiciel
12-Cours de Géniel Logiciel12-Cours de Géniel Logiciel
12-Cours de Géniel Logiciel
 
Introduction aux systèmes de recommandation part 3.pptx
Introduction aux systèmes  de recommandation part 3.pptxIntroduction aux systèmes  de recommandation part 3.pptx
Introduction aux systèmes de recommandation part 3.pptx
 

Plus de Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

Plus de Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Lmo06.ppt

  • 1. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Une taxonomie et un métamodèle pour la détection des défauts de conception Naouel Moha – Duc-loc Huynh – Yann-Gaël Guéhéneuc GEODES – Groupe de recherche sur les systèmes ouverts et distribués et en génie logiciel expérimental Université de Montréal {mohanaou, huynhduc, guehene}@iro.umontreal.ca LMO 2006 Moha et al. 1/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 2. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Plan Objectifs de notre travail Modéliser les défauts de conception afin de pouvoir les détecter automatiquement dans le code. 1 Introduction 2 Méthodologie (5 phases) 3 Phases 1 et 2 : analyse et taxonomie 4 Phase 3 : métamodélisation 5 Phases 4 et 5 : modélisation et validation 6 Conclusion Moha et al. 2/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 3. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de conception Défauts de conception vs. Patrons de conception “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets Problèmes Pas de représentation précise et structurée Sous forme de descriptions textuelles sujettes à interprétation Difficile de les détecter précisément et efficacement Solution Représentation précise et structurée des défauts de conception basée sur un métamodèle à partir d’une taxonomie des défauts Moha et al. 3/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 4. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Motivations Pourquoi détecter les défauts de conception ? Améliorer la qualité des architectures à objets Faciliter l’évolution Réduire les coûts de maintenance Pourquoi une taxonomie ? Confusion entre : défauts, anti-patrons, problèmes, mauvaises odeurs, anomalies, etc. Définir, comparer et classer les défauts Pourquoi un métamodèle ? Limite les ambiguïtés en structurant les concepts Facilite le développement d’algorithmes et d’outils Pourquoi une méthodologie ? Définir une démarche systématique à appliquer pour la représentation des défauts Peut être appliquée à d’autres spécifications Moha et al. 4/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 5. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 5/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 6. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Blob DataClass1 D1_attr getD1_attr() setD1_attr() DataClass2 D2_attr1 D2_attr2 getD2_attr1() setD2_attr1() getD2_attr2() setD2_attr2() ControllerClass C_attr1 : Data1 C_attr2 : Data2 C_attr3 C_attr4 C_attr5 ... m1(D : Data1) m2(D: Data2) m3() {... m1(this.C_attr1)...} m4() {... m2(this.C_attr2)...} m5() {...uses this.C_attr3...} m6(D : Data1) m7(D : Data2) . . . . . . . m31() {...uses this.C_attr3...} m32() {...m8()...} m33() {...} m34() {...} m35() {...} DataClass3 D3_attr getD3_attr() setD3_attr() DataClass4 D4_attr getD4_attr() setD4_attr() DataClass5 D5_attr getD5_attr() setD5_attr() Moha et al. 6/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 7. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases RULE_CARD : Blob { RULE : Blob {ASSOC: associated FROM: ControllerClass ONE TO: DataClass MANY } ; RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ; RULE : LargeClassLowCohesion {INTER LargeClass ClassLowCohesion } ; RULE : LargeClass {INTER (METRIC: NM, HIGH) (METRIC: NA, HIGH) } ; RULE : ClassLowCohesion {(METRIC: LCOM, HIGH) } ; RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Controller}) } ; RULE : DataClass {INTER (STRUCT: METHOD, Accessor) (METRIC: LCOM, LOW) } ; } ; Phase 1 : analyse Description littéraire → Synthétique Moha et al. 7/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 8. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 8/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 9. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 9/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 10. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 10/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 11. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Phase 4 : modélisation Modèle obtenu pour le Blob -get ( ) -set ( ) Accessor Field MethodField -high Cohesion Controller ClassData Class Method -low Cohesion Blob ** * 1 many many 1 Moha et al. 11/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 12. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 12/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 13. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phases 1 et 2 : analyse et taxonomie Phase 1 : Analyse Extraction des concepts clefs Spécification des fiches de règles Phase 2 : Taxonomie Terminologie et classification Les défauts de patrons Les anti-patrons Les symptômes Carte des défauts Moha et al. 13/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 14. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de patrons Terminologie Les défauts de patrons sont de mauvaises applications des solutions des patrons de conception [MOH 05c] Classification 2 types : 1 Les patrons déformés 2 Les patrons dégradés Basée sur la classification de Gamma et al. DesignPatternDefect Degraded Distorted Pattern Creational Structural Behavioral Singleton Builder FactoryMethod Prototype AbstractFactory Moha et al. 14/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 15. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les anti-patrons [BRO 98] Terminologie “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets, dont l’utilisation a des effets négatifs sur la qualité AntiPattern Inter-Class Intra-Class Structural Behavioral Semantic Blob Poltergeist DataVision LavaFlow SpaghettiCode Cut&Paste Programming Functional Decomposition Structural Behavioral Semantic MultiService TinyService TooMuchCode SwissArmyKnife Stovepipe Moha et al. 15/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 16. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les symptômes ou mauvaises odeurs Terminologie Indicateurs de la présence possible de défauts Structures dans le code source qui suggèrent la possibilité d’une restructuration du code [FOW 99] Exemples : code dupliqué, larges classes & longues méthodes BadSmell Inter-Class Intra-Class Structural Behavioral Semantic Semantic Behavioral Structural Transient Associations Stateless Dead Code Unjustified Code ShortDuration Comments Duplicated Code ShotgunSurgery Message Chain LongMethod Divergent Change LargeClass DataClassMoha et al. 16/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 17. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Carte des défauts de conception Relations entre les défauts de conception Blob linked LavaFlow DeadCode has has CommentsLack of documentation {TODO, To be replaced, In Flux} Poltergeist is Message Chain UnjustifiedCode has LargeClass is has Spaghetti Code is Process Oriented is DataClass ShortDuration SingleAction does Complex is No Polymorphism has No Inheritance has has Low Cohesion Class & Global Variables has SwissArmy Knife LargeInterface is Signatures has have Abstraction relates Moha et al. 17/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 18. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phase 3 : Métamodélisation PADL (Pattern and Abstract-level Description Language) Décrit la structure des programmes OO et les patrons de conception [ALB 02] SADDL étend PADL (Software Architectural Defects Description Language) Décrit les défauts de conception SAD AntiPattern BadSmell AntiPatternsRepository related 0..* 0..* 0..* Entity InterfaceClass +attachTo(Element)() Element Assoc FieldMethod Comment ClassVariable GlobalVariable 0..* 0..* 0..10..* DelegatingMethod 0..1 targetAssoc targetEntity 0..* +compare(Pattern)() Pattern Observer Composite 0..* related Signature 0..* -name -visibility RootElement inherit Role Abstraction related0..* 0..* 0..* Composition Agregation Accessor has same name 0..* Parameter Coupling 0..* Cohesion shouldimplement declares 0..* Relationshipcontains 0..* targets DesignPatternDefect resemble 0..* 1..* ElemSADDL ElemPADL Légende Élément du métamodèle SADDL Élément du métamodèle PADL Moha et al. 18/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 19. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phases 4-5 : Modélisation et validation Modélisation Instancier des défauts de conception à partir de SADDL sous forme de modèles Quinzaine de défauts dont une dizaine d’anti-patrons Validation Modèles ↔ Fiches Corriger et enrichir le métamodèle Inférer les algorithmes de détection Moha et al. 19/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 20. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de patron +Attach(Observer)() +Detach(Observer)() +Notify()() Subject +GetState() +SetState() -subjectState ConcreteSubject Observer +Update() -observerState ConcreteObserver observers subject (a) Patron Observer +GetState() +SetState() +Attach(Observer)() +Detach(Observer)() +Notify()() -subjectState ConcreteSubject Observer +Update() -observerState ConcreteObserver observers subject (b) Patron déformé FIG.: Le patron Observer et son patron déformé Moha et al. 20/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 21. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les anti-patrons Controller Class Interface Method -low Cohesion Signature SwissArmyKnife many implements implements many 1 (a) Modèle RULE_CARD : SwissArmyKnife { RULE : SwissArmyKnife {AGGREG: associated FROM: Interface ONE TO: Signature MANY} ; RULE : Interface {IMPL: ControllerClass } ; RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ; RULE : LargeClassLowCohesion {INTER (METRIC: NM, HIGH) (METRIC: LCOM, HIGH)} ; RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Controller}) } ; RULE : Signature {(METRIC: NM, HIGH) } ; } ; (b) Fiche de règles FIG.: Le couteau suisse Moha et al. 21/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 22. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les symptômes Class -high Coupling1..* 1 Shotgun Surgery 1 (a) Shotgun Surgery MethodClass 1..* -low Cohesion1..* 1 Divergent Change 1 (b) Divergent Change FIG.: Les modèles du Shotgun Surgery et du Divergent Change Moha et al. 22/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 23. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Extraction des concepts clefs Terminologie et Classification Entity InterfaceClass Method RootElement Element Anti-patrons Défauts de patrons Mauvaises odeurs SAD DesignPatternDefectAntiPattern BadSmell AntiPatternsRepository Entity Element Pattern RootElement Métamodèle PADL Métamodèle SADDL Controller Class Interface Method -low CohesionSignature Abstraction SwissArmyKnife Modèles de défauts de conception Description textuelle 1 Analyse 2 Taxonomie 4 5 Modélisation 3 Métamodèlisation (b) Instancier Définir et classifier Intégrer Intégrer (a) Intégrer (c)Vérifier Fiches de règles (d) A ffiner et corrigerValidation Détection Inférer Algorithmes Moha et al. 23/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 24. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Experimentations Objectif Montrer l’utilité de notre méthodologie et de son implémentation (métamodèle SADDL) Hypothèses Possibilité de spécifier un grand nombre de défauts de conception La précision de nos algos est raisonnable Objets 5 programmes open source entre 140 et 1200 classes. Traitement 4 anti-patrons : Blob, Functional decomposition, Swiss Army Knife, Spaghetti Code Implémentation des algorithmes de détection Validation manuelle : Précision vs. Rappel Moha et al. 24/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 25. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Détection des défauts de conception Blob ArgoUML Azureus GanttProject PMD QuickUML Total 113KLOC 192KLOC 21KLOC 42KLOC 9KLOC 1230c 1449c 188c 423c 142c Effectifs 91 143 19 15 3 271 Precisions 70/91 82/143 10/19 3/15 1/3 166/271 = 76.9% = 57.3% = 52.6% = 20% = 33.3% 61.5% Swiss Army Knife ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 2 22 0 0 0 24 Precisions 2/2 22/22 - - - 24/24 = 100% = 100% = -% = -% = -% = 100% Functional Decomposition ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 14 22 9 13 1 59 Precisions 9/14 19/22 0 0 0 28/59 = 64.2% = 86.3% = 0% = 0% = 0% = 47.6% Spaghetti Code ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 26 35 8 11 1 81 Precisions 21/26 29/35 6 6 0 62/81 = 80.7% = 82.8% = 75% = 54.5% = 0% = 76.6% Moha et al. 25/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 26. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Conclusion Objectifs de notre travail Modéliser les défauts de conception afin de pouvoir les détecter automatiquement dans le code. Objectifs atteints Manque de travaux sur la spécification des défauts Nécessiter de représentations précises et structurées Une taxonomie et un métamodèle Fournir un cadre de développement de techniques et d’outils pour la détection des défauts À faire... Affiner la description des règles (règles comportementales) Augmenter notre base de défauts Améliorer la précision de nos algorithmes de détection Développer des techniques de correction Moha et al. 26/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 27. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Références ALB 02 ALBIN-AMIOT H., COINTE P., GUÉHÉNEUC Y.-G., Un méta-modèle pour coupler application et détection des design patterns, DAO M., HUCHARD M., Eds., actes du 8e colloque Langages et Modèles à Objets, vol. 8, numéro 1–2/2002 de RSTI L’objet, Hermès Science Publications, janvier 2002, p. 41–58. BRO 98 BROWN W. J., MALVEAU R. C., BROWN W. H., III H. W. M., MOWBRAY T. J., Anti Patterns : Refactoring Software, Architectures, and Projects in Crisis, John Wiley and Sons, 1st édition, March 1998. FOW 99 FOWLER M., Refactoring – Improving the Design of Existing Code, Addison- Wesley, 1st édition, June 1999. GUÉ 01 GUÉHÉNEUC Y.-G., ALBIN-AMIOT H., Using Design Patterns and Constraints to Automate the Detection and Correction of Inter-Class Design Defects, LI Q., RIEHLE R., POUR G., MEYER B., Eds., proceedings of the 39th conference on the Technology of Object-Oriented Languages and Systems, IEEE Computer Society Press, July 2001, p. 296 ˝U 305. GAM 94 GAMMA E., HELM R., JOHNSON R., VLISSIDES J., Design Patterns – Elements of Reusable Object-Oriented Software, Addison-Wesley, 1st édition, 1994. MOH 05c MOHA N., HUYNH D.-L., GUÉHÉNEUC Y.-G., A Taxonomy and a First Study of Design Pattern Defects, ANTONIOL G., GUÉHÉNEUC Y.-G., Eds., Proceedings of the STEP International Workshop on Design Pattern Theory and Practice (IWDPTP05), September 2005. Moha et al. 27/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception