• Aucun résultat trouvé

3.2 Synthèse du détecteur au plus tôt

4.1.3 Conditionnement des données

Le conditionnement des données consiste à trouver la meilleure organisation d’un ensemble de données vis-à-vis de critères d’efficacité. L’efficacité sera dans notre cas liée au nombre maximal d’opérations exécutées lors d’une vérification. Sans optimiser ce critère, nous souhaitons identifier les caractéristiques des spécifications utilisées pour la détection qui ont le plus d’impact. Dans le chapitre précédent nous avons identifié les opérations réalisées sur l’abstraction temporelle pour permettre la détection des erreurs comportementales. Il existe essentiellement trois phases :

1. La recherche de la classe d’équivalence correspondant à un état s dans l’abstraction temporelle. (Mise à jour de l’index de classe d’équivalence avant la prise en compte de l’événement)

2. Le calcul de l’échéance associée à chaque classe à la volée. La complexité de cette opération dépend de la manière dont est encodée la région temporelle associée à une classe.

3. La recherche d’une transition événementielle dans l’ensemble des transitions auto- risées à partir d’une classe d’équivalence.

Ces opérations dépendent fortement de la manière dont les classes d’équivalence sont re- présentées. Ceci est particulièrement vrai pour le premier point puisque cette opération nécessite un parcours des différents éléments de l’abstraction. L’efficacité de l’exécution de cette première phase dépend donc de la facilité avec laquelle il est possible de consul- ter le contenu de la structure de données mémorisant l’abstraction temporelle. Les deux autres points sont d’une complexité inférieure. Pour illustrer la nature des opérations réa- lisées sur l’abstraction, nous allons détailler le déroulement de la première phase.

Analyse détaillé de la première opération

Le problème est le suivant : trouver la classe d’équivalence contenant l’état de destination s0d’une transition s→ s∆ 0, avec s et∆ connus.

Notons γ et γ0 les vecteurs d’horloges de s et s0. Le vecteur γ0 se déduit de γ par simple addition de∆ sur chaque horloge, γ0 = γ + ∆.(1, ..., 1). Ainsi, deux approches sont

possibles pour déterminer la classe de s0: soit l’on trouve la classe de s0dans l’abstraction temporelle en exécutant la transition s → s∆ 0, soit l’on essaie de trouver directement la

classe de s’ à partir du vecteur d’horloge de s’. Nous avons opté pour la première solution car cette dernière est plus simple à mettre en place dans le cadre d’un premier prototype.

Rappelons qu’un état de l’automate correspond à un «instant» de l’exécution de ce dernier. Chaque instant est caractérisé par le lieu occupé par l’automate et les valeurs des horloges. Les états à partir desquels il est possible de franchir les mêmes séquences de transitions événementielles sont regroupés dans des classes d’équivalence. Les transitions entre états sont transformées en transitions entre classes. Seul l’impact des transitions temporelles nous intéresse. Considérons que la figure4.1 représente la partition de l’en- semble des vecteurs d’horloges associés au lieu res_use1. Dans ce cas précis, un vecteur d’horloge vérifiant y ≤ x et y − x > 15 peut appartenir à trois classes différentes, cha- cune identifiée par une région temporelle distincte R1, R2, R3. La classe R1 n’autorise pas l’événement release mais possède toujours une continuation valide ; La classe R2 autorise release ; La classe R3 ne contient que des états erronés.

Toute transition temporelle entraîne un déplacement des vecteurs d’horloges selon la 1ère diagonale de l’espace des vecteurs d’horloges. En réalisant l’abstraction temporelle, la notion de durée associée à une transition disparaît. Il est donc nécessaire de traduire la transition s → s∆ 0 dans l’abstraction temporelle. Pour cela, il faut comprendre ce que représente une τ − transition. Prenons l’exemple de la figure4.1, R1, R2 et R3 sont trois régions temporelles liées par des τ − transitions :

4.1. LES ENJEUX DE L’IMPLÉMENTATION 87

F. 4.1: Régions temporelles de res_use1

Sur la gauche, nous avons repris l’automate utilisé tout au long du manuscrit. Sur la droite, nous avons détaillé l’organisation de l’espace des vecteurs d’hor- loge pour le lieu Res_use1 en quatre régions distinctes. Chaque région corres- pond à un status différent en terme d’accessibilité et de co-accessibilité.

Cette séquence de τ − transitions signifie que pour chaque état q de {res_use1} × R1, il existe deux durées caractéristiques d, et d0 telles que pour q0 le successeur de q par

q→ qr 0

, si :

– r < d, alors q0∈ {res_use1} × R1 – d < r < d0, alors q0 ∈ {res_use1} × R2 – d0< r, alors q0 ∈ {res_use1} × R3

Si q0 ∈ {res_use1} × R3, l’exécution de la transition de q à q0dans l’abstraction temporelle

passe par un saut de R1 à R2 puis de R2 à R3. En pratique, nous procéderons de proche en proche en consommant petit à petit le budget r tel que décrit sur la figure4.2. Cela revient à sauter de frontière temporelle en frontière temporelle tant que la durée écoulée depuis le dernier événement le permet. Nous avons déjà vu comment calculer le temps néces- saire pour atteindre par écoulement du temps le bord d’une classe d’équivalence, cf3.2.4

page 77. La section suivante aura pour but de définir avec précision l’algorithme et les structures de données nécessaires pour réaliser cette exécution des transitions abstraites.

Cette section avait pour but de mettre en évidence les trois problématiques liées à l’implémentation du détecteur à partir de la description de sa logique. Dans la section suivante nous discuterons les moyens mis en œuvre pour répondre au mieux à ces trois problématiques. La description du prototype servira de support, dans la dernière section, à une étude de la criticité des différents composants du détecteur et des mesures qui peuvent

F. 4.2: Exécution des transitions abstraites par «sauts de puces», avec r = r1 + r2 + r3 Pour prendre en compte l’écoulement de la durée r à partir de l’état q (menant à l’état q0), il faut traduire l’écoulement du temps dans le graphe de l’abstraction tempo- relle. Franchir la τ-transition (Res_use1, R1) → (Res_use2, R2) revient à atteindreτ le bord de R1 depuis q en laissant r1 unités de temps s’écouler. Tant que r le per- met, il faut continuer à travers les régions temporelles et franchir lesτ-transitions de l’abstraction temporelle. Lorsque r ne permet plus d’atteindre le bord d’une classe d’équivalence, cela signifie que la classe d’équivalence de q0vient d’être trouvée.

4.2. RÉALISATION ET INTÉGRATION DU PROTOTYPE 89