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

Fractal ADL France Telecom 17-12-2004 Matthieu Leclercq.

Présentations similaires


Présentation au sujet: "Fractal ADL France Telecom 17-12-2004 Matthieu Leclercq."— Transcription de la présentation:

1 Fractal ADL France Telecom Matthieu Leclercq

2 Plan LADL Lusine fractal ADL Linterface Factory Modules, mini-DTD et AST Architecture de lusine Exemple dextension Ajout dynamique de composants

3 LADL Fractal Fichiers XML respectant une DTD Un fichier contient une définition Une définition est une description dun composant. Interfaces Sous composants (composant composite) Liaisons entre sous composants Implémentation (composant primitif) Contrôleurs Attributs Contrôleurs Julia (julia.cfg)

4 run service Exemple Composants Helloworld du tutorial Fractal La méthode run exécute le client qui appel le serveur grâce à linterface service serverclient HelloWorld

5 Exemple HelloWorld run client server

6 Exemple Lexemple précédent présente un ADL monolithique. Une application est décrite dans un ADL. Techniques pour découper la description dune application dans plusieurs fichiers ADL. Référence dADL Héritage dADL ADL paramétrique

7 Référence dADL LADL du client peut être écrit dans un fichier séparé et référencé dans lADL du composite ... Fichier Client.fractal :

8 Heritage dADL Un ADL peut étendre un autre ADL. Définition du type du composant client : Définition du composant client concret : Héritage multiple Liste de définitions séparées par des virgules Graphe dhéritage linéarisé pour résoudre les conflits

9 Arguments dun lADL Un ADL peut être paramétré par une liste darguments. Le parser remplace textuellement les arguments par leur valeur (chaîne de caractères) ...

10 Exemple avancé Définition dun composant par assemblage «daspects» Exemple : Network Dream Un Network est un composite contenant un ChannelOut et un ChannelIn. Un Network peut être désynchronisé, fiable, causal, … Network ChannelOut Codec ChannelIn in-push out-push

11 Exemple avancé Exemple de l'aspect désynchronisé Placer une file de message devant le ChannelOut Définition de laspect désynchronisé : Définition d'un Network désynchronisé : < definition name="NetworkBuffered" extends="AspectBuffered(this.in-push,ChannelOut.in-push), Network()"/>

12 Exemple avancé < definition name="NetworkBuffered" extends="AspectBuffered(this.in-push,ChannelOut.in-push), Network()"/> Network AspectBuffered NetworkBuffered Network ChannelOut Codec ChannelIn out-push in-push Queue Graphe dHéritage

13 Plan LADL Lusine fractal ADL Linterface Factory Modules, mini-DTD et AST Architecture de lusine Exemple dextension Ajout dynamique de sous composants

14 Linterface Factory Fournit la méthode Object newComponent (String name, Map context) name : nom de la définition à créer context : contient les valeurs des arguments de la définition Association nom de largument valeur Retourne linterface Component du composant créé La Factory est obtenue grâce aux méthodes statiques de la classe FactoryFactory

15 Lusine Fractal ADL Lusine est modulaire et extensible Développé en fractal. Utilise un AST (Abstract Syntaxic Tree) Créé par le parser XML Un nœud correspond à une entité XML Un module défini Une partie de la DTD (mini-DTD) Les interfaces implémentées par les nœuds de lAST

16 Les modules de lADL standard Module Component Module de base Défini la composition : un composant peut contenir dautres composants Module Interface Un composant possède des interfaces Module Binding Les interfaces peuvent être liées Module Implementation Un composant a une implémentation, des contrôleurs Module Argument Une définition peut avoir des arguments...

17 Module de lADL Un module est constitué de Une mini-DTD (fragment de DTD) Un ensemble dinterfaces implementées par les nœuds de lAST Les méthodes suivent une convention de nommage Implémentation générée dynamiquement par ASM Un ensemble de composants intégré à lusine Fractal ADL. Réalisent des traitements spécifiques sur lAST.

18 mini-DTD et interface dAST Exemple du module component interface DefinitionNode { get/setName(); get/setExtends(); } interface ComponentNode { get/setName(); get/setDefinition(); } interface ComponentContainerNode { addComponent(Component c); getComponents(); }

19 Exemple de parsing Definition Name="Server" Interface name="r", role="server" signature=… Component name="client", definition="Client" Component name="server", definition="Server" Binding client="this.r", server="client.r" Binding client="client.s", server="server.s" addInterface()addComponent()addBinding() Node implements DefinitionNode, InterfaceContainerNode, ComponentContainerNode, BindingContainerNode Node implements InterfaceNode

21 Structure de lusine 3 passes Génération dun AST et vérification les contraintes dintégrité (ex : liaisons corrects) Construction dun graphe de taches à exécuter pour réaliser le déploiement Exécution de chaque tache en respectant lordre de précédence. Chaque passe est réalisée par un ensemble de composants spécifiques. Chaque module possède ses propres composants pour chacune des 3 passes.

