Vous êtes sur la page 1sur 14

5.

1 Introduction au formalisme
5.1.1 Prsentation
Les diagrammes d'tats-transitions d'UML dcrivent le comportement interne d'un objet l'aide d'un automate tats finis. Ils prsentent les squences possibles d'tats et d'actions qu'une instance de classe peut traiter au cours de son cycle de vie en raction des vnements discrets (de type signaux, invocations de mthode). Ils spcifient habituellement le comportement d'une instance de classeur (classe ou composant), mais parfois aussi le comportement interne d'autres lments tels que les cas d'utilisation, les sous-systmes, les mthodes. Le diagramme d'tats-transitions est le seul diagramme, de la norme UML, offrir une vision complte et non ambigu de l'ensemble des comportements de l'lment auquel il est attach. En effet, un diagramme d'interaction n'offre qu'une vue partielle correspondant un scnario sans spcifier comment les diffrents scnarii interagissent entre eux. La vision globale du systme n'apparat pas sur ce type de diagramme puisqu'ils ne s'intressent qu' un seul lment du systme indpendamment de son environnement. Concrtement, un diagramme d'tats-transitions est un graphe qui reprsente un automate tats finis, c'est--dire une machine dont le comportement des sorties ne dpend pas seulement de l'tat de ses entres, mais aussi d'un historique des sollicitations passes.

5.1.2 Notion et exemple d'automate tats finis


Comme nous venons de le dire, un automate tats finis est un automate dont le comportement des sorties ne dpend pas seulement de l'tat de ses entres, mais aussi d'un historique des sollicitations passes. Cet historique est caractris par un tat global. Un tat global est un jeu de valeurs d'objet, pour une classe donne, produisant la mme rponse face aux vnements. Toutes les instances d'une mme classe ayant le mme tat global ragissent de la mme manire un vnement. Il ne faut pas confondre les notions d'tat global et d'tat. La section 5.2.1 donne plus d'information sur ces deux acceptions du terme tat. Un automate tats finis est graphiquement reprsent par un graphe comportant des tats, matrialiss par des rectangles aux coins arrondis, et des transitions, matrialises par des arcs orients liant les tats entre eux.

Figure 5.1: Un diagramme d'tats-transitions simple.

La figure 5.1 montre un exemple simple d'automate tats finis. Cet automate possde deux tats (Allum et Eteint) et deux transitions correspondant au mme vnement : la pression sur un bouton d'clairrage domestique. Cet automate tats finis illustre en fait le fonctionnement d'un tlrupteur dans une maison. Lorsque l'on appuie sur un bouton d'clairrage, la raction de l'clairage associ dpendra de son tat courant (de son historique) : s'il la lumire est allume, elle s'teindra, si elle est teinte, elle s'allumera.

5.1.3 Diagrammes d'tats-transitions


Un diagramme d'tats-transitions rassemble et organise les tats et les transitions d'un classeur donn. Bien entendu, le modle dynamique du systme comprend plusieurs diagrammes d'tats-transitions. Il est souhaitable de construire un diagramme d'tatstransitions pour chaque classeur (qui, le plus souvent, est une classe) possdant un comportement dynamique important. Un diagramme d'tats-transitions ne peut tre associ qu' un seul classeur. Tous les automates tats finis des diagrammes d'tatstransitions d'un systme s'excutent concurremment et peuvent donc changer d'tat de faon indpendante.

5.2 tat
5.2.1 Les deux acceptions du terme tat
tat dans un diagrammes d'tats-transitions

Figure 5.2: Exemple d'tat simple.

Comme nous l'avons dj dit, un tat, que l'on peut qualifier informellement d'lmentaire, se reprsente graphiquement dans un diagrammes d'tats-transitions par un rectangles aux coins arrondis (figure 5.2). Certains tats, dits composites (cf. section 5.6), peuvent contenir (i.e. envelopper) des sous-tats.

