32
CNAM – 13 et 14 Juin 2002 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes ABTools : un environnement de prototypage pour la méthode B Boulanger Jean-Louis Jean-Louis.Boulanger@ hds . utc . fr Heudiasyc UMR CNRS 6599 Université de Technologie de Compiègne

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

Embed Size (px)

Citation preview

Page 1: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

ABTools : un environnement de prototypage pour la méthode B

Boulanger [email protected]

Heudiasyc UMR CNRS 6599

Université de Technologie de Compiègne

Page 2: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Plan

• Quoi de neuf ?

• Exemple de mise en place d’une extension B.

• Conclusion

Page 3: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Quoi de neuf ?

ABTools 0.3.2

Page 4: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

État des lieux

• B Classic– Lexeur/Parseur : OK– Décompileur graphique : OK– Décompileur textuel (ASCII, XML, LATEX et HTML) : OK– Typeur (générique) : Finalisation– Normalisateur (retrait des définitions) : Finalisation– GOP : Début

• B Prime– Lexeur/Parseur : OK– Décompileur graphique : OK– Décompileur textuel (ASCII, XML, LATEX et HTML) : OK

• B Système– Lexeur/Parseur : OK– Décompileur graphique : OK– Décompileur textuel (ASCII, XML, LATEX et HTML) : OK

• B Event– Lexeur/Parseur : OK– Décompileur graphique : OK– Décompileur textuel (ASCII, XML, LATEX et HTML) : OK

Page 5: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Outils utilisés

• ANTLR 2.7.2a– www.antlr.org

• JAVA 2 v 1.4

Page 6: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Exemple d’extension

Prototypage du B événementiel

Page 7: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

B événementiel

• Projet MATISSE :• http://www.atelierb.societe.com/evt2b/evt2b.html

• Documentation– Manuel de Référence

Défini comme une extension du MR B

– Manuel Utilisateur Bevent2B

• Un outil utilisant le kernel

Page 8: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Intégration dans ABTools

• Création de l’arbre syntaxique:– Définir un lexer et un parser

• Décompilation– Définir un parcoureur d’arbre (treewalker)

• Génération d’un code B équivalent– Définir un parcoureur d’arbre (treewalker)

Page 9: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Parsing

• Nous disposons d’une grammaire déjà validée, et tout comme cela est fait dans le MU, il « suffit » de l’étendre.– BEvent hérite de B

– BEvent surcharge certaines règles de B

– BEvent introduit de nouvelles règles

Page 10: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Composant B système

• Component ::=Abstract_system

| Refinement*

