UML : partie 2

53
Diagrammes d’activités 1

Transcript of UML : partie 2

Diagrammes d’activités

1

Les diagrammes d’activités permettent de modéliser

les traitements (adaptés à la modélisation des flots de

contrôle et des flots de données).

Permettent de représenter graphiquement le

comportement d’une méthode ou l’exécution d’un

scénario de cas d’utilisation.

La représentation des diagrammes d’activités est

proche de celle des diagrammes d’états-transitions, mais

leur sémantique diffère.

2

Les diagrammes d’états-transitions : adaptés aux

systèmes réactifs et chaque diagramme est relatif à une

classe (ou objet). Les diagrammes d’activités ne sont pas

rattachés à une classe particulière. On peut attacher un

diagramme d’activités à n’importe quel élément de

modélisation afin de visualiser ou de décrire son

comportement.

Différence principale entre diagramme

d’interaction et diagramme d’activités est que les

premiers mettent l’accent sur le flot de contrôle d’un

objet à l’autre; les seconds modélisent sur le flot de

contrôle entre activités.3

Les diagrammes d’activité ont un pouvoir

d’expression proches des langages de programmation

objet. Par exemple, la spécification des actions de base

comme l’affectation, les structures conditionnelles, les

boucles, ainsi que des instructions particulières

spécifiques à la programmation objet (appel de

méthodes, exception,…).

Les diagrammes d’activités peuvent être bien

adaptés pour la phase de spécifications détaillées des

traitements.

4

Terminologie

5

Action, activité et Transition = éléments principaux

d’un diagramme d’activité.

- Action (action) = plus petit traitement qui peut être

exprimé en UML, en agissant sur le système. Une action

peut être rapprochée de la notion d’instruction

élémentaire d’un langage de programmation (comme

Java).

Par exemple : une affectation de valeur à un attribut, un

accès à la valeur d’une propriété, un calcul arithmétique

simple, l’émission ou réception d’un signal ;

6

Quelques types d’actions utilisées en UML

Action appeler (call operation) : invocation d’une

méthode sur un objet (de manière synchrone ou

asynchrone).

Lorsque l’action est exécutée, les paramètres sont

transmis à l’objet appelé.

appel asynchrone : l’action est terminée et les

éventuelles valeurs de retour seront ignorées.

appel synchrone : l’appelant est bloqué pendant

l’exécution de l’action jusqu’à la fin d’exécution et, le

cas échéant, les valeurs de retour pourront être

réceptionnées.7

Action envoyer (send) : crée un message et le transmet à

un objet appelé.

C’est un appel asynchrone (ne bloque pas l’objet

appelant). Bien adapté à l’envoi de signaux (send signal).

Action créer (create) ou détruire (destroy) : permet

d’instancier (resp. de détruire) un objet.

8

Activité (activity) : définit un comportement

représenté par une séquence d’actions. Le flot

d’exécution est modélisé par des nœuds reliés par des

arcs (les transitions).

Une activité est un comportement (behavior) et

peuvent lui être associés des paramètres.

9

Un nœud d’activité permet de représenter les étapes

le long du flot d’une activité. Il existe trois types :

1. les nœuds d’exécution (executable node)

2. les nœuds d’objets (object node)

3. les nœuds de contrôle (control nodess).

Différents types de nœuds d’activités

10

Nœuds d’activité (activity node) et nœuds de

contrôle, graphiquement :

11

Nœuds de contrôle

12

nœud de bifurcation (fourche)

ou d’union (synhronisation)

nœud initial

nœud final

nœud final de flot

nœud de décision ou de fusion,

13

Nœud de décision (decision node) = un nœud de contrôle

qui permet d’effectuer un choix entre plusieurs flots sortants.

- Un arc entrant et plusieurs arcs sortants. Ces derniers sont

généralement dotés de conditions, appelées gardes.

L’utilisation d’une garde [else] est recommandée après un

nœud de décision. Dans le cas où plusieurs arcs sont

franchissables (i.e. plusieurs conditions de garde sont

vraies), seul l’un d’entre eux est retenu et ce choix est non

déterministe.

Graphiquement :

14

Nœud de fusion (merge node) = nœud de contrôle qui

rassemble plusieurs flots entrants en un seul flot sortant.

Il n’est pas utilisé pour synchroniser des flots concurrents

(rôle du nœud d’union), mais pour choisir un flot parmi

plusieurs.

Graphiquement : idem qu’un nœud de décision :

15

