MCDC
Diagrammes d’états
Ileana Ober
Université Paul Sabatier
IRIT
[Link]
Année Universitaire 2023-2024
©Ileana Ober
Une démarche
(classes métier)
+ diags activité
(processus métier)
Adapté de
"UML : modéliser un site e-commerce",
Pascal ROQUES, Eyrolles, 2002
Exemples - signaux
dé nition
«signal» de signal
InitierAppel RéseauGSM
noAppelé : String
«signal» InitierAppel
La classe
RéseauGSM est
capable de traiter le
signal Initier Appel
©Ileana Ober, 2013
fi
Mécanismes de communication en
UML
✤ Si dans le modèle il n’y a pas d’information explicite liée à la
communication (i.e. pas de diagramme d’architecture avec des
connecteurs)
Point à point - entre des objets se connaissent
(des liens existent, retours d’opération, etc.)
Diffusion - le message arrive à tous les objets accessibles et
disponibles
✤ Si une structure de communication existe - la communication respecte
ses contraintes (e.g. spéci ée par un diagramme d’architecture)
©Ileana Ober, 2013
fi
Plan
✤ Principes de la communication en UML
✤ Description du comportement en UML
✤ Notions de base dans les machines à états
✤ Utilisation des machines à états
©Ileana Ober, 2013
Spécification du comportement
en UML
préscriptif descriptif
(qu’est-ce que ?) (comment?)
OCL, DI
niveau système MàE, DA
niveau paquetage DI, contraintes
MàE, DA
(ensemble classes) OCL
niveau classe contraintes OCL MàE
niveau opération contraintes OCL actions, MàE
©Ileana Ober, 2013
Machine à états
✤ Qu’est-ce que c’est?
✤ automate à états nis, qui détaille (décrit) le comportement
✤ Contexte
✤ système / pacquage - décrit le comportement d’un ensemble d’objets
✤ une diagramme d’activités plus complexe et plus détaillé
✤ s’utilise surtout dans le cas des systèmes /pacquages statiques (faiblement dynamiques),
i.e. peu de création destruction d’objets, peu d’instances /classe
✤ classe - décrit le comportement de chaque instance de la classe
✤ décrit le comportement détaille en termes de réactions aux événements
✤ peut dé nir la politique de gestion des appels concurrents
✤ opération - décrit le comportement de l’objet englobant en réponse aux appels de l’opération
✤ décrit le comportement détaille en termes de réactions aux événements
©Ileana Ober, 2013
fi
fi
Plan
✤ Principes de la communication en UML
✤ Description du comportement en UML
✤ Notions de base dans les machines à états
✤ Utilisation des machines à états
©Ileana Ober, 2013
Notions de base
✤ Etat Connecté
✤ Transition
✤ Action send terminé to caller
✤ Evénement fermer, timeout, ...
✤ File d’attente (sans notation explicite)
©Ileana Ober, 2013
Exemple simple
Transitio
Etat initial
OFF ON
Etat Transitio Etat
©Ileana Ober, 2013
Exemple distributeur boissons
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Exemple exécution
nouvellePièce pasAssez
Attente
CompterMonnaie
mauvaisePièce
abandon assezMonnaie
RendreMonnaie
abandon ChoisirBoisson
mauvaisChoix
ok
DistribuerBoisson
©Ileana Ober, 2013
Etat Attente
✤ décrit une situation de l’objet et du système
✤ une façon de garder de l’information sur le passé
✤ états
✤ initial - l’exécution de la machine à états commence avec ça
dans le cas de la machine à état d’un objet activé dans le
constructeur
max 1/machine à états
✤ nal - l’exécution de la machine à états se termine ici
une fois atteint l’objet est détruit
il peut y avoir plusieurs / machine à états
✤ Il peut avoir des actions qui lui sont associées
©Ileana Ober, 2013
fi
Transition
nouvellePièce
✤ Décrit un échange d’états Attente
CompterMonnaie
✤ A un état source et un état destination
✤ Peut être déclenchée par la réception d’un événement
✤ Peut être conditionnée par une garde
✤ Peut être spontanée, i.e. pas de condition, pas de garde elle est
déclenchée par la terminaison de l’action effectué dans son état
source
✤ Peut avoir une action qui lui est associée
©Ileana Ober, 2013
Action
✤ Décrit un bout de fonctionnalité
(affectation, envoi de signal, appel opération, etc.)
✤ Le moment d’exécution d’un action permet de les classi er en:
✤ Entry action - action qui s’exécute à l’entrée dans un état
✤ Exit action - action qui s’exécute juste avant la sortie d’un état
✤ Do action - action qui s’exécute pendant la résidence dans un
état
✤ Action associée à une transition
©Ileana Ober, 2013
fi
Syntaxe des transitions
[événement][“[“garde”]”] [/effet]
<garde> ::= <condition booléenne>
<effet> ::= [<action>][^<signal envoyé>]
<action> - syntaxe qui dépend du langage d’actions
Exemples
sig1 transition déclenchée par la
réception du signal sig1
©Ileana Ober, 2013
Syntaxe des transitions
[événement][“[“garde”]”] [/effet]
<garde> ::= <condition booléenne>
<effet> ::= [<action>][^<signal envoyé>]
<action> - syntaxe qui dépend du langage d’actions
Exemples
transition déclenchée
sig1 par la réception du signal
sig2, si la valeur de a est
sig2 [a<7] inférieure à 7
©Ileana Ober, 2013
Syntaxe des transitions
[événement][“[“garde”]”] [/effet]
<garde> ::= <condition booléenne>
<effet> ::= [<action>][^<signal envoyé>]
<action> - syntaxe qui dépend du langage d’actions
Exemples
sig1 transition déclenchée si la
valeur de a est inférieure à 7
sig2 [a<7]
[a<7]
©Ileana Ober, 2013
Syntaxe des transitions
[événement][“[“garde”]”] [/effet]
<garde> ::= <condition booléenne>
<effet> ::= [<action>][^<signal envoyé>]
<action> - syntaxe qui dépend du langage d’actions
Exemples
transition déclenchée par la
sig1 réception de sig1. L’action
associée à la transition est
sig2 [a<7]
i:=i+1
[a<7]
sig 1 / i:=i+1
©Ileana Ober, 2013
Syntaxe des transitions
[événement][“[“garde”]”] [/effet]
<garde> ::= <condition booléenne>
<effet> ::= [<action>][^<signal envoyé>]
<action> - syntaxe qui dépend du langage d’actions
Exemples
sig1 transition déclenchée par la
réception de sig1. L’effet de la
sig2 [a<7] transition est l’envoi du signal
[a<7] sig2 à l’objet o.
sig 1 / i:=i+1
sig1 / ^ sig2 to o
©Ileana Ober, 2013
Exemple simple
action
trigger
setOn/nb:=nb+1
Off On
setOff
©Ileana Ober, 2013
Variation - interrupteur à un
bouton
action
trigger
switch/nb:=nb+1
Off On
switch
le même signal
apparaît sur les 2
transitions
©Ileana Ober, 2013
Variation - interrupteur à un
bouton
action
switch/nb:=nb+1
Off On
switch [nb>250000]
Le même signal
état nal
peut déclencher
plusieurs transitions
garde
On modélise le fait qu’après
250000 allumages, l’interrupteur
ne marche plus ©Ileana Ober, 2013
fi
Evénement
✤ quelque chose d’important qui se passe dans le système ou son
environnement
✤ utilisé comme trigger (déclencheur) des transitions
✤ types
signal event - la réception d’un signal
call event - la réception d’un appel (d’opération)
time event - la réception d’un signal lié au temps
change event - le fait qu’une variable ait changée de valeur
....
©Ileana Ober, 2013
Etats hiérarchiques
✤ Avec tous les états au même niveau - la modélisation ne re ète pas
les parties communes qui peuvent exister entre états
✤ Etats hiérarchiques - permettent de structurer les machines à états
✤ Etat hiérarchique de type “or” - un état qui contient
une sous-machine à états
✤ Etat hiérarchique de type “and” - un état qui contient
2+ machines à états concurrentes
fl
©Ileana Ober, 2013
Exemple d’état composé (type or)
switch/nb:=nb+1 On
Off
switch
cd
radio CD
radio
[nb>250000]
©Ileana Ober, 2013
Exemple d’état composé parallèle
(type and)
switch/nb:=nb+1 On
Off
cd
switch
radio CD
radio
volumeManager
[nb>250000]
dec/if vol>0 then vol--
inc/if vol<volMax then vol++
©Ileana Ober, 2013
switch/nb:=nb+1 On
Off
switch
cd
radio CD
radio
[nb>250000]
©Ileana Ober, 2013
Etat histoire
switch/nb:=nb+1 On
Off H
switch
cd
radio CD
radio
H représente le plus récent
état actif de l’état composée [nb>250000]
©Ileana Ober, 2013
Changement d’état -
un problème complexe
Et1 Et4
Et2 Et5
ev/action
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
un problème complexe
Est-ce que la transition
Et1 Et4 Et3->Et4 est autorisée?
Et2 Et5
ev/action
Oui
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
un problème complexe
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5
ev/action
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
enchaînement des actions
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5 ExitAction Et3
ev/action
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
enchaînement des actions
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5 ExitAction Et3
ev/action
ExitAction Et1
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
enchaînement des actions
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5 ExitAction Et3
ev/action
ExitAction Et1
action
Et3 Et6
©Ileana Ober, 2013
Changement d’état -
enchaînement des actions
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5 ExitAction Et3
ev/action
ExitAction Et1
action
Et3 Et6 EntryAction Et4
©Ileana Ober, 2013
Changement d’état -
enchaînement des actions
Lors de la
transition Et3→Et4
Et1 Et4 l’enchaînement
des actions est:
Et2 Et5 ExitAction Et3
ev/action
ExitAction Et1
action
Et3 Et6 EntryAction Et4
EntryAction Et5
©Ileana Ober, 2013
Plan
✤ Principes de la communication en UML
✤ Description du comportement en UML
✤ Notions de base dans les machines à états
✤ Utilisation des machines à états
©Ileana Ober, 2013
Utilisation des diagrammes états-
transition
✤ En phase d’analyse
✤ Description de la dynamique du systèmes vu de l’extérieur
✤ Synthèse de scénarios des cas d’utilisation
✤ Evénements = actions des acteurs
✤ En phase de conception
✤ Description de la dynamique d’un objet (d’une classe)
✤ Evénements = appels d’opérations, interactions avec
l’environnement
©Ileana Ober, 2013
Utilisation des machines à états?
✤ pour quels systèmes?
pour des systèmes réactifs (comportement fortement dépendant de
ce qui se passe dans son environnement)
✤ pourquoi les utiliser?
Si on les utilise judicieusement:
facile à lire
donnent des résultats de véri cation intéressants
code généré plus ef cace
✤ Attention la spéci cation du comportement avec des machines à
états ne se prête pas à tout système (e.g. compilateur)
©Ileana Ober, 2013
fi
fi
fi
Conclusions
✤ La modélisation peut couvrir le comportement
✤ Les machines à états permettent de décrire le comportement des
systèmes réactives
✤ Les modèles de comportement sont utilisés comme entrée pour des
outils de validation et pour des générateurs de code
©Ileana Ober, 2013