Top Banner
Introduction aux notations UML et OCL
48

Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système

Sep 11, 2018

Download

Documents

dinhkien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Introduction aux notations UML et OCL

Page 2: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme de cas d’utilisationuse case diagram

le système

<<actor>>SIExterneNomActeur

Nom du cas d’utilisation

Nom du cas d’utilisation

Préparer un cours

« include »

Enseigner un cours

« include »

Enseigner un cours par correspondance

« extend »

Professeur

Points d’extension :exposé énoncé exercicerendu de devoir

Description du cas d’utilisation Enseigner un cours

date : 10/09/03auteur : E. Renauxversion : v.0.6acteur principal : Professeuracteurs secondaires : Etudiant

Préconditionil y a plus de trois étudiants présents

Scénario nominal1. Le professeur s ’identifie au système2. Le système authentifie le professeur3. ...

Scénarios alternatifsA1. Titre du scénario alternatifcommence à l ’étape 2 du scénario nominal ...A1.1. Le …...

Exceptions...

Postconditionil y a autant d ’étudiants qu ’au début du cours :-)

exigences non fonctionnellesle cours doit durer 1h30

Etudiant

Réalisation du cas d’utilisation"préparer un cours"

Diagramme de cas d ’utilisation du système machin

Page 3: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Diagramme d’activité des courses

diagramme d’activitésactivity diagram

Entrerdans

magasin

Editer ticket Ouvrir tiroir

Payer

Y a t ’il encore des articles ?

Choisir une caisseScanner article

[oui][non]Poser articles sur

tapis

client agent de caisse

[encore un achat dans la liste]

[courses terminées]

Sélectionner un produit

Sortie dumagasin

Page 4: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme de classes

<<stereotype>>NomClasseAbstraitefrom nomPaquetage

- attributPrivate : Type= valeur# attributProtected : Type+ attributPublic

- operationPrivate(argument1:Type, …) : TypeRetour

# operationProtected+ operationPublique

NomSousClasse

operation()

NomClasse

<<interface>>NomInterface

operation1()operation2()

ClasseCliente

operation1()operation2()

ClasseAClasseBnomAssociation

role1 role2

ClasseTout

ClassePartie

ClassePartie2

1..3

ClasseAClasseB

NomClasseAssociation

operation()

note

<<realize>>

1 0..*

Classe1 Classe2qualifier

class diagram

UneClasse

operationDeClasse()

attributDeClasse

ClientData

ManagerIhmClient

unPaquetage

Diagramme de classe du système

Page 5: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme de séquencesequence diagram

infoPaul:ClientData

<<entity>>:BaseVente:ManagerV

ente

jeanClaude:Commerci

al

formulaire:IhmVendeu

r

Diagramme de séquence du scénario nominal du cas d’utilisation "réaliser une vente"

saisir identifiant saisieId(id)verifierId(id)

demande info clientlireListeClients(id)

demande fiche client

creerClient(nom)lireFicheClient(nom)

saisir vente

saisirVente(produit,quantite,prix)

environnement du système système

temps

detruire()

algo récursif

Page 6: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme d’étatsstatechart diagram

Diagramme d’états d’une caisse

scanner un article(codebarre)[valide]/ajouter liste articles

scanner un article(codebarre)[invalide]

/bip erreur

demander total

Courses payée/ vider liste articles

/liste vide

Attente scan

Attente paiement

insérer clé

retirer clé

Clé insérée

Page 7: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme de composantscomponent diagram

Appli cliente

boiteOutil.dll

Base de donnée

centrale

Diagramme de composant du système

Page 8: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

diagramme de déploiementdeployment diagram

PC

Client

serveur central

données

ServeurApplication

serveur Web

internet

Firewall

ethernet banque

Windows NT

Linux

Page 9: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Limites d'UML

Page 10: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

OCLObject Constraint Language

d’après CSCI3007 Component Based Development

Page 11: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Plan

� Qu’est-ce qu’une contrainte?� OCL Concepts� OCL Concepts avancés

Page 12: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Definition

� “Une contrainte est la restriction de une ou plusieurs valeurs d’un modèle UML.”

Page 13: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Différents types de contraintes

� Invariant de Classe � une contrainte qui doit être satisfaite par toutesles instances de la classe

� Precondition d’une operation � une contrainte qui doit toujours être true avantl’execution de l’ operation

� Postcondition d’une operation � une contrainte qui doit toujours être true après l’execution de l’ operation

Page 14: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Pourquoi?

UtiliserOCL

Page 15: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

15

préciser un diagramme

VOL AVION

CargoVOLPassagerVOL

PassagerAvion CargoAvion11

