La Méthode B
Objectifs
Une méthode rigoureuse de développement logiciel : Spécication formelle
Conception explicite par ranement Implémentation simpliée en couches Vérication et validation
Prérequis :
Cahier des charges Description des besoins
1
Contexte et motivations Modélisation :
On démarre de spécications générales informelles Petit-à-petit le modèle est rané
On arrive à un modèle mathématique Spécication formelle :
Écriture de ce qui est attendu dans un langage formel Permet de raisonner rigoureusement sur les propriétés
attendues
Modèle d'un programme :
Modèle usuel : une fonction qui transforme la mémoire de la machine.
Permet de prouver qu'un programme exécute bien les tâches demandées.
Ranement : décomposition d'un problème en sous-problèmes plus simples.
Réutilisation : résolution d'un problème en utilisant des bibliothèques génériques bien établies
Correction d'un programme Certication
Test
4
Méthode B
Jean-Raymond Abrial (années 80)
Méthode qui intervient tôt dans le développement du logiciel Notation de machine abstraite, ranement, implémentation Théorie des ensembles
Logique du premier ordre Langage de substitutions
5
Applications
Cette technologie est utilisée au milieu industriel pour la modélisation de logiciels critiques avec besoins du zéro-défaut.
Coût du développement (Ariane)
Attaques malveillantes (commerce, santé) Vies humaines (transport, médecine)
Système freinage RER A
(1998) Ligne de métro 14. Le logiciel critique embarqué a été modélisé, prouvé et généré à partir de spécications B.
(2005) Ligne de métro 1.
Depuis : métros et navettes aéroports dans le monde entier.
Outils
B-tool (Anglaterre), voir
http://www.b-core.com/btool.html Atelier B, voir http://www.atelierb.eu/
J.R. Abrial : The B-Book. Cambridge University Press, 1996.
Atelier B : http ://www.atelierb.societe.com Actualités de B, voir http://vasco.imag.fr/B/
Projet LL supportant la méthode B https://gna.org/projects/brillant/
Le formalisme
Expressions arithmétiques Ensembles de base Formules
Relations Fonctions Substitutions Séquences
8
Les expressions arithmétiques Opérateurs+,−,×, /,mod. Exemple :
8×(n+ 11)
9
Les ensembles de base
{}ou∅ L'ens. vide
N AT L'ens. des entiers naturels IN T L'ens. des entiers relatifs ST RIN G L'ens. des chaînes de caractères BOOL L'ens. des booléens
{e} L'ens. réduit à un élément e
{e1, ..., en} L'ens. composé des éléments e1,...,en Exemple :{1,2,3} et{{},{1,2}}.
Opérations sur les ensembles
E1∪E2 union E1∩E2 intersection E1−E2 diérence
Les ensembles par compréhension
Appartenance à un ensemble :z∈S.
L'ens. de tous les objets qui vérient la formuleP est {z|P} ou {z∈S |P}.
L'ens. des entiers entre n1 et n2 (inclus) avec n1 et n2 des expressions représentants des entiers positifs :(n1..n2).
card(E) est le cardinal (nombre d'éléments) d'un ensemble E ni.
P(E) est l'ens. de sous-ens. de E.
12
Formules de base
e1 = e2
n1 > n2
n1 < n2
e1 ̸= e2
n1 ≥ n2
n1 ≤ n2
13
Formules ensemblistes
e∈E L'expression e est un objet de l'ensemble E.
e̸∈E L'expression e n'est pas un objet de l'ensemble E.
E1 ⊆E2 E1 est un sous-ensemble de E2.
E1 ̸⊆E2 E1 n'est pas un sous-ensemble de E2.
Formules composées not(F) négation F1∧F2 conjonction F1∨F2 disjonction F1 ⇒F2 implication F1 ⇔F2 équivalence
∃var.F quantication existentielle
∀var.F quantication universelle
Quantication multiple :∀ (x, y).(x=y⇒y=x)
Les formules bien typées
∀(a, b).(a, b)∈P(E)×P(E)⇒ {x|x ∈E∧ x∈a∧ x∈b} ⊆E ade type P(E)
b de typeP(E) x de type E x∈abien typé x∈bbien typé
{x |x∈E∧ x∈a∧ x∈b}de type P(E) {x |x∈E∧ x∈a∧ x∈b} ⊆E bien typé
16
Substitution élémentaire
[var:=E]P Exemple :[n:= 3]n > m est égal à3> m.
17
Variables liées
∃x.F
∀x.F
{x |P}
Une variable peut etre libre et liée en même temps :
x >0 ∧ ∀ x.x= 0
Substitution multiple
C'est une substitutionsimultanée
[x1, . . . , xn:=e1, . . . , en]P ou
x1:=e1 || . . .|| xn:=en ;P
Exercice :Donner un exemple pour montrer que la substitution séquentielle et la substitution simultanée ne sont pas les mêmes.
Exercice :Exprimer la substitution simultanée en utilisant la substitution séquentielle.
Relations
E1 ↔E2 Relations entre éléments de E1 et de E2
R1;R2 Composition des relationsR1 et R2
id(E) la relation identité sur l'ensemble E R−1 relation inverse de R
R⋆ clôture réexive-transitive de R
ER la restriction de la relation R au domaine E RE la restriction de la relation R à l'image E dom(R) : domaine deR
ran(R) : image de R
20
Fonctions
Les fonctions sont des relations fonctionnelles : si(x, y)∈R et (x, z)∈R, alorsy =z.
Les fonctions partielles deA enB :A↛B Les fonctions totales deA enB :A→B Les fonctions injectives de Aen B:A↣B
21
Séquences
Les séquences sont des suites ordonnées d'objets d'un ensemble E.
Une manière de les modéliser mathématiquement est de les voir comme des fonctions de N dans E dont le domaine est soit l'ensemble vide (dans le cas de la séquence vide) soit l'ensemble 1..n pour n un entier strictement positif.
Exemple
Modélisation de l'ensemble des entiers naturels de Peano.
1. 0∈N.
N n'est pas vide.
2. ∀ n.(n∈N ⇒succ(n)∈N).
3. ∀ n.(0̸=succ(n)).
N possède un premier élément.
4. ∀ (n, m).(succ(n) =succ(m)⇒n=m).
5. [E ∈P(N)∧0∈E∧∀n.(n∈E ⇒succ(n)∈E)]⇒E =N.
Exercice
Étant donné un ensemble personnes, on cherche à modéliser : Lesensembles femmes, hommes
Lesrelations epoux, epouse, mere, pere, parent, enfant, grand-parent, ancetre, frere, soeur, frere-soeur, enfant 1. Chaque personne est un homme ou une femme.
hommes ⊆ personnes femmes ⊆ personnes personnes ⊆ hommes ∪femmes
2. Nulle personne n'est à la fois homme et femme.
hommes ∩femmes =∅
24
3. Seules les femmes ont des époux qui sont des hommes.
epoux ∈ femmes ↔hommes 4. Chaque femme a au plus un époux.
epoux ∈ femmes ↛hommes
(i.e.(f, h1)∈epoux∧ (f, h2)∈epoux⇒ h1 =h2).
25
5. Les hommes ne peuvent être mariés qu'à au plus une femme.
epoux ∈ femmes ↣ hommes
(i.e.(f1, h)∈epoux ∧ (f2, h)∈epoux ⇒f1 =f2).
ou
epouse = epoux−1
epouse ∈ hommes ↛femmes 6. Une mère est une femme mariée.
mere ∈ personnes↛dom(epoux) 7. Le père est l'époux de la mère.
pere = mere ; epoux 8. Modéliser la notion de parent.
parent = mere ∪pere
9. Modéliser la notion d' enfant.
enfant = parent−1
10. Modéliser la notion de grand-parent.
grand-parent = parent ; parent 11. Modéliser la notion d'ancetre.
ancetre = parent ; parent∗ 12. Modéliser la notion de frere.
frere = (mere ; mere−1) hommes− id(hommes) 13. Modéliser la notion de soeur.
soeur = (mere ; mere−1) femmes− id(femmes) 14. Modéliser la notion de frere-soeur.
frere-soeur = frere∪ soeur
15. Démontrer mere = pere ; epoux−1. pere ; epoux−1
(mere ; epoux ) ; epoux−1= mere ; (epoux ; epoux−1)=
mere ; id(dom(epoux)) = mere
28