2. Plan de la présentation
1) Classification de la méthode B
2) Historique de la méthode B
3) Présentation de la méthode B
4) Objectifs de la méthode B
5) B, Les différents Langages
6) La méthode B et ses outils
2
3. Plan de la présentation
8) Les bases du langage de la méthode B
9) Domaines d’application de la méthode B
10) Développement de programme avec B
11) Exemple simple en B
12) Articles autour de la méthode B
13) Conclusion
3
4. Classification de la méthode B (1)
Il existe de nombreuses approches plus ou moins parcellaires avec de nombreuses variantes pour la
classification des méthodes formelles . Néanmoins , Il est difficile de classer une approche !
On peut classer les méthodes formelles en quatre catégories :
Approche algébrique : Types abstraits de données (aucune structure de donnée n'est décrite,
seules les opérations le sont), déduction équationnelle .
Approche dynamique : Modélisation de l'interaction entre différents processus .
Approche logique : Théorie des types et logiques d'ordre supérieur .
Approche par modèle abstrait : Définition d'une structure de données et d'un ensemble
d'opérations, approche constructive : B.
4
5. Classification de la méthode B (2)
Critères de classification possibles :
1- Type de raisonnement
modèle algorithmique
théorie des types
algèbres de processus
files d'attentes
modèle mathématique : B
5
2- Aspect du système :
dynamique
fonctionnel
statique : B
3- Langage :
Dédié
général : B
6. Historique de la méthode B
Cette méthode a été conçue par Jean-Raymond ABRIAL, qui avait déjà participé dans
les années 1980 à la conception de la notation Z.
D’autre part, la méthode B repose sur les travaux scientifiques menés à l’université
d’Oxford, dans le cadre du Programming Research Group dirigé par C.A.R. Hoare.
6
7. Présentation de la méthode B (1)
La méthode B est une méthode formelle qui permet le raisonnement sur des systèmes
complexes ainsi que le développement logiciel.
La méthode B permet de modéliser de façon abstraite le comportement et les spécifications
d'un logiciel dans le langage de B, puis par raffinements successifs afin d’aboutir à un modèle
concret dans un sous-ensemble du langage B transcodable exécutables par une machine
concrète.
7
8. Présentation de la méthode (2)
Le modèle B est ensuite transformé (raffiné dans le vocabulaire B), jusqu'à obtenir une
implantation logicielle complète du logiciel.
Au final, nous aboutissons alors à un modèle concret, prouvé et sans défaut, transcodable
dans le langage C ou Ada.
La méthode B est donc : « une démarche de construction prouvée (dite correcte), sur
la base du langage B, du raffinement et de la preuve ».
8
9. Objectifs de la méthode B
L'objectif de la méthode B est de prouver qu'il n'y a pas d'écart entre la spécification et le code exécuté,
B couvre la spécification, la conception par raffinements successifs, l'architecture en couches et la
traduction en code source (exemple : Ada, C),
Réaliser des logiciels corrects par construction
Modéliser des systèmes dans leur environnement
Formaliser les spécifications
Simplifier la programmation
9
10. Domaines d’application de la méthode B
Des industriels : ils cherchent des systèmes sécuritaires faisant appel aux méthodes formelles,
ainsi que de nouvelles technologies pouvant répondre à leur besoin,
Des experts et spécialistes : individus cherchant des informations sur les méthodes formelles à
un niveau hautement technique,
Des chercheurs spécialisés en R&D : ils agissent pour un développement durable des méthodes
formelles afin de développer de nouvelles solutions pour le futur,
Des enseignants universitaires et chercheurs : ils enseignent B dans le milieu académique et
étudient les évolutions possibles des méthodes formelles.
10
11. B, les différents langages… (1)
B : B évoque, dans le domaine des méthodes formelles, le langage « B », la méthode « B », le livre de
référence : le B Book. Son ancêtre est Z, langage de spécification à base de notations mathématiques.
B comprend en plus le raffinement et la preuve, deux techniques faisant partie intégrante de B.
Le langage B : Langage faisant référence à la théorie des ensembles et à la logique des prédicats,
comprenant également une syntaxe pour décrire des « substitutions », des opérations, et les liens
entre les machines, raffinements et implémentations. La description du langage et celle du
raffinement et de la preuve associée au langage sont décrits dans le B Book.
11
12. B, les différents langages… (2)
L’atelier B : Outil support de la méthode B, et intégrant la possibilité de traduire des raffinements en un code
informatique. Il accepte le langage B tel que décrit dans le B Book.
B évènementiel : On parle souvent du langage B événementiel pour parler du langage utilisé pour décrire un
système à l'aide d'évènements. À ce langage sont associés le raffinement et la preuve. C'est une utilisation de la
méthode B. Des outils permettent de passer de ce langage au langage accepté par l'Atelier B.
12
13. B, les différents langages… (3)
B procédural : Ce terme impropre (car le B ne comprend pas de procédure) évoque le langage
B définit dans le B Book. En effet des niveaux de raffinements peuvent être traduits en des
procédures informatiques. Ce terme a été utilisé avec l'apparition du B évènementiel, pour éviter
la confusion avec celui-ci.
B logiciel : Évoque le langage B décrit dans le B book, utilisé pour réaliser des logiciels. Pour
une spécification donnée lorsque tous les raffinements ont été réalisés et que la preuve est
réalisée, une traduction peut être faire dans le langage informatique de son choix.
…
13
14. La méthode B et ses outils
Parmi les outils B majeurs, nous pouvons citer :
Atelier B : Outil industriel permettant l'utilisation opérationnelle de la méthode B pour des
développements logiciels prouvés. Une formation est disponible pour comprendre, et pratiquer B.
B4Free : Outil académique permettant l'utilisation opérationnelle de la méthode B pour des
développements logiciels prouvés.
CompoSys : Outil de conception formelle d'architecture système.
Brama : Outil de conception formelle d'architecture système.
14
15. Les bases du langage de la méthode B
La méthode B permet de formaliser des spécifications et des programmes. Pour cela, elle utilise son propre
langage formel. Au niveau des spécifications, il s'agit d'un langage logique reposant sur une version
simplifiée ad-hoc de la théorie des ensembles. Ce choix est un peu arbitraire mais peut se justifier par les
arguments suivants :
il est important de pouvoir décrire des ensembles, des relations et des fonctions (ce sont les concepts
centraux dans les modélisations objet),
la théorie des ensembles est bien établie dans la culture mathématique,
la théorie des ensembles permet de construire les objets mathématiques évolués (entiers, arbres, ...) à
partir d'un ensemble réduit de composants de base,
la théorie des ensembles permet une écriture concise de notions évoluées.
15
16. Développement de programme avec B
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)
16
17. 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 preuves au cours du développement formel
Machines abstraites
17
19. 19
l’exemple ci dessous a été inspiré du B-Book , il représente la machine abstraite
personne identifiée par MA-PERSONNE :
MACHINE
MA-PERSONNE
SETS PERSONNES , SEXE={M,F}
VARIABLES
Personnes , Sexe ,Nom
INVARIANT
Personnes ⊆ PERSONNES /
Sexe ∈ Personnes → SEXE /
Nom ∈ Personnes → STRING
OPERATIONS
Ajout-personne(p,sexe,nom)
Pre p ∈ PERSONNES – Personnes /
sexe ∈ SEXE /
nom ∈ STRING
Then Personnes :=Personnes U {p} ||
Sexe(p) := sexe ||
Nom(p) := nom
End ;
Supp_personne(p)
Pre p ∈ Personnes
Then Personnes := Personnes – {p} ||
Sexe :={p} < Sexe ||
Nom :={p} < Nom
end
END
20. 20
l’exemple ci dessous représente la machine de la division entière :
21. Raffinement
Le raffinement est une technique utilisée au cours du processus de développement logiciel pour
transformer un modèle abstrait d'un système logiciel (la spécification) en un modèle plus concret, c'est-à-
dire qui contient plus de détails sur la spécification ou bien qui est plus près d'une implémentation.
Les étapes de raffinement :
1- Décrire (ou réécrire) les variables d’état du modèle raffiné
2- Exprimer l’invariant i.e. propriétés satisfaites par les (nouvelles) variables d’état + l’invariant de
collage à l’initialisation avant et après toute opération manipulant les variables d’état
3- Réécrire (préciser) les opérations avec les (nouvelles) variables Attention, certaines constructions ne
sont pas permises au niveau de la machine et des raffinements
21
24. 24 Exemple : Une machine et son raffinement : la machine abstraite
Considérons la machine ENSEMBLE.
MACHINE
ENSEMBLE
VARIABLES
contenu
INVARIANT
contenu ∈ FIN(NAT)
INITIALISATION
contenu :∈ FIN(NAT)
OPERATIONS
elt ← choisir = choice
elt :∈ NAT or elt :∈ contenu
END
END
25. 25
Une machine et son raffinement : le raffinement
Un raffinement de ENSEMBLE utilisant les séquences est la suivante :
REFINEMENT
Sequence
REFINES
ENSEMBLE
VARIABLES
contenuseq
INVARIANT
contenuseq ∈ seq(NAT) ∧
contenu = ran(contenuseq)
INITIALISATION
contenuseq :∈ seq(NAT)
OPERATIONS
elt ← choisir =
IF contenuseq = <>
THEN elt := 0
ELSE elt := head(contenuseq)
END
END
26. Articles autour de la méthode B
26
Nombreux travaux de recherche ont étés élaboré a propos de la méthode B,
l’un d ’eux l’article intitulé : The B method takes up floating-point numbers .
Cet article montre l’apport de la méthode B dans la correction des nombres à virgule flottante .
28. 28
Un autre article intitulé Formally Checking Large Data Sets in the Railways qui traite l’expérience
de validation des grandes ensemble de données contre la spécification écrite en B.
29. 29
Un autre article intitulé : Spécifications et développements structurés dans la méthode B, qui
décrit les formes de structuration permises par la méthode B, les restrictions nécessaires, et
justifie la correction de l’approche.
30. Conclusion
30
La méthode B introduit un langage logique rigoureux pour représenter les programmes
(substitutions généralisées) et les propriétés de ces programmes.
La particularité de B par rapport aux autres méthodes formelles c'est qu' elle couvre tout le cycle
de vie du logiciel à développer dans un cadre formel uniforme.
L'apport de la preuve dans B présente l'avantage que le logiciel produit respecte la spécification
puisque il en découle totalement .
Elle a toutefois l’inconvénient de ne pas fournir de guide de réalisation aussi précis et mûr que
certaines méthodes du marché et c’est dans ce but que les études de cas peuvent être d’un grand
intérêt dans l’utilisation de la méthode.
On va commencer cet exposé par la classification ,,,,
On va conclure par : une récapitulation, l’apport de cette méthode et ses inconvénients
Il existe 3 critères de classification, selon le type de raisonnement, l’aspect du système ou selon le langage, Si on se base sur le critère raisonnement on peut dégager 5 modèles ,,,
La méthode B est largement diffusée et reconnue dans le monde industriel et universitaire. Elle permet d'agir dans des secteurs variés, tels que le transport ferroviaire, l'aéronautique, la Défense, ou encore la Recherche et le Développement.
PERSONNES : ensemble abstrait de toutes les personnes possibles.
Personnes :variables d’état de l’ensemble des personnes existantes
Sexe :fonction totale de Personnes dans STRING.
Les opérations sont décrites par une sorte de pseudo code ensembliste mais avec
une construction non exécutable tel que → , ⊆, ∈, < , || ; signalons que les
opérateurs :
|| :dénote l’exécution en parallèle de 2 instructions
S < F : restriction de F à domaine(F) –S
Pendant longtemps , les méthodes formelles ont ignoré les calculs en virgule flottante .