methode b formation niveau 1 - atelierb.eu · une plateforme logicielle libre dédiée à b-system...
TRANSCRIPT
2 / 104
Table des matières
introductionà B méthode
formelle……avec preuve
utilisation de B
fondements
apports
le langage B logique des
prédicats
théorie des ensembles
substitutions
typage des données
clauses des composants
décomposition modulaire
notions de B modules B
composants B
machines abstraites
raffinements
implantations
projets B
3 / 104
Présentation de B
Une méthode formelle … méthode de spécification fondée sur un formalisme mathématique
… avec preuve la preuve garantit que le modèle est cohérent (dans tous les cas
possibles d’utilisation)
Utilisée pour modéliser un système
développer un logiciel
4 / 104
B et l’Atelier B :une méthode formelle pour
B pour modéliser des Systèmes
but : aider à comprendre, spécifier, concevoir, vérifier un système
une méthode pour aider à créer ou vérifier un système
nécessité d’accéder aux connaissances métier des concepteurs du système
pour comprendre en détails le fonctionnement du système
un modèle B système formalise
le système (matériel et logiciel)
son environnement (d’autres systèmes, les infrastructures, des procédures
gérées par des opérateurs)
couvre les aspects fonctionnels logiques du système, pas les calculs
numériques, (a priori) pas les exigences temps réel
5 / 104
B et l’Atelier B :une méthode formelle pour
B pour développer des logiciels (critiques de sécurité)
but : produire un code source conforme à ses spécifications par
construction (savoir exactement ce qui est prouvé)
un modèle B-Logiciel formalise le logiciel lui-même, à travers une
décomposition modulaire de procédures
couvre une sous partie du logiciel complet : le cœur fonctionnel logique,
pour 1 tâche/1 thread, (a priori) pas pour le logiciel de bas niveau (OS),
pas d’entrée/sortie directe
6 / 104
B-Logiciel : Références Industrielles
KVB: AlstomAutomatic Train Protection pour la SNCF,installé sur 6.000 trains depuis 199360.000 lignes de B; 10.000 lemmes; 22.000 lignes d’Ada
SAET METEOR: Siemens Transportation SystemsAutomatic Train Control: ligne 14 du métro, sans conducteur, à Paris(RATP), 1998. 3 logiciels de sécurité: bord, sol, ligne107.000 lignes de B; 29.000 lemmes; 87.000 lignes d’Ada
Roissy VAL: ClearSy (pour STS)Pilote Automatique Double Sens : pour le VAL de Roissy (ADP), 200628.000+155.000 lignes de B; 43.000 lemmes; 158.000 lignes d’Ada
7 / 104
B-Système : Références Industrielles
Peugeot Principes Formels de Fonctionnement des sous-systèmes
(éclairage, airbags, moteur, …) sur 3 modèles de voiture (307, 206, 407)pour l’après-vente de Peugeot
But : comprendre précisément le fonctionnement du véhicule,afin de construire des outils d’aide au diagnostique
RATP Modélisation du système de portes palières automatiques devant
équiper une ligne de métro déjà existante But : vérifier la cohérence des Spécifications Système
8 / 104
B-Système : Références
EADS Modélisation de l’ordonnancement des tâches du logiciel contrôlant
la séparation des étages d’une fusée Ariane
Étude d’un protocole de communication Preuve que l’algorithme d’un protocole de communication respecte
ses exigences
INRS (Institut National de Recherche sur la Sécurité) Modélisation d’une presse mécanique respectant les exigences
de sécurité (protection des mains de l’opérateur de la presse) Construction des spécifications logicielles du contrôleur de la presse
9 / 104
Notions de base
B est une méthode de spécification (et éventuellement de
programmation)
B permet de modéliser les propriétés d’un système, (description statique, description dynamique)
B est basé sur un langage mathématique
prédicats, booléens, ensembles, relations, fonctions
B est structuré
notion de module
notion de refinement
B est une méthode de création de modèles, validés par la preuve
validation par la preuve : debug systématique
10 / 104
Structuration
la notion de modules
pour décomposer un système ou un logiciel en sous parties
un module a une spécification, où formaliser :
les propriétés système
les exigences statiques
les exigences dynamiques
11 / 104
Structuration
la notion de raffinement la spécification d’un module est raffinée : elle est ré-exprimée avec
plus d’information :
ajout d’exigences
raffinement de notions générales par des notions plus détaillées(choix de conception)
en B-Logiciel, terminer par du code implémentable
un raffinement doit être cohérent avec ses spécifications(ceci doit être prouvé)
un raffinement peut à son tour être raffiné (colonne de raffinement)
en B-Logiciel, le dernier raffinement est appelé l’implémentation
12 / 104
Structuration
module B
Implémentation ou raffinement
spécification B
spécification du module
1er raffinement du module
2ème raffinement du module
3ème raffinement du module
13 / 104
Validation par la preuve
PreuveAutomatique
Examen des lemmes
lemme fauxPreuve
Interactive
100%
jusqu’à 97%des lemmes justes
16 lemmes / jour
Source B
BUG 10%
Génération automatique de lemmes
14 / 104
Développement B
Modèle abstraitSpécifications logicielles
Modèle concret
Code (ADA, C, …)
Traduction
Modélisation
ImplémentationPreuve de bonneimplémentation
Preuve depropriétés
Relecture
modèle B
15 / 104
B-Système
Modèle BSpécifications système
Réexpression en langage naturel
Remarques sur les doc système
Modélisation
Preuve decohérence
Conception système
16 / 104
Structuration B-Logiciel
module B
implémentation ou raffinement
spécification B
lien de décomposition
Modèle
Abstrait
Modèle
Concret
17 / 104
Avantages de B-Logiciel
Le Modèle Abstrait Les exigences sont exprimées en B module par module
Les spécifications informelles et formelles sont très proches (elles expriment toutes ce que le logiciel doit faire) pour minimiser les risques d’erreur
Certaines propriétés du logiciel sont modélisées en BElles renforcent le modèle B, puisqu’il faut prouver qu’elles sont préservées lorsque les modules sont assemblés
Le Modèle Concret Il faut prouver que le modèle concret implémente correctement
sa spécification (le modèle abstrait)
18 / 104
Avantages de B-Logiciel
L’ensemble du Modèle PAS d’erreur classique de programmation dans le code
(débordement, division par 0, indice hors limite, boucle infinie, alias)
Une architecture logiciel saine
Inutilité des Tests Unitaires
Les erreurs sont détectées plus tôt
Ces avantages perdurent même après quelques modifications/évolutions
19 / 104
Cycle de développement traditionnel
Spécification
Analyse système
Conception
Code
Tests Unitaires
TestsValidation
Tests Intégration
20 / 104
Cycle de développement B
Analyse système
Code
Tests Unitaires
Tests IntégrationSpécification
ConceptionPreuve
Preuve
TestsValidation
Preuve
21 / 104
Comparaison avec d’autres langages
assembleur pas de contrôle
C contrôles statiques limités (i.e. taille du type des données)
Ada contrôles statiques étendus (i.e. typage fort)
Méthode B contrôles statiques + contrôle du sens du programme
(en prouvant que les propriétés sont respectées par le modèle abstrait et en prouvant que le modèle concret implémente correctement le modèle abstrait)
22 / 104
Avantages de B-Système
Le Modèle B-Système Le principe fondamental est de comprendre de manière fine le système à
travers la modélisation B
Un travail en coopération avec les experts métier liés au système
Détecter plus tôt les erreurs, lors de la conception système,produire de meilleures Spécifications Logicielles
Remarques sur le système la plupart des questions sur le système apparaît lors de la création du modèle
quelques incohérences peuvent également être détectées grâce à la preuve du modèle B (puisque le modèle doit être cohérent dans tous les cas possibles qu’il décrit)
Produit des remarques intéressantes sur le système
une ré-expression du modèle en langage naturel qui décrit le système de manière précise, concise et fortement structurée
23 / 104
Les Outils
Atelier B (ClearSy)
créé pour supporter le développement de projets B-Logiciel industriels
un ensemble d’outils intégrés dans un outil de gestion de projets B vérificateurs statiques
génération automatique des obligations de preuve (lemmes)
prouveurs automatique et interactif
traducteurs de code : Ada, C, …
est également utilisé pour B-Système
B4free (www.b4free.com)
gratuit pour les universitaires/chercheurs et les détenteurs de l’Atelier B
le noyau de l’Atelier B + une nouvelle interface x-emacs
La plateforme Rodin (Septembre 2007)
une plateforme logicielle libre dédiée à B-System (en construction)
24 / 104
ClearSy : Activités liées à B
utilise B-Système de manière interne pour aider à comprendre,spécifier, vérifier un développement système
utilise B-Logiciel pour développer des logiciels critiques de sécurité(et aussi pour finir la preuve ou valider la preuve d’un logiciel B)
fait partie de la communauté B et s’emploie à créer desprocessus utiles basés sur B
formations à la Méthode B et à l’Atelier B
maintenance, distribution et support de l’Atelier B
26 / 104
Conclusion
B est un langage
B est une méthode de développement
B permet la modélisation cohérente de systèmes et la construction correcte de logiciels
B est utilisé dans l'industrie
B est supporté par l'Atelier B
B apporte des bénéfices à ses utilisateurs
27 / 104
Notions de B : modules
un module B correspond à la modélisation d’un sous système (éventuellement logiciel)
chaque module B gère son propre espace de données (encapsulation)
cf. classe (langages orienté objet)
type abstrait de données
paquetage (ADA)
un module B développé est constitué de plusieurs composants B :
une machine abstraite (la spécification du module)
d’éventuels raffinements (de cette spécification)
et une implantation (raffinement final : code)
ces composants sont organisés dans un projet B
28 / 104
Notions de B : composants
aspect statique
définition de l’espace d’état : ensembles, constantes, variables
définition des propriétés statiques des variables d’état : invariant
aspect dynamique
définition de la phase d’initialisation des données (variables d’état)
définition des opérations de consultation ou de modification de l’état
obligations de preuve
les propriétés statiques doivent être cohérentes
l’initialisation doit établir ces propriétés
les opérations doivent les préserver
29 / 104
Notions de B : machines abstraites
une machine abstraite constitue la spécification d’un module logiciel
elle définit un modèle mathématique de ce sous système :
description abstraite de son espace d’état et de ses états initiaux possibles
description abstraite des opérations pour consulter ou modifier l’état
ce modèle établit l’interface externe du module concerné :
propriétés respectées par toute implantation éventuelle
cette garantie est assurée par les preuvesau cours du développement formel
30 / 104
Notions de B : une machine abstraite
MACHINE
NomMachine
SETS
noms d’ensembles
CONSTANTS
noms de constantes
PROPERTIES
prédicat
ABSTRACT_VARIABLES
noms de variables
INVARIANT
prédicat
INITIALISATION
substitution
OPERATIONS
définitions d’opérations
END
aspect
statique
aspect
dynamique
forme générale
31 / 104
Notions de B : raffinements
composants qui raffinent une machine abstraite (ou l’un de ses raffinements)
il permettent d’enrichir et de concrétiser le modèle mathématique précédent
ils sont plus déterministes et plus concrets
raffinement des données :introduction de nouvelles variables avec invariant de liaison (changement de variables)
raffinement des opérations :transformation des opérations du composant raffiné
correction de développement :
chaque raffinement doit préserver les propriétés du modèle précédent
32 / 104
Notions de B : raffinements
REFINEMENT
NomMachine_nREFINES
NomMachine
...
ABSTRACT_VARIABLES
noms de variablesINVARIANT
prédicat
INITIALISATION
raffinement d’initialisationOPERATIONS
raffinements d’opérations END
forme générale
les données du composant raffiné
(ensembles, constantes et variables)
sont conservées
il n’est pas possible d’introduire
de nouvelles opérations
nouvelles variables
avec
leurs propriétés
+ invariant de liaison
33 / 104
Notions de B : implantation
un raffinement final, qui contient le programme informatique du module
IMPLEMENTATION
NomMachine_nREFINES
NomMachineVALUES
valuationsCONCRETE_VARIABLES
noms de variablesINVARIANT
prédicat
INITIALISATION
implantation d’initialisationOPERATIONS
implantations d’opérations END
forme générale
valuation des ensembles fixes
et constantes
variables d’implantation
avec
leurs structures de données
+ invariant de liaison
34 / 104
Notions de B : projets
un projet B est composé de modules B reliés entre eux
chaque module est formé de composants : une machine abstraite (sa spécification)
avec éventuellement des raffinements et une implantation
les principaux liens entre modules sont :
les liens IMPORTS (l’arbre de décomposition modulaire)
les liens SEES (consultations transversales dans cet arbre)
des sous projets peuvent être regroupés en librairies,et réutilisés dans différents projets
un projet B permet de développer un logiciel (traduction en Ada, C, C++)
ce logiciel peut être utilisé par un logiciel développé de manière classique
il peut également utiliser des logiciels classiques
35 / 104
Notions de B : que prouve-t-on ?
Appel 1 Opération
Appel n Opération
Spécification Spécification Spécification
Appel de l’initialisation
Appel 1 Opération
Appel n Opération
Implantation Implantation Implantation
l’invariantn’est pas
établi
est consistant avec
l’invariantest
établi
l’invariantest
établi
l’invariantest
établi
est consistant avec est consistant avec
Appel de l’initialisation
36 / 104
Le Langage B
ordre de présentation logique des prédicats
théorie des ensembles
substitutions
typage des données
forme des composants
décomposition modulaire
37 / 104
Le Langage B : logique des prédicats
prédicats ce sont les constructions de base pour exprimer des propriétés
un prédicat est une formule logique qui peut être vraie ou fausse
les équations, inéquations et tests d’appartenance sont des prédicats
ex. : x = 3
5 < 2x : {1, 2, 3}
leurs négations, conjonctions ou disjonctions sont également les prédicats
ex. : x + y = 0 & x < y
38 / 104
Le Langage B : logique des prédicats
propositionsn P négation de P (NON logique)
P & Q conjonction de P et Q (ET logique)
P o Q disjonction de P et Q (OU logique)
P y Q implication : n P o Q
utilisation : si P est vrai, alors Q doit être vraiP e Q équivalence : P y Q & Q y P
prédicats quantifiés! x. ( Px y Qx ) universel
# x. ( Px ) existentiel : n ! x. (n Px )
sur le
papiern&oye!#
sur les
claviers
not
&
or
=>
<=>
!
#
39 / 104
Le Langage B : logique des prédicats
prédicats d'égalité soient x et y deux expressions
x = y x égal à y
x y non égalitén ( x = y )
prédicats d’inégalité soient x et y deux entiers
x < y x strictement inférieur à yx < y x inférieur ou égal à y
x > y x strictement supérieur à yx > y x supérieur ou égal à y
sur le
papier
=d<<>>
sur les
claviers=
/=
<
<=
>
>=
40 / 104
Le Langage B : logique des prédicats
prédicats ensemblistes soient x une expression,
X et Y deux expressions d’ensemblesx : X appartenance : x est un élément de X
x / X non appartenance
X ( Y inclusion : X est un sous ensemble de Y
X - Y non inclusion
X è Y inclusion stricte : X è Y e X ( Y & X d Y
sur le
papier:/(-è_
sur les
claviers:
/:
<:
/<:
<<:
/<<:
41 / 104
Le Langage B
Les expressions décrivent les valeurs des données
Le prédicat x+1 = 0 correspond à l’égalité de 2 expressions
Elles sont basées sur la théorie des ensembles ensembles
sous ensembles
ensemble booléen
ensembles numériques
ensembles de couples
relations
fonctions
suites
42 / 104
Le Langage B : théorie des ensembles
ensembles explicites ensemble vide : 0 ensemble fini, défini en extension : {x1, …, xn}
ex. : {a, b, c}{1, x + 1, y - 2}
intervalle d’entiers : x .. y
ensemble fini d’entiers compris entre x et y :z : x..y e z > x & z < y
ex. : 1..3 = …3..2 = ...
ensembles définis en compréhension{ x | Px } ensemble des valeurs de x vérifiant le prédicat P
ex. : { x | x : 1..5 & x mod 2 = 0 } = ...
sur le
papier0
sur les
claviers
{}
43 / 104
Le Langage B : théorie des ensembles
expressions d’ensemble soient X et Y deux expressions d’ensembles union de X et de Y : X u Y
z : (X u Y) e z : X o z : Yex. : {1, 3, 5} u 1..3 = ...
intersection de X et de Y : X i Yz : (X i Y) e z : X & z : Yex. : {1, 3, 5} i 1..3 = ...
différence de X et de Y : X - Yz : (X - Y) e z : X & z / Y
ex. : {1, 3, 5} - 1..3 = ...1..3 - {1, 3, 5} = ...
sur le
papierui
sur les
claviers\/
/\
44 / 104
Le Langage B : théorie des ensembles
Ensemble des parties soit X un ensembleP (X ) ensemble des parties (ou des sous ensembles) de X
x : P(X ) e x ( X
P 1 (X ) ensemble des parties non vides de XP1(X ) = P(X ) - {0}
ex. : P ({a, b, c}) = ...P1 ({a, b, c}) = ...
F (X ) ensemble des parties finies de X
F1(X ) ensemble des parties finies et non vides de XF1(X ) = F(X ) - {0}
sur le
papierPP1
FF1
sur les
claviersPOW
POW1
FIN
FIN1
45 / 104
Le Langage B : théorie des ensembles
constantes booléennes TRUE, FALSE constantes prédéfinies
ensemble des booléensBOOL ensemble fini prédéfini :
BOOL = {FALSE, TRUE}
expressions booléennessoit P un prédicat
bool(P ) vaut TRUE si P est vrai, FALSE sinonex. : bool(P) = bool(Q) e ...
46 / 104
Le Langage B : expressions numériques
cardinal d’un ensemble fini (nombre d ’éléments) : card (X )ex. : card ({1,3,5}) = ...
card (3..2) = ...
maximum, minimum d’un ensemble fini non vide d’entiers :max (X ), min (X )
ex. : max ({1,3,5}) = ... min ({1,3,5}) = ...
opérateurs arithmétiques (sur les entiers relatifs)
pred (x ), succ (x ) prédécesseur, successeur
x + y, x - y addition, soustractionx * y, x / m multiplication, division entière
x mod m modulo
x n puissance
sur le
papier*
x n
sur les
claviers*
x ** n
47 / 104
Le Langage B : expressions numériques
ensembles d’entiersZ ensemble des entiers relatifs (> 0 et < 0)
N ensemble des entiers naturels (> 0)
N1 ensemble des entiers naturels positifs (> 0)
constantes numériques MAXINT plus grand entier relatif implémentable
MININT plus petit entier relatif implémentable
INT = MININT .. MAXINT
NAT = 0 .. MAXINT
NAT1 = 1 .. MAXINT
sur le
papierZNN1
sur les
claviersINTEGER
NATURAL
NATURAL1
48 / 104
Le Langage B : couples
expressions de couplesoient x et y deux éléments
x, y couple ordonnéx m y « maplet » (x est associé à y)
x m y = x, y
produit cartésienproduit cartésien de 2 ensembles X et Y :X * Y ensemble des couples x m y tels que x : X et y : Y
ex. : {0, 1} * {a, b, c} = ...
sur le
papierm*
sur les
claviers
|->
*
49 / 104
Le Langage B : relations
relations une relation d’un ensemble de départ X dans un ensemble
d’arrivé Y est un sous ensemble du produit cartésien X * Y,c’est a dire un ensemble de couples (x m y) dont le premier
élément appartient à X et le second à Y
conséquence : les opérations sur les ensembles s’appliquent également aux relations
ensemble de relations ensemble des relations de X dans Y : X 1 Y
X 1 Y = P (X * Y )
sur le
papier1
sur les
claviers
<->
50 / 104
Le Langage B : relations
relations explicitesex. : 0 (relation vide)
{2 m a,2 m c,3 m d,4 m b,4 m d}
1
2
3
4
a
b
c
d
e
51 / 104
Le Langage B : opérations sur des relations
soient R une relation de X dans Y
dom (R) domaine de la relation R (sous ensemble de X )x : dom (R) e # y. ( y : Y & x m y : R )
ex. : dom ({2 m a, 2 m c, 3 m d, 4 m b, 4 m d}) = ...
ran (R) range de la relation R (sous ensemble de Y ) :y : ran (R) e # x. ( x : X & x m y : R )
ex. : ran ({2 ma, 2 m c, 3 m d, 4 m b, 4 m d}) = …
soient R une relation de X dans Y, et S un sous ensemble de X
R [S] image par la relation R (sous ensemble de Y ) de l’ensemble Sy : R [S] e # s. ( s : S & s m y : R )
ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} [ {1,2,3} ] = ...
52 / 104
Le Langage B : expressions relationnelles
soit X un ensemble
id (X ) identité sur Xx m x : id (X ) e x : X
ex. : id ({a, b, c}) = ...
soient R une relation de X dans Y
R -1 relation inverse, de Y dans Xy m x : R-1 e x m y : R
ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d}-1 = ...
sur le
papier
R -1
sur les
claviers
R ~
53 / 104
Le Langage B : expressions relationnelles
composition des relations R1 et R2 : R1 ; R2x m z : (R1 ; R2) e # y. (y : Y & x m y : R1 & y m z : R2)
ex. : { 0 m 0, 1 m 0, 1 m 1 } ; {2 m0, 2 m1, 2 m2} = ...
1
2
3
4
a
b
c
d
e
0
1
2
3
4
54 / 104
Le Langage B : expressions relationnelles
restriction sur l’ensemble de départ : S r R
conservation des couples dont le premier élément appartient à SS r R = id (S ) ; R
ex. : {1, 2, 3} r {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} = ...
restriction sur l’ensemble d’arrivée : R R S
conservation des couples dont le second élément appartient à S
R R S = R ; id ( S )
ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} R {b, c, d} = ...
sur le
papierrR
sur les
claviers
<|
|>
55 / 104
Le Langage B : expressions relationnelles
suppression sur l’ensemble de départ : S a R
suppression des couples dont le premier élément appartient à SS a R = id (dom(R) - S) ; R
ex. : {1, 2, 3} a {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} = ...
suppression sur l’ensemble d’arrivée : R A S
suppression des couples dont le second élément appartient à SR A S = R ; id (ran(R) - S)
ex. : {2 m a, 2 m c, 3 m d, 4 m b, 4 m d} A {b, c, d} = ...
sur le
papieraA
sur les
claviers
<<|
|>>
56 / 104
Le Langage B : expressions relationnelles
soient R1 et R2 deux relations de X dans YR1 + R2 surcharge de la relation R1 par la relation R2, relation
dont les éléments sont les couples de R1 tels que le premier élément n’appartient pas à dom(R2), ainsi que tous les couples de R2 :R1 + R2 = (dom(R2) a R1) u R2
ex : {0 m 1, 1 m 1} + {0 m 0} = ...
{2 m a, 2 m c, 3 m d, 4 m b, 4 m d}+ {1 ma, 2 m b, 2 m c, 3 m e} = ...
sur le
papier+
sur les
claviers
<+
57 / 104
Le Langage B : fonctions
rappel
définition : une relation d’un ensemble de départ X dans un ensemble d’arrivé Y est un sous ensemble du produit cartésien X * Y, c’est-à-dire un
ensemble de couples dont le premier élément appartient à X et le second à Y
conséquence : les opérations sur les ensembles s’appliquent également aux relations
cas spécial
définition : une fonction d’un ensemble de départ X dans un ensemble d’arrivé Y est une relation de X dans Y, où chaque élément de X est associé à au plus un élément de Y
conséquence : les opérations sur les relations s’appliquent également aux fonctions
58 / 104
Le Langage B : fonctions
applications de fonctionsvaleur de la fonction F en x (un élément de dom(F)) : F (x)
c’est l’unique élément associé à x par F : x mF (x) : Fex : f = { 0 m a, 1 m b, 2 m a }
f (1) = ...
fonctions définies par expressionssoient x un nom, X un ensemble et E une expression (en x)% x. ( x : X | Ex ) définition explicite en forme de %-expression :
fonction constituée des couples x m Ex, où x : Xex. : plus2 = % z. ( z : Z | z + 2 )
plus2 (1) = ...
sur le
papier%
sur les
claviers
%
59 / 104
Le Langage B : ensembles de fonctions
définition : une fonction de l’ensemble X dans l’ensemble Y s’appelle une fonction partielle
ensemble des fonctions partielles de X dans Y : X 2 Y
F : X 2 Y e F : X 1 Y & (F-1 ; F) ( id(Y)
définition : une fonction totale de X dans Y est une fonction partielle de Xdans Y dont le domaine est égal à X
ensemble des fonctions totales de X dans Y : X 3 Y
F : X 3 Y e F : X 2 Y & dom(F) = X
sur le
papier23
sur les
claviers
+->
-->
60 / 104
Le Langage B : ensembles de fonctions
fonctions injectives définition : une injection partielle est une fonction partielle de
X dans Y tel que chaque élément du range a un et un seul antécédent
ensemble des injections partielles de X dans Y : X 4 Y
F : X 4 Y e F : X 2 Y & F -1 : Y 2 X
définition : une injection totale est une injection de X dans Ydont le domaine est égal à X
ensemble des injections totales de X dans Y : X 5 Y
X 5 Y = X 4 Y i X 3 Y
sur le
papier45
sur les
claviers
>+>
>->
61 / 104
Le Langage B : ensembles de fonctions
fonctions surjectives définition : une surjection partielle est une fonction de X dans Y
dont le range est égal à Y ensemble des surjections partielles de X dans Y : X 6 Y
F : X 6 Y e F : X 2 Y & ran(F) = Y
définition : une surjection totale est une surjection de X dans Ydont le domaine est égal à X
ensemble des surjections totales de X dans Y : X 7 Y
X 7 Y = X 6 Y i X 3 Y
sur le
papier67
sur les
claviers
+->>
-->>
62 / 104
Le Langage B : ensembles de fonctions
fonctions bijectives définition : une bijection partielle est une fonction de X dans Y
qui est injective et surjective ensemble des bijections partielles de X dans Y : X 6 Y
X 8 Y = X 4 Y i X 6 Y
définition : une bijection totale est une fonction totale de X dans Yqui est injective et surjective
ensemble des bijections totales de X dans Y : X 9 Y
X 9 Y = X 5 Y i X 7 Y
L’inverse d ’une bijection partielle est une ...
sur le
papier89
sur les
claviers
>+>>
>->>
63 / 104
Le Langage B : suites
suites
définitionsune suite dont les «éléments» appartiennent à un ensemble X est une fonction totale d’un intervalle 1..n dans X, où n : Nles éléments de la suite correspondent aux seconds éléments des couples de cette fonction, et ils sont ordonnés par les premiers
ex. : {1 m a, 2 m b, 3 m c}
conséquence : les opérations sur les fonctions s’appliquent également aux suites
suites explicites
suite vide : []
suite en énumérationex. : [a, b, c] = {1 m a, 2 m b, 3 m c}
64 / 104
Le Langage B : opérations sur les suites
taille de la suite S : size (S )
ex. : size ([]) = 0size ([a, b, c]) = 3
premier élément d’une suite non vide S : first (S) = S (1)
ex. : first ([a, b, c]) = a
dernier élément d’une suite non vide S : last (S) = S (size(S))
ex. : last ([a, b, c]) = c
inversion de la suite S : rev (S)
ex : rev ([a, b, c]) = [c, b, a] insertion de l’élément x en tête de la suite S : x k S
ex : a k [b, c] = [a, b, c]
insertion de l’élément x en queue de la suite S : S j x
ex : [a, b] j c = [a, b, c]
sur le
papierjk
sur les
claviers
<-
->
65 / 104
Le Langage B : opérations sur les suites
concaténation des suites S1 et S2 : S1 ) S2
ex : [a, b, c] ) [c, b, a] = [a, b, c, c, b, a]
restriction aux n éléments en tête de la suite S : S q nex. : [a, b, c] q 2 = [a, b]
suppression des n éléments en tête de la suite S : S w nex. : [a, b, c] w 2 = [c]
suppression du premier élément en tête de la suite S : tail (S)
ex. : tail ([a, b, c]) = [b, c]
suppression du dernier élément de la suite S : front (S)
ex. : front([a, b, c]) = [a, b]
sur le
papier) qw
sur les
claviers
^
/|\
\|/
66 / 104
Le Langage B : ensembles de suites
ensemble des suites de X : seq (X )
ensemble des suites non vides de X : seq1 (X )
ensemble des suites injectives de X : iseq (X )
ensemble des suites injectives non vides de X : iseq1 (X )
ensemble des suites bijectives de X : perm (X )(ensemble des permutations de X)ex. : perm ({a,b,c}) = {[a,b,c], [a,c,b], [b,a,c], [b,c,a], [c,a,b], [c,b,a] }
67 / 104
Le Langage B : substitutions
les substitutions permettent de représenter les transformations qu’opèrent les programmes sur les données
donc elles permettent de transformer l’état d’un système
elles concernent une certaine liste de variables
on définit mathématiquement comment un prédicat P est transformé par l’application d’une substitution S, que l’on note : [S] P
ex. : [x := 2] (x > 1) e (2 > 1)
68 / 104
Le Langage B : substitutions
les substitutions servent à décrire à la fois la dynamique des spécifications (machine abstraite) et du code B0 (implantation)
spécifications [Spec]elles décrivent les propriétés d’un programmeelles peuvent être non déterministes
ex. : substitutions « devient tel que »
implantation [Code B0]instructions classiques d’un langage de programmation(":=", ";", IF, CASE, WHILE, appel d’opération, instruction nulle, variable locale, bloc d’instructions)
69 / 104
Le Langage B : substitutions
substitution nulle [Spec, Code B0]
skip aucune variable n’est modifiée (quelle liste de variables ?)
substitution « devient égal » [Spec, Code B0]
on remplace une variable par une expressionex. : v := 0
x := y + 1f(i) := m
substitution « devient élément de » [Spec]
on remplace une variable par un élément d’un ensembleex. : v :: (1..3)
70 / 104
Le Langage B : substitutions
substitution « devient tel que » [Spec]
v : (Pv)la variable v est remplacée par une valeur qui établis le prédicat Px
ex. : x :(x : NAT & x mod 3 = 1)
résultats de la division de n par m, où n : N et m : N1
(q, r) : (q : N & r : N & n = (m * q)+ r & r < m)
la valeur précédente de v peut être référencée dans Pv par v$0ex. : x :(x : INT & x > x$0)
71 / 104
Le Langage B : substitutions
substitution simultanée [Spec]
S1 || S2
accomplissement simultané des substitutions S1 et S2,où les variables modifiées doivent être distinctes
ex. : x := 1 || y := 2x := y || y := x
séquencement de substitutions [Code B0]
S1 ; S2
accomplit la substitution S1 et puis la substitution S2
ex. : x := 1 ; y := 2x := y ; y := x +1
72 / 104
Le Langage B : substitutions
substitution bloc [Spec, Code B0]
BEGIN S ENDparenthèse des substitutions
ex. : BEGIN x := y || y := x ENDBEGIN x := y ; y := x +1 END
substitution variables locales [Code B0]
VAR v1,…,vn IN S END
introduction de variables locales v1,…,vn dans la substitution Sex. : VAR t IN t := x ; x := y ; y := t END
73 / 104
Le Langage B : substitutions
substitutions qui nécessitent qu’une propriété soit vraie ces substitutions ne peuvent être utilisées que dans un contexte où le
prédicat P est vrai
précondition [Spec] PRE P THEN S END
utilisation : en début de la spécification d’une opération, pour contrôler que l’opération est appelée dans son cadre d’utilisation
ex. : PRE x : NAT1 THEN x := x - 1 END
assertion [Spec, Code] ASSERT P THEN S END
utilisation : aider à la preuve de l’opération qui contient l’assertion(cf. formation niveau 3)
74 / 104
Le Langage B : substitutions
substitution ANY [Spec]
ANY x WHERE Px THEN S END
substitution S dans laquelle on accède (en lecture seulement) à des variables x qui vérifient P
ex. : ANY x WHEREx : 1..5
THENy := y + x
END
rq : la substitution ANY est très généraleskip ANY x WHERE x = y THEN y := x ENDy := a ANY x WHERE x = a THEN y := x ENDy :: E ANY x WHERE x : E THEN y := x END
y :(Py) ANY x WHERE Px THEN y := x END
75 / 104
Le Langage B : substitutions
substitution choix [Spec]
CHOICE S1 OR S2 … OR Sn END
la substitution appliquée est l’une des substitutions S1 à SN
ex. : CHOICE x := x + 1 OR x := x - 1 OR x := x + 2 OR skip END
substitution sélection [Spec]
SELECT P1 THEN S1 WHEN P2 THEN S2 … ELSE Sn END
définit plusieurs branches de substitutions Si gardées par des prédicats Pi
– pour qu’une substitution Si s’applique, il faut que la garde Pi soit vraie
– si toutes les gardes sont fausses, c’est la substitution Sn de la branche ELSE qui s’applique
ex. : SELECT x > 10 THEN x := x - 10 WHEN x < 10 & x > 0 THEN x := 2 * (x – 10)
ELSE x := x - 1END
76 / 104
Le Langage B : substitutions
substitution conditionnelle IF [Spec, Code B0]
IF P1 THEN S1 ELSIF P2 THEN S2 … ELSE Sn END
la substitution appliquée est– soit Si si la condition Pi est vraie et si les conditions précédentes
sont toutes fausses,
– soit Sn si les conditions précédentes sont toutes fausses
par défaut, Sn vaut skipex. : IF x > 10 THEN
x := x - 10ELSIF x = 0 THEN
x := x + 1ELSE
x := 1END
77 / 104
Le Langage B : substitutions
substitution conditionnelle par cas [Spec, Code B0] CASE v OF EITHER V1 THEN S1 OR V2 THEN S2 … ELSE Sn END END
la substitution appliquée est Si si v appartient à l’une des valeurs littérales de la liste Vi, ou bien Sn sinon
par défaut, Sn vaut skip
ex. : CASE x OFEITHER 0, 1, 2 THEN x := x + 1OR 3, 4 THEN x := x - 1OR 10 THEN skipELSE x := x + 10END
END
78 / 104
Le Langage B : substitutions
boucle « tant que » [Code B0]
WHILE P DO S INVARIANT I VARIANT V END
boucle « tant que » : tant que la condition P est valide, on applique la substitution S
– la négation de P est donc la condition de sortie de la boucle
– la clause INVARIANT définit les propriétés des variables transformées à l’entrée dans la boucle, à la ième itération et à la sortie de la boucle
– la clause VARIANT doit définir (à partir des indices de boucles) une expression entière, positive et strictement décroissante entre 2 itérations, de façon à prouver que le nombre d'itérations de boucle est fini, donc que la boucle est convergente
79 / 104
Le Langage B : substitutions
appels d’opération [Spec, Code B0]
Si le corps de la spécification de l ’opération op est la substitution S, un appel à op consiste à appliquer S en remplaçant les paramètres formels par les paramètres effectifs (passage par valeur)
ex. : op1
op2 (y - 1)x c op3
x, y c op4 (x + 1, TRUE)
sur le
papierc
sur les
claviers
<--
80 / 104
Le Langage B : typage des données
principes du typage toute donnée doit être typée avant d’être utilisée
les types en B reposent sur la théorie des ensembles
chaque prédicat, expression ou substitution doit respecterune certaine règle de typage, vérifiée statiquement
ces règles servent à éviter des énoncés trivialement dénués de sens (ne pas mélanger les choux et les carottes)
ex. : 2 = TRUE
définition le type d’une donnée est le plus grand ensemble B auquel elle
appartient
81 / 104
Le Langage B : typage des données
les types B
sont décrits à partir des types de bases et des constructeurs de type
les types de base sont :
– BOOL– Z
– les SETS fixes ou les ensembles énumérésex. : TRUE : BOOL
2 : Z
les constructeurs de types sont :– ensemble des parties, P (T )
– produit cartésien, T1 * T2
ex : {1, 3, 5} : P ( Z )(0 m FALSE) : Z * BOOL
82 / 104
Le Langage B : typage des données
comment typer les données ? en général les données sont typées au moyen de prédicats de
typage, qui sont des prédicats particuliers de la forme :donnée non typée opérateur typant (‘=’, ‘:’ ou ‘(’) expression déjà typée
ex. : x : 1..10 & y : BOOL 3 INT & z = x + 1 & S ( INT
ces prédicats de typage doivent être situés au plus haut niveaud’analyse syntaxique dans une liste de conjonctions (ET logiques)
les variables locales et les paramètres de retour d’opération sont typés par des substitutions typantes
ex. : VAR t IN … t := x + 1 ;… ENDr c op( p ) = PRE p : NAT1 THEN … r := p - 1 … END
83 / 104
Le Langage B
composants B (rappel) aspect statique
définition de l’espace d’état : ensembles, constantes, variables
définition des propriétés statiques des variables d’état : invariant
aspect dynamique
définition de la phase d’initialisation des donnés (variables d’état)
définition des opérations de consultation ou de modification de l’état
obligations de preuve
les propriétés statiques doivent être cohérentes
l’initialisation doit établir ces propriétés
les opérations doivent les préserver
84 / 104
Le Langage B : les composants
aspect statique définition d’ensembles constants (clause SETS)
définition de constantes (clauses CONSTANTS, PROPERTIES)
définition de variables (clauses VARIABLES, INVARIANT)
valuation des ensembles et constantes (clause VALUES)
abréviations textuelles (clause DEFINITIONS)
assertions supplémentaires (clause ASSERTIONS)
aspect dynamique phase d’initialisation (clause INITIALISATION)
définition des opérations (clause OPERATIONS)
85 / 104
Composants B : aspect statique
ensembles fixes et ensembles énumérés
SETS S1;…;Sn
déclaration des ensembles fixes et énumérés dans un composant
un ensemble fixe est défini par son nom Si
ex : SETS ETUDIANTS
un ensemble fixe est supposé fini et non videsa valeur sera fournie dans l’implantation (clause VALUES)c’est un intervalle d’entiers implémentables, non vide, dont on veut cacher la valeur en spécification pour réaliser du typage fort
un ensemble énuméré est défini par son nom suivi de la liste de ses éléments Si = {x1,…, xn},
ex. : SETS COULEURS = {Rouge, Vert, Bleu}
86 / 104
Composants B : aspect statique
définition de constantes soit x1,…xn une liste de noms
(CONCRETE_)CONSTANTS x1,…,xn
ABSTRACT_CONSTANTS x1,…,xn
clauses servant à introduire les noms de constantes (données non modifiables) dans un composant
une constante concrète est une donnée directement implémentable(scalaire, tableau), qui n’a pas à être raffinée et qui devra être valuéesen implantation
une constante abstraite est une donnée du type quelconque qui pourra être raffinée au cours du développement,la définition de constantes abstraites est interdite en implantation
87 / 104
Composants B : aspect statique
définition de constantes soit P un prédicat (en x1,…, xn)
PROPERTIES Px1,…,xn
la clause PROPERTIES contient un prédicat qui définit les propriétés des constantes du composant
ex : CONSTANTSc1, c2
PROPERTIESc1 : 0..10 &c2 : 0..10 &c1 + c2 < 15
88 / 104
Composants B : aspect statique
définition de variables soit v1,…,vn une liste de noms
(ABSTRACT_)VARIABLES v1,…,vn
CONCRETE_VARIABLES v1,…,vn
clauses servants à introduire les noms de variables (données modifiables) dans un composant
une variable abstraite est une donnée de type quelconque,qui pourra être raffinée au cours du développement,la définition de variables abstraites est interdite en implantation
une variable concrète est une donnée directement implémentable (scalaire, tableau), qui n’a pas à être raffinée
89 / 104
Composants B : aspect statique
définition de variables soit P un prédicat (en v1,…vn)
ex : VARIABLESA, B
INVARIANTA ( T &B ( T &card (A i B) = 1
la clause INVARIANT contient un prédicat qui définit les propriétés des variables
il s’agit de propriétés invariantes, quelque soit l’évolution des variables du système (cf. aspect dynamique)
90 / 104
Composants B : aspect statique
exempleMACHINE
RegistreSETS
ETUDIANTSCONCRETE_CONSTANTS
max_étudiantsPROPERTIES
max_étudiants : NAT
ABSTRACT_VARIABLES
InscritsINVARIANT
Inscrits ( ETUDIANTS &card (Inscrits) < max_étudiants
...END
} nom de la machine
} ensemble fixe
} type de constante
} type de variable
} et contrainte
91 / 104
Composants B : aspect statique
valuation des ensembles fixes et constantes ex. : VALUES
max_etudiants = 255 ;
ETUDIANTS = 0.. max_etudiants ;transfert = { 0 m FALSE, 1 m TRUE , 2 m FALSE} ;note = (0.. max_etudiants) * {0}
la clause VALUES n’existe qu’en implantation
elle sert à préciser les valeurs effectives des– SETS fixes du module B
– des constantes concrètes du module B
les ensembles fixes seront en définitive des intervalles entiers, non vides et implémentables
92 / 104
Composants B : aspect statique
abréviations textuelles la clause DEFINITIONS sert à définir des abréviations textuelles, qui
peuvent être utilisées dans le composant (cf. #define du C)
les définitions peuvent être paramétrées et peuvent être factorisées dans des fichiers de définition (attention aux parenthèses)
ex. : DEFINITIONSNMAX == 255 ;NMAXm1 == NMAX - 1 ;non(b) == bool(b = FALSE) ;"mesdef.def"
assertions supplémentaires ASSERTIONS P
cette clause définit des corollaires sur les variables du composant
les assertions servent à factoriser la preuve de propriétés qui se déduisent de l’invariant (cf. formation niveau 3)
93 / 104
Composants B : aspect dynamique
clause d’initialisation soit S une substitution
INITIALISATION S
cette clause sert à définir les valeurs initiales des variables du composantl’initialisation de l’état doit établir l’invariant
ex. : ABSTRACT_VARIABLESInscrits
INVARIANTInscrits ( ETUDIANTS
INITIALISATIONInscrits := 0
94 / 104
Composants B : aspect dynamique
définition d’opérations la clause OPERATIONS introduit les opérations du composant
toute opération définie dans une machine abstraite doit être raffinée
il n’est pas possible d’introduire de nouvelles opérations dans les raffinements
les opérations peuvent avoir des paramètres d’entrée et de retour, définis dans l’en tête de l’opération (passage par valeur),
les paramètres d’entrée sont définis en précondition
les paramètres de retour sont modifiés comme des variables
le corps de l’opération est une substitution qui définit comment sont transformées toutes les variables du composant
95 / 104
Composants B : aspect dynamique
définition d’opérations (suite) syntaxe des opérations
op = S
op ( p1,…pn ) = Sr1,…rm c op = S
r1,…rm c op ( p1,…pn ) = S
les définitions qui changent des variables d’état sont les opérations de modification ;
les opérations doivent préserver l’invariant
les opérations qui ne modifient aucune variable d’état sont les opérations de consultation
le raffinement ou l’implantation d’une opération doit satisfaire sa spécification
sur le
papierc
sur les
claviers
<--
96 / 104
Composants B : aspect dynamique
exemple
MACHINE
Registre
SETS
ETUDIANTS
DEFINITIONS
max_etudiants ==
card (ETUDIANTS)
ABSTRACT_VARIABLES
Inscrits
INVARIANTInscrits ( ETUDIANTS
ASSERTIONScard (Inscrits) < max_etudiants
/* aspect dynamique */
INITIALISATIONInscrits := 0
...
...
OPERATIONSn c nb_inscrits =
n := card (Inscrits) ; b c etudiant _inscrit ( e ) =
PRE e : ETUDIANTS
THEN b := bool (e : Inscrits)
END ;
inscrire_etudiant ( e ) =PRE e : ETUDIANTS - Inscrits
THEN Inscrits := Inscrits u {e}
END ;
rayer_etudiant ( e ) =PRE e : Inscrits
THEN Inscrits := Inscrits - {e}
END
END
97 / 104
Composants B : aspect dynamique
opérations locales pour éviter un nombre excessif de niveaux de modules dans un projet
elles ne sont utilisables que dans une implantation
elles peuvent être appelées dans l’implantation d’opérations (globalesor locales)
elles sont spécifiées dans la clause LOCAL_OPERATIONS(spécification abstraite sur les variables visibles en implantation)
leur invariant est constitué du typage des variables concrètes
elles sont implantées dans la clause OPERATIONS (comme les opérations globales)
98 / 104
Composants B : aspect dynamique
opérations locales : exempleIMPLEMENTATION
...
LOCAL_OPERATIONSr c GetMax(x, y) =
PRE x : INT & y : INT THEN
r := max ({x, y})
END
OPERATIONSr c GetMax(x, y) =
IF x < y THEN r := y
ELSE r := x
END ;
…op =
…v c GetMax(z, 10);
…
END
99 / 104
Le Langage B
décomposition modulaire le langage B supporte la (dé)composition des spécifications de
façon modulaire
mécanismes de décomposition importation d’autres machines (clause IMPORTS)
visibilité d’autres machines (clause SEES)
100 / 104
Le Langage B : décomposition modulaire
importation d’autres machinesex : IMPLEMENTATION
A_i
REFINESA
IMPORTSB, C
la clause IMPORTS ne s’applique qu’aux implantations
une implantation importe des machines afin d’implémenter ses données et ses services, à l’aide de ceux de machines de plus bas niveaux : c’est la décomposition de la Méthode B
les variables d’une machine importée M sont modifiables dans l’implantation par appel des opérations de M
101 / 104
Le Langage B : décomposition modulaire
visibilité d’autres machinesex : MACHINE
A
SEESB, C
lorsqu’un composant voit une machine M, les données de M sont accessibles en lecture, mais elle ne peuvent pas être modifiées par le composant
102 / 104
Liens B-Logiciel
module B
implémentation ou raffinement
spécification B
lien de décomposition (IMPORTS)
Modèle
Abstrait
Modèle
Concret
lien en lecture seule (SEES)
103 / 104
Le Langage B : le B0
C’est le langage de programmation intégré au langage B
Il est composé nom de la spécification et liens de l’implantation
données de l’implantation : ensemble fixes et énumérés,constantes (concrètes), variables concrètes et valuation de l’implantation
initialisation et opérations de l’implantation : paramètres des opérations et parties implémentables des substitutions
Les données doivent être concrètes INT, BOOL, ensemble abstrait ou énuméré
intervalle de INT
tableau implémentable
104 / 104
Formations B
Niveau 1 : présentation de la Méthode B présentation de la Méthode B et du Langage B
TD et TP avec l’Atelier B : spécification, écrire un programme simplecohérent avec ses spécifications, notions de preuve
Niveau 2 : notions avancées de B notions avancées de B : décomposition modulaire, raffinement,
homonymie, théorie des Obligations de Preuve, les boucles
TD et TP avec l’Atelier B : décomposition modulaire d’un gros projet,introduction à B système, Obligations de Preuve
Niveau 3 : prouver comment prouver les lemmes avec l’Atelier B
TP : preuve automatique et interactive, outils de preuve,règles utilisateur