• Aucun résultat trouvé

Système de transitions défini par un réseau de Petri Le marquage du système définit l’état courant du système, la relation de transition → est une relation entre deux mar-

quages. Une transition t est tirée et définit une transition entre deux marquages M et M′si on a :

∀s ∶ (s, t) ∈ F, (t, s) ∉ F ∶ M′(s) = M(s) − W((s, t)) ∧

∀s ∶ (t, s) ∈ F, (s, t) ∉ F ∶ M′(s) = M(s) + W((t, s)) ∧

∀s ∶ (s, t) ∈ F, (t, s) ∈ F ∶ M′(s) = M(s) − W((s, t)) + W((t, s))et à condition que l’on ait : ∀(s, t) ∈ F ∶ M(s) ≥ W((s, t))

Une transition t peut être tirée si et seulement si elle est sensibilisée par les jetons en entrée.

Un exemple de réseau de Petri et un tir de transition sont donnés figure 4. En sé- mantique faible, contrairement à la sémantique forte, le tir d’une transition autorisée n’est pas automatique. De plus si deux transitions sont tirables et indépendantes, elles peuvent être tirées séquentiellement ou en parallèle.

On s’intéresse aux propriétés suivantes des réseaux de Petri : – la causalité et le parallélisme ;

1 1 2 1 1 1 2 2 1 1 1 2 1 1 1 2 2 1 0

FIG. 4: Un exemple de réseau de Petri

– l’évolution du nombre de jetons et ainsi l’évolution du nombre de ressources et du parallélisme ;

– le non-déterminisme.

La vérification des réseaux de Petri se concentre donc sur la recherche de bornes sur le nombre de jetons, la vivacité des différentes transitions et la réinitiabilité du réseau. Ces propriétés sont décidables. L’outil Tina [BLRV07] permet leur vérification en con- struisant un espace abstrait des états atteignables. Cette espace peut être utilisé pour du model checking et la vérification des propriétés des exécutions définies par un réseau de Petri.

E X T E N S I O N S T E M P O R I S É E S. Plusieurs extensions des réseaux de Petri existent, notamment certaines permettent de modéliser le temps et des propriétés temps réel. Ces extensions sont regroupées en deux familles, les réseaux de Petri temporisés introduits par [Ram74] et les réseaux de Petri temporels introduits par [Mer74]. Pour les réseaux de Petri temporisés, le temps est utilisé pour donner une durée minimale de tir pour une transition ou un temps de séjour minimal pour un jeton dans une place. Ces réseaux de Petri sont une sous-classe des réseaux de Petri temporels.

Les premiers réseaux de Petri temporels associent à chaque transition un intervalle de temps, ce sont les réseaux T-temporels. Une transition ne peut être tirée que si elle a été sensibilisée en continu pendant la durée minimale de l’intervalle. Elle doit être tirée avant d’atteindre le maximum sauf si le tir d’une autre transition entraîne l’arrêt de sa sensibilisation. Les réseaux de Petri T-temporels sont utilisés pour l’étude des protocoles de communication. Concernant la décidabilité, les bornes sur le nombre de jetons sont décidables. Les propriétés d’accessibilité et la vérification de propriétés exprimées dans la logique RTCTL sont décidables uniquement dans le cas où le réseau de Petri est borné. Cependant, pour ces réseaux de Petri, le temps est associé uniquement à la sensibilisation d’une transition. Un jeton peut rester indéfiniment dans une place en attente d’une synchronisation et sans qu’il y ait d’information sur le temps d’attente avant synchronisation. L’outil Tina permet l’analyse des propriétés des réseaux de Petri T-temporels.

Pour palier cela, les réseaux de Petri P-temporels associent un intervalle de temps aux places. Chaque jeton ne peut quitter la place qu’après avoir passé une durée minimale

de temps dans cette place et il doit la quitter avant le maximum de l’intervalle de la place. S’il ne peut pas la quitter car aucune transition n’est sensibilisée, le jeton est déclaré "mort". Une horloge est donc associée à chaque jeton. Le but est de vérifier l’absence d’exécutions créant des jetons morts ce qui traduit un manque de synchronisation. L’expressivité des deux types de réseaux de Petri temporels n’est pas comparable [BR08].

2.5.5 Le langage TLA (Temporal Logic of Actions)

Le langage TLA (Temporal Logic of Actions) est un langage développé par Leslie Lamport [Lam94] permettant de spécifier des systèmes de transition. Ce langage permet de plus de spécifier des propriétés d’équité. En TLA, les programmes sont représentés par des formules de logique temporelle et plus précisément par une formule de la forme :

Init ∧ ◻[A]t ∧ Equite

Initest un prédicat sur l’état initial du système. Par exemple Init≜ (x = 0) indique que la variable x est initialisée à 0.

Une action A est un prédicat entre deux états du système liés par la relation de transition. Ce prédicat est défini par des variables primées qui donnent l’état des variables dans l’état suivant et les variables non primées qui donnent l’état des variables dans l’état courant. Par exemple l’action x′= x + 1 est vérifiée pour deux états tel que le second a x incrémenté de 1 par rapport au premier. On construit une action par disjonction et conjonction d’autres actions.

Les variables t en indice de l’action A sont des variables impliquées dans la définition de l’action A. Cet indice autorise le bégaiement, c’est-à-dire que toute transition qui

ne modifie pas ces variables est autorisée permettant l’entrelacement. Ainsi[x′= x +

1]xautorise une transition où x n’est pas modifié mais où d’autres variables le sont.

Finalement, le symbole◻ indique que toute transition du système doit respecter [A]t.

Equitespécifie les propriétés d’équité, répondant au besoin de spécifier que certaines actions finissent par arriver. On utilise principalement l’équité faible WFt(A) et l’équité

