La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Quoi ? Un tampon.

Présentations similaires


Présentation au sujet: "Quoi ? Un tampon."— Transcription de la présentation:

1 Quoi ? Un tampon

2 Une boite noire in out On ne modélise pas les données qui passent par le tampon

3 Le tampon à deux places Deux suites acceptées : [in, out, in, out]
[in, in, out, in, out, out, in, out] Les suites suivantes ne sont jamais observées : [in, in, in] [out, in, out] [in, in, out, out, out] En utilisant la notation des expressions régulières, on peut en conséquence modéliser le comportement du tampon ainsi : M = (in . (in . out)* out)*

4 Une boîte blanche move in out

5 Qui sommes-nous, d’où venons-nous?

6 Bonjour ! Henri Habrias Cédric Stoquer
IUT de Nantes, département informatique LINA (Université de Nantes, EMN)

7 Nantes, en Bretagne Spectacle de Royal de Luxe
La Cour des Comptes de Bretagne Le Château des ducs de Bretagne sont situés à Nantes

8 Ce que nous allons traiter
En utilisant un exemple, comment on peut utiliser deux démarches : la preuve avec B le model-checking (vérification de modèle) avec FSP pour vérifier une spécification (celle du tampon à deux places) avec deux outils logiciels : l'Atelier B et LTSA

9 D’où ce titre … B, B événementiel et LTSA

10 Commençons par B B classique B événementiel

11 B classique vs B événementiel
traite de la spécification d'opérations respectant un invariant. Le système d'exécution de ces opérations n'est pas explicitement pris en compte par la méthode. Un des concepts fondamentaux : précondition. On prouve que si une opération est appelée sous sa précondition elle respecte l'invariant de la machine.

12 B classique vs B événementiel
conserve les concepts du B classique mais a comme concept fondamental celui d'événement. Un événement est spécifié comme une opération gardée.

13 Une machine B classique
MACHINE PorteClassique SETS ETAT = {ouverte, fermee} VARIABLES aPourEtat INVARIANT aPourEtat : ETAT INITIALISATION etatPorte :: ETAT /* L'initialisation est là pour vérifier que nous avons au moins un modèle de la spécification. On a écrit une substitution indéterministe. */ OPERATIONS ouvrir = etatPorte := ouverte END; fermer = etatPorte := fermee END; et <-- quelEtats =et := etatPorte END Si etatPorte = ouverte, etatPorte := ouverte respecte l’invariant

14 Une machine B événementiel
MACHINE PorteEvenementiel SETS ETAT = {ouverte, fermee} VARIABLES aPourEtat INVARIANT aPourEtat : ETAT INITIALISATION etatPorte :: ETAT OPERATIONS ouverture = SELECT etatPorte = fermee THEN etatPorte := ouverte END; fermeture = SELECT etatPorte = ouverte THEN etatPorte := fermee END; et <-- quelEtats = et := etatPorte END Opérations gardée

15 Opération classique vs Evénement
- une opération classique est APPELEE une opération gardée (un événement) n’est pas appelée. Elle est déclenchée quand la garde est évaluée à vrai.

16 Raffinage : garde vs précondition
- en B classique, on affaiblit les préconditions, - en B événementiel , on renforce les gardes. La démarche du B événementiel est celle du parachute. Plus on s'approche du sol, plus l'échelle est fine, plus on voit d'événements.

