Exemple: Modèle d'une porte - différentes machines d'état

Modèle LTS

Voici encore le modèle LTS d'une porte. Il montre le comportement dynamique d'une porte, et il est en même temps un modèle du comportement de l'usager de la porte (puisque les interactions sont des rendezvous, exécutées en même temps par les deux parties).

LTS model of Door

Voici une définition de la même machine d'état en notation LTSA:

UNLOCKED = (open -> OPEN | lock -> LOCKED),
OPEN = (close -> UNLOCKED),
LOCKED = (unlock -> UNLOCKED).

Comment voudriez-vous modéliser cette composante dans le formalisme FSM (avec des entrées et des sorties) ?

Modèle FSM

Dans une modèle FSM, les interactions sont ou des entrées ou des sorties. Si on suppose que l'usager de la porte est celui qui prend les initiatives pour exéuter les interactions, on pourrait dire que les interactions montrées dans le diagramme en haut sont toutes des sorties de l'usager (et des entrées pour la porte); alors on pourrait utiliser le même diagramme d'état ci-haut et l'interpréter comme un FSM.

LTS model of Door

Mais il y a un problème avec ce modéle: Puisque la transmission d'une sortie de l'usager vers la porte prend un certain temps, l'usager, après avoir envoyé la commande open, ne saura pas à quel moment la porte sera ouverte. Si l'usager envoie une séquence de sorties <open, close, lock, unlock, open> assez vite, la porte pourrait avoir de difficulté à exécuter les transitions d'états correspondantes assez vite et l'usager et la porte pourraient perdre leur syncronisation.

Pour éviter ce problème, on pourrait introduire des messages d'acquittement qui confirment que la dernière commande a été exécutée. Dans le modèle suivant de la porte, les interactions qui représentent des commandes de l'usager (sorties de l'usager - entrées de Door) se terminent avec "-req" (pour requête). Les autres interactions sont des sorties de Door et des entrées pour l'usager (des messages d'acquittement) qui confirment que la porte a exécuté la transition demandée.

FSM model of Door

Maintenant, ce modèle ne peut pas représenter le comportement de l'usager (comme dans le cas du modèle LTS), parce que pour l'usager les entrées et sorties sont interchangées; et puis, dans un modèle FSM, une transition commence toujour par une entrée. Il est à noter que l'usager ne reçoit pas de signal pour qu'il ouvre la porte; il le fait quand il veut. Pour modéliser de telles situations, on introduit dans le modèle FSM des transitions "spontanées"; ce sont des transitions qui peuvent être prises par le modèle d'une façon spontanée sans "trigger" de l'extérieur. Dans un certain sens, des machines avec des transitions spontanées sont des acteurs, ou des composantes actives. Le diagram ci-dessous (à gauche) représente le comportement de l'usager avec plusieurs transitions spontanées (indiquées par l'entrée "spont"). Pour modéliser ce comportement, il était nécessaire d'introduire des états intermédiaires dans lesquels l'usager attend un message d'acquittement de la porte. La transition qui reçoit ce message ne génère pas de sortie.

On remarque que l'on peut réécrire le modèle ci-haut de la porte dans une forme différente en incluant des états intermédiaires similaires entre la reception d'une commande et la génération d'un message d'acquittement (voir diagramme ci-dessous à droite). Ce diagramme a une structure similaire que le modèle de l'usager (à gauche). Les transitions avec l'entrée "imm" sont aussi des transitions spontanées ("imm" veut dire "immédiatement"). J'ai adopté ce nom pour indiquer que ces transitions devraient être exécutées aussi vite que possible quand le modèle entre l'état où la transition débute. Ceci est différent que pour les transitions spontanées "spont" dans le modèle de l'usager (à gauche); l'usager pourrait attendre longtemps avant de commencer une transition spontanée. En effet, il pourrait décider de s'arrêter (de ne faire plus aucune transition spontanée), l'équivanent d'un "STOP" (blocage).

user of Door model of Door version 2

Conclusions

Dans beaucoup de situations, le modèle FSM avec ses entrées et sorties devient plus complexe. En particulier, les comportements des deux côtés d'un interface sont moins similaire que dans le cas des modèles LTS parce que la nature d'entrée et de sortie est échangée. Un modèle LTS est plus abstrait, en général, et fournit des descriptions plus simples.

Un modèle LTS devrait être utilisé s'il peut capter tous les aspects du système à modéliser. S'il est important de modéliser quelle composante initialise des interactions, alors le modèle FSM semble plus approprié.


Page créée: 16 janvier 2009; revisée le 6 janvier 2012