• Aucun résultat trouvé

CSC4102 : Qualit´e du mod`ele UML et patrons de conception

N/A
N/A
Protected

Academic year: 2022

Partager "CSC4102 : Qualit´e du mod`ele UML et patrons de conception"

Copied!
31
0
0

Texte intégral

(1)

CSC4102 : Qualit´e du

mod`ele UML et patrons de conception

Denis Conan, avec Paul Gibson

Janvier 2022

(2)

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

(3)

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 ?

(4)

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

(5)

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

pattern

is a relationship between a

certain context, acertain system of forces

which occurs repeatedly in that context, and a

certain spatial configuration

which allows these forces to resolve themselves.

As an element of language, a pattern is

an instruction, which shows how

this spatial configuration

can be used, over and over again, to resolve the

given 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...)

(6)

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 notification

6/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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 versDocument

m: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

(12)

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 pas

cD=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

(13)

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 behavior

(14)

2.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

(15)

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)»

(16)

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

(17)

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 »

(18)

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 compromis

18/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception

(19)

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 »

(20)

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

(21)

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`a

(22)

3.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-ci

22/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception

(23)

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 plusieurs

consommateurs 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

(24)

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 typeP

24/31 01/2022 Denis Conan CSC4102 : Qualit´e du mod`ele UML et patrons de conception

(25)

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()»

(26)

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

(27)

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 }

(28)

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

(29)

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 acteur

en 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, documents

Modelisation/p*.pdfet codes source dans les paquetagesdesignpattern/*

(30)

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

(31)

ef´ erences II

Wikilivres (2016).

Patron de conception.

Patronsdeconception.

Wikipedia (2016).

Pattern language.

http://en.wikipedia.org/wiki/Pattern_language.

Références

Documents relatifs

Cepen- dant, si on ajoute une variable explicative dans un mod` ele, le R 2 ne peut qu’augmenter, le R 2 n’est donc pas adapt´ e pour comparer entre eux des mod` eles avec un

Aujourd’hui on cherche ` a les g´ en´ eraliser ` a des structures de plus en plus complexes pour d´ etecter des d´ efauts soit lors d’un processus industriel (contrˆ ole de

I Nous allons utiliser ces propri´ et´ es ` a maintes reprises pour trouver d’autres propri´ et´ es de l’estimateur MCO.. I Plusieurs de ces propri´ et´ es d´ ependent du fait

Si, pour un Ω donn´e et un κ donn´e, on d´emontre que, pour une certaine intensit´e du champ magn´etique ext´erieur, cette paire est un minimum global de la fonctionnelle, on

On g´ en´ erera ce mod` ele en utilisant comme regresseurs (x ij ) des r´ ealisations ind´ ependantes de va- riables uniformes sur [−1, 1] qui seront fix´ ees une bonne fois pour

On aimerait donc qu'un objet puisse appartenir à telle ou telle classe (dans une même famille par héritage) sans avoir à chercher la classe de gestion de ces

On note que les r´ esultats obtenus par les simulations DES sont en meilleur accord avec les donn´ ees exp´ erimentales, aussi bien pour la pression totale que les efforts et le

Ensuite, apr`es avoir identifi´e les patrons de conception utilis´es, le travail consiste `a comparer les patrons de conception identifi´es manuellement avec ceux