Le nom de l'tat peut tre spcifi dans le rectangles et doit tre unique dans le diagrammes d'tats-transitions, ou dans l'tat enveloppant. On peut l'omettre, ce qui produit un tat anonyme. Il peut y avoir un nombre quelconque d'tats anonymes distincts. Un tat imbriqu peut tre identifi par son nom qualifi (cf. section 2.4.2) si tous les tats enveloppant ont des noms. Un tat peut tre partitionn en plusieurs compartiments spars par une ligne horizontale. Le premier compartiment contient le nom de l'tat et les autres peuvent recevoir des transitions interne (cf. section 5.4.6), ou des sous-tats (cf. section 5.6), quand il s'agit d'un tat composite. Dans le cas d'un tat simple (i.e. sans transitions interne ou sous-tat), on peut omettre toute barre de sparation (figure 5.2). tat d'un objet, ou du diagrammes d'tats-transitions (i.e. tat global) Un objet peut passer par une srie d'tats pendant sa dure de vie. Un tat reprsente une priode dans la vie d'un objet pendant laquelle ce dernier attend un vnement ou accomplit une activit. La configuration de l'tat global de l'objet est le jeu des tats (lmentaires) qui sont actifs un instant donn. Dans le cas d'un diagramme d'tats-transitions simple (sans transition concurrente), il ne peut y avoir qu'un seul tat actif la fois. Dans ce cas, les notions d'tat actif et d'tat global se rejoignent. Cependant, la configuration de l'tat global peut contenir plusieurs tats actifs un instant donn. On parle d'tats concurrents (cf. section 5.6.5) quand plusieurs tats sont actifs en mme temps et on dit qu'il y a concurrence au sein de l'objet. Le nombre d'tats actifs peut changer pendant la dure de vie d'un objet du fait d'embranchements ou de jointures appeles transitions concurrentes (cf. section 5.6.5).

5.2.2 tat initial et final


tat initial

Figure 5.3: Reprsentation graphique de l'tat initial.

L'tat initial est un pseudo tat qui indique l'tat de dpart, par dfaut, lorsque le diagramme d'tats-transitions, ou l'tat enveloppant, est invoqu. Lorsqu'un objet est cr, il entre dans l'tat initial. tat final

Figure 5.4: Reprsentation graphique de l'tat final.

L'tat final est un pseudo tat qui indique que le diagramme d'tats-transitions, ou l'tat enveloppant, est termin.

5.3 vnement
5.3.1 Notion d'vnement
Un vnement est quelque chose qui se produit pendant l'excution d'un systme et qui mrite d'tre modlis. Les diagrammes d'tats-transitions permettent justement de spcifier les ractions d'une partie du systme des vnements discrets. Un vnement se produit un instant prcis et est dpourvu de dure. Quand un vnement est reu, une transition peut tre dclenche et faire basculer l'objet dans un nouvel tat. On peut diviser les vnements en plusieurs types explicites et implicites : signal, appel, changement et temporel.

5.3.2 vnement de type signal (signal)

Figure 5.5: Dclaration de signaux et hritage.

Un signal est un type de classeur destin explicitement vhiculer une communication asynchrone sens unique entre deux objets. L'objet expditeur cre et initialise explicitement une instance de signal et l'envoi un objet explicite ou tout un groupe d'objets. Il n'attend pas que le destinataire traite le signal pour poursuivre son droulement. La rception d'un signal est un vnement pour l'objet destinataire. Un mme objet peut tre la fois expditeur et destinataire. Les signaux sont dclars par la dfinition d'un classeur portant le strotype signal ne fournissant pas d'opration et dont les attributs sont interprts comme des arguments (cf. figure 5.5). La syntaxe d'un signal est la suivante : <nom_vnement> ( [ <paramettre> : <type> [; <paramettre> : <type> ... ] ] ) Les signaux supporte la relation de gnralisation (cf. figure 5.5). Les signaux hritent des attributs de leurs parents (hritage) et ils dclenchent des transitions contenant le type du signal parent (polymorphisme).

5.3.3 vnement d'appel (call)


Un vnement d'appel reprsente la rception de l'appel d'une opration par un objet. Les paramtres de l'opration sont ceux de l'vnement d'appel. La syntaxe d'un vnement d'appel est la mme que celle d'un signal. Par contre, les vnements d'appel sont des mthodes dclares au niveau du diagramme de classes.

