• Aucun résultat trouvé

ment dans la transition, 2

• g est la garde(c’est-à-dire une expression booléenne sur les variables de V), 3

• (b,f)∈((B ∪ {none})×List(F))est le comportement à exécuter pendant le franchis-4

sement de la transition, et 5

• sLevel ∈ S est l’état niveau qui contient la transition, tel que chaque état contenu 6

dans S1∪S2 est un sous état (avec une possibilité qu’il soit direct) de sLevel. 7

Notez que, dans la plus part des cas, sLevel de t est LCA(S1,S2), tel que “The operation

8

LCA(s1,s2) returns the Region that is the least common ancestor of Vertices s1 and s2, based on

9

the StateMachine containment hierarchy.” ([?, p.356]). Un exemple où la fonctionLCAne couvre

10

pas tous les cas est la transition entre l’état S1 et son pseudo-état histoire Hdans laFigure 2.1.

11

En effet, la fonction LCA(S1,H) renvoie S1, tandis que le résultat doit être la machine à états

12

S. La fonction sLevel pour la même transition (dans notre traduction) renvoie S(la machine à

13

états), car sLevel permet de capturer le cas d’une transition externe.

14

Notez que les fonctions présentées précédemment dans cette section (par exemple, init,

15

final, etc.) peuvent être définies en utilisant les éléments du tuple donnés dansDéfinition 2.

16

Schéma général

17

Nous présentons dans cette section une vue générale de notre traduction des diagrammes

18

états-transitions vers les réseaux de Petri colorés. Nous notons transition SMD pour désigner

19

les transitions d’un diagramme états-transitions, ettransitionCPN pour désigner les transitions

20

d’un réseau de Petri coloré.

21

Idée générale Nous définissons un schéma général de traduction où les états simples (incluant

22

les états finaux) sont traduits vers des places, et où les transitions SMD sont traduites vers des

23

transitions CPN. En effet, chaque étape d’exécution d’une transition SMD (run-to-completion 24

step) est encodée par une seule transition CPN dans notre traduction, ce qui encode la totalité

25

de la phase d’exécution d’une transition SMD. Nous pensons que c’est une solution élégante,

26

et qui diffère des solutions précédentes (e.g. [?, ?, ?]), où certaines situations d’entrelacement 27

entre deux transitions indépendantes peuvent se produire. Notez que notre solution prend en

28

compte l’entrelacement entre comportements d’entrée ou de sortie des états courants d’une même

29

transition.

30

Notre traduction est divisée en deux parties : la première partie (voir laSection 5.5) concerne

31

la traduction des états et de leurs comportements ainsi que les transitions sans prendre en

32

compte l’algorithme de sélection des transitions (fourni par l’OMG dans la spécification). Cette

33

première partie est implémentée en utilisant l’Algorithme 1. La seconde partie concerne la prise

34

en compte de l’algorithme de sélection des transitions. Cette partie est implémentée en utilisant

35

l’Algorithme 2 qui implémente les priorités d’exécution des transitions ainsi que la gestion des

36

conflits.

37

Enfin, bien que nous prenions en compte la gestion des comportements induite par la

hiérar-38

chie et l’utilisation des états composites, nous ne les traduisons pas sous une forme hiérarchique.

39

En effet, dans notre traduction, les états composites ne sont pas codés par des places (seulement

40

les états simples le sont). Ceci est en contraste avec d’autres approches qui utilisent les réseaux

41

de Petri (colorés) hiérarchiques (e.g. [?]). La préservation de la hiérarchie (la représentation

42

graphique) dans le formalisme de destination est l’objet de travaux futurs.

Comportements d’entrée et de sortie Rappelons que nous utilisons une abstraction des

1

comportements exprimée par des expressions(b,f), où b est l’expression du comportement et f 2

est la liste des fonctions qui modifient les valeurs des variables globales (voir dans la Section 5.2,

3

page 122). La traduction des fonctions ne crée pas de difficulté particulière (comme expliqué

4

dans la section Section 5.6) : chaque modification des variables SMD à travers une transition

5

SMD sera traduite par la même modification des variables globalesCPN correspondantes dans

6

la partie code de la transition CPN encodant la transition SMD. À chaque entrée ou sortie

7

d’un état à travers une transition SMD, nous ajoutons le comportement d’entrée ou de sortie

8

correspondant (s’il existe) dans le code associé à la transition CPN. Cependant, par souci de

9

simplicité, nous n’utilisons que la fonctionf qui modifie les valeurs des variables (l’expression du

10

comportementbne sera pas utilisée). Les travaux tels que [?,?] prennent en compte l’expression

11

du comportement b. Nous discutons comment les réintroduire dans notre traduction dans la

12

Section 5.8.

13

Comportement do Nous traduisons les comportements do par une transition CPN (plus

14

de détails dans la Section 5.6), où le code associé à cette transition comporte la fonction f 15

encodant le comportement. Nous rajoutons ensuite deux arcs l’un de la place de l’état vers la

16

transition du comportement, et l’autre de la transition du comportement vers la place de l’état.

17

Cela est conforme à notre hypothèse que le comportement do peut être exécuté autant de fois

18

que souhaité(Section 5.2). Nous discutons comment considérer une variante de cette hypothèse

19

dans la Section 5.8. Comme pour les comportements d’entrée et de sortie nous n’utilisons pas

20

