CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance?...

34
CSC4102 : Qualit´ e du mod` ele UML et patrons de conception Revision : 2997 Denis Conan, avec Paul Gibson evrier 2018

Transcript of CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance?...

Page 1: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

CSC4102 : Qualite dumodele UML et patrons deconceptionRevision : 2997

Denis Conan, avec Paul Gibson

Fevrier 2018

Page 2: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 3: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 4: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 5: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 6: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 7: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 8: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 9: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

*

*

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

Page 10: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 11: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 12: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 13: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 14: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 15: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 16: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 17: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 18: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 19: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

*

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

Page 20: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 21: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 22: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 23: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 24: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 25: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 26: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 27: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 28: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 29: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 30: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 31: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 32: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 33: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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

Page 34: CSC4102 : Qualité du modèle UML et patrons de … Quels sont les objectifs de la s´eance? V´erifier la qualit ´e du mod`ele produit dans le Sprint 1 • Suite `a l’ ´evaluation

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