5.3.4 vnement de changement (change)


Un vnement de changement est gnr par la satisfaction ( i.e. passage de faux vrai) d'une expression boolenne sur des valeurs d'attributs. Il s'agit d'une manire dclarative d'attendre qu'une condition soit satisfaite. La syntaxe d'un vnement de changement est la suivante : when ( <condition_boolenne> ) Notez la diffrence entre une condition de garde (cf. section 5.4.2) et un vnement de changement. La premire est value une fois que l'vnement dclencheur de la transition a lieu et que le destinataire le traite. Si elle est fausse, la transition ne se dclenche pas et la condition n'est pas rvalue. Un vnement de changement est valu continuellement jusqu' ce qu'il devienne vrai, et c'est ce moment-l que la transition se dclenche.

5.3.5 vnement temporel (after ou when)


Les vnements temporels sont gnrs par le passage du temps. Ils sont spcifis soit de manire absolue (date prcise), soit de manire relative (temps coul). Par dfaut, le temps commence s'couler ds l'entre dans l'tat courant. La syntaxe d'un vnement temporel spcifi de manire relative est la suivante : after ( <dure> ) Un vnement temporel spcifi de manire absolue est dfini en utilisant un vnement de changement : when ( date = <date> )

5.4 Transition
5.4.1 Dfinition et syntaxe
Une transition dfinit la rponse d'un objet l'occurrence d'un vnement. Elle lie, gnralement, deux tats E1 et E2 et indique qu'un objet dans un tat E1 peut entrer dans l'tat E2 et excuter certaines activits, si un vnement dclencheur se produit et que la condition de garde est vrifie. La syntaxe d'une transition est la suivante :

[ <vnement> ][ '[' <garde> ']' ] [ '/' <activit> ] La syntaxe de <vnement> a t dfinie dans la section 5.3 Le mme vnement peut tre le dclencheur de plusieurs transitions quittant un mme tat. Chaque transition avec le mme vnement doit avoir une condition de garde diffrente. En effet, une seule transition peut se dclencher dans un mme flot d'excution. Si deux transitions sont actives en mme temps par un mme vnement, une seule se dclenche et le choix n'est pas prvisible ( i.e. pas dterministe).

5.4.2 Condition de garde


Une transition peut avoir une condition de garde (spcifie par '[' <garde> ']' dans la syntaxe). Il s'agit d'une expression logique sur les attributs de l'objet, associ au diagramme d'tats-transitions, ainsi que sur les paramtres de l'vnement dclencheur. La condition de garde est value uniquement lorsque l'vnement dclencheur se produit. Si l'expression est fausse ce moment l, la transition ne se dclenche pas, si elle est vraie, la transition se dclenche et ses effets se produisent.

5.4.3 Effet d'une transition


Lorsqu'une transition se dclenche (on parle galement de tir d'une transition), son effet (spcifi par '/' <activit> dans la syntaxe) s'excute. Il s'agit gnralement d'une activit qui peut tre une opration primitive comme une instruction d'assignation ; l'envoi d'un signal ; l'appel d'une opration ; une liste d'activits, etc.

La faon de spcifier l'activit raliser est laisse libre (langage naturel ou pseudocode). Lorsque l'excution de l'effet est termine, l'tat cible de la transition devient actif.

5.4.4 Transition externe

Figure 5.6: Reprsentation graphique d'une transition externe entre deux tats.

Une transition externe est une transition qui modifie l'tat actif. Il s'agit du type de transition le plus rpandu. Elle est reprsente par une flche allant de l'tat source vers l'tat cible. La figure 5.6 illustre la reprsentation graphique d'une transition externe entre deux tats.

5.4.5 Transition d'achvement

Une transition dpourvue d'vnement dclencheur explicite se dclenche la fin de l'activit contenue dans l'tat source (y compris les tat imbriqus). Elle peut contenir une condition de garde qui est value au moment o l'activit contenue dans l'tat s'achve, et non pas ensuite. Les transitions de garde sont, par exemple, utilises pour connecter les tats initiaux et les tats historiques (cf. section 5.6.3) avec leur tat successeurs puisque ces pseudotats ne peuvent rester actifs.

