• Aucun résultat trouvé

3 Traduction de la partie contrôle de RT-LOTOS vers les réseaux de Petri

3.7 Patterns s'appliquant à un ensemble de composants

(a) Composant cyclique (b) Renommage de a par b

Fig. 3.15: Patterns de la récursion et de l'instanciation

Validation expérimentale Considérons le comportement RT-LOTOS de la Figure 3.16(a) qui exécute récursivement la séquence suivante : le processus P suivie d'une ore temporelle sur l'action b. (Notez l'usage de l'opérateur de composition séquentielle, cf. Section 3.7.2 pour les détails du traitement de cet opérateur).

.

process P3[a,b] :noexit := a{2} ; exit >> b{1}; P3[a,b] endproc (a) Comportement RT-LOTOS (b) Composant C P (c) Graphe de classes

Fig. 3.16: Validation expérimentale du pattern de la récursion

3.7 Patterns s'appliquant à un ensemble de composants

Chacun des patterns suivants combine de diérentes manières un ensemble de composants pour aboutir à un seul composant.

3.7.1 Pattern de la synchronisation parallèle

CP CQ

CP|[a]|Q

Fig. 3.17: Pattern de la synchronisation parallèle

Description informelle La communication par rendez-vous est un concept important des algèbres de processus. Elle consiste en une synchronisation symétrique par laquelle une action a partagée par n processus ne peut être exécutée que si tous ces derniers sont prêts (chacun de son coté) à exécuter cette action a. Dans la théorie des RdP, un tel scénario est représenté par une transition ayant n places d'entrées. Cette transition ne peut être tirée que si toutes ses places d'entrée sont marquées. L'opération de synchronisation est ainsi obtenue en opérant une fusion de transitions. Bien que cette opération de fusion de transitions soit simple dans les RdP (non temporels), cette dernière se trouve être un problème plutôt délicat dans les RdPT. En eet, une telle opération nécessite la manipulation explicite des intervalles temporels assignés aux transitions impliquées dans la synchronisation, et ceci an d'exprimer la contrainte de temps globale sous forme de conjonctions d'intervalles. La possible incompatibilité de ces intervalles temporels, peut induire des inconsistances dans l'expression nale de la contrainte temporelle. Ce problème n'est d'ailleurs pas résolu dans [54] (cf. section 3.8 pour une comparaison détaillée avec [54]).

Pour éviter ce problème de composition d'intervalles, et préserver la compositionnalité de notre approche, nous évitons soigneusement d'assigner des intervalles temporels aux transi-tions représentants des actransi-tions. Au lieu de celà, nous associons l'information temporelle à des transitions dédiées (étiquetées par des labels dans Time). Ainsi la synchronisation peut être faite simplement sans nécessiter une prise en compte explicite des contraintes temporelles associées aux transitions. L'avantage de notre solution est double :

1. Permettre une construction incrémentale de la contrainte temporelle globale sur une action synchronisée. La Figure 3.17 illustre la synchronisation entre deux composants CP et CQ sur l'action a. Notre but est de dénir un cadre compositionnel où, chaque

3.7 Patterns s'appliquant à un ensemble de composants composant impliqué dans la synchronisation peut rajouter des contraintes temporelles sur l'occurrence de l'action a. De telle sorte que la contrainte temporelle globale sur l'action a dans le composant CP |[a]|Q soit la conjonction de plusieurs contraintes plus élémentaires. Cela implique que lorsque le composant CP est prêt à l'exécution de l'action a, il est forcé dans l'absence d'une action alternative, à attendre que le composant CQ puisse orir l'action a. Ceci peut amener par exemple à l'expiration d'une ore temporelle sur a dans le composant CP. Le comportement désiré est obtenu par une simple fusion des transitions étiquetées par a comme pour les RdP de base.

