ATLAS Data Dictionary
Transcription
ATLAS Data Dictionary
ATLAS Data Dictionary La présentation • Le But • Des cas d ’utilisations (Use Cases) • Les outils • Les développements actuels • L ’évolution : L ’introspection T. Le Flour L.A.P.P 2 L’ environnement L’ équipe • Partie du « Control Framework » de ATLAS Ø Intégrer dans ATHENA Ø Début du projet : Octobre 2000 • L ’ équipe : Ø LAPP : A. Bazan , P.Ghez, T. Le Flour, S. Lieunard Ø LBNL : C. Tull (responsable du projet) T. Le Flour L.A.P.P 3 Pourquoi un « Data Dictionnary » ? • Afin d ’ éviter l ’ intégration fastidieuse d ’un ou plusieurs objets dans le « Framework » • Réutilisation d ’objets déjà présents dans le dictionnaire • Afin de concentrer le développement d ’un objet uniquement au niveau de son comportement T. Le Flour L.A.P.P 4 Pourquoi un « Data Dictionnary » ? • Accès ultérieur aux objets • debugging, visualisation, ... • Intégrer l ’accès aux objets depuis des services de « scripting » • Identifier aisément l ’existence d ’objet a travers leur présence dans le dictionnaire T. Le Flour L.A.P.P 5 La description (1) • Pouvoir décrire simplement un objet pour : Ø sa partie publique • Visibilité de l ’objet : – accès extérieur depuis du code – accès extérieur depuis un langage « script »(PYTHON) Ø sa partie persistante • sauvegarde de l ’objet dans un système de stockage Ø ses relations avec d ’autres objets • relation avec des objets décrits également • relation avec des objets extérieurs T. Le Flour L.A.P.P 6 La description(2) • Plusieurs possibilités : Ø utilisation d ’un langage de programmation courant et utilisé dans le l ’environnement ATLAS : le C++ • Avantages : langage connu, grammaire définie, pas de nouveau langage a apprendre, … • Inconvénients : trop proche de l ’implémentation, pas de moyen de décrire la persistance, ... Ø utilisation du langage de description des documents WEB : XML • Avantages : langage connu, langage de description, outils existent, permet de définir ce que l ’on souhaite, ... • Inconvénients : pas de grammaire définie, fastidieux a écrire ? , … Ø utilisation du langage de description associé a CORBA : IDL • Avantages : langage connu, langage de description d ’interface, grammaire définie • Inconvénients : besoins d ’extensions de la grammaire, ... T. Le Flour L.A.P.P 7 Le choix • Grammaire de base : IDL + ? = ? Ø Relation inter-objet : • adjonction d ’éléments de syntaxe ODL • mot-clé RELATIONSHIP Ø Visibilité • ajout du mot-clé : private Ø Accès a des objets externes non décrits • ajout du mot-cle : extern ADL = Athena Description Language T. Le Flour L.A.P.P 8 La génération du code : Une vue générale Compiler Back End Source ADL Compiler Front End C++,Java,... Compiler Back End C++,Java,... Compiler Back End C++,Java,... T. Le Flour L.A.P.P 9 Les « Uses cases » (2/3) La génération de code Choisir Back-End Configurer Back-End Générer Code Chaque back-end est sélectionnable individuellement et dynamiquement accessible Certains back-end peuvent être configurables Ex: La persistance peut être configurée de plusieurs façons : Blob DDL adéquat utilisation d ’un DDL existant Démarrage de la génération de code et de la représentation interne d ’une description : Meta-Object Representation T. Le Flour L.A.P.P 10 Les « Uses Cases » (3/3) L’accès aux objets décrits(Run-Time) Lister les objets décrits Accéder a tous les objets crées et associés a une description ADL Retrouver un objet décrit Créer un objet décrit Détruire un objet décrit Accès aux données membres Invoquer une méthode Accéder a la description d ’un objet Accéder a un objet associé a une description ADL sur sélection (Critères,….) Créer ou détruire un objet associé a une description ADL dans l ’espace « transient » (TES) Connaissant une référence, dans le « TES », d ’un objet décrit, retrouver et afficher sa description d ’origine Consulter, Modifier le contenu d ’un objet par connaissance d ’une réf. et d ’une description ADL ==> Mécanismes d ’introspection 11 Les outils • JavaCC Ø The Java Parser Generator (http://www.webgain.com/products/metamata/java_doc.html) Ø But : • génération d ’un code JAVA d ’analyse syntaxique a partir d ’une description de grammaire Ø Avantages • beaucoup de grammaires disponibles (IDL, IDL, ODL, HTML, XML, PERL, …) • Adaptable à des besoins spécifiques T. Le Flour L.A.P.P 12 Les outils • JavaCC(suite) Ø Principe • JJTREE – analyse syntaxique de la grammaire – génération des sources JAVA (A Abstract Syntax Tree : AST AST) : Ø chaque nœud de l ’arbre de syntaxe correspond à une classe • JAVACC – génération du code (JAVA) du « Parser » – génération du code permettant le parcours de l ’arbre Ø basé sur le « Visitor Pattern » Ø Utilisation • Analyse syntaxique du fichier d ’entrée(format ADL) • Interrogation du contenu (parcours de l ’arbre) T. Le Flour L.A.P.P 13 JavaCC : Les Grammaires • Grammaire ADL void interface_dcl() : {} { interface_header() "{" interface_body() "}" } void interface_header() : {} { "interface" identifier() [ inheritance_spec() ] } T. Le Flour L.A.P.P ASTinterface_dcl ASTinterface_dcl JAVA JAVA File File ASTinterface_header ASTinterface_header JAVA JAVA File File 14 JavaCC : Le principe ADLParser Visitor (interface) SimpleNode <<implements>> AST specification AST Interface_dcl AST interface_header AST xxxxx Accepte Accepte le le visiteur visiteur Méthode Méthode :: accept(…) accept(…) Génération JJTREE Nœud Nœud principal principal 1. 1. Accept(…) Accept(…) T. Le Flour L.A.P.P ADLParser (Visitor) Génération JavaCC 2. (…) 2. Visit Visit(…) a. a. traitement traitement du du nœud nœud courant courant b. b. accept accept sur sur tous tous les les enfants du noeud enfants du noeud 15 De la description à l’utilisation Back Back End End Code Cxx,Java,... Source ADL ADL Parser JavaCC ADL Analyzer Meta Objet Representation Back Back End End Code Cxx,Java,... Compiler Front End Back Back End End Code Cxx,Java,... T. Le Flour L.A.P.P 16 La structure interne • similitude avec la structure utilisée par JAVA pour les mécanismes de réflexion GenObject InterfaceDefinition 0..* 1 RelationDefinition ElementaryDefinition 0..* 0..* 0..* 0..* 1 0..* StructureDefinition AttributeDefinition1 0..* 0..* 0..1 TypeDefinition 0..* 0..* 1 OperationDefinition 1 0..* T. Le Flour L.A.P.P ParameterDefinition 17 ATHENA : La structure • Basé sur GAUDI (Framework de LHCb) T. Le Flour L.A.P.P 18 Intégration dans ATHENA • Fournir la « machinerie » pour intégration dans ATHENA Ø Génération des squelettes d ’implémentation (Code Génération) • Enregistrement dans le « Transient Event Store » • génération automatiques des méthodes d ’ accès au données-membres Ø Génération des « converteurs » pour la persistance • Génération de fichiers DDL pour la persistance(Objectivity) • Génération du code des converteurs Ø Génération des accès via le scripting • SWIG(Simple Wrapper and Interface Generator) actuellement , BOOST, Introspection • «Adapter Adapter Pattern » pour l ’accès aux objets existants T. Le Flour L.A.P.P 19 Diagramme de classe : Vue Utilisateur LArRawChannel LArCell LArDigit LArRawChannel.adl LArCell.adl LArDigit.adl Data Dictionnary : Description Code Generator Backend Activation Scripting BackEnd Activation DataObject LArCellBase Converter d_object LArCellAdapter Wrapper LArCell LArCellAdapter Code Generator Back End Scripting Back End Non generated class Converter BackEnd Activation LArCell NaiveObjyCnv T. Le Flour L.A.P.P LArCell NaiveObjy LArDigit VectorObjy DDL Schéma Converter Back End 20 Intégration dans ATHENA L ’introspection • Data Dictionary Service Interface d ’accès 3.Enregistrement Algorithm Objet ADL SERVICES Liste des objets enregistres Description d ’un objet invocation de méthode consultation « data member » 1.Création 2.Enregistrement Accès Description Scripting Browser Transient Event Store Objets ADL Repository T. Le Flour L.A.P.P Accès Module Instrospection 21 Situation actuelle • Un prototype existe depuis fin Avril et intègre : Ø Génération des squelettes de code Ø Génération des « converteurs » Ø Génération des accès a travers le langage de « scripting » • Ce qu ’il reste a faire : Ø Analyse et implémentation du mécanisme d ’introspection Ø Etude des évolutions d ’une description • conséquences sur la génération de code • conséquences sur l’ accès aux données Ø Plus tard(peut-être) • Outils de gestion – « Browser » de description, Environnement graphique plus évolué ? T. Le Flour L.A.P.P 22