5.4.6 Transition interne

Figure 5.7: Reprsentation de la saisie d'un mot de passe dans un tat unique en utilisant des transitions internes.

Les rgles de dclenchement d'une transition interne sont les mmes que pour une transition externe except qu'une transition interne ne possde pas d'tat cible et que l'tat actif reste le mme la suite de son dclenchement. La syntaxe d'une transition interne reste la mme que celle d'une transition classique (cf. section 5.4.1). Par contre, les transitions internes ne sont pas reprsentes par des arcs mais sont spcifies dans un compartiment de leur tat associ (cf. figure 5.7). Les transitions internes possdent des noms d'vnement prdfinis correspondant des dclencheurs particuliers : entry, exit, do et include. Ces mots clefs rservs viennent prendre la place du nom de l'vnement dans la syntaxe d'une transition interne. entry exit do Une activit do commence ds que l'activit entry est termine. Lorsque cette activit est termine, une transition d'achvement peut tre dclenche, aprs l'excution de l'activit exit bien entendu. Si une transition se dclenche pendant que l'activit do est en cours, cette dernire est interrompue et l'activit exit de l'tat s'excute. include permet d'invoquer un sous-diagramme d'tats-transitions. Les activits entry servent souvent effectuer la configuration ncessaire dans un tat. Comme il n'est pas possible de l'luder, toute action interne l'tat peut supposer que la configuration est effectue indpendamment de la manire dont on entre dans l'tat. De manire analogue, une activit exit est une occasion de procder un nettoyage. Cela peut s'avrer particulirement utile lorsqu'il existe des transitions de haut niveau qui reprsentent des conditions d'erreur qui abandonnent les tats imbriqus. entry permet de spcifier une activit qui s'accomplit quand on entre dans l'tat. exit permet de spcifier une activit qui s'accomplit quand on sort de l'tat.

Le dclenchement d'une transition interne ne modifie pas l'tat actif et n'entrane donc pas l'activation des activits entry et exit.

5.5 Point de choix


Il est possible de reprsenter des alternatives pour le franchissement d'une transition. On utilise pour cela des pseudo-tats particuliers : les points de jonction (reprsents par un petit cercle plein) et les points de dcision (reprsent par un losange).

5.5.1 Point de jonction

Figure 5.8: En haut, un diagramme sans point de jonction. En bas, son quivalent utilisant un point de jonction.

Figure 5.9: Exemple d'utilisation de deux points de jonction pour reprsenter une alternative.