2. Le relâchement de la sémantique forte des RdPT : dans ces derniers, le tir des transitions est dirigé par nécessité. Ainsi, une action doit être exécutée dès que la valeur supérieure de son intervalle temporel est atteinte (sauf si elle est en conit avec une autre transition). RT-LOTOS (et les algèbres de processus en général) favorise plutôt un point de vue basé sur l'interaction, où le comportement concret d'un système est inuencé par son environnement. Ainsi, une transition sensibilisée peut être tirée dans la fenêtre temporelle qui lui est assignée mais ne peut être forcée à s'exécuter. Une large gamme de systèmes temps-réel fonctionnent selon ce principe. En particulier, les systèmes temps-réel souples sont des exemples typiques de systèmes qui ne peuvent être forcés à se synchroniser avec leur environnement. Un tel comportement serait impossible si les transitions représentant des actions étaient associées à des intervalles temporels. Pour modéliser la nécessité dans RT-LOTOS nous utilisons l'opérateur hide. La combinaison de ce dernier avec les opérateurs ore limitée et latence donne une exibilité d'expression intéressante. Au nal, la synchronisation sur l'action a des composants CP et CQest obtenue en fusionnant chaque transition étiquetée par a dans le composant CP avec chaque transition étiquetée par a dans le composant CQ, créant ainsi n ∗ m transitions étiquetées par a dans le composant CP |[a]|Q(n et m représentent le nombre des transitions étiquetées par a dans les composants CP et CQ respectivement). Ainsi, les deux composants CP et CQdoivent s'attendre mutuellement pour tirer la transition a de manière synchrone.

Dénition formelle Soit Ta

P l'ensemble des transitions étiquetées avec le label a dans le composant CP. TA

P est l'extension de cette dénition aux ensembles de labels : TPa = {t ∈ TP| LabP(t) = a}

