Présentation Interception Log2XMI XMI Perspectives CorbaTrace Florian Champalle Audrey Jaccard Etienne Juliot Nicolas Lemoullec Antoine Parra del Pozo Présentation Log2XMI Interception XMI Perspectives
Présentation Interception Log2XMI XMI Perspectives Présentation
Interception Log2XMI XMI Perspectives Objectifs Débuguer des applications distribuées Créer des outils d’interception de messages entre objets Corba Créer des fichiers journaux (logs) Visualiser sous forme de diagrammes de séquences Présentation
Interception Log2XMI XMI Perspectives Projet initial Création d’objets génériques Mise en place de la structure d’interception –Intercepteurs spécifiés par la norme Corba –Politique + niveau d’interception Création des fichiers journaux Visualisation sous LaTeX Présentation
Interception Log2XMI XMI Perspectives Exemple d’un fichier journal OPEN_FLUX=Friday, June 8, :57:26 PM GMT+01:00= >>>SEND_REQUEST DATE=Friday, June 8, :57:30 PM GMT+01:00= CLIENT_ID=client SERVANT_ID=Hello MSG_ID= OPERATION=say_hello_to ARGUMENTS=3 ARG=in string(client) ARG=in string(502196) ARG=in string(le client du POA 1) OPTIONS request id = 0 exceptions = (no exceptions) response expected = true END_OPTIONS Présentation
Interception Log2XMI XMI Perspectives Problèmes rencontrés Identification –Client –Message Synchronisation des horloges systèmes Problème d’exclusion mutuelle Présentation
Interception Log2XMI XMI Perspectives Diagrammes de séquences Présentation
Interception Log2XMI XMI Perspectives Cahier des charges Interception plus souple Application de filtres Représentation graphique Présentation
Interception Log2XMI XMI Perspectives Planning Présentation
Interception Log2XMI XMI Perspectives Architecture générale Présentation
Interception Log2XMI XMI Perspectives Interception
Présentation Interception Log2XMI XMI Perspectives Choix technologiques Possibilités d’interceptions –TCP/IP –IIOP –Intercepteurs portables Norme Corba 2.3 Interception
Présentation Interception Log2XMI XMI Perspectives Principe Interception
Présentation Interception Log2XMI XMI Perspectives Dynamique Interception
Présentation Interception Log2XMI XMI Perspectives Problématique Problèmes –Identification –Date –Architecture –Simplicité d’utilisation Interception Solutions – Service Context – Isolement fonctionnel – Génération XML
Présentation Interception Log2XMI XMI Perspectives Service Context Interception
Présentation Interception Log2XMI XMI Perspectives Modèle des intercepteurs Interception
Présentation Interception Log2XMI XMI Perspectives Mise en place Simplicité Standardisation Implémentation chez le client ORB orb = org.omg.CORBA.ORB.init(args, props); org.omg.CORBA.Object obj = orb.string_to_object(ref_IOP); Hello hello = HelloHelper.narrow(obj); System.out.println("Receive : " + hello.say_hello("Titi")); orb.destroy(); Interception
Présentation Interception Log2XMI XMI Perspectives Mise en place Simplicité Standardisation Implémentation chez le client InterceptorClient interceptorClient = new InterceptorClient(); ORB orb = org.omg.CORBA.ORB.init(args, props); org.omg.CORBA.Object obj = orb.string_to_object(ref_IOP); obj = interceptorClient.active_interception(obj, orb); interceptorClient.activate_log(orb, "My Name"); Hello hello = HelloHelper.narrow(obj); System.out.println("Receive : " + hello.say_hello("Titi")); orb.destroy(); Interception
Présentation Interception Log2XMI XMI Perspectives Log2XMI
Présentation Interception Log2XMI XMI Perspectives Log2XMI
Présentation Interception Log2XMI XMI Perspectives Architecture de Log2XMI 5 étapes : Log2XMI Parsage des logs Fusion des demi-messages Synchronisation Filtrage des données Génération du fichier XMI
Présentation Interception Log2XMI XMI Perspectives Les logs Le choix de XML : lisible très répandu standardisé SAX et DOM adapté aux transformations Log2XMI
Présentation Interception Log2XMI XMI Perspectives Un exemple de Log Log2XMI
Présentation Interception Log2XMI XMI Perspectives Messages parsés Log2XMI
Présentation Interception Log2XMI XMI Perspectives Fusion des Messages 1/2 But de la fusion Le procédé Log2XMI ClientServeur Message de type « request » Message de type « reply » Message de type « exception »
Présentation Interception Log2XMI XMI Perspectives Fusion des Messages 2/2 Cas particulier des messages incomplets pas de messages perdus en XMI type de message BROKEN_xxx utilisation d’un objet et d’une date « inconnus » Log2XMI
Présentation Interception Log2XMI XMI Perspectives Synchronisation des Messages Problématique : messages instantanés en XMI Simplification du problème : conserver les messages les plus « rapides » Log2XMI
Présentation Interception Log2XMI XMI Perspectives Synchronisation des Messages Trois étapes : 1) évaluation des arcs du graphe à partir des messages logués Log2XMI
Présentation Interception Log2XMI XMI Perspectives Synchronisation des Messages 2) estimation des décalages par rapport à l’objet de référence Log2XMI
Présentation Interception Log2XMI XMI Perspectives Synchronisation des Messages 3a) mise à jour des dates d’émission et de réception des messages 3b) préparation de la génération XMI : tri des messages Log2XMI
Présentation Interception Log2XMI XMI Perspectives Synchronisation des Messages Futures évolutions : estimation des décalages encore trop imprécise amélioration avec le calcul des distances Log2XMI
Présentation Interception Log2XMI XMI Perspectives Le système de filtre Pourquoi des filtres ? Fichier de filtre - défini dans la DTD Système de filtre inclusif Deux niveaux de filtrage : - global - sur l’objet Log2XMI
Présentation Interception Log2XMI XMI Perspectives Le système de filtre Quatre types d’informations filtrables : types de messages dates (before, after, between) opérations (nom), arguments (positionnés, typés) objets (nom) et ses sous-filtres Log2XMI
Présentation Interception Log2XMI XMI Perspectives exemple de filtre Log2XMI
Présentation Interception Log2XMI XMI Perspectives Processus de génération XMI Pour chaque message : Localiser la classe, et le rôle Sélectionner l’opération du bon objet Ajouter le message Puis : Ajouter l’extension à la fin Générer le fichier Log2XMI
Présentation Interception Log2XMI XMI Perspectives XMI et diagrammes XMI
Présentation Interception Log2XMI XMI Perspectives XMI
Présentation Interception Log2XMI XMI Perspectives Le standard XMI Qu’est-ce que XMI ? –Standard OMG –Sauvegarde UML en XML Utilisation de XMI dans notre projet –Indépendance des modules –Indépendance de la visualisation XMI
Présentation Interception Log2XMI XMI Perspectives XMI: structure et extensions Structure des documents –Sous forme d’objets XMI Le problème des extensions –Stocker la représentation graphique –Propriétaire à chaque logiciel XMI
Présentation Interception Log2XMI XMI Perspectives Les APIs XMI Structure –Utilise DOM –Correspondance avec objets XMI –Évolutivité Problèmes rencontrés –Écriture des extensions –DTD, indentation Utilisation simple et transparente XMI
Présentation Interception Log2XMI XMI Perspectives Visualisation des diagrammes Avec MagicDraw UML –Pourquoi MagicDraw UML ? –Ouvrir le fichier : c’est fini Avec Rational Rose –Pourquoi Rational Rose ? –Le plugin XMI de Unisys –Petits problèmes Graphiques Meta modèle XMI
Présentation Interception Log2XMI XMI Perspectives Résultat MagicDraw XMI
Présentation Interception Log2XMI XMI Perspectives L’application xmi2tex XMI Xmi2tex Fichier XMI Fichier XSL Fichier DTD Fichier TEX Latex Fichier DVI Librairie MSC
Présentation Interception Log2XMI XMI Perspectives Résultat latex XMI
Présentation Interception Log2XMI XMI Perspectives
Présentation Interception Log2XMI XMI Perspectives Site web Utilité Licence LGPL Hébergement chez TuxFamily Développement PHP Promotion Perspectives
Présentation Interception Log2XMI XMI Perspectives Conclusion Gestion d’équipe Bilan Evolutions –C++ –Interface graphique –Projet GNU Pérennité de Corba Perspectives
Présentation Interception Log2XMI XMI Perspectives Questions ????????? Et maintenant …………..