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

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

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: 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 GEIISoutenance de DRT GEII

Proposé par l’UHA (Essaim)Proposé par l’UHA (Essaim)

Réalisé au sein d’ObjeXion Réalisé au sein d’ObjeXion SoftwareSoftware

Page 2: Création d’un langage d’action pour un logiciel MDA

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

Fichier XMI

ObjeXion Prototyping suite

Model Prototyper

ObjeXion Link

FacSimile

Base de données

relationnelle (mdb)

Formatage Alimentation

Page 3: Création d’un langage d’action pour un logiciel MDA

Netsilon: présentation

Page 4: Création d’un langage d’action pour un logiciel MDA

Netsilon: modélisation

ModeleurModeleurUMLUML

ObjetsObjetsMétierMétier

(Diagramme(Diagrammes de s de

classes)classes)

ApparencApparencee

GraphiquGraphiquee

(HTML)(HTML)

NavigationNavigation(Propriétaire)(Propriétaire)

ÉditeurÉditeurPage webPage web

Page 5: Création d’un langage d’action pour un logiciel MDA

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

logiciel MDA

XionXion Optimisation SQLOptimisation SQL Éditeur de codeÉditeur de code Gestion des objets métierGestion des objets métier

Page 6: Création d’un langage d’action pour un logiciel MDA

Xion: besoins

Description d’opérations à effet de bordDescription d’opérations à effet de bord Navigation dans le modèle métierNavigation dans le modèle métier Traduisible en PHP, JSP, ServletTraduisible en PHP, JSP, Servlet

Rien n’y répond ! (C++, Java, SDL, OCL,…)

Solution adoptée:Solution adoptée:

« mélanger » Java et OCL« mélanger » Java et OCL

Page 7: Création d’un langage d’action pour un logiciel MDA

Xion: réalisation

AnalyseLexicale

AnalyseSyntaxique

AnalyseSémantiqueXion Tokens Arbre 1

GénérationIntermédiaire

Arbr

e 2

GénérationAdaptative Meta-LangageScripts

Page 8: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.8

Page 9: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.9

Page 10: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.9

Page 11: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.9

Page 12: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.9

Page 13: Création d’un langage d’action pour un logiciel MDA

Xion: contrôle des types

Rapport p.9

Page 14: Création d’un langage d’action pour un logiciel MDA

Xion: arbre abstrait (2)

Rapport p.11

Page 15: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL

Prenons un exemple Prenons un exemple de modèle métier:de modèle métier:

Ce qui donne les Ce qui donne les tables:tables:

personne(personne(OIDOID, nom, , nom, prenom)prenom)

