Diagrammes états-transitions

Informatique, UML, Diagrammes d'état · course

Voir tous les documents en génie logiciel

Polytech Paris-Sud

Formation initiale 3e année

Spécialité Informatique

UML

Diagrammes états-transitions

Delphine Longuet

[email protected]

Diagramme états-transitions

Objectif : Décrire le comportement dynamique d'une entité (logiciel,

composant, objet...)

Comportement décrit par états + transitions entre les états

● État : abstraction d'un moment de la vie d'une entité pendant

lequel elle satisfait un ensemble de conditions

● Transition : changement d'état

PressionInterrupteur

PressionInterrupteur

transition

Allumée

Éteinte

état

D. Longuet - UML

2

Diagramme états-transitions

Objectif : Décrire le comportement dynamique d'une entité (logiciel,

composant, objet...)

Comportement décrit par états + transitions entre les états

● État : abstraction d'un moment de la vie d'une entité pendant

lequel elle satisfait un ensemble de conditions

● Transition : changement d'état

Intérêt :

● Vue synthétique de la dynamique de l'entité

● Regroupe un ensemble de scénarios

D. Longuet - UML

3

Exemple : distributeur automatique

Distributeur

insérerCarte

pavéSaisieCode

saisirCode

ListeMontants

choisirMontant

rendreCarte

délivrerBillets

Scénario principal

Distributeur

insérerCarte

messageCarteInvalide

rendreCarte

Carte invalide

D. Longuet - UML

Distributeur

Distributeur

insérerCarte

pavéSaisieCode

saisirCode

messageCodeErroné

pavéSaisieCode

saisirCode

ListeMontants

choisirMontant

rendreCarte

délivrerBillets

Une erreur de code

insérerCarte

pavéSaisieCode

saisirCode

messageCodeErroné

pavéSaisieCode

saisirCode

messageCodeErroné

pavéSaisieCode

saisirCode

messageCodeErroné

messageCarteAvalée

Trois erreurs de code

4

Diagramme états-transitions correspondant

insérerCarte [carte non valide] / rendreCarte

allumer

Inactif

insérerCarte [carte valide]

éteindre

when(nbEssais = 3) / avalerCarte

CarteValidée

Entry / nbEssais à 0

saisirCode [code erroné] / nbEssais + 1

autorisation [refusée]

autorisation [accordée] /délivrerBillets

saisirCode [code valide]

Transaction

choisirMontant / demanderAutorisation

CodeValidé

Entry / rendreCarte

D. Longuet - UML

5

État

Types d'états

● État initial

Initialisation du système, exécution du constructeur de l'objet

● État final

Fin de vie du système, destruction de l'objet

● États intermédiaires : étapes de la vie du système, de l'objet

Publicité

État

Entry [cond. ent.] / act. ent.

Do / activité

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

D. Longuet - UML

6

État

Caractéristiques d'un état :

● Conditions vérifiées

● Actions réalisées

● Événements attendus

conditions :

thermostat non nul

minuterie non nulle

...

réglerTempérature(T)

FourAllumé

Entry / mettre thermostat à T

Do / allumer voyant

when(thermostat < T) / chauffer

timeout

...

D. Longuet - UML

7

État

Caractéristiques d'un état :

● Conditions vérifiées

● Actions réalisées

● Événements attendus

...

activité pendant

la durée de l'état

réglerTempérature(T)

FourAllumé

Entry / mettre thermostat à T

Do / allumer voyant

when(thermostat < T) / chauffer

action à l'entrée

dans l'état

timeout

...

D. Longuet - UML

8

État

Caractéristiques d'un état :

● Conditions vérifiées

● Actions réalisées

● Événements attendus

événement

réinitialisant l'état

réglerTempérature(T)

FourAllumé

Entry / mettre thermostat à T

Do / allumer voyant

when(thermostat < T) / chauffer

timeout / thermostat à zéro

...

événement avec

changement d'état

...

événement sans

changement d'état

D. Longuet - UML

9