Nœud de bifurcation ou de débranchement (fork

node) = nœud de contrôle qui sépare un flot en

plusieurs flots concurrents. : il possède un arc entrant

et plusieurs arcs sortants.

Graphiquement :

16

Nœud d’union ou de jointure (join node) = nœud de

contrôle qui synchronise plusieurs flots entrants : il possède

plusieurs arcs entrants et un seul arc sortant. Lorsque tous

les arcs entrants sont activés, l’arc sortant es activé.

Graphiquement, représenté

comme un nœud de bifurcation :

Remarque

Il est possible de fusionner un nœud de bifurcation et un

nœud d’union : trait plein avec plusieurs arcs entrants et

plusieurs arcs sortants :

17

Nœud initial = nœud de contrôle à partir duquel le flot

débute lorsque l’activité est invoquée.

Une activité peut avoir plusieurs nœuds initiaux. Un nœud

initial possède un arc sortant et pas d’arc entrant.

Nœud final = un nœud de contrôle possédant un ou

plusieurs arcs entrants et aucun arc sortant.

2 sortes :

18

Nœud de fin d’activité : l’exécution de l’activité

enveloppante s’achève et tout nœud ou flot actif au sein de

l’activité enveloppante est abandonné.

Si l’activité a été invoquée par un appel synchrone, un

message (reply) contenant les valeurs des paramètres de

sortie est retourné à l’appelant.

Nœud de fin de flot

Lorsqu’un flot d’exécution atteint ce nœud, il se termine,

mais n’influe pas sur sur les autres flots actifs de l’activité

enveloppante.

19

2020

Desserrer frein à

main

Passer 1ère vitesseAppuyer sur pédale

d’embrayage

Relâcher pédale

d’embrayage

Nœud initial

Nœud final

Nœud de bifurcation

(fork)

Nœud d‘union

(jointure)

21

Réceptionner

marchandise

Contrôler quantitéContrôler qualité

enregistrer

Nœud de bifurcation

(fork)

Nœud d‘union

(jointure)

synchronisations Nœud initial

Nœud final

22

DemanderTarif

PayerLePrixDemanderDélai

[sommeDisp < tarif] [ELSE]

Branchement conditionnel

Garde = expression conditionnelle

Exemple de branchement conditionnel IF – THEN – ELSE

(Nœud de décision)

23

réceptionnerArticle

vérifierArticle

commanderArticle

* (pour chaque Article)

réceptionnerArticle

vérifierArticle

commanderArticle

[il reste des articles]

[il n’a plus d’articles]

Schémas équivalents : itération

= nœud d’activité qu’on peut exécuter (i.e. une activité). Il

gère également les exceptions.

Nœud d’exécution

Enter un code

nœud d’action = nœud d’exécution = l’unité

fondamentale de fonctionnalité exécutable dans une

activité.

Exécution d’une action = transformation ou calcul dans

le système modélisé. Les actions sont généralement liées

à des opérations qui sont directement invoquées. Un

nœud d’action doit avoir au moins un arc entrant.

Graphiquement :

24

Nœud d’objet (object node) : on a vu la modélisation

des flot de contrôle dans un diagramme d’activités. Les

flots de données sont un élément essentiel des

traitements dans un diagramme d’activités :

représentent les arguments des opérations, les valeurs de

retour, par exemple.

Un nœud d’objet permet de définir un flot d’objet (les

données) dans un diagramme d’activités. Ce nœud

représente l’existence d’un objet généré par une action

dans une activité et utilisé par d’autres actions.

Nœud d’objets

25

- Les Pins d’entrée ou de sortie : les nœuds d’objets sont pour

spécifier les valeurs passées en argument à une activité et ses

valeurs de retour. On les appelle les pins (d’entrée ou de

sortie).

- L’activité ne peut débuter que si l’on affecte une valeur aux

différents pins d’entrée. Quand l’activité se termine, une

valeur est à chacun des pins de sortie.

- Le passage des paramètres se fair par valeurs, c-à-d que la

modification des valeurs d’entrée au cours du traitement de

l’action est visible seulement à l’intérieur de l’activité.

- Graphiquement :

26

Une transition matérialise le passage d’une activité vers une

autre. Graphiquement, les transitions sont représentées par

des flèches en traits pleins qui lient les activités entre elles.

Une transition est déclenchée dès que l’activité source est

terminée et provoque immédiatement le début de la

prochaine activité.

Les transitions sont franchies de manière atomique (durée

négligeable), ce qui n’est pas le cas des activités.

