• Aucun résultat trouvé

Représentation des états avec un automate fin

20. Automate fin

Les automates permettent de décrire globalement le comportement de certains éléments. Chaque objet d’une classe suit le comportement décrit par l’automate associé à sa classe et se trouve dans un état qui caractérise sa condition dynamique. Notons qu’il est possible de faire figurer l’état d’un objet dans le diagramme de collaboration : un même objet est représenté plusieurs fois et à chaque fois dans un état différent, où ces représentations sont reliées par une relation de dépendance stéréotypée par <<devient>>.

Exemple : un feu de signalisation peut prendre trois types d’états différents: rouge, orange et vert. Il passe successivement de l’un à l’autre.

1.1 Les états

Les éléments de modélisation du système qui sont amenés à changer au cours du temps se trouvent dans un état particulier à des moments différents. Un état dépend de l’état précédent et d’un événement survenu.

Les états se représentent sous la forme d’un rectangle à angles arrondis. Chaque état peut être nommé ou anonyme. Le nom se place dans le rectangle ou dans un autre rectangle au dessus :

Un état

Dans les diagrammes suivants, nous représentons des personnes pouvant se trouver dans l’un des états suivants : en activité, au chômage et à la retraite. Le diagramme de classe lie une personne à une société. Le diagramme des objets permet, par le biais de la valeur des attributs de retrouver l’état dans lequel se trouve un objet.

La situation d’une personne dépend de son age et de l’existence d’un lien avec une société. Dans le diagramme d’objets ci-dessous, Jean est au chômage, Jacques est à la retraite et Jules exerce une activité dans la société anonyme.

Pour un niveau hiérarchique donnée, il y a toujours un et un seul état initial. Par contre, on peut avoir plusieurs états finaux dépendants de conditions différentes (ou aucun état final si le système ne s’arrête jamais). En général , un état initial et final ne se nomme pas. La représentation se fait par des cercles :

société Personne - age 0..1 1..* En activité Au chômage A la retraite :Jean [chômage] age : 30 :Jacques [retraite] age : 72 :Jules [activité] age : 40 : société Etat Einit Etat final

1.2 Les transitions

Les diagrammes d’états transitions sont des graphes orientés. Les transitions d’un état vers un autre état s’effectuent dans le cadre d’un événement déclencher par le domaine du système. La transition se représente par une flèche :

Une transition peut être nommée par un événement. Un événement peut être reflexif et conduire au même état.

1.3 Les évènements

Un événement peut déclencher la transition d’un état vers un autre état. Les transitions indiquent les chemins dans le graphe des états. Un objet dans un état donné attend un événement pour passer dans un autre état, la réception de l’événement par l’objet conduit au déclenchement de la transition. Les objets se comportent donc comme des éléments passifs contrôlés par les évènements du système.

UML permet de prendre en compte différents types d’évènements :

• Signal : c’est un événement déclenché par un signal, celui-ci étant un stimulus

asynchrone entre deux instances. Un événement peut avoir des paramètres : clic_droit(P : point, d : date). Les actions associées à la transition ont alors accès à ces paramètres.

• Appel d’opération : les évènements de création et de destruction sont deux cas

spéciaux de l’appel d’opération. Pour ces cas précis on peut utiliser les stéréotypes <<crée>> et <<détruit>>.

• Temporisation : il s’agit d’un événement temporel qui peut être de nature

relative (compteur démarré après un événement) ou absolue (date et heure précise). La syntaxe du premier type d’événement est : après (3 secondes) ou après (30 secondes à partir de la sortie de l’état E). Dans le second cas, on utilise le mot clé quand : quand(date=31/12/1999, heure=23h59mn59s).

• Modification : il s’agit d’un événement exprimé par une expression booléenne

et émis lorsque la valeur passe de faux à vrai. La syntaxe d’un tel événement est simplement quand suivi de l’expression booléenne.

Etat B Etat A

Etat B

Pour qu’un événement soit décrit de manière complète il faut : indiquer son nom, sa liste de paramètres, l’objet expéditeur et récepteur et la description de la signification de l’événement.

Un événement signal est généralement représenté par le mot clé <<signal>> dans une classe (de même pour l’exception). Les paramètres sont alors déclarés comme des attributs.

Le déclenchement d’une transition a lieu par un signal “entrée utilisateur” ou d’un signal sous-classé. activité chômage retraite Quand(age>65) Quand(age>65) Perte emploi embauche <<signal>> Entrée Utilisateur <<signal>> click souris - pos : Point <<signal>> clavier - c : Caractère

Il est possible de différer le traitement d’un événement au moyen d’une file d’attente (tout événement non traité immédiatement est perdu). Un objet peut envoyer un événement à un autre objet, qui peut lui même fournir une réponse asynchrone. Dans ce cas, c’est à l’objet émetteur de se mettre en état d’attente de réponse.

Les événement peuvent être conditionnels et dépendre d’un contexte, que l’on appelle garde. La condition est notée entre crochets.

Ces gardes s’utilisent lorsqu’un événement peut déclencher plusieurs transitions, tout en conservant l’aspect déterministe d’un automate fini. Notons que la garde n’est pas un moyen de déclencher une transition sur une condition extérieure (cela se fait par un événement de type condition quand[condition]).

1.4 Actions

Une transition peut être décorée d’une action ou d’une séquence d’actions à exécuter lors du déclenchement de la transition par l’événement.

Une action consiste en la génération de signaux, la création / destruction d’objets ou l’invocations d’opérations (il faut que l’opération soit déclarée dans la classe concernée). Une action a accès aux paramètres de l ‘événement (si celui ci est paramétré).

objet requête autre

réponse A B attente question réponse B A Evènement [condition] Climatiser

A Trop chaud [hivers]

Aérer

Trop chaud [été]

B A Evènement / action

Les états peuvent aussi contenir des actions. Ces actions sont exécutées à l’entrée ou à la sortie de l’état. Dans ce cas, les états sont divisés en compartiments. Une étiquette indique le contexte dans lequel l’action est exécutée. Les étiquettes sont :

• Entrée : action exécutée dès l’entrée dans l’état ; • Sortie : action exécutée à la sortie de l’état ;

En dehors d’une action, qui est une exécution atomique (indivisible), un état peut aussi contenir une activité. Contrairement à l’action, l’activité est interruptible (il s’agit d’un

traitement plus lourd que l’action). L’activité s’introduit par le mot clé faire.

Avec le mot clé inclure il est aussi possible d’invoquer un sous-automate au sein de

l’état.

Il existe donc jusqu’à cinq points d’exécution des actions, ce qui est représenté dans le schéma ci-dessous :

Documents relatifs