0..*0..*11

0..*0..*

0..*0..*11vols

Page 16: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

16

exemple: Ajouter des invariants

{context VOLinv: type = #cargo implies avion.type = #cargoinv: type = #passager implies avion.type = #passager}

10..*VOL AVION

type : enum of cargo, passager

type : enum of cargo, passager

vols

Page 17: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

OCL?

� OCL est� un langage textuel pour décrire les contraintes dans UML

� Formel mais simple à utiliser � Non ambigüe� Sans effets de bord

Page 18: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Modèle Exemple

Airport

Flight

Passenger

Airline

*

**

*

$minAge: Integerage: IntegerneedsAssistance: Boolean

departTime: Time/arrivalTime: Timeduration : IntervalmaxNrPassengers: Integer

origin

desti-nation

name: String

name: String

{ordered}

arrivingFlights

departingFlights

CEO

0..1

flights

passengers

book(f : Flight)

0..1

airline

airline

Page 19: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

context et self

� toute expression OCL est associée à un contexte spécifique� Ce contexte est souvent l'élément UML auquelcette contrainte est attachée

� Ce contexte peut être désigné dansl'expression par le mot clé ‘self’.� ‘self’ est implicite dans toute expression OCL � Équivalent à`this’ en Java

Page 20: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Notation� Les Contraintes peuvent figurer dans le modèle UML ou dans un document séparé.� L'expression:context Flight inv: self.duration < 4

� Est identique à:context Flight inv: duration < 4

� Et à:Flight

duration: Integer<<invariant>>duration < 4

Page 21: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Elements d'une expression OCL

� On peut utiliser:� Types de base: String, Boolean, Integer, Real.� Éléments du modèle UML

� attributs, et classes� Operations booléennes des classes query operations (sans effets de bord)

� Les associations du modèle UML� Y compris les noms de rôles

� conseil: utiliser des rôles dans UML pour simplifier OCL

Page 22: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: OCL types de base

context Compagnie inv:name.toLower = ‘klm’

context Passager inv:

age >= ((9.6 - 3.5)* 3.1).floor implies mature = true

Page 23: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Classes, Modèle et attributs

� attributs context VOL inv:

self.maxNrPassagers <= 1000

� Attributs de Classe context Passager inv:

age >= Passager.minAge

Page 24: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: operations

context Flight inv:self.departTime.difference(self.arrivalTime)

.equals(self.duration)Time

difference(t:Time):Intervalbefore(t: Time): Booleanplus(d : Interval) : Time

Interval

equals(i:Interval):BooleanInterval(d, h, m : Integer) :

Interval

midnight: Timemonth : Stringday : Integeryear : Integerhour : Integerminute : Integer

nrOfDays : IntegernrOfHours : IntegernrOfMinutes : Integer

Page 25: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: navigations

context Flightinv: origin <> destinationinv: origin.name = ‘Amsterdam’

context Flight inv: airline.name = ‘KLM’

Airport

Flight

*

*

departTime: Time/arrivalTime: Timeduration : IntervalmaxNrPassengers: Integer

origin

desti-nation

name: String

arrivingFlights

departingFlights

Page 26: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Classes Association

context Person inv:if employer.name = ‘Klasse Objecten’ then

job.type = #trainer

else

job.type = #programmer

endif

Person Company

Job

* 1employee employer

type : {trainer, programmer}

name : String

Page 27: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Collections dans OCL

� La plupart des navigations retournentdes collections d' elements

10..*Flight Airplane

type : enum of cargo, passenger

type : enum of cargo, passenger

flights

Page 28: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Trois Sous types de Collection

� Set: � arrivingFlights(dans le contexte Airport)� Non-ordonné, unique

� Bag: � arrivingFlights.duration (dans le contexte Airport)� Non-ordonné, non-unique

� Sequence: � passagers (dans le contexte Flight)� ordonné, non-unique

Page 29: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Collection : operations

� OCL a un grand nombre d'opérationsprédéfinies sur les collections.

� Syntax:� collection->operation

Page 30: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

collect

� Syntaxe:collection->collect(elem : T | expr)collection->collect(elem | expr)collection->collect(expr)

� résumé:collection.expr

� L'opération collect retourne la collection des valeurs obtenues par application de expr aux éléments de collection

Page 31: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

select

� Syntaxe:collection->select(elem : T | expression)collection->select(elem | expression)collection->select(expression)

� select retourne le sous ensemble des éléments pour lesquels expression esttrue

Page 32: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: collect context Airport inv:self.arrivingFlights -> collect(airLine) ->notEmpty

airp1

airp2

f1

f2

f3

f4

f5

airline1

airline2

airline3

departing flights

arriving flights

Page 33: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

forAll

� Syntaxe:� collection->forAll(elem : T | expr)� collection->forAll(elem | expr)� collection->forAll(expr)

� True si expr est true pour tous les éléments de collection

Page 34: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: forAll context Airport inv:self.departingFlights->forAll(departTime.hour>6)

departing flights arriving flights

airp1

airp2

airline1

airline2

airline3

f5depart = 8

f1depart = 7

f4depart = 9

f2depart = 5

f3depart = 8

Page 35: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

exists

� Syntaxe:collection->exists(elem : T | expr)collection->exists(elem | expr)collection->exists(expr)

� true si il existe au moins un élément de collection pour lequel expr est true.

Page 36: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: exists

context Airport inv:self.departingFlights->exists(departTime.hour<6)

departing flights arriving flights

airp1

airp2

airline1

airline2

airline3

f5depart = 8

f1depart = 7

f4depart = 9

f2depart = 5

f3depart = 8

Page 37: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple: select context Airport inv:self.departingFlights->select(duration<4)->notEmpty

departing flightsarriving flights

airp1

airp2

airline1

airline2

airline3

f5duration = 2

f1duration = 2

f4duration = 5

f2duration = 5

f3duration = 3

Page 38: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Exemple : Iterate

� Exemple iterate:context Airline inv:flights->select(maxNrPassengers > 150)->notEmpty

� Est identique à:context Airline inv:flights->iterate (f : Flight;

answer : Set(Flight) = Set{ } |if f.maxNrPassengers > 150 then

answer->including(f)else

answer endif )->notEmpty

Page 39: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

autres operations sur collection

� isEmpty� notEmpty� size� count(elem):occurences d'elem dans collection� includes(elem): true si elem dans collection� excludes(elem)� includesAll(coll)

Page 40: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Result et postcondition

� Exemple pre et postcondition

context Airline::servedAirports() : Set(Airport)

pre : -- none

post: result = flights.destination->asSet

Page 41: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Statechart

� L' operation oclInState retourne true sil'objet est dans l'état spécifié

open closed

context Bottle inv:self.oclInState(closed) implies filled = #full

Bottlefilled : enum {empty, half, full}

Page 42: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Variables Locales

� let definit des variables locales à unecontrainte:Let var : Type = <expression1> in

<expression2>

� Exemple:context Airport inv:Let supportedAirlines : Set (Airline) = self.arrivingFlights -> collect(airLine) in (supportedAirlines ->notEmpty) and (supportedAirlines ->size < 500)

Page 43: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

heritage de contraintes

� Liskov’s Substitution Principle (LSP):

� “Partout où une instance d'une classe estattendue, une instance d'une sous classepeut lui être substituée”

Page 44: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

heritage de contraintes

� Consequences de LSP pour les invariants:� un invariant est toujours hérité par ses sous classes.� Les sousclasses peuvent renforcer l'invariant.

� Consequences de LSP sur les preconditions et postconditions:� une precondition peut être weakened (contravariance)� une postcondition peut être strengthened (covariance)

Page 45: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

OCL Tools� FREE parser from IBM

� http://www.software.ibm.com/ad/ocl� Cybernetics

� www.cybernetic.org� University of Dresden

� www-st.inf.tu-dresden.de/ocl/ � Boldsoft

� www.boldsoft.com� ICON computing

� www.iconcomp.com� Royal Dutch Navy� Others … …

Page 46: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

Conclusions

� OCL invariants allow you to� model more precisely� remain implementation independent

� OCL pre- and postconditions allow you to� specify contracts (design by contract)� specify interfaces of components more precisely

� OCL usage tips� keep constraints simple� always combine natural language with OCL� use a tool to check your OCL

Page 47: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

References

� [UML 1.3] OMG UML Specification v. 1.3, OMG doc# ad/06-08-99

� [UML 1.4] OMG UML Specification v. 1.4, UML Revision Task Force recommended final draft, OMG doc# ad/01-02-13.

Page 48: Introduction aux notations UML et OCL - jfod.cnam.frjfod.cnam.fr/NFP121/12-OCL/NFP121_12_007_UML_OCL-1.pdf · diagramme de cas d’utilisation use case diagram le système <<actor>>

� Web: � UML 1.4 RTF: www.celigent.com/omg/umlrtf� OMG UML Tutorials:

www.celigent.com/omg/umlrtf/tutorials.htm� UML 2.0 Working Group:

www.celigent.com/omg/adptf/wgs/uml2wg.htm� OMG UML Resources: www.omg.org/uml/

Infos