Les transitions

27

Exemple :

Graphiquement :

28

Activité-1 Activité-2

Transition automatique

établirFacture envoyerFacture

29

insererCarte

saisirCode

[codeInvalide et essais<4]

[codeValide]

choisirOperation

[retrait]

[depot]

saisirMontant

choisirCompteAcrediter

insererCheque/Liquide

restituerCarte

saisirMontant

choisirCompteAcrediter

afficherLesOffres vérifierProvisionCompte

[nonAutorisé]

[autorisé]

distribuerBillets

[codeInvalide et essais >3]

Exemple de diagramme d’activités : utiliser un DAB

30

client

commanderProduit

gererCommande

expedierProduitrecevoirProduit

reglerFacture encaisserFacture

commande

commande

[passée]

[reglée]

Etat de l’objet

Couloirs d’activités (swimlanes)départ

fin

fournisseur

Flot d’objets

Couloirs d’activités ou swimlanes :

Ils représentent les acteurs qui

exécutent les activités.

31

passerCommande verifierDisponibilité

consulterTarif

devis

evaluerDevis

[valider]

[modifier]

[annuler]

établirFacture

préparerCommande

Facture

[émise]

Facture

[réglée]

réglerFacture

validePaiement

expédierCommandeclôturerDossier

client serviceComptabilité serviceLivraison

établirDevis

Autre exemple

GérerCommande

32

enregisterCommande

envoyerFacture

enregisterPaiement

payerFacture

Service comptable client

Exemple Simplifié:

Swimlanes (couloirs d’activités)

33

Nœud d’action :

« Accept event »

« Send signal »

« Accept time event »

détecterArrivéeTrain

faireClignoterFeux

abaisserBarrière

Attendre 5 sec

Représentation de

certaines actions de

communication

qui ont une notation

spéciale

Partie d’un diagramme d’activités

L. Audibert

M. Blay-Fornarino

Ch. Gnao

S. Graïne

Wikipédia

Références : cours de

34

35

Diagramme d’états-transitions

(diagramme d’états)

36

• Un diagramme états-transitions est un automate à états finis, qui décrit les

différents états par lesquels passe un objet (instance quelconque d’une

classe) en réponse à des événements

•permet de décrire les changements d'états d'un objet, en réaction aux

interactions avec d'autres objets ou avec des acteurs.

• représente les interactions asynchrones dans le système.

• détermine les états stables par lesquels passe le système : parmi beaucoup

d’états caractérisant un système, seuls quelques uns sont significatifs pour

le problème donné

• caractéristique d’un état : sa durée et sa stabilité, il représente une conjonction

des valeurs des attributs d'un objet.

• une transition représente le passage d'un état vers un autre.

37

38

État initial État final

État-1 État-n

CREATE DESTROY

Un objet est caractérisé par un ensemble d’attributs, qui changent

de valeur au cours du temps.

Les valeurs des attributs = l’état de l’objet

• Une transition est déclenchée par un événement :

l'arrivée d'un événement conditionne la transition

