state machine

State machine ou machine à états

Une state machine (machine à états ou machine à états finis) représente un système réactif piloté par des événements qui passe d'un état à un autre si la condition qui contrôle le changement est remplie. La plupart des state machines sont représentées sous forme de diagrammes, mais elles peuvent également l'être sous forme textuelle.

Trois composants fondamentaux sont nécessaires pour élaborer une state machine :

  • États : différentes étapes, tâches ou modes de fonctionnement qui définissent le processus
  • Transitions : méthodes de passage d'un état à un autre
  • Actions : événements ou changements qui surviennent pendant l'exécution d'une state machine

Les composants de base d’une state machine peuvent être observés dans un système de transmission automatique à engrenages, modélisé à l’aide de Stateflow. (Voir l'exemple)

Les premières state machines étaient utilisées par des mathématiciens et des informaticiens pour décrire des systèmes informatiques. Elles permettaient de simplifier une logique complexe en une représentation graphique plus facile à gérer. Comparée à des alternatives textuelles, la nature visuelle d'une state machine rend plus claire la relation entre les différents états du système et les conditions entraînant une transition ou une action. Avec le temps, les usages des state machines se sont étendus à la modélisation de logiques complexes dans des systèmes dynamiques tels que les avions, les voitures, les robots et les smartphones.

Exemples d'opérations contenant de la logique complexe :

  • Planifier une séquence de tâches ou d'étapes d'un système
  • Définir la logique de détection de panne, d’isolement et de remise en route
  • Superviser la manière de basculer entre différents modes d'opération

Vous pouvez utiliser une state machine pour représenter une version simplifiée de la boîte de vitesses automatique d'une voiture. L'exemple présenté ci-dessous contient quatre états de fonctionnement respectivement nommés first, second, third et fourth. À l'image des rapports de transmission qu'ils représentent, les états de la state machine sont exclusifs, ce qui signifie qu'un seul état est actif à la fois. Cette state machine surveille la vitesse de la voiture et change de rapport lorsque le seuil de vitesse correspondant au rapport actuel est atteint.

Une state machine d’un système de transmission automatique dans Stateflow effectue des transitions entre les engrenages lorsque la vitesse de seuil est atteinte. (Voir l'exemple)

State machine de Mealy et Moore

Il existe deux normes courantes à prendre en compte lors du design d’une state machine :

  • Mealy : Les sorties dépendent à la fois de l’état et des entrées ; elles sont définies dans les transitions.
  • Moore : Les sorties dépendent uniquement de l’état ; elles sont définies directement dans les états.
Un diagramme de state machine mettant en évidence les états d’entrée de la réception d’une pièce de cinq cents, de dix cents ou d’aucune pièce, et les sorties correspondantes.

Une state machine d’un distributeur automatique, modélisée à l’aide de la sémantique de Mealy, définit si une boisson est distribuée lors des transitions. (Voir l’exemple Stateflow)

Un diagramme de state machine montrant cinq états d’un feu de circulation orienté dans deux directions.

Une state machine d’un feu de circulation, modélisée à l’aide de la sémantique de Moore, définit les sorties de l’état pour la couleur du feu de circulation. (Voir l’exemple Stateflow)

Pour en savoir davantage sur ces sémantiques et quand les implémenter, consultez Présentation des machines de Mealy et de Moore.

Concepts de Harel appliqués aux state machines

À mesure que la complexité des composants logiciels a évolué, les blocs de base des state machines ont également dû évoluer. Dans les années 1980, le Dr David Harel a identifié des fonctionnalités supplémentaires nécessaires pour refléter avec précision les détails plus complexes des systèmes :

  • Hiérarchisation : introduit un ou plusieurs états parents pour structurer et compartimenter davantage le design.
  • Parallélisme ou orthogonalité : permet à un seul diagramme d'inclure plusieurs états fonctionnant simultanément.
  • Diffusion d'événements : permet l'échange d'informations entre deux états ou state machines indépendants.

Lorsqu'on associe ces fonctionnalités aux state machines, les représentations sont appelées diagrammes d'états de Harel.

Les éléments d’un diagramme d’états de Harel sont nécessaires pour définir la complexité supplémentaire d’un système de sécurité. (Voir l'exemple)

State machines avec Stateflow

Stateflow® est un environnement de programmation graphique basé sur les finite state machines. Vous pouvez partir de diagrammes d'états simples et élaborer des state machines pour modéliser la logique complexe des systèmes dynamiques. Il est possible de concevoir des state machines, mais aussi des diagrammes de transition d'état, des diagrammes de flux, des tables de transition d'état et des tables de vérité. Cette approche peut vous être utile pour développer des applications de contrôle de supervision, de planification de tâches, de gestion des pannes, de protocoles de communication, d'interfaces utilisateur ou encore de systèmes hybrides.

Les state machines dans Stateflow peuvent être simulées afin d'évaluer leur comportement dans différentes conditions. Par exemple, une state machine modélisant un ascenseur peut être simulée pour observer sa réaction lorsqu’on appuie sur divers boutons ou qu’une panne se produit. Grâce à la simulation, vous pouvez vérifier que la logique se comporte comme prévu, identifier d'éventuelles conditions manquantes et tester différents scénarios.

Pour en savoir plus sur la modélisation des state machines, consultez les pages Stateflow et Simulink®. Pour commencer à créer des state machines dans Stateflow, consultez Modéliser des state machines.


Voir aussi: logique de contrôle, diagramme d’états, systèmes de contrôle, systèmes embarqués, FDIR, approche Model-Based Design, approche Model-Based Testing, PackML, modélisation et simulation, logiciels de simulation, Model-Based Systems Engineering (MBSE)