Les points de jonction sont un artefact graphique (un pseudo-tat en l'occurrence) qui permet de partager des segments de transition, l'objectif tant d'aboutir une notation plus compacte ou plus lisible des chemins alternatifs. Un point de jonction peut avoir plusieurs segments de transition entrante et plusieurs segments de transition sortante. Par contre, il ne peut avoir d'activit interne ni des transitions sortantes dotes de dclencheurs d'vnements. Il ne s'agit pas d'un tat qui peut tre actif au cours d'un laps de temps fini. Lorsqu'un chemin passant par un point de jonction est emprunt (donc lorsque la transition associe est dclenche) toutes les gardes le long de ce chemin doivent s'valuer vrai ds le franchissement du premier segment. La figure 5.8 illustre bien l'utilit des points de jonction. La figure 5.9 illustre l'utilisation de points de jonction pour reprsenter le branchement d'une clause conditionnelle.

5.5.2 Point de dcision

Figure 5.10: Exemple d'utilisation d'un point de dcision.

Un point de dcision possde une entre et au moins deux sorties. Contrairement un point de jonction, les gardes situes aprs le point de dcision sont values au moment o il est atteint. Cela permet de baser le choix sur des rsultats obtenus en franchissant le segment avant le point de choix (cf. figure 5.10). Si, quand le point de dcision est atteint, aucun segment en aval n'est franchissable, c'est que le modle est mal form. Il est possible d'utiliser une garde particulire, note [else], sur un des segments en aval d'un point de choix. Ce segment n'est franchissable que si les gardes des autres segments sont toutes fausses. L'utilisation d'une clause [else] est recommande aprs un point de dcision car elle garantit un modle bien form.

5.6 tats composites


5.6.1 Prsentation

Figure 5.11: Exemple d'tat composite modlisant l'association d'une commande un client.

Un tat simple ne possde pas de sous-structure mais uniquement, le cas chant, un jeu de transitions internes. Un tat composite est un tat dcompos en rgions contenant chacune un ou plusieurs sous-tats. Quand un tat composite comporte plus d'une rgion, il est qualifi d' tat orthogonal. Lorsqu'un tat orthogonal est actif, un sous-tat direct de chaque rgion est simultanment actif, il y a donc concurrence (cf. section 5.6.5). Un tat composite ne comportant qu'une rgion est qualifi d'tat non orthogonal. Implicitement, tout diagramme d'tats-transitions est contenu dans un tat externe qui n'est usuellement pas reprsent. Cela apporte une plus grande homognit dans la description : tout diagramme d'tats-transitions est implicitement un tat composite.

Figure 5.12: Notation abrge d'un tat composite.

L'utilisation d'tats composites permet de dvelopper une spcification par raffinements. Il n'est pas ncessaire de reprsenter les sous-tats chaque utilisation de l'tat englobant. Une notation abrge (figure 5.12) permet d'indiquer qu'un tat est composite et que sa dfinition est donne sur un autre diagramme. La figure figure 5.11 montre un exemple d'tat composite et la figure 5.12 montre sa notation abrge.

5.6.2 Transition
Les transitions peuvent avoir pour cible la frontire d'un tat composite et sont quivalentes une transition ayant pour cible l'tat initial de l'tat composite. Une transition ayant pour source la frontire d'un tat composite est quivalente une transition qui s'applique tout sous-tat de l'tat composite source. Cette relation est transitive : la transition est franchissable depuis tout tat imbriqu, quelle que soit sa profondeur.

Par contre, si la transition ayant pour source la frontire d'un tat composite ne porte pas de dclencheur explicite (i.e. s'il s'agit d'une transition d'achvement), elle est franchissable quand l'tat final de l'tat composite est atteint. Les transitions peuvent galement toucher des tats de diffrents niveaux d'imbrication en traversant les frontires des tats composites.

Figure 5.13: Exemple de configuration complexe de transition. Depuis l'tat tat 1, la rception de l'vnement event1 produit la squence d'activits QuitterE11, QuitterE1, action1, EntrerE2, EntrerE21, initialiser(),EntrerE22, et place le systme dans l'tat tat22.

La figure 5.13 illustre une configuration complexe de transition produisant une cascade d'activits.

5.6.3 tat historique

Figure 5.14: Exemple de diagramme possdant un tat historique profond permettant de reprendre le programme de lavage ou de schage d'une voiture l'endroit o il tait arriv avant d'tre interrompu.

Un tat historique, galement qualifi d'tat historique plat, est un pseudo-tat qui mmorise le dernier sous-tat actif d'un tat composite. Graphiquement, il est reprsent par un cercle contenant un H. Une transition ayant pour cible l'tat historique est quivalente une transition qui a pour cible le dernier tat visit de l'tat englobant. Un tat historique peut avoir une transition sortante non tiquete indiquant l'tat excuter si la rgion n'a pas encore t visite. Il est galement possible de dfinir un tat historique profond reprsent graphiquement par un cercle contenant un H*. Cet tat historique profond permet d'atteindre le dernier tat visit dans la rgion, quel que soit sont niveau d'imbrication, alors que le l'tat historique plat limite l'accs aux tats de son niveau d'imbrication. La figure 5.14 montre un diagramme d'tats-transitions modlisant le lavage automatique d'une voiture. Les tats de lavage, schage et lustrage sont des tats composites dfinis sur trois autres diagrammes d'tats-transitions non reprsents ici. En phase de lavage ou de schage, le client peut appuyer sur le bouton d'arrt d'urgence. S'il appuie sur ce bouton, la machine se met en attente. Il a alors deux minutes pour reprendre le lavage ou le lustrage, exactement o le programme t interrompue, c'est dire au niveau du dernier sous-tat actif des tats de lavage ou de lustrage (tat historique profond). Si l'tat avait t un tat historique plat, c'est toute la squence de lavage ou de lustrage qui aurait recommence. En phase de lustrage, le client peut aussi interrompre la machine. Mais dans ce cas, la machine s'arrtera dfinitivement.

5.6.4 Interface : les points de connexion

Figure 5.15: Exemple d'utilisation de points de connexion.

Comme nous l'avons dj dit, il est possible de masquer les sous-tats d'un tat composite et de les dfinir dans un autre diagramme. Cette pratique ncessite parfois l'utilisation de pseudo-tats appels points de connexion. Lorsque l'on utilise le comportement par dfaut de l'tat composite, c'est--dire entrer par l'tat initial par dfaut et considrer les traitements finis quand l'tat final est atteint,

aucun problme ne se pose car on utilise des transitions ayant pour cible, ou pour source, la frontire de l'tat composite. Dans ce cas, les points de connexion sont inutiles. Le problme se pose lorsqu'il est possible d'entrer ou de sortir d'un tat composite de plusieurs faons. C'est, par exemple, le cas lorsqu'il existe des transitions traversant la frontire de l'tat composite et visant directement, ou ayant pour source, un sous-tat de l'tat composite. Dans ce cas, la solution est d'utiliser des points de connexion sur la frontire de l'tat composite. Les points de connexion sont des points d'entre et de sortie portant un nom, et situs sur la frontire d'un tat composite. Ils sont respectivement reprsents par un cercle vide et un cercle barr d'une croix (cf. figure 5.15). Il ne s'agit que de rfrences un tat dfini dans l'tat composite . Une unique transition d'achvement, dpourvue de garde, relie le pseudo-tat source (i.e. le point de connexion) l'tat rfrenc. Cette transition d'achvement n'est que le prolongement de la transition qui vise le point de connexion (il peut d'ailleurs y en avoir plusieurs). Les points de connexions offrent ainsi une faon de reprsenter l'interface (au sens objet) d'un tat composite en masquant l'implmentation de son comportement. On peut considrer que les pseudo-tats initiaux et finaux sont des points de connexion sans nom.

