1 / 32

Création d’un langage d’action pour un logiciel MDA

Création d’un langage d’action pour un logiciel MDA. Soutenance de DRT GEII Proposé par l’UHA (Essaim) Réalisé au sein d’ObjeXion Software. ObjeXion. Prototyping. suite. Fichier. XMI. Model. FacSimile. Prototyper. Formatage. Alimentation. Modèle. sous. ObjeXion. Rational. Link.

Download Presentation

Création d’un langage d’action pour un logiciel MDA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Création d’un langage d’action pour un logiciel MDA Soutenance de DRT GEII Proposé par l’UHA (Essaim) Réalisé au sein d’ObjeXion Software

  2. ObjeXion Prototyping suite Fichier XMI Model FacSimile Prototyper Formatage Alimentation Modèle sous ObjeXion Rational Link ROSE Application Fichier de Stockage Fichier Base de données Flux d’informations d’échanges significatives relationnelle (mdb) Première partie (résumé):Développement d’un Interpréteur OCL pour une Machine Virtuelle UML

  3. Netsilon: présentation

  4. Netsilon: modélisation Navigation (Propriétaire) Modeleur UML Objets Métier (Diagrammes de classes) Apparence Graphique (HTML) Éditeur Page web

  5. Création d’un langage d’action pour un logiciel MDA • Xion • Optimisation SQL • Éditeur de code • Gestion des objets métier

  6. Xion: besoins • Description d’opérations à effet de bord • Navigation dans le modèle métier • Traduisible en PHP, JSP, Servlet Rien n’y répond ! (C++, Java, SDL, OCL,…) Solution adoptée: « mélanger » Java et OCL

  7. Xion: réalisation Analyse Lexicale Analyse Syntaxique Analyse Sémantique Xion Tokens Arbre 1 Arbre 2 Génération Adaptative Génération Intermédiaire Scripts Meta-Langage

  8. Xion: contrôle des types Rapport p.8

  9. Xion: contrôle des types Rapport p.9

  10. Xion: contrôle des types Rapport p.9

  11. Xion: contrôle des types Rapport p.9

  12. Xion: contrôle des types Rapport p.9

  13. Xion: contrôle des types Rapport p.9

  14. Xion: arbre abstrait (2) Rapport p.11

  15. Optimisation SQL Prenons un exemple de modèle métier: Ce qui donne les tables: personne(OID, nom, prenom) mariage(OID, #mari, #femme) parents_enfants(#parents, #enfants)

  16. Optimisation SQL « Personne » est traduit par une classe en langage cible: classe Personne attribut oid : String fonction get_nom : String retourne execute_SQL( ‘SELECT personne.nom FROM personne WHERE pesonne.OID = ‘ + oid ) fin get_nom fonction set_nom (nom:String) execute_SQL( ‘UPDATE personne SET nom = ‘ + nom + ‘ WHERE OID = ‘ + oid ) fin set_nom …

  17. Optimisation SQL: exemple 1 Un code Xion: maPersonne.enfants Le script correspondant: execute_SQL( ‘SELECT enfants FROM parents_enfants WHERE parents = ‘ + maPersonne.oid )

  18. Optimisation SQL: exemple 2 Un code Xion: maPersonne.enfants->collect(nom) Le script correspondant: Ensemble(Personne) tmp1 = execute_SQL( ‘SELECT enfant FROM parents_enfants WHERE parents = ‘ + maPersonne.oid ) Ensemble(String) tmp2 = Ensemble vide Enumération e = tmp1.éléments Tant que e a des éléments faire tmp2.ajoute(e.suivant.get_nom) Fin tant que

  19. Optimisation SQL: exemple 2 idéal Un code Xion: maPersonne.enfants->collect(nom) Le code idéal: execute_SQL( ‘ SELECT personne.nom FROM personne WHERE personne.OID in ( SELECT parent_enfant.enfant FROM parent_enfant WHERE parent_enfant.parent = ‘ + maPersonne.oid + ‘)’ )

  20. Optimisation SQL: 4 cas Basé sur les appels d’opérations prédéfinies • Déclencheur: quand rien n’a précédemment été optimisé • Continueur: modifie l’optimisé existant • Continueur d’itération: modifie l’existant dans une opération d’itération Xion comme « select » ou « sortedBy » • Continueur de « collect »: modifie l’existant dans un « collect »

  21. mari maPersonne enfants mari maPersonne Optimisation SQL: les liens maPersonne.mari Continueur maPersonne.mari.enfants SELECT mari FROM mariage WHERE femme = <maPersonne> SELECT enfants FROM parents_enfants WHERE parents IN ( SELECT mari FROM mariage WHERE femme = <maPersonne>) Déclencheur

  22. enfants maPersonne select enfant == maPersonne mari autrePersonne Optimisation SQL: les liens maPersonne.enfants maPersonne.enfants-> select(mari == autrePersonne) Continueur d’itération SELECT enfants FROM parents_enfants WHERE parents = <maPersonne> SELECT enfants FROM parents_enfants, mariage WHERE parents = <maPersonne> AND enfants = femme AND mari = <autrePersonne> Déclencheur

  23. Optimisation SQL: Optimizer Rapport p.16

  24. Optimisation SQL: Analyzer Rapport p.16

  25. Optimisation SQL: OptimizingElement Rapport p.16

  26. Optimisation SQL: Continueurs Rapport p.16

  27. Optimisation SQL: Itérateurs Rapport p.16

  28. Éditeur de code Netsilon est innovant => Difficile à appréhender • Fonctionnalités classiques • Coloration syntaxique • Complétion sémantique

  29. Coloration syntaxique Rapport p.21

  30. Complétion sémantique Liste les champs accessibles d’un objet Réutilisation des premières couches du compilateur Mise en forme du texte transmis au compilateur Integer i = 0; this.setAttribute(i.max(21). Devient Integer i = 0; i.max(21); mesPersonnes->select (i: i.mari. Devient Personne i; i.mari;

  31. Gestion des objets métier Pour nourrir la base de données d’objets

  32. Conclusion Xion est incontournable pour modéliser une application web avec Netsilon. Pas de langage d’action… Pourquoi pas Xion ? Xion, a l’instar des autres langages, ne résout pas tous les problèmes: besoin d’extension au langage par profilage.

More Related