l’expression du comportement b.

21

États composites et pseudo-états Contrairement aux états simples, les états composites

22

et les pseudo-états (tels que fork, join, initial ou pseudo-état histoire) ne sont pas traduits vers

23

des places CPN (plus de détails dans la Section 5.7). Rappelons que la différence entre un état

24

simple et un pseudo-état est le fait que l’état courant du système peut être un état mais non pas

25

un pseudo-état. Par conséquent, le fait que les pseudo-états ne sont pas explicitement traduits

26

vers des placesCPN correspond au fait qu’un état actif du système d’unSMD est un état simple

27

(ou un ensemble d’états simples). Cependant, leurs comportements et leurs sous-états (dans le

28

cas des états composites) sont traduits vers des places ou des transitions.

29

D’une manière similaire, les pseudo-états initiaux ne sont pas traduits explicitement.

30

Comme les pseudo-états fork et join sont formalisés sous forme de transitions avec un ensemble

31

d’états sources et un ensemble d’état cible (voir Définition 2,Section 5.2), ils ne nécessitent pas

32

un traitement particulier : chaque pseudo-état fork (ou join) sera représenté par une transition

33

CPN qui reliera les places encodant les états sources et les états cibles.

34

Pseudo-état histoire Rappelons que lorsqu’une transition a comme cible un pseudo-état

35

histoire plat (shallow history pseudostate) dans un état composite, l’état actif est le dernier état

36

visité dans l’état composite (plus de détails à propos de la traduction du pseudo-état histoire

37

avec exemple dans la Section 5.7.6). Cela est effectué en utilisant une variable globale (une par

38

pseudo-état histoire) qui est mise à jour avec l’état actif courant à chaque fois que la place

39

encodant cet état est entrée (ou l’un de ses sous-états dans le cas d’un état composite). La mise

40

à jour est faite dans le code de n’importe quelle transition allant vers cette place.

41

Variables Nous utilisons le concept de variables globales que nous définissons dans la

for-42

malisation des réseaux de Petri colorés (voir Section 2.3) afin d’encoder la valeur des variables

43

SMD. Les variables globales dans les réseaux de Petri colorés peuvent être lues dans les gardes

44

et mises à jour à travers les transitions, avec le même principe que pour les variables SMD.

Gestion des transitions Le but principal de notre traduction est d’encoder les transitions

1

entre les états composites avec différentes régions (les états orthogonaux), en particulier les

2

transitions de haut niveau, les pseudo-états fork/join et les transitions avec événements (dans

3

laSection 5.7 nous expliquons la traduction des transitions avec événements et sans événements

4

avec plusieurs états simples ou composites). Chaque transition SMD peut en effet correspondre

5

à un nombre de transitions CPN. Par exemple, dans laFigure 2.1 la transitionSMD étiquetée

6

avec l’événementacorrespond à 18 possibilités pour sortir deS1 (3 états actifs possibles dans la

7

région supérieure de S1, multiplié par 4 dans S13 plus 2 autres dans la région inférieure de S1),

8

par conséquent à 18 transitionsCPN :

9 • S1_a_S2_1pour la combinaison<S11,S131> 10 • S1_a_S2_2pour la combinaison<S11,S132> 11 • S1_a_S2_3pour la combinaison<S11,S13_1F> 12 • S1_a_S2_4pour la combinaison<S11,S13_2F> 13 • S1_a_S2_5pour la combinaison<S11,S14> 14 • S1_a_S2_6pour la combinaison<S11,S1_2F> 15 • S1_a_S2_7pour la combinaison<S12,S131> 16 • S1_a_S2_8pour la combinaison<S12,S132> 17 • S1_a_S2_9pour la combinaison<S12,S13_1F> 18 • S1_a_S2_10pour la combinaison <S12 ,S13_2F> 19 • S1_a_S2_11pour la combinaison <S12 ,S14> 20 • S1_a_S2_12pour la combinaison <S12 ,S1_2F> 21 • S1_a_S2_13pour la combinaison <S1_1F ,S131> 22 • S1_a_S2_14pour la combinaison <S1_1F ,S132> 23 • S1_a_S2_15pour la combinaison <S1_1F ,S13_1F> 24 • S1_a_S2_16pour la combinaison <S1_1F ,S13_2F> 25 • S1_a_S2_17pour la combinaison <S1_1F ,S14> 26 • S1_a_S2_18pour la combinaison <S1_1F ,S1_2F> 27

Soit t une transition SMD, notons par combinations(t) la fonction qui calcule toutes les

28

combinaisons possibles des états sources. Chaque combinaison est traduite par une transition

29

CPN. Par exemple, considérons la transition de S1 vers S2 étiquetée par l’événement b dans

30

la Figure 5.6a. Les états S11 et S12 forment une combinaison ; par conséquent, une transition

31

CPN est créée et sera notée S1_b_S2_1 dans la Figure 5.6b (1 dénote que c’est la première

32

combinaison). Dans le cas d’une transition SMD sans événement, nous la traduisons en une

33

seule transition CPN, ce qui permet d’éviter l’explosion combinatoire dans ce cas : en effet,

34

afin de sortir d’un état composite (avec une ou plusieurs régions) en utilisant une transition de

35

terminaison, il est nécessaire que chaque région soit dans son état final, ce qui implique une seule

36

transition CPN.

Places et transitions : nommage