b événementiel source : présentation de j.r. abrial (janvier 2000) le contrôleur du pont de...
TRANSCRIPT
![Page 1: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/1.jpg)
B événementiel
Source : Présentation de J.R. Abrial(Janvier 2000) Le contrôleur du pont de l'île
Le principe : le saut en parachute. Plus on s'approche du sol, plus on voit de choses, plus on voit d'événements.
« Time stretching » : étirage du temps
![Page 2: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/2.jpg)
![Page 3: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/3.jpg)
Première vue du système (ou modèle initial)
Quelles sont les données ?
On a une seule variable, n, le nombre de véhicules qui sont dans le système. De plus, le nombre maximum de véhicules que peut contenir le système est constant (d)
La contrainte à satisfaire est :
0 <= n <= d
![Page 4: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/4.jpg)
forme générale d'un événement
La forme générale d'un événement pour cette présentation
< nom_événement> == WHEN <garde> THEN <action> END
![Page 5: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/5.jpg)
deux événements
On a deux événements
Sortie du continent vers le système
ML_OUT == WHEN n < d THEN n := n+ 1 END
![Page 6: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/6.jpg)
deux événements
Entrée sur le continent
ML_IN == WHEN n > 0 THEN n := n - 1 END
![Page 7: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/7.jpg)
Les obligations de preuve1) La préservation de l'invariant
Etant donné un événement de forme générale :
EVENT == WHEN G(x) THEN x := E(x) END
et un invariant I(x) à préserver, il faut prouver que : I(x) & G(x) => I(E(x))
![Page 8: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/8.jpg)
préservation de l'invariant
Soit dans notre cas
pour l'événement ML_OUT
0 <= n <= d & n <d => 0 <= n + 1 <= d
pour l'événement ML-IN
0 <= n <= d & n <d => 0 <= n - 1 <= d
![Page 9: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/9.jpg)
Preuve de vivacité (liveness)
2) Preuve de vivacité (liveness) Etant donné un système d'événements avec les gardes :
G1 (x), ..., Gn (x)
et un invariant I(x), l'énoncé à prouver est :
I(x) => G1(x) or ...or Gn(x)
i.e. un événement au moins est toujours prêt à être déclenché (ABSENCE DE VERROU FATAL)
![Page 10: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/10.jpg)
Preuve de vivacité (liveness)
Soit ici :
0 <= n <= d => 0 < n or n < d
Ce que l'on ne peut prouver !
Quand n = 0, on ne peut prouver n < d
On a oublié 0 < d
Il y a un deadlock si d = 0 (plus aucune voiture ne peut entrer).
![Page 11: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/11.jpg)
On corrige
On corrige donc et alors on peut prouver que :
0 <= n <= d & 0 < d => 0 < n or n < d
![Page 12: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/12.jpg)
Preuve d'absence de sous-boucles infinies
3) Preuve d'absence de sous-boucles infinies
Pour chaque événement (dans le cas de deux événements seulement) : EVENT == WHEN G(x) THEN x := E(x) END
Il faut prouver, étant donné un invariant I(x) :
I(x) => 0 <= V(x) & I(x) & G(x) =< V (E(x)) < V(x)
où V(x) est un variant à exhiber pour chaque événement.
![Page 13: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/13.jpg)
Absence de sous-boucles infinies
Soit ici
Pour ML_OUT, un variant est d - n
0 <= n <= d & 0 < d => 0 <= d - n 0 <= n <= d & 0 < d & n < d => d - (n + 1) < d - n
![Page 14: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/14.jpg)
Absence de sous-boucles infinies
Pour ML_IN, un variant est n
0 <= n <= d & 0 < d => 0 <= n 0 <= n <= d & 0 < d & n < d => n -1 < n
![Page 15: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/15.jpg)
Raffinage par introduction du pont
Deuxième vue du système , raffinage par introduction du pont
On est descendu et on aperçoit maintenant le pont.
On voit :
- des véhicules sur le pont qui se dirigent vers l'île (un nombre a) - des véhicules qui sont dans l'île (un nombre b) - des véhicules qui se dirigent vers le contenant (un nombre c)
![Page 16: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/16.jpg)
Introduction du pont
b
a
c
A + b + c = n
![Page 17: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/17.jpg)
Invariant du raffinage
L'invariant
0 <= a & 0 <= b & 0 <= c & a = 0 or c = 0 /* tous les véhicules vont dans la même direction */
Invariant de collage a + b + c = n
![Page 18: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/18.jpg)
Les techniques de raffinage :
1) Chaque événement est raffiné par un événement concret
2) Le monde abstrait travaille avec x et le concret avec y
3) Un invariant de collage I(x, y) lie les deux mondes
![Page 19: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/19.jpg)
Les mécanismes de raffinage
- le renforcement des gardes (normal, plus on voit de choses en s'approchant du sol, plus on voit de contraintes.
C'est bien connu, quand on est "haut placé" on est en dehors des contingences matérielles...voilà sans doute pourquoi certains recherchent ces places...dans les amphis (?!))
Rappel : en ce qui concerne les pré-conditions, on les affaiblit lors du raffinage.
- des actions "simultanées" sur l'invariant de collage.
![Page 20: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/20.jpg)
Raffinage de l'événement abstrait
1) Raffinage de l'événement abstrait
ML_OUT == WHEN n < d THEN n := n + 1 END
en :
ML_OUT == WHEN a + b + c < d & c = 0 /* On a renforcé la garde */ THEN a := a + 1 END
![Page 21: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/21.jpg)
Raffinage d’événement abstrait
en :
ML_IN == WHEN c > 0 THEN c := c - 1 END
Raffinage de l'autre événement abstrait :
ML_IN == WHEN n > 0 THEN n := n + 1 END
![Page 22: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/22.jpg)
Spécification des nouveaux événements
2) Spécification des nouveaux événements
IL_IN == WHEN a > 0 THEN a, b := a - 1, b + 1 END
![Page 23: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/23.jpg)
Spécification des nouveaux événements
IL_OUT == WHEN b > 0 & a = 0 THEN b, c := b - c, c + 1 END
![Page 24: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/24.jpg)
Les obligations de preuve du raffinage d'événement
Etant donné un événement abstrait et un événement concret correspondant
EVENT == WHEN G(x) THEN x := E(x) END
EVENT == WHEN H(y) THEN y := F(y) END
et les invariant I(x) (supposé être déjà préservé par l'événement abstrait) et J(x, y), I(x) & J(x, y) & H(y) => G(x)
I(x) & J(x, y) & H(y) => J(E(x), F(y))
![Page 25: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/25.jpg)
Les niveaux suivants
... à vous maintenant d'appliquer cela...
Les niveaux suivants seront :
1) Introduction de deux feux de circulation à chaque entrée du pont
2) Introduction de capteurs (il faut bien compter les véhicules pour vérifier l'invariant fourni au premier niveau) à l'entrée et à la sortie du pont
![Page 26: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/26.jpg)
introduction du contrôleur
Puis introduction du contrôleur qui : - décide quand les feux doivent changer
- n'a pas accès aux variables physiques - a accès à des variables de contrôle - qui sont des copies de variables physiques
- qui représentent ce que le contrôleur croit de la situation physique
- dont les valeurs peuvent être différentes de celles des variables physiques
mais néanmoins le système doit fonctionner correctement comme celà est prescrit par les variables physiques
- conservées en mémoire du contrôleur
![Page 27: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/27.jpg)
canaux de communication
3) Introduction des canaux de communication
- entre le monde physique et le contrôleur (annonce de l'arrivée ou du départ d'un véhicule)
- entre le contrôleur et le monde physique (pour faire changer)
Des hypothèses temporelles doivent être faites (par exemple que les capteurs physiques sont moins réactifs que les autres événements)
![Page 28: B événementiel Source : Présentation de J.R. Abrial (Janvier 2000) Le contrôleur du pont de l'île Le principe : le saut en parachute. Plus on s'approche](https://reader035.vdocuments.mx/reader035/viewer/2022062621/551d9d8e497959293b8c3f38/html5/thumbnails/28.jpg)
l'environnement
4) Réunion des variables physiques et des variables canaux pour former une seule entité, l'environnement fait de :
- des variables physiques et des variables canaux - tous les événements physiques - deux services d'entrée/sortie