test et validation du logiciel mcinfo4_omgl validation janvier 2008 patrick felix...

67
Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX [email protected] IUT – Bordeaux 1

Upload: renart-descamps

Post on 03-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

Test et Validation du Logiciel

McInfo4_OMGL ValidationJanvier 2008

Patrick FELIX

[email protected]

IUT – Bordeaux 1

Page 2: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

2P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Plan prévisionnel

0. Pourquoi de la VVT ?

1. Introduction à B

2. Eléments de bases de la méthode B

3. Substitution généralisée

4. Machine abstraite

5. Raffinement

6. Implantation

Page 3: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

Introduction : Pourquoi de la VVT ?

VVT : Validation, Vérification & Test des logiciels

Page 4: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

4P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Des bogues, des conséquences désastreuses…

• Banque de New York [21 novembre 1985] : pertes financières énormes

• Le Therac-25 [juillet 1985 ->avril 1986] : 3 morts

• Le crash d'AT&T [15 janvier 1990] : pertes financières énormes + la réputation d'AT&T entachée.

• Le Pentium [juin 1994] : pertes financières énormes + psychose

• Ariane 5-01 [4 juin 1996]

Page 5: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

5P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Ariane 5-01 (4 juin 1996)

Le 23 juillet, la commission d'enquête remet son rapport : La fusée a eu un comportement nominal jusqu'à la 36ème seconde de vol. Puis les systèmes de référence inertielle (SRI) ont été simultanément déclarés défaillants. Le SRI n'a pas transmis de données correctes parce qu'il était victime d'une erreur d'opérande trop élevée du "biais horizontal" . . .

Les raisons :

1 Un bout de code d’Ariane IV (concernant le positionnement et la vitesse de la fusée) repris dans Ariane V

2 il contenait une conversion d’un flottant sur 64 bits en un entier signé sur 16 bits

3 pour Ariane V, la valeur du flottant dépassait la valeur maximale pouvant être convertie

4 ) défaillance dans le système de positionnement

5 ) la fusée a “corrigé” sa trajectoire

6 ) suite à une trop grande déviation, Ariane V s’est détruite !

Page 6: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

6P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Le coût d’un Bogue ?

• Coût du bogue de l’an 2000 ?• Quelques chiffres avancés : 300, 1600 ou même 5 000

milliards de dollars

• Quel impact ?• Sécurité des personnes, • Retour des produits, • Relations contractuelles, • Notoriété, image, • …

Nécessité de « vérifier » certains logiciels/systèmes

Page 7: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

7P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Nécessité de VVT

Comment effectuer de telles vérifications : Utilisation de méthodes formelles

1. Test• nécessaire : permet de découvrir des erreurs• pas suffisant : prouve la présence d’erreurs, pas leur absence !

2. Démonstration automatique• exhaustif• mise en œuvre difficile

3. Model-checking• exhaustif, partiellement automatique…• mise en œuvre moins difficile (modèle formel+formalisation des propriétés)

1, 2 et 3 sont des méthodes complémentaires :

- Test : non exhaustif mais facile à mettre en œuvre (bon rapport qualité/temps)

- Démonstration automatique : exhaustive mais considérée comme trop coûteux

- Model-checking : un compromis (?)

Page 8: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

8P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Sans méthodes formelles :

• Coût des tests : 50 à 60% du coût total, voire 70% !

• Interprétation(s) des termes usuels (-> utilisation d’UML)