TPA= [ a∈A

TPa

Le réseau PP |[A]|Q est obtenu en substituant toutes les transitions tp dans le composant Cp et ayant un label a dans A par un ensemble de transitions (tp, tq) tel que tq soit étiquetée par adans le composant CQ, avec(tp, tq) = tp∪tq et (tp, tq) = tp∪ tq . A cette transition est associé un intervalle statique [0, ∞) (cf. H5).

La synchronisation sur la transition exit se fait de la manière suivante :

Si les deux composants CP et CQ possèdent une interface de sortie (OP 6= ∅ ∧ OQ 6= ∅) , alors toutes les transitions étiquetées par exit sont fusionnées (même traitement que pour des actions observables), les deux places out des deux composants sont supprimées et remplacées par une seule place de sortie commune. Si au moins l'un des deux composants ne possède

pas de place de sortie, alors le composant CP |[A]|Q ne pourra pas terminer son exécution avec succès et nous ne lui associons donc pas d'interface de sortie. Les transitions étiquetées par exit(si elles sont présentes) seront supprimées.

Notons : merge(tp, tq) =tp∪ tq, ((tp, tq), IS(tp)), tp∪ tq A0= A ∪ {exit} OP |[A]|Q =  {out} si OP 6= φ ∧ OQ6= φ φ sinon P reOut =  TPexit× Texit Q si OP 6= φ ∧ OQ 6= φ φ sinon

La dénition de CP |[A]|Q suit : CP |[A]|Q=

* X

P |[A]|Q

, LabP |[A]|Q, IP ∪ IQ, OP |[A]|Q + X P |[A]|Q = (X P \TPA0\ OP) ] (X Q \TQA0\ OQ) ∪ [ tp∈TA0 P ,tq∈TA0 Q

merge(tp, tq) ∪ hP reOut, out, φi

LabP |[A]|Q(t) =    LabP(t) si t ∈ TP LabQ(t) si t ∈ TQ a si t = (tp, tq) ∧ tp ∈ Ta P

Validation Expérimentale Le processus P est maintenant synchronisé sur l'action a avec un nouveau processus Q. Ce dernier commence par orir l'action b pendant 3 unités de temps ; ensuite il ore l'action a pendant une seule unité de temps.

behaviour P[a]|[a]|Q[b,a] where

process P[a] :exit := a{2} ; exit

endproc

process Q[b,a]: exit:= b{3}; a{1}; exit endproc

(a) Comportement

RT-LOTOS (b) Composant CP |[a]|Q (c) Automate quotient

3.7 Patterns s'appliquant à un ensemble de composants

3.7.2 Pattern de la synchronisation séquentielle

Description informelle CP Q(cf. Figure 3.19) est le composant résultant de la composition séquentielle des composants CP et CQ.

CP

CQ

CP>>Q

Fig. 3.19: Pattern de la composition séquentielle

Ce type de composition est possible seulement si le composant CP possède une interface de sortie. Ainsi, si l'exécution du composant CP se termine avec succès, le composant CQ est alors activé. Le composant résultant CP Q est obtenu par la fusion de l'interface de sortie du composant CP et l'interface d'entrée du composant CQ. De plus et pour se conformer à la sémantique de RT-LOTOS, le point d'interaction rattachée à la transition exit dans CP est intériorisé dans le composant résultant CP Q.

Dénition formelle

CP Q= *

X

P Q

, Labhide exit in P ∪ LabQ, IP, OQ +

X

P Q

= hPP \ OP ∪ PQ, Thide exit in P ∪ TQ, P reP ∪ P reQ, P ostP Q, ISP ∪ ISQi

P ostP Q= (P ostP \ {(t, OP)|t ∈OP}) ∪ {(t, inQ)|inQ∈ IQ∧ t ∈OP} ∪ P ostQ Validation expérimentale Dans ce qui suit le processus P est composé séquentiellement avec le processus Q.

behaviour P[a]»Q[b]

where

process P[a] :exit := a{2} ; exit endproc process Q[b]: noexit:= b{1} ; stop endproc (a) Comportement

RT-LOTOS (b) Composant CP |[a]|Q (c) Graphe de classes

Fig. 3.20: Validation expérimentale du pattern de la composition séquentielle

3.7.3 Pattern du choix

CP []Q(cf. Figure 3.21) est le composant qui se comporte comme le composant CP ou comme le composant CQ. Le temps peut progresser dans le composant CP []Qs'il peut progresser à la fois dans CP et dans CQ.

CQ

Cp [] Q CP

3.7 Patterns s'appliquant à un ensemble de composants Nous ne spécions pas si le choix entre les deux alternatives (CP et CQ) est fait par le composant CP []Q lui même, ou par son environnement. Néanmoins, ce choix doit être fait au niveau des premières actions dans CP []Q.

En d'autres termes, l'occurrence de l'une des premières actions dans l'un des composants CP ou CQ déterminera lequel des deux continuera son exécution et lequel sera désactivé. Ce problème peut être vu comme une compétition entre CP et CQ. En eet, ces deux composants sont en concurrence pour l'exécution de leur première action respective. Tant que l'occurrence de cette dernière ne s'est pas encore produite, CP et CQ vieillissent de manière similaire (le temps s'écoule de manière similaire dans les deux composants), ce qui signie que des transitions étiquetées par des labels dans T ime peuvent être tirées sans aucune conséquence sur le choix du composant à exécuter. Une fois la première action exécutée, le contrôle est irréversiblement transféré au composant gagnant et l'autre composant est désactivé, dans le sens où il ne doit plus contenir des transitions sensibilisées, étant donné que son exécution n'est plus possible.

Ce schéma est le plus complexe parmi les schémas de traductions présentés dans cette thèse. Nous avons donc fait le choix de l'introduire en plusieurs étapes. Dans un premier temps, nous montrerons qu'une solution basée sur l'exclusion mutuelle telle qu'on la retrouve dans la littérature des RdP n'est pas susante dans le cadre de RT-LOTOS. Par la suite, nous expliquerons que le respect de la règle dite de sensibilisation continue (cf. Section 2.3) nécessite une attention particulière pour la mise en ÷uvre d'une solution d'exclusion mutuelle. Pour nir nous montrerons comment nous avons solutionné le problème qui se pose quand les alternatives du choix (CP et/ou CQ) contiennent du parallélisme initial (présence d'un opérateur parallèle au niveau des premières actions).

