création dun langage daction pour un logiciel mda soutenance de drt geii proposé par luha (essaim)...

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

Upload: donatien-hardy

Post on 03-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Netsilon: présentation

Page 4: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.8

Page 9: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.9

Page 10: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.9

Page 11: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.9

Page 12: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.9

Page 13: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: contrôle des types

Rapport p.9

Page 14: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Xion: arbre abstrait (2)

Rapport p.11

Page 15: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Optimisation SQL: Optimisation SQL: OptimizerOptimizer

Rapport p.16

Page 24: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Optimisation SQL: Optimisation SQL: AnalyzerAnalyzer

Rapport p.16

Page 25: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Optimisation SQL: Optimisation SQL: OptimizingElementOptimizingElement

Rapport p.16

Page 26: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Optimisation SQL: Optimisation SQL: ContinueursContinueurs

Rapport p.16

Page 27: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Optimisation SQL: Optimisation SQL: ItérateursItérateurs

Rapport p.16

Page 28: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

É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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Coloration syntaxiqueColoration syntaxique

Rapport p.21

Page 30: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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 dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

Gestion des objets métier

Pour nourrir la base de données d’objets

Page 32: Création dun langage daction pour un logiciel MDA Soutenance de DRT GEII Proposé par lUHA (Essaim) Réalisé au sein dObjeXion Software

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.