Вы находитесь на странице: 1из 28

Polytech Paris-Sud Formation initiale 3e anne Spcialit Informatique

UML
Diagrammes tats-transitions

Delphine Longuet
delphine.longuet@lri.fr

Diagramme tats-transitions
Objectif : Dcrire le comportement dynamique d'une entit (logiciel, composant, objet...) Comportement dcrit 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
transition teinte tat PressionInterrupteur PressionInterrupteur Allume

D. Longuet - UML

Diagramme tats-transitions
Objectif : Dcrire le comportement dynamique d'une entit (logiciel, composant, objet...) Comportement dcrit 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 Intrt : ! Vue synthtique de la dynamique de l'entit ! Regroupe un ensemble de scnarios

D. Longuet - UML

Exemple : distributeur automatique


Distributeur insrerCarte pavSaisieCode saisirCode ListeMontants choisirMontant rendreCarte dlivrerBillets insrerCarte pavSaisieCode saisirCode messageCodeErron pavSaisieCode saisirCode ListeMontants Distributeur insrerCarte messageCarteInvalide rendreCarte choisirMontant rendreCarte dlivrerBillets Distributeur insrerCarte pavSaisieCode saisirCode messageCodeErron pavSaisieCode saisirCode messageCodeErron pavSaisieCode saisirCode messageCodeErron messageCarteAvale Distributeur

Scnario principal

Une erreur de code Trois erreurs de code


4

Carte invalide
D. Longuet - UML

Diagramme tats-transitions correspondant


insrerCarte [carte non valide] / rendreCarte allumer Inactif insrerCarte [carte valide] when(nbEssais = 3) / avalerCarte

CarteValide Entry / nbEssais 0 saisirCode [code erron] / nbEssais + 1

teindre

autorisation [refuse]

autorisation [accorde] /dlivrerBillets

saisirCode [code valide]

Transaction Entry / rendreCarte

choisirMontant / demanderAutorisation

CodeValid

D. Longuet - UML

tat
Types d'tats ! tat initial Initialisation du systme, excution du constructeur de l'objet ! tat final Fin de vie du systme, destruction de l'objet ! tats intermdiaires : tapes de la vie du systme, de l'objet
tat Entry [cond. ent.] / act. ent. Do / activit event1 [cond1] / action1 event2 [cond2] / action2 ... Exit [cond. sort.] / act. sort.
D. Longuet - UML 6

tat
Caractristiques d'un tat : ! Conditions vrifies ! Actions ralises ! vnements attendus
rglerTemprature(T) FourAllum ... Entry / mettre thermostat T Do / allumer voyant when(thermostat < T) / chauffer timeout ...
D. Longuet - UML 7

conditions : thermostat non nul minuterie non nulle

tat
Caractristiques d'un tat : ! Conditions vrifies ! Actions ralises ! vnements attendus
rglerTemprature(T) FourAllum ... activit pendant la dure de l'tat Entry / mettre thermostat T Do / allumer voyant when(thermostat < T) / chauffer timeout ...
D. Longuet - UML 8

action l'entre dans l'tat

tat
Caractristiques d'un tat : ! Conditions vrifies ! Actions ralises ! vnements attendus
rglerTemprature(T) FourAllum ... Entry / mettre thermostat T Do / allumer voyant when(thermostat < T) / chauffer timeout / thermostat zro ... vnement avec changement d'tat
9

vnement rinitialisant l'tat

vnement sans changement d'tat

D. Longuet - UML

vnement
vnement : Fait instantan venant de l'extrieur du systme et survenant un instant donn Types d'vnements : ! Signal : rception d'un message asynchrone ! Appel d'une opration (synchrone) : lie aux cas d'utilisation, opration du diagramme de classes... ! Satisfaction d'une condition boolenne : when(cond), value continuellement jusqu' ce qu'elle soit vraie ! Temps - Date relative : when(date = date) - Date absolue : after(dure)
D. Longuet - UML 10

Action
Action : Raction du systme un vnement Caractristiques : atomique, instantane, non interruptible Exemples d'actions (syntaxe laisse libre) : ! affectation ! envoi d'un signal ! appel d'une opration ! cration ou destruction d'un objet

D. Longuet - UML

11

Action dclenche par un vnement


vnement [condition] / action Lorsque l'vnement se produit, si la condition est vrifie, alors l'action est effectue
avec changement d'tat (transition) vnement [condition] / action

tat1

tat2

tat vnement [condition] / action

sans changement d'tat (vnement interne)

D. Longuet - UML

12

Dynamique d'un tat


vnements internes l'tat : ! vnement l'entre : Entry ! vnement la sortie : Exit ! vnement 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


vnements internes l'tat : ! vnement l'entre : Entry ! vnement la sortie : Exit ! vnement sans changement d'tat : event ! Activit : Do
tat

! Activit action ! Pas instantane ! Peut tre interrompue

Effet des vnements internes : Interruption de l'activit avec sauvegarde du contexte


D. Longuet - UML

Entry [cond. ent.] / act. ent. Do / activit event1 [cond1] / action1 event2 [cond2] / action2 ... Exit [cond. sort.] / act. sort.

14

Dynamique d'un tat


vnements externes l'tat : transitions ! Transition vers l'tat : evt-in ! Transition depuis l'tat : evt-out ! Transition depuis l'tat vers lui-mme : evt-self
tat Entry [cond. ent.] / act. ent. Do / activit event1 [cond1] / action1 evt-out [cond. out] / act. out event2 [cond2] / action2 ... Exit [cond. sort.] / act. sort.
evt-in [cond. in] / act. in

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