17 Raffinage en B événementiel
On fait apparaître : - de nouvelles variables et de nouvelles contraintes reliant ces nouvelles variables aux anciennes variables (on complète l'invariant) de nouveaux événements Et on raffine les événements de plus haut niveau

18 Obligations de preuve en B événementiel
- Preuve que les événements maintiennent l'invariant - Preuve de la terminaison de l'événement. Les nouveaux événements introduits lors du raffinage ne doivent pas prendre le contrôle pour toujours. Ils doivent tous faire décroître un variant.

19 Obligations de preuve en B événementiel
- Etant donné qu'un système s'arrête quand toutes les gardes de ses événements sont fausses, quand un raffinage s'arrête, son abstraction doit s'être arrêtée elle aussi, c'est-à-dire qu'il ne doit pas y avoir arrêt prématuré du raffinage. On doit prouver que : - si toutes les gardes raffinées sont fausses alors toutes les gardes abstraites sont fausses - et que si’il existe des gardes abstraites qui sont vraies alors il existe des gardes du raffinage qui sont vraies.

20 Le tampon à deux places en B
M1_I REFINES IMPORTS M2 INCLUDES CONS PROD

21 La machine M1 (1) MACHINE M1 VARIABLES state INVARIANT
state : 0..2 /* l'état est le nombre de données dans le tampon */ INITIALISATION state := 0

22 La machine M1 (2) OPERATIONS in = SELECT state = 0 THEN state := 1
WHEN state = 1 THEN state := 2 END; out = SELECT state = 1 THEN state := 0 WHEN state = 2 THEN state := 1 move = skip END Nécessaire car on raffine à signatures constantes

23 MACHINE PROD (1) MACHINE PROD VARIABLES pstate INVARIANT pstate : 0..1
INITIALISATION pstate := 0 PROD CONS

24 MACHINE PROD (1) OPERATIONS in = SELECT pstate = 0 THEN
pstate := 1 END; pmove = SELECT pstate = 1 THEN pstate := 0 END END PROD CONS

25 La machine CONS MACHINE CONS VARIABLES cstate INVARIANT cstat : 0..1
INITIALISATION cstate := 0 OPERATIONS out = SELECT cstate = 1 THEN cstate := 0 END; cmove = SELECT cstate = 0 THEN cstate := 1 END END PROD CONS

26 M2 inclut PROD et CONS MACHINE M2 INCLUDES PROD, CONS PROMOTES in, out
OPERATIONS move = pmove || cmove END PROD CONS

27 M2 simule M1 IMPLEMENTATION M1_I
/* machine pour prouver que M2 simule M1 */ REFINES M1 IMPORTS M2 PROMOTES in, out, move END

28 Passons maintenant à FSP
On spécifie un comportement en FSP. LTSA génère l’automate et Permet de faire des exécutions. On peut minimiser l’automate. On peut aussi vérifier des propriétés : absence de verrou fatal propriété de progrès

29 FSP et LTSA Magee J., Kramer J., Concurrency, State Models &
Java Programs, Wiley, 1999 Second edition, 2006

30 P= ab* P= (a -> ETAT1), ETAT =(b ->STOP | a -> ETAT1).
FSP et Expressions régulières P= ab* P= (a -> ETAT1), ETAT =(b ->STOP | a -> ETAT1). P=aa* P= (a -> STOP | a -> ETAT), ETAT = (a -> ETAT). P= (a, b, c)* P= (a -> P |b -> P | c -> P). P = (a (cd)*, b (cd)*)* P= (a -> ETAT1 | b -> ETAT1), ETAT1 = (a -> ETAT1 | b -> ETAT1 | c -> ETAT2), ETAT2 = (d -> ETAT1).

31 De CCS à FSP C1 = in.m. C1 C2 = m'.out.C2 System = C1 | C2
s'écrit en LTSA : C1 =(in -> m -> C1). C2 =(m -> out -> C1). ||SYSTEM = (C1 || C2).

32 La spéc de haut niveau en FSP
BUFFER = ETAT0, ETAT0 = (in -> ETAT1), ETAT1 = (in -> ETAT2 | out -> ETAT0), ETAT2 = (out -> ETAT1). in out in out ou BUFFER(N=2) = ETAT[0], ETAT[i:0..N] = (when (i<N) in -> ETAT[i+1] | when (i>0) out -> ETAT[i-1]). When exprime la garde en FSP

33 La spec de bas niveau en FSP
PROD = (in -> move -> PROD). CONS = (move -> out -> CONS). ||BUFF_2 = (PROD || CONS). in out in move move out tau in out

34 Specs équivalentes ? Si maintenant nous cachons l'action silencieuse,
le move, celle-ci est remplacée par tau. Si nous demandons la minimisation de l'automate, nous obtenons alors le même automate que celui de la spécification de haut niveau. Nous avons ainsi une équivalence entre les deux comportements.

35 Deux équivalences pour la minimisation
En FSP, pour la minimisation, deux équivalences sont considérées. - L'équivalence forte considère que deux systèmes sont égaux s'ils ont même comportement quand l'occurrence de toutes leurs actions peuvent être observées y compris celle de l'action silencieuse (tau). La minimisation utilise cette équivalence lorsqu'il n'y a pas d'action silencieuse.

36 L’équivalence faible - L'équivalence faible considère que deux systèmes sont égaux s'ils exhibent le même comportement pour un observateur extérieur qui ne peut détecter l'occurrence des actions tau. PROD = (in -> move -> PROD). CONS = (move -> out -> CONS). ||BUFF_2 = (PROD || CONS)\{move}.

37 Vérification de propriétés en LTSA
propriétés de sûreté (safety) , comme l'absence de verrou fatal. définit un processus déterministe qui asserte que toute trace incluant les actions de l'alphabet de ce processus, est acceptée par ce même processus. propriétés de vivacité (liveness). asserte que quelque chose de bon se produira fatalement.

38 Propriété de progrès En FSP, on n'utilise pas la logique temporelle.
On se limite à une classe de propriété de vivacité appelée progrès, qui est l'opposée de la propriété de famine. Une telle propriété asserte que quelque soit l'état dans lequel est le système, c'est toujours le cas où une action spécifiée sera fatalement exécutée.

39 Conclusion Pour spécifier, raffiner et vérifier un logiciel :
- L'approche de B permet de manipuler des variables comme on le fait classiquement en programmation. - L'approche par les algèbres de processus comme CCS n'utilise pas de variables (on parle de CCS pur). Un état y est modélisé par un comportement. C'est le comportement possible quand on est dans cet état. - Avec LTSA, on est obligé de modéliser une variable par un comportement, ce qui complique la spécification comparativement à ce que l'on ferait avec B.

40 Conclusion Mais d'un autre côté, avec B, l'automate n'est pas explicite, alors que LTSA produit l'automate. en B, on est guidé par la preuve, en FSP on est guidé par l'exécution que génère l'outil ainsi que par l'automate généré et sa minimisation. On peut, à la vue de l'automate, restructurer la spécification en FSP.

41 IN MEMORIAM Claude Piéplu ( )


Télécharger ppt "Quoi ? Un tampon."

Présentations similaires


Annonces Google