View
215
Download
2
Category
Preview:
Citation preview
CSC4102 : Qualite dumodele UML et patrons deconceptionRevision : 2997
Denis Conan, avec Paul Gibson
Fevrier 2018
Sommaire
1. Motivations et objectifs
2. Qualite du modele UML
3. Patrons de conception
4. Mise en pratique en TP (2h) + HP (3h)
2/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
1 Motivations et objectifs
1.1 Qu’est-ce que la qualite d’un modele UML ?1.2 Pourquoi les patrons de conception ?1.3 Quels sont les objectifs de la seance ?1.4 Apres la seance, a quoi ca sert ? ou ? quand ?
3/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
1.1 Qu’est-ce que la qualite d’un modele UML ?
� Quelques premiers elements de reponse a partir de [Lange and Chaudron, 2004]« An empirical assessment of completeness in UML designs. »
• Well-formedness : The basic level of analysis is within a single diagram. In thesemantics section of the UML specification well-formedness rules for modelelements are defined.
− These restrictions prevent designers from producing diagrams that containserious flaws.• Cf. les jeux des 7 erreurs du cours de la seance 6
• Consistency : Overlapping diagrams refer to common information. If twodiagrams in the model contain contradictory common information, then thereis an inconsistency between these diagrams.
− If an inconsistency between two diagrams remains unresolved,miscommunication and high integration effort are likely to happen.
• Completeness : A UML model is complete, if for each element in the onediagram it’s expected counterpart in the other diagram is present.
− Violations of model completeness can cause unimplemented functionality.• Dans le module CSC4102, nous ne modelisons pas tout
4/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
1.2 Pourquoi les patrons de conception ?Est-ce une conception reutilisable, evolutive, adaptable, performante...Christopher Alexander,A pattern language : towns, buildings, construction[Alexander et al., 1977]
� As an element in the world, each pattern is a relationship between a certaincontext, a certain system of forces which occurs repeatedly in that context,and a certain spatial configuration which allows these forces to resolvethemselves.
� As an element of language, a pattern is an instruction, which shows howthis spatial configuration can be used, over and over again, to resolve thegiven system of forces, wherever the context makes it relevant.
La difference entre les concepteurs novices et experimentes est typiquementl’experience
� Le novice hesite beaucoup entre differentes variantes
� L’expert trouve tout de suite la « bonne » solution (adaptable, evolutive...)
5/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
1.3 Quels sont les objectifs de la seance ?
� Verifier la qualite du modele produit dans le Sprint 1• Suite a l’evaluation certificative• Suite a cette presentation
� Etudier l’application d’un patron de conception• Notre objectif n’est pas que vous deveniez des « experts », mais que vous
connaissiez le concept pour avoir applique au moins un patron de conception• Nouvelle exigence ajoutee cahier des charges pour le Sprint 2
− « les acteurs du systeme, s’ils le souhaitent, peuvent etre notifies desevenements les concernant. En particulier, pour faciliter le suivi et la prise dedecision, un editeur est prevenu des avis emis par les evaluateurs concernantles articles qu’il suit. Le role de ToSPy est donc d’alerter les editeurs desevenements « nouvel avis ».
• Modelisation avec le patron de conception Observable—Observateur
� Continuer le developpement de l’application
6/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
1.4 Apres la seance, a quoi ca sert ? ou ? quand ?
� En plus de la connaissance d’un domaine metier(par exemple le controle aerien, la gestion d’actifs, ou encore le vote electronique)la connaissance des patrons de conception est efficace
• C. Alexander a propose le concept de langage de patrons pour l’architecture etl’urbanisation des systemes de systemes
− Pattern language : a method of describing good design practices or patterns ofuseful organization within a field of expertise [Wikipedia, 2016]
• Aujourd’hui, partout : des sciences sociales au logiciel, en passant par la pedagogie• Nous sommes intrinsequement bons dans la reconnaissance de patrons
� A l’avenir (apres ce module), essayez l’approche de conception a base depatrons
1. A partir des exigences, considerez les concepts, les problemes, les contextes, lesattributs de qualite
2. Cherchez a appliquer les patrons de conception (generiques),avant de construire des solutions specifiques
7/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2 Qualite du modele UML
2.1 A propos de coherence2.2 Principes generaux de la methode OOSDA
8/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2.1 A propos de coherence
� Etant donne le diagramme de classes qui suit
Localisation
Genre
*CategorieClient
nombrePage:integer
Livre
nbEmpruntsTotal:integer=0DURÉE:integer=6*7TARIF:double=0.5
classification:stringnbEmpruntsTotal:integer=0
AudioVidéo
TARIF:double=1.0DURÉE:integer=4*7
duréeFilm:integermentionLégale:stringnbEmpruntsTotal:integer=0DURÉE:integer=2*7TARIF:double=1.5
*nom:string
Médiathèque
salle:stringrayon:string
* *
<< interface >>Empruntable
Document
po
sséd
er
est
ran
gé
*
*
Client
*
nom:stringnbEmprunts:integer=0
duréeEmprunt():integertarifEmprunt():double
code:stringtitre:stringauteur:stringannée:stringempruntable:booléen=F/emprunté:booléen=FnbEmprunts:integer=0
nom:stringprenom:stringadresse:string
0..1 *
concerner
con
cern
er
*
coefDurée:doublecodeReductionActif:boolean
coefTarif:doublecotisation:doublenbEmpruntsMax:integernomCat: string
dateInscription:DatedateRenouvellement:DatenbEmpruntsEffectues:integer=0/nbEmpruntsDepasses:integer=0/nbEmpruntsEncours:integer=0codeRéduction:integer
app
arte
nir
*FicheEmprunt
dateEmprunt:DatedateLimite:Date
/tarif:double/dépassé:booléendateRappel:Date
enRetard:booleen
9/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2.1.1 Exemple de non-respect de la navigabilite
� Diagramme de sequence du cas d’utilisation « ajouter un document »
• Selon le diagramme de classes, l’association Localisation—Document n’estpas franchissable vers Document
m:Médiathèque
doc=chercherDocument(code):Document
ajouterDocument(d,g)
ajouterDocument(code,g,l)
[doc==null]
l:Localisation g:Genred:Document
ajouterDocument(l)ajouterDocument(d)
association
non franchissable
opt
10/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2.1.2 Exemple de parcours d’association inexis-tante
� Diagramme de sequence du fragment « creation de la fiche d’emprunt »• Dans le diagramme de classes, l’association Document—Client n’existe pas
cD=getCoefDuree():double
c:Client d:Document g:Genre
:CatégorieClient
m:Mediathèque
f:FicheEmprunt
<<create(c,d,dateLimite,tarif)>>
emprunter()
emprunter()emprunter()
cT=getCoefTarif():double
tarif=tarifEmprunt():double
tarif=sommeDue(tn):double
dateLimite=dateRetour(dateEmprunt,dn):date
dn=dureeEmprunt():int
association
non existante
11/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2.2 Principes generaux de la methode OOSDA� How can one know if a given class is well designed ?
« Object Oriented Design with Applications »[Booch, 1991, pages 123–125]
• Sufficient : enough characteristics of the abstraction to permit meaningful andefficient interaction
• Complete : general enough to be commonly usable− Many high-level operations can be composed from low-level ones
• Primitive : [only] operations that can be efficiently implemented [with] theunderlying representation of the abstraction
• Coupling :− On the one hand, weakly coupled classes are desirable− On the other hand, inheritance —which tightly couples superclasses and
their subclasses— helps us to exploit the commonality among abstractions• Cohesion :
− The least desirable form of cohesion = coincidental cohesion : entirelyunrelated abstractions are thrown into the same class
− The most desirable form of cohesion = functional cohesion : the elements ofa class all work together to provide some well-bounded behavior
12/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
2.2.1 Exemple de questionnement de la cohesion
f:FicheEmprunt
bg=emprunter():booléen
cT=getCoefTarif():double
dn=dureeEmprunt():int
bd=emprunter(f):booléen
dateLimite=dateRetour(dateEmprunt,dn):date
cD=getCoefDuree():double
bc=emprunter():booléen
tn=tarifEmprunt():double
tarif=sommeDue(tn):double
<<create(c,d,dateLimite,tarif)>>
c:Client d:Document g:Genre
:CatégorieClient
m:Mediathèque
Cohesion fortuite : pourquoi toute l’algorithmique serait dans la facade ?Les autres classes se degradent en simples structures de donnees (sans algo.)
Risque d’introduction de getters/setters, ce qui contredit l’ensapsulation
X Cohesion fonctionnelle : FicheEmprunt responsable de calculer dateLimite,tarif ?
X Elle connaıt via ses associations toutes les informations necessaires13/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3 Patrons de conception
3.1 Principe3.2 Definition et elements essentiels3.3 Categories des patrons de conception « du GoF »3.4 Creation, patron de conception Singleton3.5 Structure, patron de conception Facade3.6 Structure, patron de conception Composite3.7 Comportement, Observable—Observateur3.8 Comportement, patron Strategie3.9 Combinaison de patrons de conception, exemple de MVC
14/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.1 PrincipeE. Gamma, R. Helm, R. Johnson, J. Vlissides,(le Gang of Four, GoF ),Design Patterns : Elements of Reusable Object-Oriented Software[Gamma et al., 1994], ACM SIGSOFT Outstanding Research Award, 2010
� « Lors de la conception, s’inspirer de modeles tels que “la representation desituations a l’aide d’objets” ou “l’habillage d’objets permettant l’ajout ou leretrait facile de fonctionnalites” »
• « Valeur de l’experience », « sentiment de deja vu »− « Si l’on parvenait a se souvenir des details du probleme anterieur, et de la
facon dont il avait ete resolu, on pourrait alors reutiliser cette experience, aulieu d’avoir a la redecouvrir »• « Recueillir l’expertise en matiere de conception orientee objet, sous
forme de modele de conception, aussi appele patron de conception »• « Chaque patron de conception, systematiquement, nomme,
explique et evalue un concept important et qui figure frequemmentdans les systemes orientes objet »
15/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.2 Definition et elements essentielsDefinition et elements « du GoF » [Gamma et al., 1994]
� Definition :• C’est une description d’objets cooperatifs et de classes que l’on a specialises
pour resoudre un probleme general de conception dans un contexte particulier
� Quatre elements essentiels :• Nom : identification d’un concept, vocabulaire dans un catalogue• Probleme : decrit la ou les situations dans lesquelles le patron s’applique
− Expose le sujet a traiter et son contexte− Avec parfois une liste de conditions a satisfaire
• Solution : decrit les elements qui constituent la conception− Relations entre eux, leur part dans la solution, leur cooperation− Description generique d’un probleme de conception
• Consequences : effets resultants de l’application du modele sur la conceptionainsi que les variantes de compromis
16/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.3 Categories des patrons de conception « duGoF »
� Creation : Un patron de creation permet de resoudre les problemes lies a lacreation et la configuration d’objets
• Singleton (Singleton), Fabrique abstraite (Abstract Factory), Constructeur(Builder), Fabrique (Factory Method), Prototype (Prototype)
� Structure : Un patron de structure permet de resoudre les problemes lies ala structuration des classes et leur interface en particulier
• Facade (Facade), Adaptateur (Adapter), Pont (Bridge),Composite (Composite), Decorateur (Decorator), Poids-plume (Flyweight),Proxy
� Comportement : Un patron de comportement permet de resoudre lesproblemes lies aux interactions entre les classes
• Chaıne de responsabilite (Chain of responsibility), Commande (Command),Interpreteur (Interpreter), Iterateur (Iterator), Mediateur (Mediator),Memento (Memento), Observateur—Observable (Observer), Etat (State),Strategie (Strategy), Patron de methode (Template Method), Visiteur(Visitor)
17/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.4 Creation, patron de conception Singleton1. Probleme : dans l’etude de cas Mediatheque, pour la classe de la Facade,• Comment assurer qu’une classe n’a qu’une instance ? facilement accessible ?
2. Solution
Une variable globale permet d’acceder a un objet, mais il est plus difficiled’ajouter la contrainte de l’instance unique
X Une meilleure solution consiste a confier a la classe elle-meme la responsabilited’assurer l’unicite1
if (instance == null) { instance=new Médiathèque(nom);}return instance;
−nom:string−instance:Médiathèque
−Médiathèque(String nom)+getInstance(String nom):Médiathèque
Médiathèque
3. Consequences• La methode getInstance definit (l’algorithme de) la creation• Difficulte avec le concept de generalisation specialisation : derivation de la
classe singleton1. Cf. classes du paquetage seance8.patrondeconception.singleton
18/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.5 Structure, patron de conception Facade I
1. Probleme : dans l’etude de cas Mediatheque
• Comment creer un nouveau client ? Dans une categorie client, mais laquelle ?Donc, commencer par creer la categorie client ? Mais, comment ?
Genre
Localisation
nombrePage:integer
Livre
nbEmpruntsTotal:integer=0DURÉE:integer=6*7TARIF:double=0.5
classification:stringnbEmpruntsTotal:integer=0
AudioVidéo
TARIF:double=1.0DURÉE:integer=4*7
duréeFilm:integermentionLégale:stringnbEmpruntsTotal:integer=0DURÉE:integer=2*7TARIF:double=1.5
* *
<< interface >>Empruntable
Document
po
sséd
er
est
ran
gé
*
Client
*
nom:stringnbEmprunts:integer=0
duréeEmprunt():integertarifEmprunt():double
code:stringtitre:stringauteur:stringannée:stringempruntable:booléen=F/emprunté:booléen=FnbEmprunts:integer=0
nom:stringprenom:stringadresse:string
0..1 *
concerner
con
cern
er coefDurée:doublecodeReductionActif:boolean
coefTarif:doublecotisation:doublenbEmpruntsMax:integernomCat: string
dateInscription:DatedateRenouvellement:DatenbEmpruntsEffectues:integer=0/nbEmpruntsDepasses:integer=0/nbEmpruntsEncours:integer=0codeRéduction:integer
app
arte
nir
FicheEmprunt
dateEmprunt:DatedateLimite:Date
/tarif:double/dépassé:booléendateRappel:Date
enRetard:booleen
salle:stringrayon:string
CategorieClient
19/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.5 Structure, patron de conception Facade II
2. Solution :
Soit une methode de classe dans la classe categorie clientCette methode est un BuilderIl faut connaıtre les noms des classes (c.-a-d. l’interieur du systeme)
Il devient alors difficile de faire evoluer le systeme :• En cas de renommage, tous les clients doivent evoluer
X Soit un objet dedie a partir duquel on appelle une methodeX Cette nouvelle classe est la Facade
3. Consequences :
• Facade : tous les appels depuis l’exterieur passent par la
20/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.5.1 Explications complementaires
� La facade a pour but de cacher une conception
� La facade permet de simplifier cette complexite en fournissant une interfacesimple du sous-systeme
� Habituellement, la facade est realisee en reduisant les fonctionnalitestout en fournissant toutes les fonctions necessaires aux utilisateurs
• Par exemple, une facade peut etre utilisee pour :− Rendre une bibliotheque plus facile a utiliser, comprendre et tester− Rendre une bibliotheque plus lisible− Reduire les dependances entre les clients de la bibliotheque et le
fonctionnement interne de celle-ci
21/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.6 Structure, patron de conception Composite I
1. Probleme
• Comment gerer une arborescence d’objets, tous geres de maniere similaire ?− Par exemple, dans un systeme a base d’evenements qui filtre des
publications (contenant des informations)comment gerer de maniere identique des fitres simples et des filtrescomposites• Filtres simples Fsi : methode evaluateFsi
→ {true, false}• Filtres composites Fci : methode evaluateFci
definie comme uneformule logique de filtres simplesavec les connecteurs de la logique propositionnelle (¬, ∧, ∨, etc.)
22/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.6 Structure, patron de conception Composite II2. Solution :
Soit des classes d’objets primitifs (atomiques) et des classes d’objets conteneursProbleme : gestion differenciee des primitifs et des conteneurs
X Soit une classe abstraite ou une interface, dont certaines concretisationsmettent en œuvre l’agregation ou la composition d’elements(dans la figure, le connecteur de la composition = ∧)
Publication
−message: String
*
Filter<<interface>>
+evaluate(Publication p):boolean
CompositeFilter
−filters:Coll. de Filter
+evaluate
(Publication p):boolean
for (Filter f : filters) {
if (!filter.evaluate(publication)) {
return false;
}
}
return true;
FilterStringEquals FilterStringStartsWithFilterStringEndsWith
−substring: String −string: String −substring: String
+evaluate
(Publication p):boolean
+evaluate (Publication p):boolean
+evaluate
(Publication p):boolean
3. Consequences :
• Adjonction de nouveaux types d’elements par simple ajout de classes concretes
1. Cf. classes du paquetage seance8.patrondeconception.composite
23/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.7 Comportement, Observable—Observateur I
1. Probleme
• Comment lier des objets sansfortement les coupler ?tout en maintenant la coherence ?
− Maintien de la coherence =modification de Oable =⇒ Oteuraverti
• Comment avoir un objet Oable avecplusieurs objets Oteur i ?
• Par exemple, notification d’acteurs
emprunter document
restituer document
trouver les emprunts en retard
réserver un document
notifier la disponibilité
d’un document
Employé
retirer document
rendre empruntable document
rendre consultable document
ajouter une audio
ajouter un livre
ajouter une vidéo
24/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.7 Comportement, Observable—Observateur II
2. Solution
for all observer in observers do observer.update()done
Observer<<interface>>
update()
AbstractObserver<<abstract>>
register()
unregister()
update()
*
update()Object getState()
setState(Object o)
ConcreteObserverConcreteObservable
AbstractObservable<<abstract>>
// ...
super.setState(o)
observable.detachObserver(this)
//...
observable.attachObserver(this)
//...
super.update()
// ...
state = observable.getState()
attach(Observer)
detach(Observer)
notify()
Observable<<interface>>
notifyObservers()
attach(Observer)
detach(Observer)
<<abstract>> setState(Object)
notifyObservers()
<<abstract>> Object getState()
25/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.7 Comportement, Observable—Observateur III
os:Observableoc:Observer
attachObserver(oc)
notifyObserver()
update()
o=getState()
setState(o)
register()
Cf. classes du paquetage seance8.patrondeconception.observateurobservable
26/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.7 Comportement, Observable—Observateur IV
3. Consequences :
• L’objet observateur est un objet reference par l’objet observable
− Par exemple, la facade de la mediatheque possede la connaissance(de l’interface graphique) des acteurs
− Similairement a l’utilisation de la facade comme unique point d’entree, lafacade peut devenir l’unique point de sortie
27/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.8 Comportement, patron Strategie I1. Probleme
• Comment modeliser une famille d’algorithmes ?en les rendant interchangeables ?
2. Solution
Soit inserer les algorithmes dans les objets qui les utilisentQuid d’un changement de strategie (d’algorithme) ?
Parametre de configurationavec une structure de controle a base de if ou de switch ?• Complexe =⇒ sujet a erreurs (dans la conception et dans les
tests)Utilisation d’une generalisation specialisation avec changement detype pour changer de strategie ?• Complexe =⇒ sujet a erreurs (dans la conception et dans les
tests)X Soit encapsuler les algorithmes dans des objets distinctsX Changement de strategie = changement d’objet
28/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.8 Comportement, patron Strategie II
TriAucun
+algorithmeDeTri( CubeTriable a, CubeTriable b): int
TriParNom
+algorithmeDeTri( CubeTriable a, CubeTriable b): int
TriParPoids
+algorithmeDeTri( CubeTriable a, CubeTriable b): int
TriParVolume
+algorithmeDeTri( CubeTriable a, CubeTriable b): int
+compareTo(Object ob): int
<<interface>>java.lang.Comparable
+getStrategieDeTri():
<<interface>>CubeTriable
StrategieDeTri+setStrategieDeTri( StrategieDeTri s)+getNom(): String+getPoids(): double+getVolume(): double
Cube
<<abstract>>StratégieDeTri
− nom : String− poids : double− volume : double
+constructeur(String nom,
+toString(): String
double poids, double volume, StratégieDeTri s)
+<<abstract>>algorithmeDeTri( CubeTriable a, CubeTriable b): int
29/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.8 Comportement, patron Strategie IIICf. classes du paquetage seance8.patrondeconception.strategie
c:Cube
o:Cube
compareTo(o): int
1:o=(CubeTriable) obj [obj != null ET obj instanceof CubeTriable]
2:r=algorithmeDeTri(c, o): int [o != null]
t:TriParNom2.1:nc=getNom():String
2.2:no=getNom():String
3. Consequences :
• Appel des algorithmes par delegation (c delegue a t)• Possibilite de factoriser des parties d’algorithmes par generalisation
specialisation• Possibilite d’ajouter le patron de conception Singleton pour avoir une instance
par strategie
30/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
3.9 Combinaison de patrons de conception,exemple de MVC
� Le patron Modele—Vue—Controleur (MVC) est souvent mis en œuvre enutilisant une combinaison des patrons Observable—Observateur, Strategieet Composite [Krasner and Pope, 1988]
• Strategie : relation entre les controleurs et les vues• Composite : relation entre les vues• Observable—Observateur : relation entre le modele et les vues,
et entre le modele et les controleurs
31/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
4 Mise en pratique en TP (2h) + HP (3h)
� Qualite du modele UML• Coherence entre les diagrammes et avec le code• Modifications des diagrammes suite aux demandes/suggestions faites lors des
evaluations du Sprint 1
� Ajout de la fonctionnalite « notification d’un nouvel avis a l’editeur » aucahier des charges de l’application
• En utilisant le patron de conception Observable—Observateur
� Continuation du developpement� Organisation du TP (2h)• 1h : Travail en binome-projet• 2× 5mn : Evaluation croisee + bilan intermediaire collectif• Reste de la seance : continuation des travaux
� Rendu de la seance en HP (3h) : PDF + JAVA, avec « seance8 » dans« sprint2 »
32/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
References I
Alexander, C., Ishikawa, S., and Silverstein, M. (1977).A pattern language : towns, buildings, construction, volume 2.Oxford University Press.
Booch, G. (1991).Object-Oriented Design : With Application.Benjamin-Cummings Publishing Co.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1994).Design Patterns : Elements of Reusable Object-Oriented Software.Addison-Wesley.
Krasner, G. and Pope, S. (1988).A Cookbook for Using the Model-view Controller User Interface Paradigm inSmalltalk-80.Journal Object Oriented Programming, 1(3) :26–49.
33/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
References II
Lange, C. and Chaudron, M. (2004).An empirical assessment of completeness in UML designs.In Proc. of the 8th International Conference on Empirical Assessment in SoftwareEngineering, pages 111–121.
Wikipedia (2016).Pattern language.http://en.wikipedia.org/wiki/Pattern language.
34/34 02/2018 Denis Conan CSC4102 : Qualite du modele UML et patrons de conception
Recommended