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

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

Présentations similaires


Présentation au sujet: "Création d’un langage d’action pour un logiciel MDA"— Transcription de la présentation:

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

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 Basé sur les appels d’opérations prédéfinies
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 Optimisation SQL: les liens
mari maPersonne maPersonne.mari Continueur maPersonne.mari.enfants SELECT mari FROM mariage WHERE femme = <maPersonne> enfants mari maPersonne SELECT enfants FROM parents_enfants WHERE parents IN ( SELECT mari FROM mariage WHERE femme = <maPersonne>) Déclencheur

22 Optimisation SQL: les liens
enfants maPersonne 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> select enfant maPersonne autrePersonne mari == 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 => Difficile à appréhender
É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 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.


Télécharger ppt "Création d’un langage d’action pour un logiciel MDA"

Présentations similaires


Annonces Google