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