Test et Validation du Logiciel Mc Info 4OMGL



![Des bogues, des conséquences désastreuses… • Banque de New York [21 novembre 1985] : Des bogues, des conséquences désastreuses… • Banque de New York [21 novembre 1985] :](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-4.jpg)
































![[S]P Plus généralement (autrement dit): • si on interprète S comme un programme alors [S]P Plus généralement (autrement dit): • si on interprète S comme un programme alors](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-37.jpg)






![Opération vide Ne fait rien. • Syntaxe : skip • Sémantique : [skip]P P Opération vide Ne fait rien. • Syntaxe : skip • Sémantique : [skip]P P](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-44.jpg)










![Exercices [xx : = 1] (xx /= yy) ? 1 /= yy [xx : Exercices [xx : = 1] (xx /= yy) ? 1 /= yy [xx :](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-55.jpg)
![Exercice Rappel : [PRE Q THEN S END]P Q / [S]P [PRE xx > Exercice Rappel : [PRE Q THEN S END]P Q / [S]P [PRE xx >](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-56.jpg)
![Exercices Rappel : [IF Q THEN S 1 ELSE S 2 END]P (Q [S Exercices Rappel : [IF Q THEN S 1 ELSE S 2 END]P (Q [S](https://slidetodoc.com/presentation_image/24311063b17651cb5d8cfb09cfe731ee/image-57.jpg)










- Slides: 67
Test et Validation du Logiciel • Mc. Info 4_OMGL Validation • Janvier 2008 • Patrick FELIX • patrick. felix@labri. fr • IUT – Bordeaux 1
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 2
Introduction : Pourquoi de la VVT ? • VVT : Validation, Vérification & Test des logiciels
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] P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 4
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 ! P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 5
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 6
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 (? ) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 7
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 8
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 9
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 formelle 4. 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 ? P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 10
1. Introduction à B
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 ! P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 12
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) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 13
Exemple de machine abstraite MACHINE réservation(max_siège) VARIABLES siège INVARIANT siège 0. . max_siège INITIALISATION siège: =max_siège OPERATIONS ré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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 14
2. Eléments de bases de la méthode B Ensemble, Relation & Fonction, Entier, Suite, Substitution (simple / multiple)
Ensemble (notation ASCII) e 1 et en représentent des expressions quelconques (entiers, ensembles, . . . ) Id représente un identificateur n 1 et n 2 sont des expressions qui représentent des entiers {} Ensemble vide NAT Ensemble des entiers NAT 1 Ensemble des entiers non nuls {e 1, . . . , en} Ensemble des éléments e 1, . . . , en (définition par extension) {Id | Prédicats} Ensemble défini par compréhension (n 1. . n 2) Ensemble des entiers compris entre n 1 et n 2 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 16
Ensemble (notation ASCII) E, E 1 et E 2 représentent des ensembles. POW(E) Ensemble des parties de E POW 1(E) Ensemble des parties non vides de E E 1 * E 2 Produit cartésien E 1 / E 2 Union des ensembles E 1 et E 2 E 1 / E 2 Intersection des ensembles E 1 et E 2 E 1 - E 2 Ensemble des éléments de E 1 qui ne sont pas dans E 2 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 17
Formule élémentaire (notation ASCII) e, e 1 et e 2 représentent des expressions quelconques (entiers, ensembles, . . . ) n 1 et n 2 sont des expressions qui représentent des entiers E, E 1 et E 2 représentent des ensembles. e 1=e 2 n 1>n 2 n 1<n 2 e 1 /= e 2 n 1 >= n 2 n 1 <= n 2 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 E 1 <: E 2 E 1 est un sous-ensemble de E 2 (inclusion) E 1 /<: E 2 E 1 n'est pas un sous-ensemble de E 2. E 1 <<: E 2 E 1 est un sous-ensemble strict de E 2 (inclusion stricte). E 1 /<<: E 2 E 1 n'est pas un sous-ensemble strict de E 2. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 18
Formule composée (notation ASCII) F, F 1 et F 2 représentent des formules. not(F) négation F 1 & F 2 conjonction F 1 or F 2 disjonction F 1 => F 2 implication F 1 <=> F 2 équivalence # var. F quantification existentielle ! var. F quantification universelle P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 19
Relation (notation ASCII) E, E 1 , E 2 et E 3 représentent des ensembles. R, R 1 et R 2 représentent des relations. E 1 <-> E 2 dom(R) Ensemble des relations entre éléments de E 1 et de E 2 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 R 1 ; R 2 Composition des relations R 1 et R 2 id(E) Relation identité sur l'ensemble E R~ Relation inverse de R Exemple : E 1={a, b, c} E 2={A, B, C} R 1: E 1<->E 2 R 1={(a, A), (a, B), (b, B)} = {a|->A, a|->B, b|->B} E 3={x, y, z} R 2: E 2<->E 3 R 2={(A, x), (A, y), (B, y), (C, z)} Donnez dom(R 1), ran(R 1), R 1[{b, c}], R 1; R 2 et R 1~. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 20
Exemple (solution) E 1={a, b, c} E 2={A, B, C} E 3={x, y, z} R 1: E 1<->E 2 R 1={(a, A), (a, B), (b, B)} = {a|->A, a|->B, b|->B} R 2: E 2<->E 3 R 2={(A, x), (A, y), (B, y), (C, z)} a R 1 A R 2 x b B y c C z E 1 E 2 E 3 dom(R 1)={a, b} R 1; R 2={(a, x), (a, y), (b, y)} ran(R 1)={A, B} R 1[{b, c}]={B} R 1~={(A, a), (B, b)} Donnez dom(R 2), ran(R 2), R 2[{A}] et (R 2~); (R 1~). P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 21
Exemple - solution a R 1 A R 2 x b B y c C z E 1 E 2 E 3 Donnez dom(R 2), ran(R 2), R 2[{A}] et (R 2~); (R 1~). dom(R 2)={A, B, C} ran(R 2)={x, y, z} R 2[{A}]={x, y} R 1~={(A, a), (B, b)} R 2~={(x, A), (y, B), (z, C)} (R 2~); (R 1~)={(x, a), (y, b)} P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 22
Relation (notation ASCII) R 1 E représente un ensemble R représente une relation E <| R a A b B c C E 1 E 2 Restriction de la relation R au domaine E Exemple: {b, c}<|R 1={b|->B} R |> E Restriction de la relation R à l'image E Exemple: R 1|>{B, C}={a|->B , b|->B} E <<| R Anti-restriction de la relation R au domaine E Exemple: {b, c}<<|R 1={a|->A , a|->B} R |>> E Anti-restriction de la relation R à l'image E Exemple: R 1|>>{B, C}={a|->A } P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 23
Fonction (notation ASCII) E, E 1 et E 2 représentent des ensembles. E 1 +-> E 2 l'ensemble des fonctions partielles de E 1 dans E 2 • {R | R E 1 <-> E 2 x, y, z • (((x ↦ y) R (x ↦ z) R) y = z)} E 1 --> E 2 l'ensemble des fonctions totales de E 1 dans E 2 • {R | R E 1 +-> E 2 dom(R) = E 1} E 1 >+> E 2 l'ensemble des fonctions partielles injectives de E 1 dans E 2 • {R | R E 1 +-> E 2 R-1 E 2 +-> E 1} E 1 >-> E 2 l'ensemble des fonctions totales injectives de E 1 dans E 2 • (E 1 >+> E 2) ∩ (E 1 --> E 2) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 24
Fonction (notation ASCII) E, E 1 et E 2 représentent des ensembles. E 1 +->> E 2 l'ensemble des fonctions partielles surjectives de E 1 dans E 2 • {R | R E 1 +-> E 2 ran(R) = E 2} E 1 -->> E 2 l'ensemble des fonctions totales surjectives de E 1 dans E 2 • (E 1 +->> E 2) ∩ (E 1 --> E 2) E 1 >+>> E 2 l'ensemble des fonctions totales bijectives de E 1 dans E 2 • (E 1 >-> E 2) ∩ (E 1 -->> E 2) E 1 >->> E 2 l'ensemble des fonctions partielles bijectives de E 1 dans E 2 • (E 1 >+> E 2) ∩ (E 1 +->> E 2) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 25
Substitution simple / multiple x, x 1, . . . , xn sont des variables distinctes, et e, e 1, . . . , en des expressions quelconques x : = e Substitution simple (une affectation) x 1, . . . , xn : = e 1, . . . , en Substitution multiple P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 26
Suite (ou séquence) s 1, s 2 représentent des séquences et e, e 1, . . . , 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 [e 1, . . . , en] La séquence formée des n éléments e 1, . . . , en s 1 ^ s 2 La concaténation des séquences s 1 et s 2 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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 27
Calculez sur l’exemple: 1 a 2 b 3 c 3. dom(R)-S 4 d 11. Sxran(R) 4. ran(R) 5 e 12. S<<|R 5. ran(S<|R) E 1 E 2 13. R-(S<|R) 1. S<|R 2. dom(R) R S={2, 3, 5} 9. ran(S<<|R) 10. (ran(S<|R)/ran(S<<|R)) 6. R|>> ran(S <|R) 14. (dom(R)-S)<|R 7. dom(R|>>ran(S<|R)) 15. R-(Sxran(R)) 8. (E 1 -S-dom(R|>>ran(S<|R))) 16. (R|>>ran(S<|R))/((E 1 -S-dom(R|>>ran(S<|R)))x(ran(S<|R)/ran(S<<|R))) 17. (E 1 -S-dom(R|>>ran(S<|R)))x(ran(S<|R)/ran(S<<|R)) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 28
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. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 29
Exercice (suite) Proposez une machine B en spécifiant uniquement les clauses SETS, VARIABLES, INITIALISATION et INVARIANT : MACHINE Entreprises SETS VARIABLES INITIALISATION INVARIANT P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 30
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 cidessus. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 31
Solution P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 32
3. Substitution généralisée
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‘. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 34
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) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 35
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 wp. S(Q). La fonction wp. S 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=>wp. S(Q) pour S qui termine Notation B : wp. S(R) sera noté [S]R P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 36
[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. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 37
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. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 38
Sémantique du langage des substitutions généralisées Soit la substitution S n: =n+3 (affectation n: =3). On a : • [n: =n+3]n>2 n>-1 • [n: =n+3]n>7 n>4 • [n: =n+3]n 2>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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 39
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’). P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 40
Substitution simple (ou affectation) Syntaxe : x: =e (cas particulier : f(x) : =y). Sémantique : [x: =e]P 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) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 41
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 n 0. m 0>n 0 m+1>0 n 0. m 0>n 0 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 42
Substitution multiple Permet de substituer de manière simultanée plusieurs variables. Soient x 1 et x 2 2 variables distinctes. • Syntaxe : x 1, x 2: =e 1, e 2 (se généralise sous la forme : x 1, . . . , xn: =e 1, . . . , en avec toutes les variables xi distinctes) • Sémantique : [x 1, x 2: =e 1, e 2]P P(e 1, e 2 /x 1, x 2) où P(e 1, …, en /x 1, …xn) représente le résultat de la substitution dans P de toutes les occurrences libres de x 1 par e 1 et simultanément de toutes les occurrences libres de x 2 par e 2. Exemple : [x, y: =y, x]x=y ? y=x P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 43
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, S 1 et S 2 des substitutions généralisées. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 44
Composition séquentielle Permet de faire une séquence de substitutions. • Syntaxe : S 1; S 2 • Sémantique : [S 1; S 2]P [S 1]([S 2]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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 45
Alternative • Syntaxe : IF Q THEN S 1 ELSE S 2 END • Sémantique : [IF Q THEN S 1 ELSE S 2 END]P (Q [S 1]P) / ( not(Q) [S 2]P) Remarque : partie ELSE optionnelle. IF P 1 THEN S 1 END IF P 1 THEN S 1 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 ; P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 46
Garde Cette substitution généralise l’alternative sous les 2 formes suivantes : un seul choix (Si Q Alors I) ou plusieurs choix (selon Q 1 faire I 1, Q 2 faire I 2…) • 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 Q 1 THEN S 1 WHEN Q 2 THEN S 2 WHEN Q 3 THEN S 3 END • Sémantique : [SELECT Q 1 THEN S 1 WHEN Q 2 THEN S 2 WHEN Q 3 THEN S 3 END]P (Q 1 [S 1]P)/ (Q 2 [S 2]P) / (Q 3 [S 3]P) Q 1, Q 2, et Q 3 n’étant pas nécessairement disjoints (non déterministe) Exemple : SELECT x ≥ 0 THEN y : = x 2 WHEN x ≤ 0 THEN y : = - x 2 END P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 47
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 48
Choix borné (ou choix fermé) Substitution non déterministe. • Syntaxe : CHOICE S 1 OR S 2 OR … OR Sk END • Sémantique : [CHOICE S 1 OR S 2 OR … OR Sk END]P [S 1]P / [S 2]P / … [Sk]P Exemple : CHOICE x 1 : = x 1 + 1 OR x 1 : = x 1 - 1 END P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 49
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 x 1, x 2: =1, -2 END ANY r 1, r 2 WHERE r 1 ∈ NAT ∧ r 2 ∈ NAT ∧ r 12 + r 22 = 25 THEN Somme. R : = r 1 + r 2 END P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 50
Quelques propriétés… • x 1, x 2: =e 1, e 2 x 2, x 1: =e 2, e 1 • S 1||S 2 S 2||S 1 (exécution simultanée de deux substitutions) • x 1, . . . , xn: =e 1, . . . , en x 1: =e 1 ||. . . || xn: =en • [S 1]P 1 , [S 2]P 2 [S 1||S 2](P 1/P 2) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 51
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. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 52
Opération - Exemple MACHINE Exemple. Cinema SETS ACTEURS VARIABLES acteurs INVARIANT acteurs <: ACTEURS INITIALISATION acteurs: ={} OPERATIONS Ajouter. Acteur(a) = PRE a : ACTEURS - acteurs THEN acteurs: = acteurs / {a} END ; Supprimer. Acteur(a) = PRE a : acteurs THEN acteurs: = acteurs - {a} END ; END P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 53
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 54
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 55
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) P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 56
Exercices Rappel : [IF Q THEN S 1 ELSE S 2 END]P (Q [S 1]P) / ( not(Q) [S 2]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>=y x=max(x, y)) / (not(x>=y) y=max(x, y)) Vrai / Vrai P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 57
4. Machines abstraites
P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 60
5. Raffinement
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 SP 1 qui exprime en toute abstraction ce que le programme doit réaliser • Génération progressive du code du programme : SP 1 -> SP 2 -> … ->SPn • Correction de chacune des étapes de raffinement P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 62
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 P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 63
Raffinement et B Lors d'un raffinement, • une machine M 1 est remplacée par une autre machine M 2 • M 2 va fournir des opérations de même nom et de même signature • Les opérations de M 2 seront implantées à l'aide de variables d'états différentes Conservation de la Cohérence : • Si une opération op 2 est un raffinement d'une opération op 1 alors toute utilisation de op 1 doit pouvoir être remplacée par une utilisation de op 2, sans changer la cohérence de la machine. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 64
Exemple de Raffinement en B MACHINE swap REFINEMENT swap. R VARIABLES xx, yy REFINES swap INVARIANT VARIABLES xr, yr, zr xx: NAT & yy: NAT INVARIANT INITIALISATION xr= xx & yr = yy & xx: : NAT||yy: : NAT zr : NAT OPERATIONS INITIALISATION echange = BEGIN xx: =yy||yy: =xx xr, yr, zr: =0, 0, 0 OPERATIONS echange = END BEGIN END zr : = xr; /*Où ‘: : ’ désigne un choix indéterministe d'un élément d'un ensemble (xx: : NAT)*/ xr : = yr; yr : = zr END P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 65
Contraintes à satisfaire lors d’un raffinement La machine swap. R 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. P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 66
6. Implantation
P. Félix ~ IUT Info Bordeaux 1 - S 4 - Mc. Info 4_OMGL Validation - Janvier 2008 68