Événement

Événement : Fait instantané venant de l'extérieur du système et

survenant à un instant donné

Types d'événements :

● Signal : réception d'un message asynchrone

● Appel d'une opération (synchrone) : liée aux cas d'utilisation,

opération du diagramme de classes...

● Satisfaction d'une condition booléenne : when(cond), évaluée

continuellement jusqu'à ce qu'elle soit vraie

● Temps

  • Date relative : when(date = date)
  • Date absolue : after(durée)

D. Longuet - UML

10

Action

Action : Réaction du système à un événement

Caractéristiques : atomique, instantanée, non interruptible

Exemples d'actions (syntaxe laissée libre) :

● affectation

● envoi d'un signal

● appel d'une opération

● création ou destruction d'un objet

D. Longuet - UML

11

Action déclenchée par un événement

événement [condition] / action

Lorsque l'événement se produit, si la condition est vérifiée, alors

l'action est effectuée

avec changement d'état

(transition)

État1

événement [condition] / action

État2

État

événement [condition] / action

sans changement d'état

Publicité

(événement interne)

D. Longuet - UML

12

Dynamique d'un état

Événements internes à l'état :

● Événement à l'entrée : Entry

● Événement à la sortie : Exit

● Événement sans changement d'état : event

État

Entry [cond. ent.] / act. ent.

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

D. Longuet - UML

13

Dynamique d'un état

Événements internes à l'état :

● Événement à l'entrée : Entry

● Événement à la sortie : Exit

● Événement sans changement d'état : event

● Activité : Do

!

Activité ≠ action

● Pas instantanée

● Peut être interrompue

État

Entry [cond. ent.] / act. ent.

Do / activité

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

Effet des événements internes :

Interruption de l'activité avec sauvegarde du contexte

D. Longuet - UML

14

Dynamique d'un état

Événements externes à l'état : transitions

● Transition vers l'état : evt-in

● Transition depuis l'état : evt-out

● Transition depuis l'état vers lui-même : evt-self

evt-in [cond. in] / act. in

evt-out [cond. out] / act. out

État

Entry [cond. ent.] / act. ent.

Do / activité

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

evt-self [cond. self] / act. self

Effet de evt-self : Réinitialisation de l'état, interruption de l'activité

sans sauvegarde du contexte

D. Longuet - UML

15

Dynamique d'un état

evt-in [cond. in] / act. in

evt-out [cond. out] / act. out

État

Entry [cond. ent.] / act. ent.

Do / activité

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

interruption de l'activité

pas de changement d'état

evt-in

event2

event1

evt-out

act. in

act. ent.

action2

action1

act. out

act. sort.

D. Longuet - UML

16

Dynamique d'un état

evt-in [cond. in] / act. in

evt-out [cond. out] / act. out

État

Entry [cond. ent.] / act. ent.

Do / activité

event1 [cond1] / action1

event2 [cond2] / action2

...

Exit [cond. sort.] / act. sort.

evt-self [cond. self] / act. self

evt-in

event2

evt-self

event1

evt-out

arrêt de l'activité

changement d'état

act. in

act. ent.

action2

D. Longuet - UML

Publicité

act. sort.

act. self

act. ent.

action1

act. out

act. sort.

17

Dynamique d'un état

Ne pas confondre

Sauvegarde du contexte

de l'activité pendant action

Perte du contexte

de l'activité pendant action

État

Entry [cond. ent.] / act. ent.

Do / activité

event [cond] / action

Exit [cond. sort.] / act. sort.

État

Entry [cond. ent.] / act. ent.

Do / activité

Exit [cond. sort.] / act. sort.

event [cond] / action

D. Longuet - UML

18

Exemple – Distributeur automatique

insérerCarte [carte non valide] / rendreCarte

allumer

Inactif

insérerCarte [carte valide]

éteindre

when(nbEssais = 3) / avalerCarte

saisirCode [code erroné] / nbEssais + 1

CarteValidée

Entry / nbEssais à 0

