Une machine à états peut être définie comme un dispositif qui détient l'état actuel d'un objet à tout moment. Il est capable d'agir sur les entrées pour modifier l'état ou provoquer une action quelconque pour le changement donné. Un ordinateur est essentiellement une machine à états et chaque instruction machine est une entrée qui modifie un ou plusieurs états et peut provoquer d'autres actions. Le registre de données de chaque ordinateur stocke un état. Un état est stocké dans la mémoire morte, à partir de laquelle est chargé un programme de démarrage. Chaque application exécutée commence avec un état initial. Cet état peut changer lorsqu'elle reçoit des entrées. Un système informatique est une collection complexe de machines à états et chaque programme qui le compose peut être considéré comme une machine à états à tout moment. Dans la pratique, cependant, les machines à états sont utilisées pour développer et décrire des interactions spécifiques de dispositifs ou de programmes. Pour résumer, un automate à états peut être décrit comme suit : Un état initial ou un enregistrement de quelque chose stocké quelque part Un ensemble d'événements d'entrée possibles L'entrée peut conduire à un nouvel ensemble d'états. Un ensemble d'actions ou d'événements de sortie possibles qui résultent d'un nouvel état Bran Selic & Garth Gullekson décrivent une machine à états dans leur livre Real time Object-oriented Modelling. Un ensemble d'entrées comprenant un certain nombre d'événements Un assortiment d'événements de sortie Un ensemble d'états Fonction qui convertit les entrées et les états en sorties. Une fonction qui fait correspondre les états et les entrées aux états (qui est appelée fonction de transition d'état) Une description de l'état initial Les machines à états finis sont celles qui ont un nombre fini ou limité d'états. Bien qu'une machine à états infinis soit possible, elle n'est pas réalisable. Les automates à états finis peuvent être utilisés à la fois comme outil de résolution de problèmes et comme moyen de décrire la solution aux développeurs de systèmes ultérieurs. Vous pouvez représenter les machines à états de différentes manières, notamment par des images animées et des tableaux simples.