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.
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
.
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.
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.
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é.
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.
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.
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.
Exemples et démonstrations
Références logicielles
Voir aussi: control logic, state machine, control systems, embedded systems, fdir