SPARX SYSTEMS

UML 2 Tutoriel -
Diagrammes de Statemachine


Diagrammes de Statemachine

Un Diagramme de Statemachine modèles le comportement d’un objet unique, en précisant la séquence des événements qu’un objet passe par pendant sa durée de vie en réponse à des événements.

Comme un exemple, le diagramme de Statemachine montre les states qu’une porte passe pendant sa durée de vie

State Diagram

La porte peut être dans l’un des trois states: "Ouvert", "Fermé" ou "Verrouillé". Il peut répondre aux événements ouvrir, fermer, verrouiller et déverrouiller. Notez que tous les événements ne sont valables dans tous les State; par exemple, si une porte est ouverte, vous ne pouvez pas verrouiller jusqu’à ce que vous la fermiez. Notez également que la transition de state peut avoir une condition de garde attachée: si la porte est ouverte, il ne peut répondre à l’événement "Fermé" si la condition "manièrePorte - estVide" est accomplie. La syntaxe et les conventions utilisées dans des diagrammes de Statemachines seront discutés en détail dans les sections suivantes.


States

Un state est représenté par un rectangle aux coins arrondis avec le nom de state écrit à l’intérieur.

States


States Initiale et finale

Le State initial est désigné par un cercle noir rempli et peut être marqué avec un nom. Le State final est représentée par un cercle avec un point à l’intérieur et peut également être marqué avec un nom.

States Initiale et finale


Transitions

Transitions d’un State à l’autre sont indiqués par des lignes avec des pointes de flèches. Une transition peut avoir un déclencheur, un garde et un effet, comme ci-dessous.

Transitions

"Déclencher" est la cause de la transition, ce qui pourrait être un signal, un événement, un changement d’une condition, ou le passage du temps. "La garde" est une condition qui doit être vérifiée pour que le déclenchement pour provoquer la transition. "L’effet" est une action qui sera invoquée directement sur l’objet, qui est propriétaire de la statemachine à la suite de la transition.


Actions de State

Dans l’exemple ci-dessus de transition, un effet a été associée à la transition. Si le state de la cible avait beaucoup de transitions arrivant à elle, et chaque transition eu le même effet qui lui est associée. Il serait préférable d’associer l’effet de le state de la cible plutôt que les transitions. Cela peut être fait en définissant une action d’entrée pour le state. Le diagramme ci-dessous montre un state avec une action d’entrée et une action de sortie.

Actions de State

Il est également possible de définir des actions, qui se produisent sur des événements ou des actions, qui se produisent toujours. Il est possible de définir un certain nombre de mesures de chaque type.


Seule-Transitions

Un state peut avoir une transition qui revient à lui-même, comme dans le diagramme suivant. Ceci est très utile quand un effet est associé à la transition.

Seule-Transitions


States Composé

Un diagramme de Statemachine peut inclure des diagrammes de sous-machines, comme dans l’exemple ci-dessous.

States Composé

L’autre façon de montrer la même information est comme suit.

States Composé2

La notation dans la version ci-dessus indique que les détails de la ’sous-machine vérification du code PIN’ sont présentés dans un diagramme séparé.


Point D’Entrée

Parfois, vous ne voulez pas entrer dans un sous-machine en le state initial normal. Par exemple, dans la sous-machine en suivant il serait normal de commencer dans le "Initialisation" state, mais si pour quelque raison il n’a pas été nécessaire de procéder à l’initialisation, il serait possible de commencer dans le "Prêt" state par la transition vers le point d’entrée désigné.

Point D’Entrée

Le diagramme suivant montre que le statemachine un niveau en haut.

Point D’Entrée2


Point de Sortie

De la même manière aux points d’entrée, il est possible d’avoir nommé des points de sortie alternatifs. Le diagramme ci-dessous donne un exemple. Lorsque le state exécuté après le state de traitement principale dépend de quelle route est utilisé pour transiter de le state.

Point de Sortie


Choix Pseudo-State

Un Choix Pseudo-State est montré comme un diamant avec une transition à l’arrivée et deux ou plusieurs transitions quitter. Le diagramme suivant montre que n’importe quel state est arrivé. Après le Choix Pseudo-State dépend du format de message choisi pendant l’exécution de state précédent.

Choix Pseudo-State


Junction Pseudo-State

Jonction de Pseudo-State sont utilisés pour enchaîner plusieurs transitions. Une seule jonction peut avoir une ou plusieurs entrants et sortants une ou plusieurs transitions. Un agent peut être appliqué à chaque transition. Jonctions sont sémantique libre. Une jonction qui sépare une transition entrant en plusieurs transitions sortantes réalise un branchement conditionnel statique. Par opposition à un Choix Pseudo-State, qui réalise une branche conditionnelle dynamique.

Junction Pseudo-State


Terminer Pseudo-State

Saisie d’un Terminer Pseudo-State indique que la ligne de vie de la statemachine est terminé. UnTerminer Pseudo-State est noté comme une croix.

Terminer Pseudo-State


States Histoire

Un State Histoire est utilisée pour mémoriser le state précédent d’une statemachine quand il a été interrompu. Le diagramme suivant illustre l’utilisation de State Histoire. L’exemple est un statemachine appartenant à une machine à laver.

States Histoire

Dans cette statemachine, quand une machine à laver fonctionne, il va progresser à partir de "Laver" par "Rinçage" au "Filage". Si il ya une coupure de courant, la machine à laver va arrêter l’exécution et ira à le "Éteindre" state. Lorsque le courant est rétabli, la state d’exécution est entré à la "State Histoire" symbole ce qui signifie qu’il devrait reprendre, où cela dure s’est arrêté.


Régions concurrentes

Un state peut être divisé en régions contenant des sous-state qui existent et qui exécutent simultanément. L’exemple ci-dessous montre que. Dans la state "Appliquer Freins", les freins avant et arrière seront fonctionnent simultanément et indépendamment. Notez l’utilisation de la fourche et rejoignez pseudo-states, plutôt que par choix et fusionner pseudo-stats. Ces symboles sont utilisés pour synchroniser les fils concourants.

Régions concurrentes