Upload
ptidej-team
View
132
Download
0
Embed Size (px)
Citation preview
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (3) Modélisation et validation (4-5) Conclusion
Une taxonomie et un métamodèle pour la détection desdéfauts de conception
Naouel Moha – Duc-loc Huynh – Yann-Gaël Guéhéneuc
GEODES – Groupe de recherche sur les systèmesouverts 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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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 automatiquementdans le code.
1 Introduction2 Méthodologie (5 phases)3 Phases 1 et 2 : analyse et taxonomie4 Phase 3 : métamodélisation5 Phases 4 et 5 : modélisation et validation6 Conclusion
Moha et al. 2/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modéli sation 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 unmé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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modéli sation et validation (4-5) Conclusion
Motivations
Pourquoi détecter les défauts de conception ?Améliorer la qualité des architectures à objetsFaciliter l’évolutionRé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 conceptsFacilite 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éfautsPeut ê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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 5/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 8/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 9/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 10/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Phase 4 : modélisation
Modèle obtenu pour le Blob
-get ( ) -set ( )
Accessor Field Method Field
-high
Cohesion
Controller Class Data 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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et vali dation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 12/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Con clusion
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 classificationLes défauts de patronsLes anti-patronsLes symptômesCarte des défauts
Moha et al. 13/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Con clusion
Les défauts de patrons
Terminologie
Les défauts de patrons sont de mauvaises applications des solutions des patronsde conception [MOH 05c]
Classification2 types :
1 Les patrons déformés2 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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Con clusion
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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Con clusion
Les symptômes ou mauvaises odeurs
TerminologieIndicateurs de la présence possible de défautsStructures dans le code source qui suggèrent la possibilité d’une restructurationdu 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
DataClass Moha et al. 16/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Con clusion
Carte des défauts de conception
Relations entre les défauts de conception
Blob
linked
LavaFlow
DeadCode
has
has
Comments Lack 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 de s 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
Interface Class
+attachTo(Element)()
Element
Assoc Field Method Comment
ClassVariable GlobalVariable
0..*
0..*
0..1 0..*
DelegatingMethod 0..1
targetAssoc
targetEntity
0..*
+compare(Pattern)()
Pattern
Observer Composite
0..*
related
Signature
0..*
-name
-visibility
RootElement
inherit
Role
Abstraction
related 0..* 0..* 0..*
Composition Agregation
Accessor
has same
name
0..* Parameter
Coupling 0..*
Cohesion
shouldimplement
declares
0..* Relationship contains 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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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
s u b j e c t
(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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (3) Modélisation et validation (4-5) Conclusion
Les symptômes
Class
-high
Coupling 1..*
1
Shotgun Surgery
1
(a) Shotgun Surgery
Method Class 1..*
-low Cohesion 1..*
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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (3) Modélisation et validation (4-5) Conclusion
Méthodologie en 5 phases
Extraction
des concepts clefs
Terminologie et Classification
Entity
Interface Class Method
RootElement
Element
Anti-patrons
Défauts
de patrons
Mauvaises
odeurs
SAD
DesignPatternDefect AntiPattern
BadSmell
AntiPatternsRepository
Entity Element
Pattern
RootElement
Métamodèl e PADL
Métamodèl e SADDL
Controller Class
Interface
Method
-low
Cohesion Signature
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
I n t é g r e r
I n t é
g r e
r
( a ) I n t é g r e r
( c )
V é r i
f i e r
Fiches de règles
( d ) A f f i n e r e t c o r r i g e r Validation
Détection
Inférer
Algorithmes
Moha et al. 23/27
LMO 2006, Une taxonomie et un métamodèle pour la détection de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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, SpaghettiCode
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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (3) Modélisation et validation (4-5) Conclusion
Détection des défauts de conception
Blob
ArgoUML Azureus GanttProject PMD QuickUML Total113KLOC 192KLOC 21KLOC 42KLOC 9KLOC
1230c 1449c 188c 423c 142cEffectifs 91 143 19 15 3 271
Precisions70/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 TotalEffectifs 2 22 0 0 0 24
Precisions 2/2 22/22 - - - 24/24= 100% = 100% = -% = -% = -% = 100%
Functional Decomposition
ArgoUML Azureus GanttProject PMD QuickUML TotalEffectifs 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 TotalEffectifs 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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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 automatiquementdans 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 desdé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 de s défauts de conception
Introduction Méthodologie Taxonomie (1-2) Métamodélisat ion (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 ofInter-Class Design Defects, LI Q., RIEHLE R., POUR G., MEYER B., Eds., proceedings of the 39th conference on the Technologyof Object-Oriented Languages and Systems, IEEE Computer Society Press, July 2001, p. 296U 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 de s défauts de conception