Effet de evt-self : Rinitialisation de l'tat, interruption de l'activit sans sauvegarde du contexte


D. Longuet - UML 15

Dynamique d'un tat


tat Entry [cond. ent.] / act. ent. Do / activit event1 [cond1] / action1 evt-out [cond. out] / act. out event2 [cond2] / action2 ... Exit [cond. sort.] / act. sort.
evt-in [cond. in] / act. in

interruption de l'activit pas de changement d'tat evt-in event2 event1 evt-out

act. in act. ent.


D. Longuet - UML

action2

action1 act. out act. sort.


16

Dynamique d'un tat


tat Entry [cond. ent.] / act. ent. Do / activit event1 [cond1] / action1 evt-out [cond. out] / act. out event2 [cond2] / action2 ... Exit [cond. sort.] / act. sort.
evt-in [cond. in] / act. in

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

arrt de l'activit changement d'tat evt-in event2 evt-self event1 evt-out

act. in act. ent.


D. Longuet - UML

action2

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 tat Entry [cond. ent.] / act. ent. Do / activit event [cond] / action Exit [cond. sort.] / act. sort. Perte du contexte de l'activit pendant action tat

Entry [cond. ent.] / act. ent. Do / activit Exit [cond. sort.] / act. sort.

event [cond] / action

D. Longuet - UML

18

Exemple Distributeur automatique


saisirCode [code erron] / nbEssais + 1 insrerCarte [carte non valide] / rendreCarte allumer Inactif insrerCarte [carte valide] when(nbEssais = 3) / avalerCarte CarteValide Entry / nbEssais 0 saisirCode [code erron] / nbEssais + 1

teindre

autorisation [refuse]

autorisation [accorde] /dlivrerBillets

saisirCode [code valide]

Transaction Entry / rendreCarte

choisirMontant / demanderAutorisation

CodeValid

D. Longuet - UML

19

tats composites
tat composite : tat regroupant un ensemble d'tats Objectifs : ! Hirarchiser les tats ! Structurer les comportements complexes ! Factoriser les actions
raccrocher Occup Raccroch raccrocher raccrocher raccrocher D. Longuet - UML Composition Tonalit

Conversation 20

tats composites
tat composite : tat regroupant un ensemble d'tats Objectifs : ! Hirarchiser les tats ! Structurer les comportements complexes ! Factoriser les actions
Dcroch Occup Raccroch Composition Tonalit raccrocher Conversation D. Longuet - UML 21

tats composites
tat composite : tat regroupant un ensemble d'tats Objectifs : ! Hirarchiser les tats ! Structurer les comportements complexes ! Factoriser les actions
transition vers l'tat composite
Raccroch Composition Tonalit raccrocher Dcroch Occup

point d'entre dans l'tat


D. Longuet - UML

Conversation 22

tats composites
tat orthogonal : tat composite dans lequel plusieurs tats sont actifs simultanment (concurrence/paralllisme) tat actif global = un tat actif par rgion
rgions
Prparation Entry / placer gobelet Do / servir boisson Prparation et rendu monnaie 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 simultanment (concurrence/paralllisme) tat actif global = un tat actif par rgion
transition complexe
Prparation Entry / placer gobelet Do / servir boisson Prparation et rendu monnaie Ajout sucre Entry / ajouter sucre

Rendu monnaie Entry / monnaie = somme - prix Do / rendre(monnaie)

D. Longuet - UML

Reprsentation quivalente

24

Utilisation des diagrammes tats-transitions


En phase d'analyse : ! Description de la dynamique du systme vu de l'extrieur ! Synthse des scnarios lis aux cas d'utilisation ! vnements = action des acteurs En phase de conception : ! Description de la dynamique d'un objet particulier ! vnements = appels d'oprations

D. Longuet - UML

25

Diagramme tats-transitions d'un objet


retirer(c) Conteneur() Vide ajouter(c,v) retirer(c) [present(c) and taille = 1] retirer(c) [present(c)] ajouter(c,v) [present(c)] ajouter(c,v) [not present(c) and taille < capacit - 1] Non vide retirer(c) [present(c) and taille > 1] retirer(c) [not present(c)]

Spcification du conteneur : ! ensemble de couples (cl,valeur) avec cls uniques ! capacit fixe ! taille = nombre de couples prsents ! ajouter(c,v) : ajoute si cl absente, crase si cl prsente ajout au-del de la capacit interdit ! retirer(c) : retire le couple de cl c s'il existe
D. Longuet - UML

ajouter(c,v) [not present(c) and taille = capacit - 1] ajouter(c,v) [not present(c)] / Exception

Plein

ajouter(c,v) [present(c)]

retirer(c) [not present(c)]

26

Rsum rapide

D. Longuet - UML

27

Utilisation d'UML en projet logiciel


Analyse des besoins et spcification ! Diagramme des cas d'utilisation (+ description textuelle) ! Diagrammes de squence de scnarios d'utilisation (scnarios gnriques ou instancis) ! Diagramme tats-transitions du systme global Conception ! Diagramme de classes ! Diagrammes de squence des cas d'utilisation dtaills par rapport au diagramme de classes ! Diagrammes tats-transitions d'objets

D. Longuet - UML

28

Вам также может понравиться