forte SFt(A). WFt(A) est une propriété d’équité faible, c’est-à-dire que lors de l’exé-

cution du système l’action A ∧ t′≠ t ne peut pas être faisable en continu sans que la

transition associée finisse par être prise. La vivacité forte peut aussi être utilisée. SFt(A)

indique que A∧ t′≠ t ne peut pas être faisable infiniment souvent sans que la transition associée ne soit prise.

On utilise le langage TLA pour vérifier qu’une spécification est bien définie, c’est-à- dire qu’elle définit un ensemble non vide d’exécutions, ou alors qu’un système implante une spécification exprimée dans la logique temporelle LTL. TLC (TLA+ Model Checker) est un outil permettant de vérifier des spécifications TLA par model checking.

Le temps dans TLA est introduit via une variable now dont l’écoulement est à décrire dans les actions décrivant le système. On manipule donc directement la variable temps et non pas par l’intermédiaire d’horloges. Ce principe simple est expliqué dans [AL94]. 2.6 C O N C L U S I O N

La définition classique d’un système temps réel repose sur la correction temporelle des opérations de ce système. Dans une spécification, les propriétés temps réel caractérisent

donc les temps de calcul ou de communication. Dans notre approche, on définit un système temps réel de la manière suivante :

La validité d’un système temps réel dépend de la validité temporelle de ses données.

Les propriétés temps réel sont alors exprimées comme des conditions de validité tem- porelle des valeurs prises par les variables du système. Ces conditions de validité dépendent alors de la sémantique de cette variable et définissent par exemple le rythme de mise à jour des variables. De plus, dans le cas d’un système où les valeurs de certaines variables sont utilisées pour calculer les valeurs d’autres résultats, on veut définir la validité temporelle des valeurs résultats en fonction de la validité temporelle des valeurs utilisées en entrée pour le calcul.

Les approches usuelles pour les systèmes temps réel reposent évidemment sur la définition classique du temps réel et définissent les propriétés temps réel comme des propriétés sur les caractéristiques temporelles des opérations et pas sur les données. Cette différence ne nous permet pas de réutiliser directement ces approches pour l’expression des propriétés. On veut de plus procéder à une vérification formelle de la spécification d’un système et le cadre des approches par les modèles ne nous permet pas de définir formellement la sémantique de nos propriétés. Pour ces raisons, la définition des propriétés et de leur sémantique est donnée par la suite dans un cadre non usuel pour l’étude des systèmes temps réel.

On s’intéresse alors à la relation d’observation formalisée par [Cha97]. Cette relation permet de modéliser les communications dans les systèmes distribués mais sans donner de propriétés temps réel sur cette communication. On utilise aussi cette relation pour pouvoir modéliser les calculs effectués dans un système. Un ensemble de relations d’observation définit des chemins le long desquels les valeurs d’une variable sont propagées pour définir les valeurs d’autres variables. Ces chemins donnent donc des dépendances entre les valeurs des différentes variables du système. On définit les propriétés temps réel du système sur ces chemins de propagation introduits par les relations d’observation. Il s’agit de limiter le décalage temporel introduit par cette propagation et de caractériser les dépendances entre la validité temporelle d’une variable et la validité temporelle des autre variables du système.

Les systèmes de transitions permettent de donner la sémantique opérationnelle d’une spécification en construisant explicitement les exécutions du système. Sous certaines conditions, il est alors possible de vérifier les propriétés d’une spécification par explo- ration des états des exécutions. Les systèmes de transitions tels que les automates ou les réseaux de Petri, bien qu’utilisés pour l’étude de propriétés temps réel, ne permettent pas directement de décrire la propagation des valeurs des variables dans le système et de spécifier les propriétés de ces valeurs. On n’utilise pas ces types de système de transi- tions pour définir les propriétés d’un système mais on utilise cependant les systèmes de transitions pour procéder à la vérification d’une spécification.

3

O U T I L S P O U R L A S P É C I F I C AT I O N D ’ U N S Y S T È M E

On donne dans ce chapitre les définitions des concepts utilisés par la suite pour exprimer la spécification d’un système. On définit les relations utilisées pour définir les liens entre les variables du système et les moyens de caractériser le comportement d’une variable lors d’une exécution. On commence par définir la représentation du temps dans le système et introduire les horloges qui sont utilisées par la suite pour définir le décalage logique introduit lors de la propagation des valeurs des variables. On donne ensuite la définition de la relation d’observation et comment on utilise cette relation pour modéliser les communications et les calculs et décrire l’architecture d’un système. On introduit le profil temporel et les occurrences d’une variable permettant de décrire le comportement d’une variable le long d’une exécution. Finalement, on construit à partir d’un ensemble de relation d’observation les chemins de propagation des valeur des variables dans un système.

3.1 D É FI N I T I O N S P R É L I M I N A I R E S

On se place dans le cadre du modèle de traces qui est introduit pour l’étude des systèmes de transitions section 2.5.1, page 28. On définit alors un système comme une spécification ayant une sémantique associée permettant de donner l’ensemble des exécution définies par la spécification. Les propriétés du systèmes sont décrites sur les exécutions du système définies comme des séquences d’états. On considère ici uniquement des exécutions infinies et donc des séquences σ0, σ1, σ2, . . . σi, σi+1, . . .

d’états indexés parN.

3.1.1 Introduction du temps

Afin d’intégrer le temps dans les spécifications de système que nous allons donner, on introduit une référence explicite au temps. On utilise comme dans [AL94] une variable

Tcroissante et non bornée, prenant valeur dans un ensemble infini muni d’une relation

d’ordre total. L’ensemble des valeurs de T choisi estN et donc discret.

Définition 5. Variable temps. L’évolution du temps est définie par une variable T telle que pour