• composant [boolean loadLinked] :{

LoadLinked = loadLinked;}( machine

| refinement| /* Empty sources files are *not* allowed. */

{ System.err.println ( "ABParser Warning : Empty

source file!" ); errors.WSyntaxic ( "BEvent.g", "The file is empty" ); }

);

Page 11: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Description d’un système (1)

System_abstract ::="SYSTEM" Header

Clause_system_abstract*"END"

Clause_system_abstract ::=Clause_constraints

| Clause_sees| Clause_sets| Clause_concrete_constants| Clause_abstract_constants| Clause_properties| Clause_concrete_variables| Clause_abstract_variables| Clause_invariant| Clause_assertions| Clause_initialization| Clause_events| Clause_modalities

Page 12: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Description d’un système (2)

• machine :B_SYSTEM^

paramName( constraints| sees| sets| constants| aconstants| properties| variables| cvariables| invariant| assertions| initialisation_mch| events_mch| modalities)*

B_END! EOF!

;

Page 13: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Rappel MR B

• Instruction

• Instruction_corps_opération

• Substitution

• Substitution_corps_opération

Page 14: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

ANY avec post-condition (1)

Substitution_unbounded_choice_postcondition ::= "ANY"

Ident_ren+”,” "WHERE "   

Predicate "THEN"

Substitution "POST"

Predicate "END"

Page 15: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

ANY avec post-condition (2)

• substitution_unbounded_choice_postcondition_mch :

B_ANY^ listIdentifier

B_WHERE! expression

B_THEN! substitution_mch

B_POST!predicate

B_END!;

Page 16: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Les raffinements (1)

Refinement ::="Refinement" HeaderClause_refinement*

"END"Clause_refinement ::=

Clause_constraints| Clause_sees| Clause_variant| Clause_sets| Clause_concrete_constants| Clause_abstract_constants| Clause_properties| Clause_concrete_variables| Clause_abstract_variables| Clause_invariant| Clause_assertions| Clause_initialization| Clause_events| Clause_modalities

Page 17: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Les raffinements (2)

• refinement :B_REFINEMENT^

paramName ( refines | constraints | sees | sets | aconstants | constants | properties | variables | cvariables | invariant | variant

| assertions | initialisation_ref | events_ref | modalities)*B_END!EOF!

;

Page 18: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Variant

• MR– Clause_variant ::= “VARIANT” Variant

– Variant ::= Expression_arithmetical

• ABTools– variant : B_VARIANT^ a_variant ;

– a_variant : predicate ;

– Plus une règle de typage

Page 19: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Variable « prime »

REFINEMENTtoy_1

REFINEStoy

VARIABLESaa, bb’

INVARIANTbb’: 0..aa & (bb’=aa y bb’=bb)

VARIANTaa-bb’

INITIALISATIONaa, bb’ := 0, 0

EVENTSev1 = ANY xx WHERE xx: N & bb’ = aa THEN aa, bb’ := xx, 0 END

; ev2 = SELECT bb’<aa THEN bb’ := bb’ +1 ENDEND

• Confusion avec a’b qui est la manipulation de champs de record

Page 20: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Les Events du MR

Clause_events ::= "EVENTS" Event+";" 

Event ::= Ident_ren [ref Ident_ren+","] "="Substitution_event_body

Substitution_event_body ::=Substitution_bloc

| Substitution_postcondition| Substitution_selection| Substitution_selection_postcondition| Substitution_unbounded_choice| Substitution_unbounded_choice_postcondition

Page 21: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Pour une machine

• eventMch :nameRenamed

c:B_EQUAL^ {#c.setType(OP_DEF);} substitution_event_mch

;

• substitution_event_mch :substitution_mch

| substitution_block_postcondition_mch| substitution_precondition_postcondition_mch| substitution_selection_mch| substitution_selection_postcondition_mch| substitution_unbounded_choice_mch| substitution_unbounded_choice_postcondition_mch;

Page 22: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Et pour un raffinement

• eventRef :an_event_ref

c:B_EQUAL^ { #c.setType(OP_DEF);} substitution_event_ref ;

• an_event_ref : nameRenamed (B_REF^ listNameRenamed)? ;

• listNameRenamed :nameRenamed (B_COMMA^ nameRenamed)*;

• substitution_event_ref :parallele_ref

| substitution_block_postcondition_ref| substitution_precondition_postcondition_ref| substitution_selection_ref| substitution_selection_postcondition_ref| substitution_unbounded_choice_ref| substitution_unbounded_choice_postcondition_ref;

Page 23: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Mais ça ne marche pas ….

• Il n’est pas possible de définir un k permettant de distinguer les substitutions B des substitutions POST

• Exemple– BEGIN substitution END

– BEGIN substitution POST predicat END

Page 24: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Une « bonne » solution

• Surcharger les règles définissant les substitutions:

• substitution_event_mch : substitution_mch ;• Substitution_block_mch :

« BEGIN »^ substitution_mch (« POST »^ predicat)? ;

On a un arbre du type: POST

BEGIN

substitution

predicat

Page 25: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Parcoureur d’arbre

• class EventTreeWalker extends TreeWalker;options{

importVocab = BEvent; buildAST = false; ASTLabelType = "MyNode"; codeGenMakeSwitchThreshold = 3; codeGenBitsetTestThreshold = 4;

k = 1;}

Page 26: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Traitement de la machine

• machine :#(tt:B_SYSTEM

{index.Add();printToStringln(out.Clause(tt.getText()));

} paramName{

printToStringln("");} clauses{

printToString(out.Clause("END"));}

);

Page 27: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Conclusion

Page 28: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Ce qui est fait …….et Ce qui reste à faire

• Prévu:– Parser B Event : OK

– Décompileur B Event : OK

– Typeur : OK

– Générateur de B : A faire

• A faire– GOP

– Animateur de spécification B Event

Page 29: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Quelques métriques

• Temps passé – Parseur moins d’un jour

– Décompilateur \\

– Evolution du typeur \\

Page 30: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Intérêts

• Prototypage rapide,– Un langage unique de description

– Ce langage manipule directement les AST

– Peu de code manuel

– Génération de Code (C++, JAVA)

– Génération de DOC (HTML, XML)

• Obtenir une formalisation des concepts mis en place

Page 31: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Résultats

• Parsing et décompilation de tous les exemples présentés dans le MR et MU.

Page 32: UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ABTools : un environnement de prototypage pour la méthode B Boulanger

CNAM – 13 et 14 Juin 2002

UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes

Download

http://www.chez.com/abtools