Dans ce qui suit nous considérons que a (resp b) est la première action du composant CP (resp CQ) .

Mise en oeuvre d'une solution d'exclusion mutuelle : l'idée de départ était de traduire le choix RT-LOTOS selon le pattern bien connu de l'exclusion mutuelle pour les RdP. Tel que présenté dans la Figure 3.22(a) (Une solution plus simple, utilisée pour LOTOS consiste à fusionner les places d'entrées des deux composants). Ce qui a pour eet que le tir de l'une des premières actions dans l'un des deux composants videra la place d'exclusion mutuelle E de son jeton, et ainsi désactivera la première action du composant concurrent. De la sorte, le contrôle est transféré, du composant CP []Q vers l'un des composants CP ou CQ.

CP[]Q

CP CQ

(a) Exclusion mutuelle

CP[]Q

CQ

CP

(b) Choix PBC-like

Une autre solution, présentée dans PBC [20], et décrite dans la Figure 3.22(b), consiste à faire en sorte que le tir de la première action dans un composant (CP ou CQ) vide directement la place d'entrée de la première action du composant concurrent et qui sera ainsi désactivé.

Ces deux schémas peuvent être appliqués pour LOTOS. Mais la présence des opérateurs temporels (delay, latency et ore limitée dans le temps) rend les choses plus compliquées et ces schémas se révèlent malheureusement insusants pour une réutilisation dans notre cadre. Pour montrer l'inadéquation d'une réutilisation de la solution retenue dans [20] pour traiter le choix dans RT-LOTOS, considérons le cas décrit par la Figure 3.23 où les deux actions a et b sont contraintes par des ores limitées dans le temps (a{ta} et b{tb}).

CQ

CP

C

P[]Q

Fig. 3.23: Choix PBC-Like entre CP et CQ en présence d'ores temporelles

L'expiration de l'ore limitée sur l'action b dans le composant CQ qui est représentée par le tir de la transition t3, condamnera l'exécution de l'action a dans le composant CP. Ce qui constitue un comportement erroné, étant donné que l'évolution temporelle d'un composant ne devrait pas interférer avec l'exécution de l'autre composant impliqué dans le choix. Rappelons que le tir des transitions dans Time ne doit avoir aucune incidence sur le choix du composant à exécuter, de même que l'expiration d'un opérateur temporel dans RT-LOTOS est traitée comme un écoulement du temps (cf. règles SOS de RT-LOTOS).

Exclusion mutuelle et respect de la règle de sensibilisation continue : Supposons toujours que les composants CP et CQ commencent par des ores temporelles sur les actions a et b respectivement, et regardons maintenant l'adéquation du pattern de l'exclusion mutuelle, décrit par la Figure 3.24, dans pareil cas.

Comme nous l'avions expliqué précédemment, l'occurrence de l'action a doit désactiver le composant CQ. Ainsi l'exécution de l'action a (resp b) doit rendre impossible l'exécution de l'action b (resp a) , mais doit aussi interdire le tir de la transition t3 (resp t2) (t2 et t3 étiquetées par tv, représentent l'expiration des ores temporelles sur a et b respectivement) dans le composant CQ(resp CP). Étant donné que l'évolution temporelle (le tir de transitions avec des labels dans Time) d'un composant désactivé doit être stoppée, la place d'exclusion E doit être aussi une place d'entrée pour la transition t3 (E ∈t3). A contrario, l'expiration de l'ore limitée sur b dans CQ ne doit pas interférer avec le comportement du composant CP. Ainsi, le tir de la transition t3 ne doit pas vider la place E de son jeton, car E est une

3.7 Patterns s'appliquant à un ensemble de composants

CP CQ

C

