Polytech Paris-Sud
Formation initiale 3e année
Spécialité Informatique
UML
Diagrammes états-transitions
Delphine Longuet
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