Diagramme d’états

Diagramme d’états

Un diagramme d’états (ou diagramme d’états-transitions) est une représentation graphique du nombre fini d’états d’une machine à états, des transitions d’état et des règles qui régissent les transitions. Les diagrammes d’états sont des représentations de haut niveau utilisées comme points de départ pour le design de software complexe, car leur simplicité permet d’illustrer clairement les différents modes de fonctionnement.

Dans un diagramme d’états :

  • Les boites représentent des états ou différents modes de fonctionnement.
  • Les flèches illustrent la transition d’un état à un autre.
  • Le texte associé à chaque flèche représente la règle qui régit la transition.
Figure 1 : Diagramme d’états d’un four à micro-ondes présentant trois modes de fonctionnement (Off, heating et idling), modélisé en utilisant Stateflow.

Figure 1. Diagramme d’états d’un four à micro-ondes présentant trois modes de fonctionnement (Off, heating et idling), modélisé en utilisant Stateflow.

Les sorties ou actions d’une machine à états sont des descriptions du comportement de chaque état du système. Les deux types de machines à états, Moore et Mealy, sont classés selon la manière dont la sortie de la machine est définie.

Implémentation de Moore d'un diagramme d’états

Dans ce type de machine à états, les sorties ne dépendent que de l’état du système et sont définies comme des actions d’état. Quelle que soit la façon d’arriver à un état donné, l’action de l’état reste la même. Par exemple, dans le diagramme d’états de la figure 2, la sortie de Heating reste la même, que la transition soit effectuée à partir de l’état Idling ou OFF.

Figure 2 : Diagramme d’états modélisé en utilisant l'implémentation de Moore avec Stateflow.

Figure 2 : Diagramme d’états modélisé en utilisant l'implémentation de Moore avec Stateflow.

Implémentation de Mealy d'un diagramme d’états

Dans ce type de machine à états, les sorties dépendent non seulement de l’état du système, mais aussi de ses entrées. Comme le montre le diagramme d’états de la figure 3, dans l'implémentation de Mealy, les sorties sont définies au niveau des transitions.

Figure 3 : Diagramme d’états modélisé en utilisant l'implémentation de Mealy avec Stateflow.

Figure 3 : Diagramme d’états modélisé en utilisant l'implémentation de Mealy avec Stateflow.

Avec l'implémentation de Mealy, les diagrammes d’états peuvent être réorganisés et simplifiés en ajoutant des boucles pour mettre à jour les sorties de la machine. Plus les designs sont complexes, plus cette implémentation est avantageuse.

Figure 4 : Diagramme d’états réorganisé modélisé en utilisant l'implémentation de Mealy avec Stateflow.

Figure 4. Diagramme d’états réorganisé modélisé en utilisant l'implémentation de Mealy avec Stateflow.

Les machines de Mealy et de Moore sont toutes deux populaires pour leur simplicité et leur clarté. Les deux styles sont souvent mélangés dans un même diagramme d’états.

Statecharts : diagrammes d’états améliorés

Les blocs de base des diagrammes d’états ne sont pas suffisants pour qu’un seul diagramme puisse représenter des systèmes logiques complexes. Vous avez besoin de capacités supplémentaires pour capturer efficacement les détails complexes d’un design. Les statecharts, connus également sous le nom de diagramme d'états-transitions de Harel, ajoutent des capacités telles que la hiérarchisation, le parallélisme ou l’orthogonalité ainsi que la diffusion d’événements.

La capacité de hiérarchisation permet de compartimenter davantage le design et potentiellement de réduire le nombre de lignes de transition nécessaires entre les états. Il est possible d’introduire des états parents pour créer une hiérarchie dans les machines à états. Par exemple, dans le statechart de la figure 5, l’état parent Baking comprend les sous-états Heating et Idle, ainsi que le diagramme d’états associé.

Figure 5 : Statechart illustrant la hiérarchisation, modélisé avec Stateflow.

Figure 5. Statechart illustrant la hiérarchisation, modélisé avec Stateflow.

Grâce aux capacités de parallélisme ou d’orthogonalité, un seul statechart peut inclure plusieurs états fonctionnant simultanément. Par exemple, dans le statechart de la figure 6, nous pouvons considérer Oven et Oven_Light comme deux machines à états indépendantes qui fonctionnent simultanément. Le diagramme représente l'ensemble du système dans un seul graphique contenant deux machines à états parallèles.

Figure 6 : Statechart illustrant la hiérarchisation et le parallélisme, modélisé avec Stateflow.

Figure 6. Statechart illustrant la hiérarchisation et le parallélisme, modélisé avec Stateflow.

Les possibilités de diffusion d’événements étendent la capacité du système en permettant l’échange d’informations entre deux états ou machines à états indépendants. Dans le scénario précédent, les deux machines à états étaient indépendantes, car le fonctionnement de l’éclairage du four ne dépendait pas de son système de chauffage. Avec la diffusion d’événements, une fonctionnalité qui éteint la lumière du four lorsque la cuisson est terminée peut être ajoutée grâce à une simple commande dans la logique de l’état Oven, comme l’illustre le statechart de la figure 7.

Figure 7 : Statechart illustrant la hiérarchisation, le parallélisme et la diffusion, modélisé en utilisant Stateflow.

Figure 7. Statechart illustrant la hiérarchisation, le parallélisme et la diffusion, modélisé en utilisant Stateflow.

Les statecharts avec des capacités de hiérarchisation, de parallélisme et de diffusion permettent de représenter des fonctionnalités de systèmes complexes en évitant les diagrammes d'états surchargés.

Diagrammes d’états et statecharts avec Stateflow

Stateflow® est un environnement de programmation graphique basé sur les machines à états finis. Avec Stateflow, vous pouvez partir de diagrammes d’états simples et élaborer des statecharts pour modéliser la logique complexe des systèmes dynamiques tels que les transmissions automatiques, les systèmes robotiques, les smartphones, etc. Voici des applications de cette logique complexe :

Si vous avez besoin de la logique créée pour contrôler un composant software, vous pouvez utiliser les capacités de génération automatique de code de Simulink pour convertir le statechart en code C, HDL ou PLC pour le déploiement.

Pour en savoir plus sur la modélisation des diagrammes d’états, y compris sur ces techniques avancées, consultez les pages dédiées à Stateflow et à Simulink. L’exemple Modeling a Security System illustre les capacités de hiérarchisation, de parallélisme et de diffusion d’événements de Stateflow.

Voir aussi: control logic, state machine, control systems, embedded systems