P[]Q

Fig. 3.24: Exclusion mutuelle entre CP et CQ en présence d'ores temporelles

place d'entrée pour l'action a (E ∈t0). Dans le cas non temporisé, la solution à ce problème est de rajouter un arc d'entrée à la place E (E ∈t3∩ t3) tel qu'illustré dans la Figure 3.24. Cependant cette solution s'avère insusante dans le cas temporisé, et ce à cause de la règle de la sensibilisation continue. Ainsi, le tir de t3 dans le composant CQ, réinitialisera le timer associé à t2dans le composant CP, ce qui constitue une violation de la sémantique RT-LOTOS. Par conséquent, la place d'exclusion mutuelle E ne peut être partagée avec les transitions étiquetées par un label dans T ime. Ainsi pour chaque transition t ∈ TT ime dans CP (resp CQ), une place Et

P []Q (appelée lock-place dans la suite) est rajoutée. Cette dernière est une place d'entrée/sortie pour la transition t, mais aussi pour toutes les premières actions dans CP (resp CQ). De plus ces places nouvellement introduites doivent appartenir à l'interface d'entrée du composant CP []Q.

Nous décrivons dans la Figure 3.25, le mécanisme de rajout des lock-places pour un compo-sant CP dont la première action a est contrainte par la somme des trois opérateurs temporels de RT-LOTOS (delay(d)latency(l)a{t}), ce qui est un maximum en pratique.

Notons que l'exécution de l'action b dans le composant CQ videra toutes les places lock introduites de leurs jetons, ce qui bloquera l'évolution temporelle du composant CP.

Pour des raisons de lisibilité nous ne représentons pas les arcs liant les places lock à l'action a dans le composant CP. Notons pour nir, qu'en pratique, la seule place EP []Q est susante pour gérer à la fois les transitions étiquetées par delay et tv.

Gestion de l'opérateur parallèle : La traduction de l'opérateur du choix est connue pour être un problème dicile en présence de parallélisme initial. Pour éviter cette complexité, [83] dénit un opérateur de choix où chaque alternative a une et une seule place d'entrée, interdisant de fait la présence de parallélisme initial dans les alternatives du choix.

Dans le cadre de cette thèse, nous avons solutionné le problème posé par la présence de parallélisme initial sans imposer de restrictions sur les alternatives.

Pour illustrer le problème et décrire la solution que nous proposons, considérons le processus RT-LOTOS suivant : P [](Q|||Q0), a, b et c étant les premières actions des processus P , Q et Q0 respectivement.

Pour traduire ce type de comportements, l'utilisation d'une seule place d'exclusion mutuelle se révèle insusante. On peut voir dans la Figure 3.26(a) que l'exécution de l'une des premières

C

Q

C

P

C

P[]Q

Fig. 3.25: Mécanisme de rajout des places lock

actions (action b du composant CQ) dans le composant CQ|||Q0 désactivera eectivement le composant CP mais aussi le composant CQ0, ce qui constitue un comportement erroné. Ainsi, pour garantir une exclusion mutuelle dans CP [](Q|||Q0), nous introduisons une place d'exclusion mutuelle pour chaque première action dans le composant CP et ceci par chaque première action dans le composant CQ|||Q0. Ainsi, comme le décrit la Figure 3.26(b), pour la première action a dans CP, une place d'exclusion mutuelle Ea,b (resp Ea,b0) est introduite pour chaque première action b (resp b0) dans CQ|||Q0.

Arrivés a ce point, faisons un récapitulatif des places à introduire pour le pattern du choix : Notons, dt(resp lt, tvt) les transitions représentant un délai déterministe (resp. latence, vio-lation temporelle) associée à une transition t.

∀t ∈ F A(CP),∀t ∈ F A(CQ) , les places nouvellement introduites sont : φ, Et,t0, {t, t0} ,Dlt, Et,tl 0, {lt, t0}E,

D

tvt, Et,ttv0, {tvt, t0}E et D