22 Loader Première passe : les Loaders La première passe est réalisée par une chaîne de Loaders Un Loader délègue au Loader suivant afin dobtenir un AST Le parseur XML est en bout de chaîne Chaque Loader effectue un parcours de lAST afin de vérifier des contraintes spécifique à un module Exemple : le BindingLoader vérifie pour chaque liaisons que les interfaces clientes et serveurs existent et sont compatibles Binding Loader Component Loader Interface Loader Argument Loader XML Loader

23 Première passe : les Loaders Le ComponentLoader mixe plusieurs AST en un seul Résolution des références, de lhéritage et du partage de composant Les Loaders placés en « amont » du ComponentLoader effectuent un parcours de lAST mixer. Les Loader en « aval » parcourent plusieurs AST Le BindingLoader est placé en amont Les liaisons sont vérifiées sur lAST mixé LArgumentLoader est placé en aval Les arguments ont une portée locale à un fichier XML

24 Première passe : les Loaders Loader Binding Loader Component Loader XML Loader load("Helloworld") Interface name="s", role="server" signature=… Content class=… Interface name="r", role="server" signature=… Content class=… Interface name="s", role="client" signature=… Component name="Client" Interface name="r", role="server" signature=… Content class=… Interface name="s", role="client" signature=… Component name="Server" Interface name="s", role="server" signature=… Content class=… load("Helloworld")load("Client")load("Server") Definition Name="Helloworld" Interface name="r", role="server" signature=… Component name="server", definition="Server" Binding client="this.r", server="client.r" Binding client="client.s", server="server.s" Component name="client", definition="Client"

25 Deuxième passe : les Compilers Les Compilers construisent un graphe de taches élémentaires de déploiement Exemples de tache : instancier un composant, ajouter un composant dans un composite, créer une liaison,... Les taches dépendent les unes des autres Pour effectuer une liaison il faut que les deux composants soient créés et ajoutés dans un même composite Lexécution dune tache fournit un résultat utilisable par les taches qui en dépendent La tache dinstanciation fournit le composant instancié aux taches dajout dans un composite ou aux taches de liaison.

26 Deuxième passe : les Compilers Le MainCompilers Effectue un parcours récursif des composants décris dans lAST Exécute les Compilers auxquels il est lié typeBuilder componentBuilder bindingBuilder attributeBuilder implementationBuilder Main Compiler TypeCompilerComponentCompilerBindingCompilerAttributeCompilerImplementationCompiler

27 Troisième passe : les Builders Les Builders sont appelés par les taches lorsquelles sont exécutées. Chaque type de tache a son propre Builder ImplementationBuilder pour les taches dinstanciation BindingBuilder pour les taches de liaison Lensemble des Builders est appelé Backend Fractal ADL fournit plusieurs Backends FractalBackend créé des composants Fractal JavaBackend créé des objets Java StaticFractalBackend génère du code source pour créer des composants Fractal StaticJavaBackend génère du code source pour créer des objets Java

28 Plan LADL Lusine fractal ADL Linterface Factory Modules, mini-DTD et AST Architecture de lusine Exemple dextension Ajout dynamique de sous composants

29 Décrire, dans un ADL, une structure existante ainsi que des composants à y ajouter Les composants existants sont dits legacy server3 client server1 server2 duplicator HelloWorld s s

30 Modification de la DTD Modification apportée à la DTD afin d'intégrer le nouveau module :

31 Le LegacyLoader Nouveau Loader inséré en tête de la chaîne de Loaders Parcourt en parallèle l'AST et la structure à reconfigurer Le composant à reconfigurer est obtenu via le contexte Vérifie que les composants legacy existent et sont compatibles avec leur description ADL Le type des composants legacy doit être un sous type du composant décrit dans l'ADL Loader Leagacy Loader Binding Loader …

32 Le précompilateur Ajout d'une passe de précompilation Insertion de taches d'instanciation « fictives » pour les composants existants Les composants existants ne doivent pas être recréés Ces taches fournissent linstance existante aux taches qui en dépendent Le Builder dajout dans un composite est réécrit Vérifie que le composant nest pas déjà dans le composite Main Compiler TypeCompiler… Main Compiler LegacyCompiler Pre-Post Compiler

33 Perspectives Modules existants Support pour le packaging Ajout dinformation pour le changement dynamique de classe Tache ant pour la « compilation » statique dADL Générer du code source pour déployer rapidement une architecture fixe. ADL de reconfiguration dynamique Déploiement distribué intentionnel


Télécharger ppt "Fractal ADL France Telecom 17-12-2004 Matthieu Leclercq."

Présentations similaires


Annonces Google