exposé langage-b

Post on 26-Jan-2017

141 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

La méthode B

HAMMAMI DONIA

LETAIEF ALYA

2Plan 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

3Plan 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

4Classification 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.

5Classification 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

2- Aspect du système :

dynamique

fonctionnel

statique : B

3- Langage :

Dédié

général : B

6Historique 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.

7Pré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.

8Pré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 ».

9Objectifs 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

10Domaines 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.

11B, 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.

12B, 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.

13B, 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.

14La 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.

15Les 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.

16Dé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)

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

18 Structure générale d’une machine abstraite :

19 l’exemple ci dessous a été inspiré du B-Book , il représente la machine abstraite

personne identifiée par MA-PERSONNE :

MACHINEMA-PERSONNESETS PERSONNES , SEXE={M,F}VARIABLESPersonnes , Sexe ,NomINVARIANTPersonnes PERSONNES /\ ⊆Sexe Personnes → SEXE /\∈Nom Personnes → STRING∈OPERATIONSAjout-personne(p,sexe,nom)Pre p PERSONNES – Personnes /\∈sexe SEXE /\∈nom STRING∈Then Personnes :=Personnes U {p} ||

Sexe(p) := sexe ||Nom(p) := nomEnd ; Supp_personne(p)Pre p Personnes∈Then Personnes := Personnes – {p} ||Sexe :={p} < Sexe ||Nom :={p} < NomendEND

20 l’exemple ci dessous représente la machine de la division entière :

21Raffinement

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

22 Raffinement : forme globale

23Implantation

24 Exemple : Une machine et son raffinement : la machine abstraite

Considérons la machine ENSEMBLE.MACHINE ENSEMBLEVARIABLES contenuINVARIANT contenu FIN(NAT)∈INITIALISATION contenu : FIN(NAT)∈OPERATIONS elt ← choisir = choice elt : NAT or elt : contenu∈ ∈ENDEND

25 Une machine et son raffinement : le raffinement

Un raffinement de ENSEMBLE utilisant les séquences est la suivante :REFINEMENT SequenceREFINES ENSEMBLEVARIABLES contenuseqINVARIANT contenuseq seq(NAT) ∈ ∧ contenu = ran(contenuseq)INITIALISATION contenuseq : seq(NAT)∈OPERATIONS elt ← choisir = IF contenuseq = <> THEN elt := 0 ELSE elt := head(contenuseq) ENDEND

26Articles autour de la méthode B

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 .

27

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 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.

30Conclusion

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.

Merci pour votre

attention

top related