(la transition est automatique lorsqu'on ne spécifie pas

l'événement qui la déclenche)

• On peut conditionner le franchissement d’une transition,

à l'aide de «gardes», qui sont des expressions booléennes,

exprimées en langage naturel et encadrées par des

crochets.

39

Graphiquement : Etat-Transition-événement

40

État final

État-i État-j

CREATE DESTROY

événement

On peut associer une action à un événement qui va déclenche

une transition :

La syntaxe est la suivante :

Evénement / Action

Evénement/action

A l’arrivée d’un événement, l’action est déclenchée

41

Les 3 notions sur lesquelles est basé un

diagramme d’états :

1. état d’un objet (situation d’un objet définie par

ses propriétés)

2. événement

3. comportement des objets (leurs actions et leurs

activités).

42

Rmq : la dynamique du système est modélisée par plusieurs

diagrammes d’états-transitions.

On construit un diagramme d’états-transitions pour chaque

classe (ou classeur, en général), qui possède un comportement

dynamique important.

Un diagramme d’états-transitions ne peut être associé qu’à

une seule classe.

État initial (à sa création, un objet entre dans un pseudo-état : l’état initial)

(Comme dans un diagramme d’activités)

État final est un pseudo-état qui indique la fin d’un diagramme d’états.

(Comme dans un diagramme d’activités)

43

Événement

Un événement se produit pendant l’exécution du système modélisé. Les

diagrammes d’états-transitions permettent de spécifier les réactions d’un

système à des événements discrets (comme les signaux). Un événement a une

durée négligeable.

Quand un événement est reçu, une transition peut être déclenchée et faire passer

l’objet dans un autre état.

Plusieurs types d’événements explicites et implicites : signal, appel de

méthode, …

Syntaxe :

<nom_evenement> ( [ <param1> : <type> [; <param2> : <type> ... ] ] )

1. Événement Signal :

Un signal matérialise une communication

asynchrone à sens unique entre deux

objets.

Un même objet peut être à la fois

expéditeur et destinataire.

44

Interruption d’E/S

<<signal>>

<<signal>> <<signal>>souris

clavier

+ Periph : int

+ abs : int+ ord : int + caract : int

2. Événement d’appel : call event

Il représente la réception d’un appel d’une opération (méthode) par un objet.

Paramètres de l’opération = paramètres de événement appelant.

Syntaxe d’un événement d’appel = syntaxe d’un signal.

Les événements appelants sont des méthodes déclarées au niveau du diagramme de

classes.

3. Événement de changement : change

généré quand une condition (sur des valeurs d’attributs) devient VRAIE.

syntaxe : when ( <condition_booléenne> )

Les événements de création et de destruction d’objets («create» et «destroy»)

sont deux cas spéciaux d’événements d’appel.

La création d’un objet débute par l’envoi d’un événement de création

(«create») à sa classe. L’objet commence à exister dans son état initial et finit à

son arrivée dans l’état final (sa disparition, «destroy»).

45

4. Événement temporel : after ou when

générés par le passage du temps,

Spécifiés de manière absolue (date précise), ou relative (durée).

syntaxe événement temporel spécifié de manière relative : after ( <durée> )

Syntaxe événement temporel spécifié de manière absolue : when ( date = <date> )

46

Elle définit la réponse d’un objet à l’occurrence d’un événement.

Souvent, elle relie deux états.

Elle indique qu’un objet dans un état E1 peut entrer dans l’état E2 et exécuter certaines

activités, si un événement déclencheur se produit et que la condition de garde est

vérifiée.

Syntaxe : [ <événement> ][ '[' <garde> ']' ] [ '/' <activité> ]

où « garde » est une expression booléenne sur les attributs de l’objet ou sur lesparamètres des événements déclencheurs

Transition

Lorsqu’une transition se déclenche (tir d’une transition), son effet (l’activité

spécifiée après ’/’ ) s’exécute. Elle peut être :

•une opération simple (comme une assignation)

•l’envoi d’un signal ;

•l’appel d’une opération ;

•une liste d’activités, etc.

47

Transition interne

Sont déclenchées par des règles similaires à celles des transitions externe,

mais une transition interne ne possède pas d’état cible et l’état reste le même

à la suite du déclenchement.

Syntaxe = la même que celle d’une transition classique. Mais, les transitions

internes ne sont pas représentées par des arcs, elles sont spécifiées dans un

compartiment. Exemple :

48

S

SaisieMotDePasse

entry / set echo Invisible

exit / set echo normal

character / traiterCaractère

help / afficherAide

clear / remise à zéro chrono et password après 30 sec / exit

Les transitions internes ont des noms prédéfinis : entry, exit, do et include :

entry : permet de spécifier une activité qui s’exécute quand on entre dans l’état.

exit : permet de spécifier une activité qui s’exécute quand on sort de l’état.

do : commence dès que l’activité entry est terminée. Si une transition se

déclenche pendant que l’activité do est en cours, cette dernière est

interrompue et l’activité exit de l’état s’exécute.

include : permet d’invoquer un sous-diagramme d’états-transitions.

49

Point de jonction

Sans point de jonction

Avec point de jonction50

51

saisirFormulaire demanderConfirmation

afficherProblème

go/testerEntrée[valide]

[else]

Point de décision (comme dans un diagramme d’activités)

H*lavage

séchage

lustrageattente

reprise

arretD’urgence

after(5 mn)

after(5 mn)

after(3 mn)

after(3 mn)

arretD’urgence

État historique : est un pseudo-état

qui mémorise le dernier sous-état actif d’un

état composite.

Graphiquement : cercle contenant un H.

H* : pour représenter un état historique

imbriqué.

Notation abrégée : pour indiquer qu’un état est composite et

que sa définition est donnée sur un autre diagramme.

État composite = état décomposé en régions contenant chacune un ou

plusieurs sous-état(s).

Associer un fournisseur aux

produits fournis

52

53