Successfully reported this slideshow.

Exposé langage-b

417 views

Published on

Langage B

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Exposé langage-b

  1. 1. La méthode B HAMMAMI DONIA LETAIEF ALYA
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  18. 18. 18 Structure générale d’une machine abstraite :
  19. 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. 20  l’exemple ci dessous représente la machine de la division entière :
  21. 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
  22. 22. 22  Raffinement : forme globale
  23. 23. Implantation 23
  24. 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. 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. 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 .
  27. 27. 27
  28. 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. 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. 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.
  31. 31. Merci pour votre attention 

×