mariage(mariage(OIDOID, , #mari#mari, , #femme#femme))

parents_enfants(parents_enfants(#parents#parents, , #enfants#enfants))

Page 16: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL« Personne » est traduit par une classe en langage « Personne » est traduit par une classe en langage cible:cible: classe Personneclasse Personne

attribut oid : Stringattribut oid : String   fonction get_nom : Stringfonction get_nom : String retourne execute_SQL(retourne execute_SQL( ‘ ‘SELECT personne.nomSELECT personne.nom FROM personneFROM personne WHERE pesonne.OID = ‘ + oidWHERE pesonne.OID = ‘ + oid )) fin get_nomfin get_nom   fonction set_nom (nom:String)fonction set_nom (nom:String) execute_SQL(execute_SQL( ‘ ‘UPDATE personneUPDATE personne SET nom = ‘ + nom + ‘SET nom = ‘ + nom + ‘ WHERE OID = ‘ + oidWHERE OID = ‘ + oid )) fin set_nom …fin set_nom …

Page 17: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: exemple 1

Un code Xion:Un code Xion:

Le script Le script correspondant:correspondant:

maPersonne.enfantsmaPersonne.enfants

execute_SQL(execute_SQL(

‘ ‘SELECT enfantsSELECT enfants

FROM parents_enfantsFROM parents_enfants

WHERE parents = ‘WHERE parents = ‘

+ maPersonne.oid+ maPersonne.oid

))

Page 18: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: exemple 2

Un code Xion:Un code Xion:

Le script Le script correspondant:correspondant:

maPersonne.enfantsmaPersonne.enfants-->collect(>collect(nomnom))

Ensemble(Personne) tmp1 = execute_SQL(Ensemble(Personne) tmp1 = execute_SQL(

‘ ‘SELECT enfantSELECT enfant

FROM parents_enfantsFROM parents_enfants

WHERE parents = ‘WHERE parents = ‘

+ maPersonne.oid+ maPersonne.oid

))

Ensemble(String) tmp2 = Ensemble videEnsemble(String) tmp2 = Ensemble vide

Enumération e = tmp1.élémentsEnumération e = tmp1.éléments

Tant que e a des éléments faireTant que e a des éléments faire

tmp2.ajoute(e.suivant.get_nom)tmp2.ajoute(e.suivant.get_nom)

Fin tant queFin tant que

Page 19: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: exemple 2 idéal

Un code Xion:Un code Xion:

Le code idéal:Le code idéal:

maPersonne.enfantsmaPersonne.enfants-->collect(>collect(nomnom))

execute_SQL(execute_SQL(

‘ ‘ SELECT personne.nomSELECT personne.nom

FROM personneFROM personne

WHERE personne.OID in (WHERE personne.OID in (

SELECT parent_enfant.enfantSELECT parent_enfant.enfant

FROM parent_enfantFROM parent_enfant

WHERE parent_enfant.parent = WHERE parent_enfant.parent = ‘‘

+ maPersonne.oid + ‘)’+ maPersonne.oid + ‘)’

))

Page 20: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: 4 casOptimisation SQL: 4 cas

Déclencheur: quand rien n’a précédemment été Déclencheur: quand rien n’a précédemment été optimiséoptimisé

Continueur: modifie l’optimisé existantContinueur: modifie l’optimisé existant Continueur d’itération: modifie l’existant dans une Continueur d’itération: modifie l’existant dans une

opération d’itération Xion comme « select » ou opération d’itération Xion comme « select » ou « sortedBy »« sortedBy »

Continueur de « collect »: modifie l’existant dans Continueur de « collect »: modifie l’existant dans un « collect »un « collect »

Basé sur les appels d’opérations prédéfinies

Page 21: Création d’un langage d’action pour un logiciel MDA

Déclen

cheu

r

Déclen

cheu

r

Optimisation SQL: les Optimisation SQL: les liensliens

maPersonne.mari

SELECT mariSELECT mari

FROM mariageFROM mariage

WHERE WHERE femmefemme = = <maPersonne><maPersonne>

maPersonne.mari.enfants

SELECTSELECT enfantsenfants

FROM parents_enfantsFROM parents_enfants

WHERE parents IN (WHERE parents IN (

SELECT mariSELECT mari

FROM mariageFROM mariage

WHERE femme = WHERE femme =

<maPersonne>)<maPersonne>)

Contin

ueur

Contin

ueurmari

maPersonne

enfants

mari

maPersonne

Page 22: Création d’un langage d’action pour un logiciel MDA

Déclen

cheu

r

Déclen

cheu

r

Optimisation SQL: les Optimisation SQL: les liensliens

maPersonne.enfants

SELECT enfantsSELECT enfants

FROM parents_enfantsFROM parents_enfants

WHERE WHERE parentsparents = = <maPersonne><maPersonne>

maPersonne.enfants-> select(mari == autrePersonne)

SELECTSELECT enfants enfants

FROM parents_enfantsFROM parents_enfants, , mariagemariage

WHERE parents = WHERE parents = <maPersonne><maPersonne>

AND enfants = femmeAND enfants = femme

AND mari = <autrePersonne>AND mari = <autrePersonne>

Contin

ueur d

’itér

ation

Contin

ueur d

’itér

ationenfants

maPersonne

select

enfant

maPersonne autrePersonnemari

==

Page 23: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: Optimisation SQL: OptimizerOptimizer

Rapport p.16

Page 24: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: Optimisation SQL: AnalyzerAnalyzer

Rapport p.16

Page 25: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: Optimisation SQL: OptimizingElementOptimizingElement

Rapport p.16

Page 26: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: Optimisation SQL: ContinueursContinueurs

Rapport p.16

Page 27: Création d’un langage d’action pour un logiciel MDA

Optimisation SQL: Optimisation SQL: ItérateursItérateurs

Rapport p.16

Page 28: Création d’un langage d’action pour un logiciel MDA

Éditeur de codeÉditeur de code

Fonctionnalités classiquesFonctionnalités classiques Coloration syntaxiqueColoration syntaxique Complétion sémantiqueComplétion sémantique

Netsilon est innovant

=> Difficile à appréhender

Page 29: Création d’un langage d’action pour un logiciel MDA

Coloration syntaxiqueColoration syntaxique

Rapport p.21

Page 30: Création d’un langage d’action pour un logiciel MDA

Complétion sémantiqueComplétion sémantiqueListe 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;

Page 31: Création d’un langage d’action pour un logiciel MDA

Gestion des objets métier

Pour nourrir la base de données d’objets

Page 32: Création d’un langage d’action pour un logiciel MDA

ConclusionConclusion

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.