La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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 Jean-Louis Heudiasyc UMR CNRS 6599 Université de Technologie de Compiègne

2 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Plan Quoi de neuf ? Exemple de mise en place dune extension B. Conclusion

3 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Quoi de neuf ? ABTools 0.3.2

4 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 É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

5 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Outils utilisés ANTLR 2.7.2a –www.antlr.org JAVA 2 v 1.4

6 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Exemple dextension Prototypage du B événementiel

7 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 B événementiel Projet MATISSE : Documentation –Manuel de Référence Défini comme une extension du MR B –Manuel Utilisateur Bevent2B Un outil utilisant le kernel

8 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Intégration dans ABTools Création de larbre syntaxique: –Définir un lexer et un parser Décompilation –Définir un parcoureur darbre (treewalker) Génération dun code B équivalent –Définir un parcoureur darbre (treewalker)

9 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Parsing Nous disposons dune 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

10 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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" ); } ) ;

11 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Description dun 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

12 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Description dun 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! ;

13 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Rappel MR B Instruction Instruction_corps_opération Substitution Substitution_corps_opération

14 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 ANY avec post-condition (1) Substitution_unbounded_choice_postcondition ::= "ANY" Ident_ren+, "WHERE " Predicate "THEN" Substitution "POST" Predicate "END"

15 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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! ;

16 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Les raffinements (1) Refinement ::= "Refinement" Header Clause_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

17 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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! ;

18 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Variant MR –Clause_variant ::= VARIANT Variant –Variant ::= Expression_arithmetical ABTools –variant :B_VARIANT^ a_variant; –a_variant : predicate ; –Plus une règle de typage

19 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Variable « prime » REFINEMENT toy_1 REFINES toy VARIABLES aa, bb INVARIANT bb: 0..aa & (bb=aa y bb=bb) VARIANT aa-bb INITIALISATION aa, bb := 0, 0 EVENTS ev1 = ANY xx WHERE xx: N & bb = aa THEN aa, bb := xx, 0 END ;ev2 = SELECT bb

20 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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

21 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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 ;

22 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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;

23 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Mais ça ne marche pas …. Il nest 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

24 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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

25 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Parcoureur darbre class EventTreeWalker extends TreeWalker; options { importVocab = BEvent; buildAST = false; ASTLabelType = "MyNode"; codeGenMakeSwitchThreshold = 3; codeGenBitsetTestThreshold = 4; k = 1; }

26 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Traitement de la machine machine : #(tt:B_SYSTEM { index.Add(); printToStringln(out.Clause(tt.getText())); } paramName { printToStringln(""); } clauses { printToString(out.Clause("END")); } ) ;

27 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Conclusion

28 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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

29 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Quelques métriques Temps passé –Parseur moins dun jour –Décompilateur \\ –Evolution du typeur\\

30 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 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

31 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Résultats Parsing et décompilation de tous les exemples présentés dans le MR et MU.

32 UMR CNRS 6599 Heuristique et Diagnostic des Systèmes Complexes CNAM – 13 et 14 Juin 2002 Download


Télécharger ppt "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."

Présentations similaires


Annonces Google