saisirCode [code erroné] / nbEssais + 1

autorisation [refusée]

autorisation [accordée] /délivrerBillets

saisirCode [code valide]

Transaction

choisirMontant / demanderAutorisation

CodeValidé

Entry / rendreCarte

D. Longuet - UML

19

États composites

État composite : État regroupant un ensemble d'états

Objectifs :

● Hiérarchiser les états

● Structurer les comportements complexes

● Factoriser les actions

raccrocher

Raccroché

Composition

raccrocher

raccrocher

raccrocher

Occupé

Tonalité

Conversation

D. Longuet - UML

20

États composites

État composite : État regroupant un ensemble d'états

Objectifs :

● Hiérarchiser les états

● Structurer les comportements complexes

● Factoriser les actions

Décroché

Raccroché

Composition

raccrocher

Occupé

Tonalité

Conversation

D. Longuet - UML

21

États composites

État composite : État regroupant un ensemble d'états

Objectifs :

● Hiérarchiser les états

● Structurer les comportements complexes

● Factoriser les actions

transition vers

l'état composite

Décroché

Raccroché

Composition

raccrocher

point d'entrée

dans l'état

Occupé

Tonalité

Conversation

D. Longuet - UML

22

États composites

État orthogonal : État composite dans lequel plusieurs états sont actifs

simultanément (concurrence/parallélisme)

État actif global = un état actif par région

régions

Publicité

Préparation et rendu monnaie

Préparation

Entry / placer gobelet

Do / servir boisson

Ajout sucre

Entry / ajouter sucre

Rendu monnaie

Entry / monnaie = somme - prix

Do / rendre(monnaie)

D. Longuet - UML

23

États composites

État orthogonal : État composite dans lequel plusieurs états sont actifs

simultanément (concurrence/parallélisme)

transition

complexe

État actif global = un état actif par région

Préparation et rendu monnaie

Préparation

Entry / placer gobelet

Do / servir boisson

Ajout sucre

Entry / ajouter sucre

Rendu monnaie

Entry / monnaie = somme - prix

Do / rendre(monnaie)

Représentation équivalente

D. Longuet - UML

24

Utilisation des diagrammes états-transitions

En phase d'analyse :

● Description de la dynamique du système vu de l'extérieur

● Synthèse des scénarios liés aux cas d'utilisation

● Événements = action des acteurs

En phase de conception :

● Description de la dynamique d'un objet particulier

● Événements = appels d'opérations

D. Longuet - UML

25

Diagramme états-transitions d'un objet

Conteneur()

retirer(c)

Vide

ajouter(c,v)

[present(c)]

ajouter(c,v)

[not present(c) and

taille < capacité - 1]

ajouter(c,v)

Non vide

retirer(c)

[present(c) and taille > 1]

retirer(c)

[present(c) and

taille = 1]

retirer(c)

[not present(c)]

Spécification du conteneur :

● ensemble de couples (clé,valeur) avec

clés uniques

● capacité fixe

● taille = nombre de couples présents

● ajouter(c,v) : ajoute si clé absente,

écrase si clé présente

ajout au-delà de la capacité interdit

● retirer(c) : retire le couple de clé c s'il

existe

D. Longuet - UML

retirer(c)

[present(c)]

ajouter(c,v)

[not present(c) and

taille = capacité - 1]

Plein

ajouter(c,v)

[not present(c)]

/ Exception

ajouter(c,v)

[present(c)]

retirer(c)

[not present(c)]

26

Résumé rapide

D. Longuet - UML

27

Utilisation d'UML en projet logiciel

Analyse des besoins et spécification

● Diagramme des cas d'utilisation (+ description textuelle)

● Diagrammes de séquence de scénarios d'utilisation (scénarios

génériques ou instanciés)

● Diagramme états-transitions du système global

Conception

● Diagramme de classes

● Diagrammes de séquence des cas d'utilisation détaillés par

rapport au diagramme de classes

● Diagrammes états-transitions d'objets

D. Longuet - UML

28