Ou comment gaspiller du temps    —  xLaNT

Discussions

Statechart / statemachne : témoignage ?

Guybrush 8343 Bob
Bonjour,

Je suis actuellement en train de travailler sur un interpréteur de statecharts/statemachines, essentiellement afin de fournir un framework d'exécution et de test pour ces machins-là.

Y en a t'il parmi vous qui en font l'usage, ou qui en font l'usage professionnellement ou ludiquement ?
Pourriez-vous fournir quelques informations sur la manière dont vous vous en servez ?

Et si vous ne vous en servez pas, est-ce parce que vous ne connaissez pas ces outils, ou pour d'autres raisons (lesquelles) ?

Merci d'avance :-D
Merle 285 Jedi
Kamoulox !

(plus sérieusement, jamais entendu parler de ça...)
Tchou 3555 Bob
++

Quand wikipedia n'a pas de page sur le sujet et qu'un moteur de recherche trouve que des trucs avec d'autres noms que la demande, c'est que ça doit pas être très connu. Et clairement pas par moi, je découvre les mots.
Fabe 607 Geek
GuybrushBonjour,

Je suis actuellement en train de travailler sur un interpréteur de statecharts/statemachines, essentiellement afin de fournir un framework d'exécution et de test pour ces machins-là.

Y en a t'il parmi vous qui en font l'usage, ou qui en font l'usage professionnellement ou ludiquement ?
J'avais qualifié Finite en PHP qui fait bien le taff.
Après le truc est en soi pas très compliqué à implémenter, on trouve pas mal d'implémentations Open Source ou pas.


Ce message a été modifié 1 fois. Dernière modification : 14 décembre 2015 à 17:02 par Fabe.

Guybrush 8343 Bob
TchouQuand wikipedia n'a pas de page sur le sujet et qu'un moteur de recherche trouve que des trucs avec d'autres noms que la demande, c'est que ça doit pas être très connu. Et clairement pas par moi, je découvre les mots.
en.wikipedia.org/wiki/St…

fr.wikipedia.org/wiki/Au…

Les statecharts sont des diagrammes UML utilisés pour modéliser le comportement d'un logiciel ou d'un composant.
en.wikipedia.org/wiki/SC…

Je me demande juste dans quelle mesure des "vrais praticiens" (c'est à dire : pas moi !!) font usage de ça.
FabeJ'avais qualifié Finite en PHP qui fait bien le taff.
Après le truc est en soi pas très compliqué à implémenter, on trouve pas mal d'implémentations Open Source ou pas.
Implémenter un automate fini n'est pas compliqué, en effet (state machine "basique"). On trouve beaucoup d'implémentations, soit des structures de données, soit des compilateurs, soit des sortes de "scheduler" de code.

Par contre, du coté statechart, il y a moins de possibilités. Il y en a des moins complètes mais bien stables (SMC), des expérimentales à la sémantique bizarre (et non définie, Yakindu), et une tentative de normalisation (SCXML du W3C).

Grosso-modo, le statechart est une sorte de "super machine à états" dans laquelle on ajoute des états parallèles, des états imbriqués, des conditions sur les transitions, des événements internes, etc. La sémantique est beaucoup plus riche (et absolument pas unique, malheureusement).


Ce message a été modifié 1 fois. Dernière modification : 14 décembre 2015 à 17:57 par Guybrush.

Fabe 607 Geek
GuybrushJe me demande juste dans quelle mesure des "vrais praticiens" (c'est à dire : pas moi !!) font usage de ça.
Dans la grande distribution, pas mal de concepts sont stateful : par exemple la commande (paiement en attente, paiement reçu, en attente de préparation, préparation en cours, en attente de prélèvement...).
Plus généralement la plupart des processus nécessitant un workflow avec des actions ou des validations impliquant plusieurs acteurs, humains ou machines, peuvent être modélisés sous forme d'automates.

En revanche, je n'ai jamais rencontré dans le "concret" les cas de complexité que tu as cité.


Ce message a été modifié 1 fois. Dernière modification : 14 décembre 2015 à 20:22 par Fabe.

Guybrush 8343 Bob
Les automates permettent en effet de représenter déjà beaucoup de choses (notamment les automates hiérarchiques, permettant de s'attaquer à un système complexe morceau par morceau).

Y a des analystes parmi vous, qui doivent fournir ce genre de modèles comme "documentation" ou "planification" d'un logiciel/librairie ?
Tchou 3555 Bob
Guybrush
TchouQuand wikipedia n'a pas de page sur le sujet et qu'un moteur de recherche trouve que des trucs avec d'autres noms que la demande, c'est que ça doit pas être très connu. Et clairement pas par moi, je découvre les mots.
en.wikipedia.org/wiki/St…

fr.wikipedia.org/wiki/Au…
!= de statechart ou statemachine (ou machne, dans le doute j'avais regardé aussi ! :) ).

Stateful, je connais le mot par contre.
GuybrushLes statecharts sont des diagrammes UML utilisés pour modéliser le comportement d'un logiciel ou d'un composant.
Et encore une victoire écrasante de mon ignorance crasse de la théorie informatique (et des méthodes "classiques" des gros projets notamment java).

Guybrush 8343 Bob
Tchou!= de statechart ou statemachine (ou machne, dans le doute j'avais regardé aussi ! :) ).
Statechart = state diagram, mais sinon, oui, une "state machine" est un terme englobant beaucoup de choses de façon plutôt floue (le cas basique étant un automate à états fini).
Guybrush 8343 Bob
Pour ceux que ça intéressent (oui, il y en a, je suis sûr), le développement de Sismic (Sismic Interactive State Machine Interpreter and Checker) a bien avancé. Il s'agit d'une librairie Python permettant d'exécuter et tester des statecharts (suivant une sémantique proche de SCXML).

La version 1 ne devrait pas tarder (maximum quelques mois) mais la librairie est déjà parfaitement utilisable (actuellement en version 0.12.2, à l'instant). Pour paraphraser le README :

Sismic provides:
- An easy way to define and to import statecharts, based on the human-friendly YAML markup language
- A statechart interpreter offering a discrete, step-by-step, and fully observable simulation engine
- Synchronous and asynchronous simulation, in real time or simulated time
- Support for communication between statecharts and co-simulation
- Built-in support for expressing actions and guards using regular Python code
- A design-by-contract approach for statecharts
- A unit testing framework for statecharts, including generation of test scenarios

Sismic provides full support for the majority of the UML 2 statechart concepts:
- simple states, composite states, orthogonal (parallel) states, initial and final states, shallow and deep history states
- state transitions, guarded transitions, automatic (eventless) transitions, internal transitions
- statechart variables and their initialisation
- state entry and exit actions, transition actions
- internal and external events, parametrized events, timed events

In addition to this, contracts can be specified to express invariants, pre- and postconditions on states, transitions and the statechart itself.

The Sismic library is written in a modular way:
- The semantics of the statechart interpreter is based on the specification of the SCXML semantics (with a few exceptions), and can be easily tuned to other semantics.
- While currently, contracts, guards and actions are expressed in Python, this support can be easily extended to other languages.

Le dépot Github est ici :
github.com/AlexandreDeca…

La documentation est là :
sismic.readthedocs.org/

La documentation est déjà très complète (je trouve, du moins pour un projet à ce stade du développement) et illustre déjà bien tout ce qu'il est possible de faire.

Répondre

Vous devez être inscrit et identifié.