TP – Utilisation du B4free/Balbulette

Download (0)

Loading.... (view fulltext now)

Full text

(1)

Spécifications formelles 31/12/22 Master Informatique UM2

TP – Utilisation du B4free/Balbulette

1 – Utiliser B à la maison 

Vous pouvez télécharger et installer chez vous une version libre de l’atelier B limitée à un usage pédagogique.

L’atelier B est distribué par Clearsy (http://www.atelierb.societe.com/) ainsi que la version libre (http://www.b4free.com/). L’utilisation de cette version est facilitée par l’interface « Balbulette » développée par JR Abrial et D Cansell (http://www.loria.fr/~cansell/cnp.html). Ces deux outils nécessitent de disposer d’une distribution linux et d’une version d’xemacs supérieure à la 21.4 (éventuellement re-compilée avec l’option no-mule ?).

Pour installer ces 2 outils, il faut :

1. Vous inscrire sur le site http://www.b4free.com/public/subscription.php afin d’obtenir un mot de passe qui vous permettra de télécharger les fichiers d’installation du B4free. Attention, il faut faire cette inscription avec votre adresse mail de l’université qui « prouve » que vous comptez bien l’utiliser dans un contexte pédagogique ;

2. Télécharger la dernière version de B4free depuis la page http://b4free.com/public/download.php ;

3. Installer le B4free en suivant la procédure décrite à la page http://b4free.com/public/installLinuxSun.php (si, comme il est naturel de faire, vous voulez l’installer dans /usr/local, il faut que vous soyez root pour faire l’installation) ;

4. Télécharger la dernière version de la Balbulette depuis la page http://www.loria.fr/~cansell/cnp.html ; 5. L’installer en suivant la procédure décrite à la même page. Comme pour le B4free, l’idéal est de l’installer

dans /usr/local en étant root.

6. Enfin chaque utilisateur du logiciel doit installer les fichiers de configuration de lancement des 2 outils à la racine de son répertoire utilisateur. Cf. section Première Utilisation ci-dessous.

Remarques :

-

Un certain nombre de documents (en particulier le manuel de référence du B) sont disponibles sur le site http://b4free.com/public/resources.php ;

-

Une version utilisable sous Windows (en fait un cd avec linux+B4free+Click’N’Prove) est maintenant disponible (cf. http://b4free.com/public/installB4W.php).

2 - Première Utilisation

Cette section décrit les actions à effectuer avant la première utilisation de B4free et de la Balbulette. Cela suppose que l’installation de ces deux outils a été effectuée. La suite de cette section décrit les actions à faire sur les machines de RezUFR (qui doivent donc être adaptées si il s’agit d’une installation sur vos machines personnelles) :

1. Placez vous dans votre répertoire racine utilisateur : cd

2. Créez un répertoire qui contiendra tous vos projets B : mkdir projB 3. Notez la référence absolue désignant ce répertoire : cd projB ; pwd

(normalement quelque chose comme /auto_home/login/projB) 4. Revenez dans votre répertoire racine utilisateur : cd

5. Exécutez la procédure de configuration depuis ce répertoire :

/usr/local/Click_n_Prove.V2.0/install_personal_Click_n_Prove

6. A la question : “Give the PATH of the directory where your B development are stored ?” Donnez la référence absolue notée précédemment : /auto_home/login/projB

7. Vérifiez qu’un fichier (shell) Click_n_Prove a été crée dans votre répertoire racine

8. Dorénavant le lancement de l’outil se fait à partir de votre répertoire racine en tapant : ./Click_n_Prove 3 – Découverte de l’outil

Clearsy a réalisé un tutoriel (en flash) disponible à l’adresse http://www.b4free.com/tutorial/sampleB4free.htm.

3.1 Interface

Au lancement (commande : ./Click_n_Prove), on est en présence de deux fenêtres (cf. figure) xemacs : celle de gauche est en fait un panneau de commandes constitué de boutons qui permettent en particulier de déclencher des affichages sur celle de droite. Au démarrage il y a 6 boutons dans la zone 1 (cf. figure) dont :

- [qu] pour quitter

- [hp] pour basculer du mode « normal » au mode « aide » (et vice versa) - [ap] pour créer un nouveau projet

Le clic se fait par le bouton droit. Il est prudent de toujours quitter en passant par le bouton [qu] et non d’utiliser les croix du gestionnaire de fenêtre, ou le quitter d’xemacs !

(2)

Spécifications formelles 31/12/22 Master Informatique UM2 On remarquera que lorsqu’on passe la souris sur les boutons, une information indiquant le rôle du bouton s’affiche dans la zone 3 ou 4 (celle qui est active). Le mode aide (clic sur [hp]) permet d’obtenir de l’aide sur le

fonctionnement des boutons ; dans ce mode, un clic sur le bouton pour lequel on cherche une aide affiche l’aide dans la zone 2. Ce mécanisme est disponible dans tous les écrans de commande.

Les 3 autres boutons permettent de restaurer des projets B précédemment archivés.

3.2 Création d’un projet

Un projet B regroupe l’ensemble des machines composants un projet de développement logiciel particulier (notion proche de celle de package de Java). Pour créer un projet, on clique sur [ap] et on donne un nom à son projet.

Créez un projet TP1.

Pour chaque projet créé, une nouvelle ligne avec 5 nouveaux boutons et le nom du projet est ajoutée dans la zone 1 dont :

- [rp] pour supprimer le projet - [op] pour ouvrir le projet

Les trois autres boutons permettent de créer des archives de sauvegarde du projet dans le sous répertoire Archives (que l’on peut alors s’échanger puis restaurer avec les 3 boutons du bas).

Ouvrez votre projet TP1.

L’ouverture de votre projet modifie la fenêtre de commandes : un nouvel écran apparaît avec le nom du projet ouvert dans la zone 5 et 5 boutons dans la zone 1 :

- [qu] pour sortir le projet (retour à la fenêtre de commandes précédente) - [hp] l’aide

- [am] (resp. [ar] [ai]) pour créer une nouvelle machine abstraite (resp. raffinement ou implémentation) 3.3 Création d’une machine

Pour créer une machine abstraite (ou un MODEL), on clique sur [am] et on entre son nom.

Créez une machine abstraite reservation.

Pour chaque machine créée une nouvelle ligne est ajoutée avec 10 nouveaux boutons et le nom de la machine dont :

-

[ed] pour éditer le code source de la machine (dans la zone 2) - [ty] pour lancer le contrôle syntaxique et de typage de la machine - [po] pour demander la génération des obligations de preuves - [rc] pour supprimer la machine

- [p0] (resp. [p1]) pour lancer le prouveur automatique en force 0 (resp. 1) - [ip] pour lancer le prouveur interactif

La couleur rouge des boutons [ty] et [po] indique que la machine n’est pas correcte (syntaxe et typage) ou que cette vérification n’a pas encore été faite, et que les preuves n’ont pas encore été générées (ou pas régénérées depuis la dernière modification).

Cliquez sur [ed] pour éditer votre machine réservation.

3.4 Edition d’une machine

Rentrez dans la zone 2, la machine suivante : MODEL

reservation /* service de reservation de places */

VARIABLE

nbPlaceLibre

boutons

Fenêtre de commandes

Fenêtre d’information

ou d’édition des

machines Zone

1 Zone

2

Zone

5 Zone

Zone 4

3

(3)

Spécifications formelles 31/12/22 Master Informatique UM2 INVARIANT

nbPlaceLibre : N /* nbPlaceLibre est un entier naturel */

INITIALISATION

nbPlaceLibre := 10 OPERATIONS

reserver = PRE

nbPlaceLibre > 0 THEN

nbPlaceLibre := nbPlaceLibre - 1 END ;

END

Observez la colorisation des mots clés du langage (qui permet par exemple de voir qu’il faut un S à variable).

Observez également que la notation ASCII des symboles est automatiquement transformée en symbole mathématique : seat : N devient seat  N.

Le menu « B world » d’xemacs au-dessus de la zone 2 permet de retrouver les caractères ASCII associés aux symboles mathématiques et d’insérer facilement tous les éléments du langage B.

Les majuscules sont distinguées des minuscules dans les identificateurs. Un même identificateur ne peut pas être utilisé pour deux objets différents (variable, nom d’opération, machine…). Il est de plus prudent de ne pas utiliser de caractères accentués. Enfin, le nom d’une machine doit correspondre au nom de son composant.

Après chaque modification et avant de déclencher une commande, il est nécessaire de sauver sa machine (bouton save de xemacs au dessus de la zone 2). En particulier, un clic sur [ty] sans sauvegarder auparavant vérifiera la version précédente de la machine et non celle que vous venez de modifier.

Sauver votre machine

3.5 Vérification de syntaxe et de type

Un clic sur [ty] déclenche la vérification de votre machine. Un rapport s’affiche dans la zone 2 (à la place de votre machine). Une succession de pointillés indique que tout est correct !

Déclenchez la vérification

Un message d’erreur vous indique que le dernier point virgule avant le END final est de trop.

Supprimez ce point virgule (cliquez sur [ed] et n’oubliez pas de sauver !) et revérifiez (cliquez sur [ty]).

Un nouveau message vous indique que N est inconnu ! Normal l’ensemble des entiers naturels est désigné par NATURAL (mettez un espace après pour voir apparaître…).

Modifiez, sauvegardez, et revérifiez.

Normalement tout est à présent correct. Le bouton [ty] reste noir.

3.6 Génération des obligations de preuve

Un clic sur [po] déclenche la génération des preuves à démontrer. Un rapport s’affiche en zone 2 indiquant combien de preuves à démontrer ont été générées et combien de preuves triviales (dont la conclusion est dans les hypothèses) ont été produites. De même, le nom du composant en zone 1 est complété par 3 valeurs entre parenthèses (a/b/c) :

- a indique le nombre de preuves qui reste encore à démontrer - b indique le nombre d’obligations de preuve générées

- c indique le nombre de preuves démontrées « à la main » (i.e. à l’aide du prouveur interactif) L’objectif est que le nombre a passe à 0 !

Générez les obligations de preuves de la machine reservation : 2 preuves sont à démontrer.

Chaque ASSERTIONS, INITIALISATION et OPERATIONS donne lieu à la génération d’une ou plusieurs obligations de preuve.

3.7 Visualisation des preuves non démontrées

On peut observer les buts des preuves qui restent encore à démontrer à l’aide du prouveur interactif (bouton [ip]).

Lancez le prouveur interactif

Une nouvelle interface apparaît dans la zone 1 (la zone 2 est également modifiée mais on ne s’en occupe pas pour l’instant). Au-dessus du trait bleu précédé de GL (goal pour but à prouver) est indiquée la conclusion courante que l’on cherche à démontrer. Ici : nbPlaceLibre-1  Z

Le nom de l’opération, assertion ou initialisation ayant engendré cette obligation de preuve est indiqué dans la zone 5 sous la forme NomDeMachine.NomOpération.Numéro. B décompose les preuves à faire en sous preuves plus petites. Ici, il faut démontrer que la nouvelle valeur de nbPlaceLibre (i.e. nbPlaceLibre-1) après une opération reserver est toujours un entier naturel. B décompose ça en 2 sous preuves :

-

reservation.reserver.1 : nbPlaceLibre-1  Z (c’est un entier relatif)

-

reservation.reserver.2 : 0  nbPlaceLibre-1 (supérieur ou égal à 0)

Pour parcourir 1 à 1 tous les buts des preuves à faire, il suffit de cliquer sur le bouton [ne] (next). Deux nouveaux boutons apparaissent en rouge demandant si l’on veut sauver ou non la preuve courante [ns] [sv].

Observez la deuxième preuve (clic sur [ne] puis [ns])

(4)

Spécifications formelles 31/12/22 Master Informatique UM2 Le bouton [qu] permet de quitter le prouveur interactif pour revenir à la fenêtre des composants du projet.

Revenez aux composants de reservation.

3.8 Preuve automatique

Depuis la fenêtre des composants, on peut demander à B de tenter de prouver automatiquement les obligations de preuve non encore démontrées. Pour cela on dispose des boutons [p0] et [p1].

Lancez la preuve automatique en force 0

Le chiffre a du triplet (a/b/c) passe à 0. Votre machine est prouvée. L’initialisation et les opérations respectent l’invariant.

Quittez le logiciel (deux clics sur [qu]).

Les fichiers créés

B4free lors de son premier lancement crée un sous répertoire bdb dans le répertoire projB qui contiendra les configurations des différents projets crées et un sous répertoire Archives dans lequel il stockera les projets archivés.

De plus, pour chaque projet créé, la balbulette crée un répertoire dans projB contenant 3 sous-répertoires :

sources pour vos sources ascii (composés avec xemacs ou un autre éditeur) ; chaque machine abstraite est enregistrée dans un fichier texte ayant pour nom le nom de la machine suffixé par .mch. Ex. : la machine maMachine sera dans maMachine.mch ;

exec pour les programmes sources (C ou Ada) engendrés par l’atelier B ;

bdp pour tous les autres fichiers (obligations de preuves, preuves…).

Dans certaines situations (notamment en cas de plantage ou d’arrêt brutal de B4free) certains projets peuvent devenir inaccessibles (message : someone is using…). On peut résoudre ce problème en regardant dans les répertoires correspondants au projet si un fichier caché vide (de nom .lock…) n’est pas présent (ls –a pour les voir et rm pour le supprimer).

Figure

Updating...

References

Related subjects :