Articles

Qu’est-ce qu’une machine à états ? – Statecharts

Qu’est-ce qu’une machine à états ?

Wikipedia définit une machine à états finis (FSM) comme:

une machine abstraite qui peut être dans exactement un d’un nombre fini d’états à un moment donné. Le FSM peut passer d’un état à un autre en réponse à certaines entrées externes ; le passage d’un état à un autre est appelé une transition. Un FSM est défini par une liste de ses états, son état initial, et les conditions de chaque transition.

Et plus loin:

Un état est une description de l’état d’un système qui attend d’exécuter une transition.

Une machine à états est également une représentation visuelle d’une telle machine abstraite.

Exemple

Voici une représentation visuelle d’une machine à états simple. C’est un modèle d’un simple interrupteur marche/arrêt.

Un simple interrupteur marche/arrêt avec deux états.Une machine à états avec deux états, "marche" et "arrêt", l

Quelques observations sur cette machine.

  • Elle est constituée de deux états, « on » et « off ». Cette machine peut donc être dans exactement un des deux états à tout moment. En d’autres termes, les transitions entre les états sont instantanées.
  • L’événement  » pichenette  » provoque sa transition entre les états.
  • Lorsque la machine entre dans l’état  » marche « , un effet secondaire se produit. Une lumière est allumée.
  • Lorsque la machine sort de l’état « on », un autre effet secondaire se produit. Une lumière est éteinte.

Cette machine d’état simple est comparable à une variable booléenne – qui peut être vraie ou fausse – qui contrôle l’état  » on  » de quelque chose.

Qu’est-ce que l’état d’ailleurs ?

L’état d’un programme est l’ensemble de toutes les variables d’un programme et leurs valeurs à un moment donné (voir Wikipédia). Un programme ou un composant logiciel qui possède cinq variables indépendantes, qui peuvent chacune être vraies ou fausses, alors il pourrait en théorie être dans l’un des 32 états (2 à la puissance 5 = 32). Cependant, un programme aura souvent des états invalides, et dans les logiciels traditionnels, les variables sont soigneusement vérifiées et manipulées de manière à ce que ces états invalides ne se produisent pas.

Une machine à états est une autre façon de modéliser l’état d’un programme : Au lieu de définir des variables indépendantes, une machine est fabriquée spécifiquement pour gérer les états possibles, et lorsqu’une machine est dans un état donné, quel état suivant est autorisé. Ces cinq variables booléennes indépendantes sont remplacées par une seule machine à états qui, intrinsèquement, ne peut être que dans des états valides.

Relation avec les statecharts

Comprendre les machines à états est presque la même chose que comprendre les statecharts. À bien des égards, les statecharts sont le « grand frère » des machines à états, conçus pour surmonter certaines des limitations des machines à états. Un diagramme d’états est essentiellement un automate à états qui permet à tout état d’inclure d’autres automates, de manière hiérarchique. Ceci afin de surmonter certaines des limitations inhérentes aux machines à états.

Le but premier de statecharts.github.io est de vous aider à comprendre les statecharts. Une compréhension des machines à états est un bel effet secondaire. Qu’est-ce qu’un statechart ?

Machine abstraite vs exécution

Une distinction importante doit être faite entre la machine abstraite elle-même (par exemple le dessin d’une machine à états, ou le code) et l’exécution plus concrète en temps réel d’une machine abstraite particulière. Cette distinction est similaire à la différence entre une classe (définition abstraite) et un objet (instanciation concrète). De même, pour une seule machine abstraite, il peut y avoir de nombreuses exécutions, tout comme il y a souvent de nombreuses instances d’une classe particulière.

Les termes « statechart », « machine à états » et « FSM » sont souvent utilisés pour désigner à la fois la forme abstraite et la forme d’exécution, bien que la forme d’exécution ait parfois le qualificatif « run » ou « execution », comme dans « state machine execution » ou « statetchart run ».

Une machine à états abstraite est un composant logiciel qui définit un ensemble fini d’états :

  • Un état est défini comme l’état initial. Lorsqu’une machine commence à s’exécuter, elle entre automatiquement dans cet état.
  • Chaque état peut définir des actions qui se produisent lorsqu’une machine entre ou sort de cet état. Les actions auront généralement des effets secondaires.
  • Chaque état peut définir des événements qui déclenchent une transition.
  • Une transition définit comment une machine réagirait à l’événement, en sortant d’un état et en entrant dans un autre état.
  • Une transition peut définir des actions qui se produisent lorsque la transition se produit. Les actions auront généralement des effets secondaires.

Lorsque l’on « exécute » une machine à états, cette machine à états abstraite est exécutée. La première chose qui se produit est que la machine à états entre dans l' »état initial ». Ensuite, les événements sont transmis à la machine dès qu’ils se produisent. Quand un événement se produit :

  • L’événement est vérifié par rapport aux transitions de l’état actuel.
  • Si une transition correspond à l’événement, cette transition « se produit ».
  • En vertu d’une transition « se produisant », les états sont sortis, et entrés et les actions pertinentes sont exécutées
  • La machine est immédiatement dans le nouvel état, prête à traiter l’événement suivant.

Lecture complémentaire

  • Qu’est-ce qu’un diagramme d’états ? – S’appuyer sur les connaissances des machines à états pour
  • Un exemple de machine à états – Expliquer certains concepts de diagramme d’états en s’appuyant sur la machine à états simple « on off ».

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *