CSC4102 : Qualit´e du
mod`ele UML et patrons de conception
Denis Conan, avec Paul Gibson
Janvier 2022
Sommaire
1. Motivations et objectifs 2. Qualit´e du mod`ele UML 3. Patrons de conception
4. Mise en pratique en TP (2h) + HP (3h)
2/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
1 Motivations et objectifs
1.1 Qu’est-ce que la qualit´ e d’un mod` ele UML ?
1.2 Pourquoi les patrons de conception ?
1.3 Quels sont les objectifs de la s´ eance ?
1.4 Apr` es la s´ eance, ` a quoi c ¸a sert ? o` u ? quand ?
1.1 Qu’est-ce que la qualit´ e d’un mod` ele UML ?
■
Quelques premiers ´ el´ ements de r´ eponse ` a partir de
[Lange and Chaudron, 2004]« An empirical assessment of completeness in UML designs. »
•
Well-formedness: The basic level of analysis iswithin a single diagram. In the semanticssection of the UML specification well-formedness rules for model elements are defined.−
These restrictions prevent designers from producing diagrams that contain serious flaws.•
Consistency:Overlapping diagramsrefer to common information. If two diagrams in the model containcontradictory common information, then there is 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 one diagram it’s expected counterpart in the other diagram is present.−
Violations of model completeness can cause unimplemented functionality.• Dans le module CSC4102, nous ne mod´elisons pas tout
4/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
1.2 Pourquoi les patrons de conception ?
Est-ce une conception r´ eutilisable, ´ evolutive, adaptable, performante...
Christopher Alexander,
A pattern language : towns, buildings, construction [Alexander et al., 1977]
■
As an element in the world, each
patternis a relationship between a
certain context, acertain system of forceswhich occurs repeatedly in that context, and a
certain spatial configurationwhich allows these forces to resolve themselves.
■
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 diff´ erence entre les concepteurs novices et exp´ eriment´ es est typiquement l’exp´ erience
■
Le novice h´ esite beaucoup entre diff´ erentes variantes
■
L’expert trouve tout de suite la « bonne » solution (adaptable, ´ evolutive...)
1.3 Quels sont les objectifs de la s´ eance ?
■
V´ erifier la qualit´ e du mod` ele de la solution actuellement propos´ ee
•
Identification et correction des probl`emes de coh´erence :−
Entre les diagrammes UML−
Entre le mod`ele UML et le code JAVA■
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 appliqu´e au moins un patron de conception•
Cf. les exigences du cahier des charges avec un besoin de notification6/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
1.4 Apr` es la s´ eance, ` a quoi ¸ ca sert ? o` u ? quand ? I
■
En plus de la connaissance d’un domaine m´ etier
(par exemple le contrˆole a´erien, la gestion d’actifs, ou encore le vote ´electronique)
la connaissance des patrons de conception est efficace
•
C. Alexander a propos´e le concept de langage de patrons pour l’architecture et l’urbanisation des syst`emes de syst`emes−
Pattern language : a method of describing good design practices or patterns of useful organization within a field of expertise[Wikipedia, 2016]•
Aujourd’hui, partout : des sciences sociales au logiciel, en passant par la p´edagogie•
Nous sommes intrins`equement bons dans la reconnaissance de patrons■
A l’avenir (apr` ` es ce module), essayez l’approche de conception ` a base de patrons
1. A partir des exigences, consid´` erez les concepts, les probl`emes, les contextes, les attributs de qualit´e
2. Cherchez `a appliquer les patrons de conception (g´en´eriques), avant de construire des solutions sp´ecifiques
1.4 Apr` es la s´ eance, ` a quoi ¸ ca sert ? o` u ? quand ? II
■
Litt´ erature conseill´ ee sur le sujet
•
Les patrons de conception du GoF (Gang of Four)−
Gamma, E., Helm, R., Johnson, R., and Vlissides, J.«Design Patterns : Elements of Reusable Object-Oriented Software» Addison-Wesley, 1994
−
WikiLivre : « Patrons de conception »−
Joshi, R.Java Design Patterns : Reusable Solutions to Common Problems Exelixis Media P.C., 2015
8/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
2 Qualit´ e du mod` ele UML
2.1 ` A propos de coh´ erence
2.2 Principes g´ en´ eraux de la m´ ethode Booch
2.1 ` A propos de coh´ erence
■
Etant donn´ ´ e le diagramme de classes qui suit
Localisation
Genre
*
CategorieClient
nombrePage:integer Livre nbEmpruntsTotal:integer=0 DURÉE:integer=6*7 TARIF:double=0.5 classification:string nbEmpruntsTotal:integer=0
Audio Vidéo
TARIF:double=1.0 DURÉE:integer=4*7
duréeFilm:integer mentionLégale:string nbEmpruntsTotal:integer=0 DURÉE:integer=2*7 TARIF:double=1.5
*
nom:string Médiathèque salle:string
rayon:string
* *
<< interface >>
Empruntable
Document
posséder est rangé
*
*
Client
*
nom:string
nbEmprunts:integer=0 duréeEmprunt():integer tarifEmprunt():double
code:string titre:string auteur:string année:string empruntable:booléen=F /emprunté:booléen=F nbEmprunts:integer=0
nom:string prenom:string adresse:string
0..1 *
concerner
concerner
*
coefDurée:double codeReductionActif:boolean coefTarif:double cotisation:double nbEmpruntsMax:integer nomCat: string
dateInscription:Date dateRenouvellement:Date nbEmpruntsEffectues:integer=0 /nbEmpruntsDepasses:integer=0 /nbEmpruntsEncours:integer=0 codeRéduction:integer
appartenir
FicheEmprunt*
dateEmprunt:Date dateLimite:Date /tarif:double /dépassé:booléen dateRappel:Date
enRetard:booleen
10/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
2.1.1 Exemple de non-respect de la navigabilit´ e
■
Diagramme de s´ equence du cas d’utilisation « ajouter un document »
•
Selon le diagramme de classes, l’associationLocalisation—Documentn’est pas franchissable versDocumentm:Médiathèque
doc=chercherDocument(code):Document
ajouterDocument(d,g) ajouterDocument(code,g,l)
[doc==null]
l:Localisation d:Document g:Genre
ajouterDocument(l)
ajouterDocument(d) association
non franchissable opt
2.1.2 Exemple de parcours d’association inexis- tante
■
Diagramme de s´ equence du fragment « cr´ eation de la fiche d’emprunt »
•
Dans le diagramme de classes, l’associationDocument—Clientn’existe pascD=getCoefDuree():double
c:Client d:Document g:Genre
:CatégorieClient m:Mediathèque
f:FicheEmprunt f=<<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
12/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
2.2 Principes g´ en´ eraux de la m´ ethode Booch
■ How can one know if a given class is well designed ?
«Object Oriented Analysis and Design with Applications» [Booch, 1991], pages 123–125
•
Sufficient: enough characteristics of the abstraction to permit meaningful and efficient interaction•
Complete: general enough to be commonly usable−
Many high-level operations can be composed from low-level ones−
Attention cependant `a l’encapsulation (p.ex. tous lesgetters? non !)•
Primitive: [only] operations that can be efficiently implemented [with] the underlying 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 : entirely unrelated abstractions are thrown into the same class−
The most desirable form of cohesion=functional cohesion : the elements of a class all work together to provide some well-bounded behavior2.2.1 Exemple de questionnement de la coh´ esion
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 f=<<create(c,d,dateLimite,tarif)>>
c:Client d:Document g:Genre
:CatégorieClient m:Mediathèque
Coh´ esion fortuite : pourquoi toute l’algorithmique serait dans la fac ¸ade ?
Les autres classes se d´egradent en simples structures de donn´ees(sans algo.)Risque d’introduction degetters/setters, ce qui contredit l’ensapsulation
✓
Coh´ esion fonctionnelle :
FicheEmpruntresponsable de calculerdateLimite... ?✓ Elle connaˆıt via ses associations toutes les informations n´ecessaires
14/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
2.2.2 Exemple de mod´ elisation pr´ ef´ er´ ee
■
Ce que nous avions propos´ e lors de la conception pr´ eliminaire
:Genre
«new»
f:FicheEmprunt
d:Document :CatégorieClient
c:Client m:Médiathèque
cT=getCoefTarif(): Double tarif=sommeDue(tn): Double
tn=tarifEmprunt(): Double bc=emprunter(): Booléen
emprunter(): Booléen bd=emprunter(f): Booléen
cD=getCoefDurée(): Double dateLimite=dateRetour(dateEmprunt,dn): Date
dn=duréeEmprunt(): Integer
«create(c,d)»
3 Patrons de conception
3.1 Principe
3.2 D´ efinition et ´ el´ ements essentiels
3.3 Cat´ egories des patrons de conception « du GoF » 3.4 Structure, patron de conception Fac ¸ade
3.5 Comportement, patron Publier-Souscrire
16/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.1 Principe
E. Gamma, R. Helm, R. Johnson, J. Vlissides, (leGang 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 mod` eles tels que “la repr´ esentation de situations ` a l’aide d’objets” ou “l’habillage d’objets permettant l’ajout ou le retrait facile de fonctionnalit´ es” »
•
« Valeur de l’exp´erience »,« sentiment de d´ej`a vu »−
« Si l’on parvenait `ase souvenir des d´etails du probl`eme ant´erieur, et de la fac¸on dont il avait ´et´e r´esolu, on pourrait alorsr´eutiliser cette exp´erience, au lieu d’avoir `a la red´ecouvrir»• « Recueillir l’expertiseen mati`ere de conception orient´ee objet,sous forme demod`ele de conception, aussi appel´epatron de conception»
• « Chaque patron de conception,syst´ematiquement, nomme, explique et ´evalue un concept important et qui figure fr´equemment dans les syst`emes orient´es objet »
3.2 D´ efinition et ´ el´ ements essentiels
D´ efinition et ´ el´ ements « du GoF »
[Gamma et al., 1994]■
D´ efinition :
•
C’est unedescription d’objets coop´eratifs et de classesque l’on a sp´ecialis´es pour r´esoudre unprobl`eme g´en´eralde conception dans uncontexte particulier■
Quatre ´ el´ ements essentiels :
•
Nom: identification d’un concept, vocabulaire dans un catalogue•
Probl`eme: d´ecrit 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: d´ecrit les ´el´ements qui constituent la conception−
Relations entre eux, leur part dans la solution, leur coop´eration−
Description g´en´erique d’un probl`eme de conception•
Cons´equences: effets r´esultants de l’application du mod`ele sur la conception ainsi que les variantes de compromis18/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.3 Cat´ egories des patrons de conception « du GoF »
■
Cr´ eation : Un patron de cr´ eation permet de r´ esoudre les probl` emes li´ es ` a la cr´ eation 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 r´ esoudre les probl` emes li´ es ` a la structuration des classes et leur interface en particulier
•
Fac¸ade (Facade), Adaptateur (Adapter), Pont (Bridge),Composite (Composite), D´ecorateur (Decorator), Poids-plume (Flyweight), Mandataire (Proxy)■
Comportement : Un patron de comportement permet de r´ esoudre les probl` emes li´ es aux interactions entre les classes
•
Chaˆıne de responsabilit´e (Chain of responsibility), Commande (Command), Interpr´eteur (Interpreter), It´erateur (Iterator), M´ediateur (Mediator), Memento (Memento),Publier—Souscrire (Publish—Subscribe), Observateur–Observable (Observer), ´Etat (State),Strat´egie (Strategy), Patron de m´ethode (Template Method), Visiteur (Visitor)Cf. csc4102-exemples/Code...seance9/patrondeconception/* + csc4102-exemples/Modelisation/p*.pdf + document « pour aller plus loin »
3.4 Structure, patron de conception Fa¸ cade I
1.
Probl` eme : dans l’´ etude de cas M´ ediath` eque
•
Comment cr´eer un nouveau client ? Dans une cat´egorie client, mais laquelle ? Donc, commencer par cr´eer la cat´egorie client ? Mais, comment ?Genre
Localisation
nombrePage:integer Livre nbEmpruntsTotal:integer=0 DURÉE:integer=6*7 TARIF:double=0.5 classification:string nbEmpruntsTotal:integer=0
Audio Vidéo
TARIF:double=1.0 DURÉE:integer=4*7
duréeFilm:integer mentionLégale:string nbEmpruntsTotal:integer=0 DURÉE:integer=2*7 TARIF:double=1.5
* *
<< interface >>
Empruntable
Document
posséder est rangé
*
Client
* nom:string
nbEmprunts:integer=0 duréeEmprunt():integer tarifEmprunt():double
code:string titre:string auteur:string année:string empruntable:booléen=F /emprunté:booléen=F nbEmprunts:integer=0
nom:string prenom:string adresse:string
0..1 *
concerner
concerner
coefDurée:double codeReductionActif:boolean coefTarif:double cotisation:double nbEmpruntsMax:integer nomCat: string
dateInscription:Date dateRenouvellement:Date nbEmpruntsEffectues:integer=0 /nbEmpruntsDepasses:integer=0 /nbEmpruntsEncours:integer=0 codeRéduction:integer
appartenir
FicheEmprunt dateEmprunt:Date dateLimite:Date
/tarif:double /dépassé:booléen dateRappel:Date
enRetard:booleen salle:string
rayon:string
CategorieClient
20/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.4 Structure, patron de conception Fa¸ cade II
2.
Solution :
Soit unem´ethode de classedans la classe cat´egorie client Cette m´ethode est unBuilder
Il faut connaˆıtre les noms des classes (c.-`a-d. l’int´erieur du syst`eme) Il devient alors difficile de faire ´evoluer le syst`eme :
• En cas de renommage, tous les clients doivent ´evoluer
✓ Soitun objet d´edi´e `a partir duquel on appelle une m´ethode
✓ Cette nouvelle classe est la Fac¸ade 3.
Cons´ equences :
•
Fac¸ade : tous les appels depuis l’ext´erieur passent par l`a3.4.1 Explications compl´ ementaires
■
La fac¸ade a pour but de cacher une conception
•
La fac¸ade peut ˆetre abstraite dans une interface−
Une mise en œuvre peut ˆetre remplac´ee par une autre■
La fac ¸ade permet de simplifier cette complexit´ e en fournissant une interface simple du sous-syst` eme
■
Habituellement, la fac ¸ade est r´ ealis´ ee en r´ eduisant les fonctionnalit´ es tout en fournissant toutes les fonctions n´ ecessaires aux utilisateurs
•
Par exemple, une fac¸ade peut ˆetre utilis´ee pour :−
Rendre une biblioth`eque plus facile `a utiliser, comprendre et tester−
Rendre une biblioth`eque plus lisible−
R´eduire les d´ependances entre les clients de la biblioth`eque et le fonctionnement interne de celle-ci22/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.5 Comportement, patron Publier-Souscrire I
1.
Probl` eme
•
Comment notifier un objet de mani`ere asynchrone ?−
Le producteur notifie le consommateur−
Le message est dit asynchrone−
Asynchronisme =production d’information =⇒
« `a terme » le consommateur est notifi´e ;
le producteur n’attend pas que le consommateur soit notifi´e pour continuer son ex´ecution
•
Comment avoir plusieursconsommateurs enregistr´es aupr`es d’un producteur ?
•
P.ex., le syst`eme notifie l’acteur d’un´
ev´enement
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
3.5 Comportement, patron Publier-Souscrire II
2.
Solution
In blue = provided by the JDK
In red = to be implemented in the application P
MonConsommateur P
«interface»
Subscriber onSubscribe(Subscription) onNext(P)
onError(Throwable) onComplete() P
«interface»
Subscription request(long n) cancel()
P BufferedSubscription doOffer(P) P
SubmissionPublisher P
«interface»
Publisher subscribe(Subscriber) submit(P)
◄est attaché à
1 1
*
•
P= type de la publication•
Producteur et consommateurs sont param´etr´es avecP•
Le flux est g´er´e dansBufferedSubscription, qui g`ere une collection de taille nde publications de typeP24/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.5 Comportement, patron Publier-Souscrire III
Diagramme d’objets avec un producteur et deux consommateurs :
bs2:BufferedSubscription producteur:SubmissionPublisher
consommateur1:MonConsommateur consommateur2:MonConsommateur bs1:BufferedSubscription
a2:est attaché à a1:est attaché à
D´ ebut s´ equence pour la diapositive qui suit avec un seul consommateur :
Les deux objets ne sont pas associés
consommateur1:MonConsommateur producteur:SubmissionPublisher
«create()»
«create()»
3.5 Comportement, patron Publier-Souscrire IV
Suite de la s´equence : les objetsproducteuretconsommateur1sont d´ej`a cr´e´es
Rôle du consommateur Rôle du producteur Rôle du consommateur
In blue = provided by the JDK In red = to be implemented in the application
L'appelé, c'est-à-dire le consommateur, est actif le temps de traiter l'appel.
Par ailleurs, grâce au traitement en deux temps (mise dans la file puis exécution), ce traitement est désynchronisé par rapport à l'appel du producteur sur BufferedSubscription.
L'appelant, c'est-à-dire le producteur, est bloqué le temps de déposer sa tâche, qui est exécutée « à terme », c'est-à-dire in fine ou au bout d'un certain temps.
Un exécuteur gère les tâches de l'objet BufferedSubscription : une tâche est soumise, c'est-à-dire mise dans une file de tâches, puis est exécutée lorsque l'exécuteur, qui est un thread, est ordonnancé sur le processeur.
Ainsi, doOffer est mis dans la file des tâches, puis exécuté pour appeler onNext sur le consommateur.
De même, onComplete est mis dans la file, puis exécuté pour appeler onComplete sur le consommateur.
consommateur1:MonConsommateur
«new»
bs:BufferedSubscription producteur:SubmissionPublisher
request(1) request(1)
onComplete()
onComplete() close()
onNext(pub) doOffer(pub)
submit(pub)
onSubscribe(bs)
«create(c,...)»
subscribe(consommateur1)
26/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
3.5.1 Exemple I
Classeseance9.patrondeconception.publiersouscrire.MonConsommateur
1 p u b l i c c l a s s M o n C o n s o m m a t e u r i m p l e m e n t s S u b s c r i b e r < P u b l i c a t i o n > { 2 p r i v a t e S u b s c r i p t i o n s o u s c r i p t i o n ;
3 p u b l i c M o n C o n s o m m a t e u r (f i n a l S t r i n g id ) { // ...
4 @ O v e r r i d e
5 p u b l i c v o i d o n S u b s c r i b e (f i n a l S u b s c r i p t i o n s o u s c r i p t i o n ) { 6 t h i s. s o u s c r i p t i o n = s o u s c r i p t i o n ; // ...
7 // on c o n s o m m e un m e s s a g e des qu ’ il a r r i v e ; un a la f o i s 8 // on d e c l a r e qu ’ on est p r e t a r e c e v o i r un m e s s a g e 9 t h i s. s o u s c r i p t i o n . r e q u e s t (1) ;
10 }
11 @ O v e r r i d e
12 p u b l i c v o i d o n N e x t (f i n a l P u b l i c a t i o n p u b l i c a t i o n ) { 13 // r e c e p t i o n d ’ une p u b l i c a t i o n ...
14 // on d e c l a r e qu ’ on est p r e t a r e c e v o i r un n o u v e a u m e s s a g e 15 s o u s c r i p t i o n . r e q u e s t (1) ;
16 }
17 @ O v e r r i d e
18 p u b l i c v o i d o n E r r o r (f i n a l T h r o w a b l e t h r o w a b l e ) { // ...
19 // e r r e u r sur la g e s t i o n du flux , par e x e m p l e p r o d u c t e u r . s u b s c r i b e 20 // d ’ un c o n s o m m a t e u r qui est d e j a un s u b s c r i b e r du p r o d u c t e u r 21 t h r o w a b l e . p r i n t S t a c k T r a c e () ;
22 }
23 @ O v e r r i d e
24 p u b l i c v o i d o n C o m p l e t e () { // l o r s q u e le p r o d u c t e u r f e r m e le f l u x 25 }
3.5.1 Exemple II
Classeseance9.patrondeconception.publiersouscrire.Main
1 // c r e a t i o n du p r o d u c t e u r
2 S u b m i s s i o n P u b l i s h e r < P u b l i c a t i o n > p r o d u c t e u r = n e w S u b m i s s i o n P u b l i s h e r < >() ; 3 // c r e a t i o n de d e u x c o n s o m m a t e u r s
4 M o n C o n s o m m a t e u r c o n s o m m a t e u r 1 = n e w M o n C o n s o m m a t e u r ( " 1 " ) ; 5 M o n C o n s o m m a t e u r c o n s o m m a t e u r 2 = n e w M o n C o n s o m m a t e u r ( " 2 " ) ; 6 // les c o n s o m m a t e u r s s o n t e n r e g i s t r e s a u p r e s du p r o d u c t e u r 7 p r o d u c t e u r . s u b s c r i b e ( c o n s o m m a t e u r 1 ) ;
8 p r o d u c t e u r . s u b s c r i b e ( c o n s o m m a t e u r 2 ) ;
9 // on a t t e n d un peu p o u r que t o u s les c o n s o m m a t e u r s s o i e n t e n r e g s i t r e s 10 T h r e a d . s l e e p ( 1 0 0 ) ;
11 // p r o d u c t i o n d ’ un m e s s a g e
12 p r o d u c t e u r . s u b m i t (n e w P u b l i c a t i o n ( " p u b l i c a t i o n ␣ 1 " ) ) ; 13 // p r o d u c t i o n d ’ un m e s s a g e
14 p r o d u c t e u r . s u b m i t (n e w P u b l i c a t i o n ( " p u b l i c a t i o n ␣ 2 " ) ) ;
15 // il f a u t a t t e n d r e un peu p o u r p e r m e t t r e la t r a n s m i s s i o n du p r o d u c t e u r 16 // v e r s les c o n s o m m a t e u r s
17 T h r e a d . s l e e p ( 1 0 0 ) ; 18 p r o d u c t e u r . c l o s e () ;
28/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
4 Mise en pratique en TP (2h) + HP (3h)
■ Qualit´e de la conception
•
Coh´erence entre les diagrammes et avec le code•
Identification de faiblesses dans la conception, voire leur correction■
Int´ egration de patrons de conception pour am´ eliorer et/ou faciliter la conception de certaines fonctionnalit´ es, notamment celles du Sprint 2
•
Cas d’utilisation notifiant un acteuren utilisant lepatron de conception Publier—Souscrire
■
Continuation du d´ eveloppement
■
Rendu de la s´ eance en HP (3h) :
PDF+ JAVA dans «
sprint2»
■
Compl´ ements :
•
« Pour aller plus loin »sur les patrons de conception•
Autres exemples : projetcsc4102-exemples, documentsModelisation/p*.pdfet codes source dans les paquetagesdesignpattern/*
R´ ef´ erences 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 Analysis 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.
Joshi, R. (2015).
Java Design Patterns : Reusable Solutions to Common Problems.
Exelixis Media P.C.
Lange, C. and Chaudron, M. (2004).
An empirical assessment of completeness in UML designs.
InProc. of the 8th International Conference on Empirical Assessment in Software Engineering, pages 111–121.
30/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception
R´ ef´ erences II
Wikilivres (2016).
Patron de conception.
Patronsdeconception.
Wikipedia (2016).
Pattern language.
http://en.wikipedia.org/wiki/Pattern_language.