dt, Et,td0, {dt, t0}E Bien évidemment la même opération doit être eectuée pour le composant CQ.

La purge des jetons restants dans le composant désactivé : Une dernière opération doit être mise en ÷uvre pour une dénition complète du pattern de choix. Cette opération appelée purge vise à régler un problème posé par les places introduites par les opérateurs délai déter-ministe et latence. Ces places ont la particularité de rester marquées après la désactivation du composant auquel elles appartiennent (le fait que ces places là soient marquées ne sut pas cependant pour sensibiliser une transition dans le composant). Le marquage de ces places pourrait poser des problèmes dans le cas de comportement réentrants (composants cycliques), en particulier le non respect de l'hypothèse des composants 1-bornés. Par conséquent, ces jetons doivent être purgés.

Cette tâche incombe à la dernière action du composant gagnant, qui devra donc purger le composant désactivé.

3.7 Patterns s'appliquant à un ensemble de composants CQ CQ’ CP CQ|||Q’ CP[] (Q|||Q’) (a) CP CQ CQ’ CQ|||Q’ CP[] (Q|||Q’) (b)

Fig. 3.26: Choix entre CP et CQ en présence de l'opérateur parallèle

Soit PrF A(CX) : l'ensemble des marquages atteignables avant l'occurrence de la première action du composant CX.

Pour chaque transition t ∈ LA(CQ), et pour chaque marquage atteignable m pour les places dans PrF A(CP), une transition tm est crée (tm• = {out}) (la dernière action du composant qui fait la purge est dupliquée autant de fois qu'il existe de marquages atteignables).

Par construction, une est une seule de ces transitions dupliquées est sensibilisée. Son tir videra le marquage m (tm=t ∪ m).

Il reste cependant un dernier détail à régler qui est posé par l'existence de marquages m, m' tels que m ⊂ m0. Les seules transitions ayant la faculté de faire évoluer un marquage m vers un marquage m' tel que m ⊂ m0 sont les transitions étiquetées par tv, précisément parce qu'elles n'ont pas de places de sortie. Pour régler ce problème nous rajoutons donc une place de sortie a ces transitions (cf. Figure 3.27(b) pour le traitement du cas de la transition t3).

Le nombre des marquages accessibles avant l'occurrence de la première action est exponentiel en nombre des opérateurs delay et latency. En cas d'un delai et d'une latence, il y a trois marquages accessibles possibles : {delay}, {delay,latency}, {delay, latency}(cf. Figure 3.27(a)) ; en pratique c'est un maximum.

C

P

C

Q

C

P[]Q (a)

C

P

C

Q

C

P[]Q (b)

Fig. 3.27: Purge du composant CP

Description informelle et récapitulatif : Pour obtenir le choix entre CP et CQ. Nous in-troduisons un ensemble de places appelées Lock. Ces dernières appartiennent à l'interface

3.7 Patterns s'appliquant à un ensemble de composants d'entrée du composant CP []Q. Leur rôle est d'assurer le transfert de contrôle entre les deux composants. Pour chaque couple d'actions (première action dans CP, action concurrente dans CQ) on introduit une place lock (par exemple dans la Figure 3.21 l'action a possède une seule action concurrente dans CQ qui est l'action c, alors que cette dernière en possède deux dans le composant CP : a et b). Une place lock interagit seulement avec le couple de premières actions qui lui est associé ainsi qu'avec les transitons T ime présentes (delay pour a et tv pour b).

Les transitions T ime restaurent le jeton dans les places lock (puisqu'elles ne représentent pas une occurrence d'action mais une progression temporelle). L'occurrence d'une première action dans CP (resp CQ) bloquera l'exécution de CQ(respectivement CP) , en vidant de leurs jetons toutes les places lock rattachés au composant CQ (resp CP).

Dénition formelle Nous introduisons les ensembles suivants :

 Split(CX) : l'ensemble des transitions obtenus par la duplication de la dernière action de