• Aucun résultat trouvé

FIGURE5.4 – Architecture utilisée pour le monitoring.

courante est considérée. La composition synchrone prend en compte l’exécution d’un sys-tème ordonnancé dans son Environnement réel. Le Statut de monitoring est déterminé par l’Assertion d’acceptation qui utilise l’interface Acc pour savoir si la configuration courante du produit synchrone est un état d’acceptation. En cas de violation de la propriété, le changement d’état du Statut de monitoring permet d’avertir l’utilisateur ou de déclencher des mécanismes de sûreté de fonctionnement (p. ex. de recouvrement d’erreurs).

5.5 Composition synchrone

La mise en œuvre de notre architecture de vérification formelle repose sur la composition synchrone de l’exécution de la propriété avec l’exécution du système. Cette section présente l’opérateur de composition synchrone permettant de réaliser cette tâche.

5.5.1 Description théorique

De manière informelle, le principe de la composition synchrone est assez simple : chaque fois que le système exécute un pas, l’automate de la propriété réalise aussi un pas pour suivre l’exécution du système. En d’autres termes, à chaque pas d’exécution, une transition synchrone

composée d’une transition du système et d’une transition de la propriété est tirée. Ainsi, une défaillance dans l’exécution du système est détectée dès qu’elle se produit.

Pour montrer comment cet opérateur fonctionne plus concrètement, une description for-melle de notre opérateur de composition synchrone va maintenant être présentée. Cet opé-rateur est relié à deux moteurs d’exécution : l’un exécutant le modèle du système et l’autre exécutant le modèle de la propriété. Pour cette définition formelle, nous allons considérer que l’automate du système est représenté par le termelhs et que celui de la propriété est modélisé par le termerhs. L’opérateur de composition synchrone utilise l’interface STR pour piloter cha-cun des moteurs d’exécution ainsi qu’une fonction d’évaluation pour récupérer les propositions atomiques (interface APC) ou les évaluer (interface APE).

Définition 5.8. La composition synchrone de l’exécution du système (lhs) avec l’exécution de la propriété (rhs) donne une STR définie par :

def synchronous_composition (C1 C2 A1 A2 L1 : Type) (lhs : STR C1 A1)

(ape : APE C1 A1 L1) (rhs : STR C2 A2) (apc : APC C2 A2 L1)

: STR (C1 × C2) (A1 × A2) := {

initial := { c | ∀ (c1 ∈ lhs.initial) (c2 ∈ rhs.initial), c = (c1, c2) }, actions := λ c, { a | match c with

| (c1, c2) := ∀ (a1 ∈ lhs.actions c1) (a2 ∈ rhs.actions c2) (t1 ∈ lhs.execute c1 a1) (t2 ∈ rhs.execute c2 a2),

match t1, t2 : ∀ t1 t2, Prop with

| t1, t2 := ∀ l ∈ apc.eval c2 a2,

ape.eval l c1 a1 t1 = tt → a = (a1, a2)

end end },

execute := λ c a, { t | match c, a with

| (c1, c2), (a1, a2) := ∀ (t1 ∈ lhs.execute c1 a1) (t2 ∈ rhs.execute c2 a2), t = (t1, t2)

end }}

Listing 5.9 – Opérateur de composition synchrone.

La configuration initiale du produit synchrone (initial) est la concaténation de la confi-guration initiale du système et de la conficonfi-guration initiale de la propriété. Pour construire des transitions synchrones (actions), le moteur d’exécution de la propriété exécute sa fonction

5.5. Composition synchrone

apc.eval (interface APC) sur toutes les actions disponibles et retourne la liste des proposi-tions atomiques nécessaires pour leurs évaluaproposi-tions. Ces atomes sont des prédicats qui sont évalués avec ape.eval (interface APE) sur chaque pas d’exécution du système (c.-à-d. sur le tuple configuration source c1, action a1 et configuration cible t1). Le pas d’exécution a1 doit donc être exécuté afin de récupérer la configuration cible du système. En utilisant le résultat de l’évaluation des atomes, les actions de l’automate de la propriété peuvent désormais être évaluées pour savoir si elles sont exécutables. Si une action est exécutable, cela signifie que cette action de l’automate de la propriété (a2) peut être synchronisée avec celle de l’automate du système (a1). Les actions étant ici des transitions, on obtient donc une transition synchrone correspondant au tuple (a1, a2). La dernière partie concerne l’exécution de ces transitions syn-chrones (execute). À partir d’une configuration donnée du produit synchrone, une transition synchrone est tirée afin de récupérer sa configuration cible. Cela signifie que la transition du système (a1) est tirée sur l’automate du système et que la transition de la propriété (a2) est tirée sur l’automate de la propriété. La concaténation des deux configurations cibles (c1, c2) donne la configuration cible de la transition synchrone.

De plus, l’opérateur de composition synchrone fournit également une implémentation de l’interface Acc permettant de savoir si un état du produit synchrone est un état d’acceptation. Pour cela, l’opérateur de composition synchrone appelle la fonction accepting sur chacune des deux entrées et réalise un “et” logique entre les deux valeurs booléennes retournées. En pratique, chaque état de l’automate du système est un état d’acceptation. Un état du produit synchrone est donc un état d’acceptation s’il contient un état d’acceptation de l’automate de la propriété.

En résumé, cet opérateur de composition synchrone permet de fournir au contrôleur d’exé-cution un point de vue sur le système analysé, et ce, sans avoir besoin de modifier l’implémen-tation de la sémantique du langage de modélisation. En effet, ce point de vue (c.-à-d. l’interface STR de sortie) est directement construit à partir du point de vue sur l’exécution du système (c.-à-d. l’interface STRlhs) et du point de vue sur l’exécution de l’automate de la propriété (c.-à-d. l’interface STRrhs).

5.5.2 Optimisation pour le monitoring

Pour le monitoring, l’opération de composition synchrone peut être optimisée puisque seul un chemin d’exécution est parcouru. Pour gagner en efficacité, l’ordonnanceur de la plateforme d’exécution est sollicité avant la construction des transitions synchrones pour choisir la transi-tion du système qui sera tirée au prochain pas d’exécutransi-tion. Ainsi, la compositransi-tion synchrone n’a besoin d’être appliquée que sur la transition sélectionnée par l’ordonnanceur et non sur toutes les transitions tirables du système. Ces transitions tirables sont toujours calculées dans la configuration courante de l’exécution du système et la prochaine transition à tirer est toujours

exécutée à partir de cette configuration. La configuration cible de la transition tirée sera alors considérée comme configuration courante au prochain pas d’exécution. Lorsque la transition sélectionnée par l’ordonnanceur a été tirée, il est possible de déterminer quelle transition de la propriété peut être synchronisée avec celle du système afin de tirer ladite transition sur l’auto-mate de la propriété. Non seulement ce mécanisme fait davantage sens pour le monitoring car la transition du système est seulement tirée une fois mais cela contribue aussi à améliorer les performances d’exécution.