27
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

LMO06.ppt

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