5.6.5 Concurrence

Figure 5.16: Exemple d'utilisation d'un tat composite orthogonal.

Les diagrammes d'tats-transitions permettent de dcrire efficacement les mcanismes concurrents grce l'utilisation d'tats orthogonaux. Un tat orthogonal est un tat composite comportant plus d'une rgion, chaque rgion reprsentant un flot d'excution. Graphiquement, dans un tat orthogonal, les diffrentes rgions sont spares par un trait horizontal en pointill allant du bord gauche au bord droit de l'tat composite.

Chaque rgion peut possder un tat initial et final. Une transition qui atteint la bordure d'un tat composite orthogonal est quivalente une transition qui atteint les tats initiaux de toutes ses rgions concurrentes. Toutes les rgions concurrentes d'un tat composite orthogonal doivent atteindre leur tat final pour que l'tat composite soit considr comme termin. La figure 5.16 illustre l'utilisation d'un tat composite orthogonal pour modliser le fait que la prparation de la boisson d'un distributeur de boisson se fait en parallle au rendu de la monaie.

Figure 5.17: Exemple d'utilisation de transitions complexes.

Il est galement possible de reprsenter ce type de comportement au moyen de transitions concurrentes. De telles transitions sont qualifies de complexes. Les transitions complexes sont reprsentes par une barre paisse et peuvent, ventuellement, tre nommes. La figure 5.17 montre la mise en uvre de ce type de transition. Sur ce diagramme, l'tat orthogonal prparer boisson et rendre monnaie peut ventuellement ne pas apparatre (tout en gardant la reprsentation de ses sous-tats) pour allger la reprsentation, car la notion de concurrence est clairement apparente de par l'utilisation des transitions complexes.