• Ambiguïté des méthodes semi-formelles (# sémantiques UML).

• Maîtrise difficile de certains types de programmations

[événementielle / parallèle / …]

• Maintenance évolutive difficile

Page 9: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

9P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Tendances actuelles ~ Méthodes formelles et certification

• Méthodes formelles :• Test, Démonstration automatique, Model-checking

• Politique de certification

• Certains niveaux de certification exigent des méthodes formelles

• Obligation de certification• Grandes entreprises• Application à risques• Sous-traitance

Page 10: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

10P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Test & Validation dans les méthodes formelles

• Objectif ~ Pouvoir raisonner sur les logiciels et les systèmes afin de : • Connaître leurs comportements• Contrôler leurs comportements• Tester leurs comportements.

• Moyen ~ Les systèmes sont des objets mathématiques.

• Processus :1. Obtenir un modèle formel du logiciel ou du système. [Si la taille le permet,

le modèle peut être le logiciel ou le système]2. Analyser le modèle formel par une technique formelle.3. Générer des test par une technique formelle4. Transposer les résultats obtenus sur les modèles aux logiciels et systèmes

réels.

• Problèmes de l'approche :• Le modèle est-il fidèle ? Validition.• Peut-on tout vérifier ? Décidabilité.• Peut-on tout tester ? Testabilité.• La transposition des résultats est-elle toujours possible ? Abstraction.• Le test est-il correct ? Le test est-il exhaustif ?

Page 11: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

1. Introduction à B

Page 12: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

12P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Historique

• B pour Bourbaki

• 1978 : notation Z (Jean-Raymond Abrial)

• 1991 : les premiers pas de la méthode B (J-R Abrial)

• 1995 : industrialisation de la méthode B

L’exemple industriel Météor• RER• Plus de 1000 composants B (>100 000 lignes de B)• 87 000 lignes de code ADA générées• 29 000 preuves (dont plus de 80% automatique)• Opérationnel depuis 1998, aucune anomalie depuis !

Page 13: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

13P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Méthode

Fondements mathématiques avec un cadre homogène pour tout le cycle de développement (analyse, conception et réalisation)

Approche :

Raffiner le modèle initial d'une machine abstraite (sa spécification) en un module exécutable (son code).

Validation basée sur des preuves :• Preuve de la spécification de chaque opération.• Preuve du raffinage d'une machine en une autre.

Langage de modélisation :• Abstraction du système• Changement d’états du système• Spécification des invariants du système (à vérifier)

Page 14: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

14P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exemple de machine abstraite

MACHINEréservation(max_siège)

VARIABLES

siège

INVARIANT

siège 0..max_siège

INITIALISATION

siège:=max_siège

OPERATIONSréserver ≙

PRE siège > 0

THEN siège := siège-1

END;

annuler ≙

PRE siège < max_siège

THEN siège := siège+1

END;

END

Page 15: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

2. Eléments de bases de la méthode BEnsemble, Relation & Fonction, Entier, Suite, Substitution (simple / multiple)

Page 16: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

16P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Ensemble (notation ASCII)

e1 et en représentent des expressions quelconques (entiers, ensembles,...)

Id représente un identificateur

n1 et n2 sont des expressions qui représentent des entiers

{} Ensemble vide

NAT Ensemble des entiers

NAT1 Ensemble des entiers non nuls

{e1,...,en} Ensemble des éléments e1,...,en (définition par extension)

{Id | Prédicats} Ensemble défini par compréhension

(n1..n2) Ensemble des entiers compris entre n1 et n2

Page 17: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

17P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Ensemble (notation ASCII)

E, E1 et E2 représentent des ensembles.

POW(E) Ensemble des parties de E

POW1(E) Ensemble des parties non vides de E

E1 * E2 Produit cartésien

E1 \/ E2 Union des ensembles E1 et E2

E1 /\ E2 Intersection des ensembles E1 et E2

E1 - E2 Ensemble des éléments de E1 qui ne sont pas dans E2

Page 18: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

18P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Formule élémentaire (notation ASCII)

e,e1 et e2 représentent des expressions quelconques (entiers, ensembles,...)

n1 et n2 sont des expressions qui représentent des entiers

E, E1 et E2 représentent des ensembles.

e1=e2 n1>n2 n1<n2 e1 /= e2 n1 >= n2 n1 <= n2 No comment !

e:E L'expression e est un objet de l'ensemble E (appartenance)

e/:E L'expression e n'est pas un objet de l'ensemble E

E1 <: E2 E1 est un sous-ensemble de E2 (inclusion)

E1 /<: E2 E1 n'est pas un sous-ensemble de E2.

E1 <<: E2 E1 est un sous-ensemble strict de E2 (inclusion stricte).

E1 /<<: E2 E1 n'est pas un sous-ensemble strict de E2.

Page 19: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

19P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Formule composée (notation ASCII)

F, F1 et F2 représentent des formules.

not(F) négation

F1 & F2 conjonction

F1 or F2 disjonction

F1 => F2 implication

F1 <=> F2 équivalence

# var . F quantification existentielle

! var . F quantification universelle

Page 20: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

20P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Relation (notation ASCII)

E, E1 , E2 et E3 représentent des ensembles.

R, R1 et R2 représentent des relations.

E1 <-> E2 Ensemble des relations entre éléments de E1 et de E2

dom(R) Le domaine de la relation R

ran(R) L'image de la relation R (codomaine ou range)

R[E] L'image de l'ensemble E par la relation R

R1 ; R2 Composition des relations R1 et R2

id(E) Relation identité sur l'ensemble E

R~ Relation inverse de R Exemple : E1={a,b,c} E2={A,B,C} R1:E1<->E2 R1={(a,A),(a,B),(b,B)} = {a|->A,a|->B,b|->B}E3={x,y,z} R2:E2<->E3 R2={(A,x), (A,y), (B,y), (C,z)}Donnez dom(R1), ran(R1), R1[{b,c}], R1;R2 et R1~.

Page 21: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

21P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exemple (solution)

E1={a,b,c} E2={A,B,C} E3={x,y,z}

R1:E1<->E2 R1={(a,A),(a,B),(b,B)} = {a|->A,a|->B,b|->B}

R2:E2<->E3 R2={(A,x), (A,y), (B,y), (C,z)}

R1 R2x

E3

y

z

A

E2

B

C

a

E1

b

c

dom(R1)={a,b} ran(R1)={A,B} R1[{b,c}]={B}R1;R2={(a,x),(a,y),(b,y)} R1~={(A,a),(B,a),(B,b)}

Donnez dom(R2), ran(R2), R2[{A}] et (R2~);(R1~).

Page 22: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

22P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exemple - solution

Donnez dom(R2), ran(R2), R2[{A}] et (R2~);(R1~).

dom(R2)={A,B,C}

ran(R2)={x,y,z}

R2[{A}]={x,y}

R1~={(A,a),(B,a),(B,b)} R2~={(x,A),(y,A),(y,B),(z,C)}

(R2~);(R1~)={(x,a),(y,a),(y,b)}

R1 R2x

E3

y

z

A

E2

B

C

a

E1

b

c

Page 23: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

23P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Relation (notation ASCII)

E représente un ensemble

R représente une relation

E <| R Restriction de la relation R au domaine E

Exemple: {b,c}<|R1={b|->B}

R |> E Restriction de la relation R à l'image E

Exemple: R1|>{B,C}={a|->B , b|->B}

E <<| R Anti-restriction de la relation R au domaine E

Exemple: {b,c}<<|R1={a|->A , a|->B}

R |>> E Anti-restriction de la relation R à l'image E

Exemple: R1|>>{B,C}={a|->A }

R1

A

E2

B

C

a

E1

b

c

Page 24: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

24P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Fonction (notation ASCII)

E, E1 et E2 représentent des ensembles.

E1 +-> E2 l'ensemble des fonctions partielles de E1 dans E2

• {R | R E1 <-> E2 x,y,z • (((x ↦ y) R (x ↦ z) R) y = z)}

E1 --> E2 l'ensemble des fonctions totales de E1 dans E2

• {R | R E1 +-> E2 dom(R) = E1}

E1 >+> E2 l'ensemble des fonctions partielles injectives de E1 dans E2

• {R | R E1 +-> E2 R-1 E2 +-> E1}

E1 >-> E2 l'ensemble des fonctions totales injectives de E1 dans E2

• (E1 >+> E2) ∩ (E1 --> E2)

Page 25: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

25P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Fonction (notation ASCII)

E, E1 et E2 représentent des ensembles.

E1 +->> E2 l'ensemble des fonctions partielles surjectives de E1 dans E2

• {R | R E1 +-> E2 ran(R) = E2}

E1 -->> E2l'ensemble des fonctions totales surjectives de E1 dans E2

• (E1 +->> E2) ∩ (E1 --> E2)

E1 >+>> E2 l'ensemble des fonctions totales bijectives de E1 dans E2

• (E1 >-> E2) ∩ (E1 -->> E2)

E1 >->> E2 l'ensemble des fonctions partielles bijectives de E1 dans E2

• (E1 >+> E2) ∩ (E1 +->> E2)

Page 26: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

26P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Substitution simple / multiple

x, x1,...,xn sont des variables distinctes, et e, e1,...,en des expressions quelconques

x := e Substitution simple (une affectation)

x1,...,xn := e1,...,en Substitution multiple

Page 27: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

27P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Suite (ou séquence)

s1, s2 représentent des séquences et e, e1,...,en des expressions quelconques

seq(E) L'ensemble des séquences finies d'objets de E

<> La séquence vide

[e] La séquence réduite à un élément e

[e1,...,en] La séquence formée des n éléments e1,...,en

s1 ^ s2 La concaténation des séquences s1 et s2

e -> s L'ajout de e au début de la séquence s

s <- e L'ajout de e à la fin de la séquence s

first(s) last(s) Le premier/dernier élément de la séquence non-vide s

tail(s) front(s) La séquence non-vide s privée de son premier/dernier élément

size(s) La taille de la séquence s

Page 28: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

28P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

1. S<|R

2. dom(R)

3. dom(R)-S

4. ran(R)

5. ran(S<|R)

6. R|>> ran(S <|R)

7. dom(R|>>ran(S<|R))

8. (E1-S-dom(R|>>ran(S<|R)))

Calculez sur l’exemple:

9. ran(S<<|R)

10. (ran(S<|R)/\ran(S<<|R))

11.Sxran(R)

12.S<<|R

13.R-(S<|R)

14. (dom(R)-S)<|R

15.R-(Sxran(R))

16. (R|>>ran(S<|R))\/((E1-S-dom(R|>>ran(S<|R)))x(ran(S<|R)/\ran(S<<|R)))

17. (E1-S-dom(R|>>ran(S<|R)))x(ran(S<|R)/\ran(S<<|R))

RS={2,3,5}

c

E2

d

e

3

E1

4

5

1

2

a

b

Page 29: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

29P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercice

On désire gérer des entreprises, des personnes, savoir quelles entreprises emploient quelles personnes, et quel est l’employé qui dirige chaque entreprise. Rien n’interdit à une personne de cumuler plusieurs emplois, voire même de diriger plusieurs entreprises ; par contre, certaines personnes n’ont pas d’emploi.

Donnez un exemple avec 3 entreprises et 4 personnes.

Proposez un schéma entités-associations.

Page 30: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

30P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercice (suite)

Proposez une machine B en spécifiant uniquement les clauses SETS, VARIABLES, INITIALISATION et INVARIANT :

MACHINE

Entreprises

SETS

VARIABLES

INITIALISATION

INVARIANT

Page 31: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

31P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercice (suite)

On veut pouvoir, sous certaines conditions que vous préciserez :• ajouter une entreprise • supprimer une entreprise• ajouter une personne• supprimer une personne (et ses emplois éventuels) autre

qu’un dirigeant• ajouter un emploi entre une entreprise et une personne• supprimer un emploi• changer le dirigeant d’une entreprise

Rajouter à votre machine B la spécification des opérations ci-dessus.

Page 32: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

32P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Solution

Page 33: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

3. Substitution généralisée

Page 34: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

34P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Les plus faibles préconditions

Soient P et R des prédicats et S une instruction

• P{S}R [Logique de Hoare ]

Le prédicat R décrit le résultat de l’opération S.

Le prédicat P représente un ensemble d'états tels que l'exécution de S commençant par un d'entre eux se termine en un temps fini dans un état satisfaisant R.

• Exemple : S est l'affectation i:=i+1, et R le prédicat i<=1.

Donnez un prédicat P vérifiant P{S}R :

i<=-10, mais aussi i<-4...

Parmi tous ces prédicats, le plus faible (le moins contraignant, le prédicat donnant le plus d'états...) est i<=0.

Ce prédicat sera appelé la plus faible précondition de S par rapport à R. On le notera wp(S,R) pour 'weakest precondition‘.

Page 35: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

35P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Les plus faibles préconditions

Exercices :

• wp(i:=i + 1, i<=1) = ?

i<=0

• wp(if x >= y then z:=x else z:=y, z=max(x,y))= ?

Vrai

Le sens de wp(S,R) peut être précisé par deux propriétés :

1- wp(S, R) est une précondition garantissant R après l'exécution de S, c'est à dire que : wp(S,R){S}R

2- wp(S, R) est la plus faible des telles préconditions, c'est à dire que :

si P{S}R alors P wp(S,R)

Page 36: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

36P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

B et plus faible précondition…

wp est une fonction à deux arguments : une instruction (ou programme) S et un prédicat Q.

Pour un S fixé, on peut voir wp(S, Q) comme une fonction à un seul argument wpS(Q).

La fonction wpS est appelé transformateur de prédicats : c'est la fonction qui associe à tout prédicat Q la plus faible précondition P telle que P{S}Q.

P{S}Q P=>wpS(Q) pour S qui termine

Notation B : wpS(R) sera noté [S]R

Page 37: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

37P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

[S]P

Plus généralement (autrement dit):

• si on interprète S comme un programme alors [S]P représente la plus faible précondition pour que après n'importe quelle exécution de S, la propriété P soit vérifiée.

• [S]P est la condition initiale la plus large pour que, après avoir “exécuté” S, P devienne vrai.

Le prédicat [S]P se lit : “S établit le prédicat P”.

Exemple : [x := x+1] x=5  ?

x = 4

Le résultat s’obtient en remplaçant x par x+1 dans le prédicat x=5.

Page 38: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

38P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Langage des substitutions généralisées

Les constructions du langage pour la spécification sont des substitutions : les programmes sont mathématiquement représentés par des substitutions généralisées qui sont définies par leur action sur les prédicats.

2 remarques importantes :

1. Toute substitution est vue comme un transformateur de prédicat : la méthode B permet de manipuler des programmes qui sont vus comme des transformations de la mémoire.

2. Une substitution généralisée S est complètement déterminée (sémantique) par la définition de la formule [S]P pour une formule P arbitraire.

Page 39: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

39P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Sémantique du langage des substitutions généralisées

Soit la substitution Sn:=n+3 (affectation n:=3). On a :

• [n:=n+3]n>2 n>-1

• [n:=n+3]n>7 n>4

• [n:=n+3]n2>9 (n+3)2>9

Plus généralement :

[n:=n+3]P(n) Q(n) avec Q(n) obtenu en remplaçant chaque occurrence de n dans P par n+3

La connaissance de la formule [S]P pour une formule P arbitraire détermine complètement cette substitution S.

=> Sémantique de S

Page 40: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

40P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Sémantique du langage des substitutions généralisées

Pour chaque construction (substitution) du langage, nous définirons sa syntaxe, ainsi que sa sémantique de la façon suivante :

Syntaxe : x:=e

Sémantique : [x:=e]P P(e/x) où P(e/x) représente le résultat de la substitution des occurrences libres de x dans P par e (ie. ‘e renomme les x libres dans P’).

Page 41: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

41P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Substitution simple (ou affectation)

Syntaxe : x:=e (cas particulier : f(x) :=y).

Sémantique : [x:=e]P P(e/x)

P(e/x) représente le résultat de la substitution des occurrences libres de x dans P par e (ie. ‘e renomme les x libres dans P’).

Exemple :

[n:=3] n>m ?

3>m

[i:=i+1] i<=1 ?

(i+1 <= 1) (i<=0)

Page 42: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

42P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Substitution simple (ou affectation)

• ATTENTION !

Un même nom de variable peut avoir simultanément des occurrences libres et des occurrences liées dans une formule :

n>0 n.m.m>=n

Lors de la substitution [var:=E]P, il faut être attentif à ne remplacer que les occurrences libres de var dans P et de plus, il ne faut pas que les variables libres de E se retrouvent liées par des quantificateurs de P

• Exemple : Soit P défini par n>0 n.m.m>n.

[n:=m+1]P ?

[n:=m+1] n>0 n.m. m>n [n:=m+1] n>0 n0.m0. m0>n0

m+1>0 n0.m0. m0>n0

Page 43: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

43P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Substitution multiple

Permet de substituer de manière simultanée plusieurs variables. Soient x1 et x2 2 variables distinctes.

• Syntaxe : x1,x2:=e1,e2

(se généralise sous la forme : x1,...,xn:=e1,...,en avec toutes les variables xi distinctes)

• Sémantique : [x1,x2:=e1,e2]P P(e1,e2 /x1,x2)

où P(e1,…, en /x1,…xn) représente le résultat de la substitution dans P de toutes les occurrences libres de x1 par e1 et simultanément de toutes les occurrences libres de x2 par e2.

Exemple : [x,y:=y,x]x=y ?

y=x

Page 44: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

44P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Opération vide

Ne fait rien.

• Syntaxe : skip

• Sémantique : [skip]P P

Les substitutions généralisées sont formées à partir des substitutions élémentaires (substitution simple, multiple, skip) en utilisant différents combinateurs.

Pour la suite, P et Q désignent des formules et S, S1 et S2 des substitutions généralisées.

Page 45: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

45P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Composition séquentielle

Permet de faire une séquence de substitutions.

• Syntaxe : S1;S2

• Sémantique : [S1;S2]P [S1]([S2]P)

Exemple : Calculer [x:=y;y:=x]x=y ?

[x:=y]x=x y=y Vrai

La substitution simultanée (en particulier x,y:=y,x) n’est pas équivalente à la substitution séquentielle (x:=y;y:=x) :

[x:=y;y:=x]x=y ?

[x:=y]x=x y=y Vrai

[x,y:=y,x]x=y ?

y=x

Page 46: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

46P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Alternative

• Syntaxe : IF Q THEN S1 ELSE S2 END

• Sémantique : [IF Q THEN S1 ELSE S2 END]P (Q[S1]P) /\ ( not(Q) [S2]P)

Remarque : partie ELSE optionnelle.

IF P1 THEN S1 END IF P1 THEN S1 ELSE skip END

Exemples :

IF x { 2, 4, 8 } THEN ∈ x := x / 2 END ;

IF y + z < 0 THEN y := - z ELSE y := 0 END ;

Page 47: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

47P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Garde

Cette substitution généralise l’alternative sous les 2 formes suivantes : un seul choix (Si Q Alors I) ou plusieurs choix (selon Q1 faire I1, Q2 faire I2…)

• Syntaxe : SELECT Q THEN S END

• Sémantique : [SELECT Q THEN S END]P (Q [S]P)

Exemple : SELECT x>0 THEN y:=y+x END

Plus généralement, on aura :

• Syntaxe : SELECT Q1 THEN S1 WHEN Q2 THEN S2 WHEN Q3 THEN S3 END

• Sémantique : [SELECT Q1 THEN S1 WHEN Q2 THEN S2 WHEN Q3 THEN S3 END]P (Q1 [S1]P)/\ (Q2 [S2]P) /\ (Q3 [S3]P)

Q1, Q2, et Q3 n’étant pas nécessairement disjoints (non déterministe)

Exemple : SELECT x ≥ 0 THEN y := x2 WHEN x ≤ 0 THEN y := - x2 END

Page 48: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

48P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Pré-condition

• Syntaxe : PRE Q THEN S END

• Sémantique : [PRE Q THEN S END]P Q /\ [S]P

Si Q est vrai alors l’effet de la substitution préconditionnée est celui de S, sinon on ne peut rien dire…

Exemple : PRE x>0 THEN y:=y+x END

Page 49: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

49P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Choix borné (ou choix fermé)

Substitution non déterministe.

• Syntaxe : CHOICE S1 OR S2 OR … OR Sk END

• Sémantique : [CHOICE S1 OR S2 OR … OR Sk END]P [S1]P /\ [S2]P /\ … [Sk]P

Exemple : CHOICE

x1 := x1 + 1OR

x1 := x1 - 1END

Page 50: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

50P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Choix non borné (ou choix libre)

Substitution non déterministe.

• Syntaxe : ANY x WHERE Q THEN S END

• Sémantique:[ANY x WHERE Q THEN S END]P x (Q [S] P)

Exemples :

ANY x WHERE x*(x+1)=2

THEN x1,x2:=1,-2

END

ANY r1, r2 WHERE r1 NAT ∈ ∧ r2 NAT ∈ ∧ r12 + r22 = 25

THENSommeR := r1 + r2

END

Page 51: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

51P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Quelques propriétés…

• x1,x2:=e1,e2 x2,x1:=e2,e1

• S1||S2 S2||S1 (exécution simultanée de deux substitutions)

• x1,...,xn:=e1,...,en x1:=e1 || ... || xn:=en

• [S1]P1 , [S2]P2 [S1||S2](P1/\P2)

Page 52: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

52P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Opération

Syntaxe :

paramètres de sortie nom_opération(paramètres d’entrée) = G ;

• Les paramètres de sortie et d’entrée sont optionnels.

• Le passage des paramètres se fait par valeur.

• Dans une opération d’une machine abstraite :• G est en général une substitution préconditionnée,• La précondition permet de fixer les conditions sous

lesquelles l’opération doit être appelée. • Le résultat de G n'est garanti que si sa précondition est

valide.

Page 53: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

53P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Opération - ExempleMACHINE

ExempleCinema

SETS

ACTEURS

VARIABLES

acteurs

INVARIANT

acteurs <: ACTEURS

INITIALISATION

acteurs:={}

OPERATIONS

AjouterActeur(a) =

PRE a : ACTEURS - acteurs

THEN acteurs:= acteurs \/ {a}

END ;

SupprimerActeur(a) =

PRE a : acteurs

THEN acteurs:= acteurs - {a}

END ;

END

Page 54: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

54P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Cohérence des machines

MACHINE Nom

SETS S

VARIABLES V

INVARIANT INV

INITIALISATION Init

OPERATIONS

Op = PRE Q THEN S END;

END

Vérification de la cohérence -> obligations de preuve• Initialisation : [Init] INV • Chaque opération : Q /\ INV => [S] INV

Page 55: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

55P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercices

[xx := 1] (xx /= yy) ?

1 /= yy

[xx := yy ] (xx = yy) ?

yy = xx Vrai

[xx := 1] (!(xx).(xx:NAT => xx>=yy) or xx >= 0 ?

! xx . (xx : NAT => xx >= yy) or 1 >= 0 Vrai

[xx := 0] (yy > 0) ?

yy > 0

Page 56: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

56P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercice

Rappel : [PRE Q THEN S END]P Q /\ [S]P

[PRE xx > 0 THEN xx := xx – 1 END] (xx > yy)

xx > 0/\ [xx := xx – 1] (xx > yy)

xx > 0/\ (xx-1 > yy)

Page 57: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

57P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exercices

Rappel :

[IF Q THEN S1 ELSE S2 END]P (Q[S1]P) /\ ( not(Q) [S2]P)

[if x >= y then z:=x else z:=y] (z=max(x,y)) ?

(x>=y[z:=x]z=max(x,y))

/\(not(x>=y)[z:=y]z=max(x,y))

(x>=yx=max(x,y)) /\ (not(x>=y) y=max(x,y))

Vrai /\ Vrai Vrai

Page 58: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

4. Machines abstraites

Page 59: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

60P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Page 60: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

5. Raffinement

Page 61: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

62P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Principes du raffinement

Technique utilisée au cours du processus de développement logiciel

But :

Transformer un modèle abstrait d'un système logiciel (la spécification) en un modèle plus concret, c'est-à-dire un modèle plus près d'une implémentation.

Démarche de conception formelle :• On se donne une spécification formelle SP1 qui exprime en

toute abstraction ce que le programme doit réaliser• Génération progressive du code du programme : SP1 ->

SP2 -> … ->SPn• Correction de chacune des étapes de raffinement

Page 62: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

63P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exemple de raffinement

Tri par ordre croissant d’un tableau Tab d’entiers de taille n. Le résultat sera dans Tab_Trié.

• Spécification (ou spécification abstraite)  : on donne les propriétés du tableau trié sans faire allusion à aucun algorithme ou méthode de tri.

- les éléments de Tab et Tab_Trié sont les mêmes

- pour chaque indice i (i=2..n): Tab_Trié [i-1] <=Tab_Trié[i]

• Implémentation (ou spécification concrète) : mettre en œuvre une des méthodes de tri existantes

Page 63: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

64P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Raffinement et B

Lors d'un raffinement,

• une machine M1 est remplacée par une autre machine M2

• M2 va fournir des opérations de même nom et de même signature

• Les opérations de M2 seront implantées à l'aide de variables d'états différentes

Conservation de la Cohérence :

• Si une opération op2 est un raffinement d'une opération op1 alors toute utilisation de op1 doit pouvoir être remplacée par une utilisation de op2, sans changer la cohérence de la machine.

Page 64: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

65P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Exemple de Raffinement en B

MACHINE swap

VARIABLES xx,yy

INVARIANT

xx:NAT & yy:NAT

INITIALISATION

xx::NAT||yy::NAT

OPERATIONS

echange =

BEGIN

xx:=yy||yy:=xx

END

END

/*Où ‘::’ désigne un choix indéterministe d'un élément d'un ensemble (xx::NAT)*/

REFINEMENT swapR

REFINES swap

VARIABLES xr, yr, zr

INVARIANT

xr= xx & yr = yy &

zr : NAT

INITIALISATION

xr,yr,zr:=0,0,0

OPERATIONS

echange =

BEGIN

zr := xr;

xr := yr;

yr := zr

END

END

Page 65: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

66P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008

Contraintes à satisfaire lors d’un raffinement

La machine swapR est un raffinement de la machine swap

• Les variables abstraites xx,yy sont raffinées par les variables concrètes xr,yr,zr.

• Les variables concrètes contiennent :• Les variables abstraites conservées par le raffinement (xx,yy)• Des variables concrètes introduites par le raffinement (xr,yr,zr)

• L’invariant de collage (xr=xx&yr=yy&zr:NAT) permet de :• typer les variables concrètes introduites par le raffinement• exprimer des propriétés sur les variables concrètes • exprimer la relation liant les variables concrètes aux variables abstraites

• L’initialisation concrète (xr,yr,zr:=0,0,0) est le raffinement de l’initialisation abstraite (xx::NAT||yy::NAT).

• L’opération abstraite echange est raffinée par l’opération concrète echange de même signature.

Page 66: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

6. Implantation

Page 67: Test et Validation du Logiciel McInfo4_OMGL Validation Janvier 2008 Patrick FELIX patrick.felix@labri.fr IUT – Bordeaux 1

68P.Félix ~ IUT Info Bordeaux 1 - S4 - McInfo4_OMGL Validation - Janvier 2008