Meta Object Facility Gestion de «meta objets» & meta meta modélisation Xavier Le Pallec Plan 1
Auteur : MOF : généralités L OMG en 1997-1998. Acteur principal DSTC : Centre Recherche sur les Systèmes distribués (workflow, gestion de connaissances, ) Qu est-ce que c est : un ensemble d éléments de (meta (2) ) modélisation permet de REPRESENTER des meta modèles (UML, Java, OMG-IDL, meta modèle workflow WfMF, ) But principal : - Gérer des meta modèles à partir d objets CORBA. Proposer environnement de développement distribué basé sur CORBA Etat d avancement : - Spécifications ± finies (prochaine soumission 30 Juin 1999) - pas de produit MOF (prototypes ou projets DSTC, UREP?) (rapide aperçu du) Fonctionnement de MOF Classes MOF Instances de classes MOF décrivant un meta modèle (UML, Java) Ces instances stockent des éléments (de type attribut, opération, contraintes, ) qui deviendront les caractéristiques des éléments du meta modèle Interface ClassUMLClass { Class create_class ( ); <liste attributs de classes> } <liste méthodes de classes> } Mapping en OMG-IDL Interface ClassUML { { } <liste attributs d instances> <liste méthodes d instances> 2
Tout d abord LE référentiel selon l OMG MOF et le meta modèle Java MOF::Class MOF::Attribute i i i JavaClass contains methods type Multiplicity =0..* JavaMethod contains i Java.awt.Frame JavaMethod[] getmethods( ) addmethod(javamethod jm) Attribut ReturnType ATTENTION ce n est pas la classe java.awt.frame mais une représentation 3
De manière pratique, cela va donner compiler et lancer Accès aux objets Corba par CorbaScript, pour tester : CorbaScript V1.2, 1999 >>> >>>x=objet de type JavaClassClass >>>a=x.create_javaclass ( Frame ) >>>a.setsuper( Window ) >>>a.addattributes( menubar ) Meta modèle Java en pratique PLAN Phase I Phase II Phase III Phase IV Phase V Meta modélisation mapping en IDL Implémentation Exécution Attention 4
Meta modèle Java en pratique phase I - meta modélisation outil de modélisation et son paquetage MOF un concepteur Mof::Class Mof::Operation Mof::Association JavaClass JavaMethod JavaAttribute Instances d entités MOF représentant le meta modèle Java Meta modèle Java en pratique phase I - meta modélisation outil de modélisation et son paquetage MOF un concepteur Mof::Class Mof::Operation Mof::Association JavaClass JavaMethod JavaAttribute Instances d entités MOF représentant le meta modèle Java 5
JavaMethod Supertypes : JavaClass or Mof::Class name : «JavaMethod» annotation : «sert à créer des méthodes Java» Contents (ref) : instances de Mof::Attribute, Mof::Operation, Mof::Constraints, ModelElement lookupelement ( name ) Boolean nameisvalid () ModelElement resolvequalifiedname (name) Constraints Meta modèle Java en pratique phase I bis - que contient le meta Java? exemple : JavaMethod Squelette pour définir les méthodes java. Informations propres à JavaMethod (MOF) : - attribut : name, annotation, issingleton - opérations : lookupelement, nameisvalid, Informations propres à JavaMethod (Java) : instances contenues dans le NameSpace instances de Mof::Attribute (ex : NbMethods), instances de Mof::Operation (ex : GetMethod), (au choix) Informations propres à une méthode (Java): instances contenues dans le NameSpace instances de Mof::Attribute (paramètres, type-retour, visibilité, ), (au choix) Meta modèle Java en pratique phase II - mapping en IDL JavaClass JavaMethod JavaAttribute Mapping automatique outil de modélisation Mapping «à la main» BON COURAGE! NB: On reste sur l exemple de JavaMethod Interface CORBA pour le type JavaMethod Interface CORBA pour les méthodes Java 6
Meta modèle Java en pratique phase II bis que contiennent les interfaces CORBA? Interface CORBA pour le type JavaMethod Interface CORBA pour les méthodes Java Interface JavaMethodClass { JavaMethod create_javamethod ( ); integer getnbmethods ( ); JavaMethod getmethod (integer n); } Interface JavaMethod { JavaType getreturntype ( ); void setreturntype ( JavaType ) ; JavaParameter getparameter ( integer n ); void setparameter (integer n, JavaParameter j); } Meta modèle Java en pratique phase II ter - on trouvera surement Interface CORBA pour les classes Java Interface JavaClass { String getname ( ); JavaClass getsuper ( ) ; JavaMethod[] getmethods ( ); void addmethod (JavaMethod m); } JavaAttribute[] getattributes ( ); 7
Meta modèle Java en pratique phase III - Implémentation Interfaces CORBA JavaAttributeClass JavaMethod JavaInterface JavaClass Precompilation Precompilation Souches clientes : classes permettant d invoquer les objets CORBA MofJava. Squelettes d implémentation : classes permettant d implémenter les objets CORBA MofJava et, de répondre aux invocations distantes. NB : Dans la Précompilation, on choisit un langage cible les classes générées le seront dans ce langage (Java, C++, SmallTalk, ) Implémentation : création de classes héritant de celles-ci mais avec les méthodes (comme getreturntype de JavaMethod) implémentées. Meta modèle Java en pratique phase IV - Exécution compiler et lancer Accès aux objets Corba par CorbaScript, pour tester : CorbaScript 1.1 Copyright >>>x=objet de type JavaClassClass >>>a=x.create_javaclass ( Frame ) >>>a.setsuper( Window ) >>>a.addattribute( menubar, JavaPrivate) ou >>>a.addattribute( JavaAttributeClass.create_JavaAttribute( menubar )) 8
Meta modèle Java en pratique phase V - Attention!! Ces opérations : - création de classe - fixer la classe mère - ajouter un attribut ne touche que les objets CORBA et pas les classes et objets Java représentés! CorbaScript 1.1 Copyright >>>x=objet de type JavaClassClass >>>a=x.create_javaclass ( Frame ) >>>a.setsuper( Window ) >>>a.addattribute( menubar, JavaPriv Ex : Monde CORBA Monde Java t >>>mc=instance de JavaMethodClass >>>m=mc.create_javamethod(«flash») >>>a.addmethod(m) a=new Frame(«FenetreEssai») a.flash(); Passe pas a.flash(); ou Passe toujours pas! c=a.getclass(«frame») m=c.getmethod(«flash») m.invoke(a,null) Non plus! Meta modèle Java en pratique phase V bis - En résumé On a créé des objets CORBA permettant de la modélisation en Java? pour mais générer des squelettes de classes Java avoir des représentations dynamiques en aucun cas des opérations de ces objets CORBA ne peuvent modifier des classes Java au moment de l exécution Java ne le permet pas (ne dispose pas de mécanisme d intercession) Par contre, en Smalltalk ce serait possible, car ces mécanismes dynamiques existent! MOF = MODELISATION à base de meta objets? 9
INTERET??? retour sur Les 4 scénarios Développement d un logiciel (AGL) Gestion de «typage» (Interface Repository) Gestion d information (WEB) Gestion d entrepôts de données (unification de plusieurs BDs) MOF et le développement d un logiciel (partie I) Développement d un logiciel Analyse des besoins Conception de la structure de l application Implémentation Note : Chaque phase a son meta modèle, dans l ordre : RM-ODP, UML, Java 10
MOF et le développement d un logiciel (partie II) Meta modèle de ODP écrit en MOF Meta modèle de UML écrit en MOF Meta modèle de Java écrit en MOF Meta modèle de mapping entre ODP & UML écrit en MOF Meta modèle de mapping entre UML & Java écrit en MOF Outil basé sur MOF qui permet l instanciation de meta modèle & le mapping entre meta modèle concepteur MOF et le développement d un logiciel (partie III) modèle en ODP outil MOF * modèle en UML modèle en Java Modifications du modèle en UML outil MOF * Modifs repercutées en Java 11
MOF et le développement d un logiciel (partie IV) - Gain de temps - Plus grande cohérence entre les modèles - Possibilité de modifier un des meta modèles en direct (répercussion sur les autres modèles) - Un peu lent (vu toutes les couches) - Complexe MOF et la gestion de types - partie I Exemple : l Interface Repository de CORBA [1] Demande ref sur interface i1 du module mod I.R [2] référence sur Lookup(«mod:i1») [1] Réf.[2] Objet CORBA de type container décrivant l interface i1 Contents()[3] «Client» CORBA [4] Liste d objets représentant attributs & opérations de i1 12
MOF et la gestion de types - partie II Remplacer l IR par ensemble d objets IDL/MOF Meta modèle IDL écrit en MOF mapping en IDL Objet CORBA qui gère toutes les instances IDL/MOF créées Interface IdlInterfaceClass { IdlInterface create_idlinterface (String ); }; Objet CORBA décrivant une interface IDL (MOF) MOF et la gestion de types - partie III Comparaison I.R renvoie Objets décrivant des interfaces IDL Objet CORBA qui gère toutes les instances IDL/MOF créées renvoie Objets décrivant et modifiant (si l implantation suit) des interfaces IDL I.R + souple 13
MOF et la gestion d informations Définition d un modèle d information en MOF pour une application Serveurs, basés CORBA, de meta objets qui gèrent l information Meta objets accessibles comme tout objet CORBA (donc de l application) Définition d un meta modèle en MOF pour des modèles d information d un domaine particulier Environnement de développement avec génération de serveurs de données et d applications, basés CORBA, à partir des modèles d informations. (ex du Web) Gestion d entrepôts de données (Data Warehouse Management) MOF n est pas limité aux meta-modèles, langages orientés objets Modélisation de Bases de Données Relationnelles (gérer le concept de table, de tuple, ) Data Data Warehouse Warehouse : : 1 requête sur un système composé de plusieurs BDs différentes cache de données, traduction de requêtes, MOF comme base pour la traduction de requêtes 14