contribution la programmation g n rative n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Contribution à la Programmation Générative PowerPoint Presentation
Download Presentation
Contribution à la Programmation Générative

Loading in 2 Seconds...

play fullscreen
1 / 31

Contribution à la Programmation Générative - PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on

Contribution à la Programmation Générative. Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants. Carine Courbis. Thèse dirigée par Didier Parigot et Isabelle Attali INRIA Sophia-Antipolis. Soutenance de thèse, le 10 décembre 2002.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Contribution à la Programmation Générative' - sierra


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
contribution la programmation g n rative

Contribution à la Programmation Générative

Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants

Carine Courbis

Thèse dirigée par Didier Parigot et Isabelle Attali

INRIA Sophia-Antipolis

Soutenance de thèse, le 10 décembre 2002

contexte facteurs de bouleversements 1 3
Contexte : Facteurs de Bouleversements [1/3]

Bouleversements de l'Informatique dus à :

  • Internet

Du PC, monde clos, au Distribué

Communication entre applications et utilisateurs

      • Format d'échange ? Standard XML du W3C
  • Prolifération de Nouvelles Technologies

Plusieurs solutions à un problème (ex : composant)

Laquelle choisir ? la plus Pérenne ? Evolutive ?

Former les programmeurs

contexte facteurs de bouleversements 2 3
Contexte : Facteurs de Bouleversements [2/3]
    • Démocratisation de l'Informatique

Extension aux domaines non techniques

Connaissances, besoins, supports, domaines d'activités différents

    • Pression du marché, Concurrence

Développements : + courts, - chers, adaptables

  • Bouleversements desMéthodes de Développementd'Applications

Logiciels évolutifs, adaptables aux Besoins

contexte techniques de d veloppement 3 3
Contexte : Techniques de Développement [3/3]

Niveau Programmation

OO : encapsulation, héritage  code

extensible, réutilisable, modulaire, mais …

Préoccupations transversales aux classes, Mélange de code fonctionnel/non-fonctionnel

 AOP, Programmation par Composants, etc

Niveau Spécification

Standardisation des formats de document (W3C)

UML, MDA de l'OMG

objectif et approche

Modèle

Code

Génération /

Transformations

Objectif et Approche

Aider au Développement d'Applications

Idée : Simplifier la programmation en Générant du code, à partir des Modèles (parties métiers)

Solution :

Phase de Génération : intègre les Technologies  MDA

Gains : code adaptable selon technologies et besoins, concentration seulement sur partie "intelligente"

En plus: Utilisation de Standards du W3C et de l'OMG

(Outils et Evolutions)

approche mda
Approche MDA

MDA : Model-Driven Architecture

PSM

PIM

PSM

Génération /

Transformations

PSM

Modèle Indépendant de la

Plate-forme/Techno

Modèle Spécifique à la

Plate-forme/Techno

Exemple:

Web-Services

CCM

Modèle de

composants

EJB

Avoir un Modèle Métier UML et le Spécialiser par Transformation

Notre Approche : MDA à Différents Niveaux et avec des Langages

instanciation diff rents niveaux dans smarttools

API manipulation

données

Modèle de

Données

DTD ou XML

Schema

Editeur guidé par

la Syntaxe

Modèle

d'Analyses

Sémantiques

Visiteurs par

défaut + AOP

PIM

PSM

Modèle de

Vues/GUI

Afficheur

Spécification

Parseur

Modèle de

Composants

Composants

Instanciation, à différents niveaux, dans SmartTools

SmartTools = Atelier Logiciel

Aide au Développement Langages métiers/Outils

Générateurs

SmartTools

Pour un Langage L

slide8
Plan

Sujet

Outils

Syntaxiques

Outils

Sémantiques

Architecture

Conclusion

AbSynt

AOP

Contexte

Approche

Passerelles DTD

XML Schema

Visiteur

CoSynt

Visiteurs

configurables

Projection

Visiteurs

découplés

mod le de donn es absynt

<assign>

<var>a</var>

<int>2</int>

</assign>

assign

var

int

a=2;

ou

"a"

"2"

Modèle de Données : AbSynt

Programme AST (arbre de syntaxe abstraite)

Pourquoi un nouveau Formalisme ?

  • Avoir un format de Description de Structure de Haut Niveau, indépendant techno/langage
  • Accepter DTD/XML Schema  Fils Optionnels/Tableaux
  • Avoir une Abstraction vis-à-vis de l'Implémentation  sur-couche de manipulation des nœuds
absynt classes java sur dom

Code écrit

Transformation

(SmartTools)

Type  Interface,

Constructeur 

Interface + Classe

Attribut  Variable

Code généré

AbSynt  Classes Java sur DOM

PIM :Constructeurs (Opérateurs), Types, Attributs, et

et Données sémantiques

PSM :Classes Java surDOMpour Arbres Strictement Typés

Services DOM : serialisation, XPath, XSL, etc.

Statement = assign(Var variable, Exp value);

Required env as java.lang.String in affect;

vector as java.util.HashMap in affect;

package tiny.ast

public interface AssignNode extends StatementType {

public tiny.ast.VarType getVariableNode();

public void setVariableNode(tiny.ast.VarType node);

...

document xml objets java

DTD

ou

XML Schema

convertit

traduit

est instance de

est conforme à

est représenté par

Document XML

Objets/Nœuds

se serialise en

Ouverture vers le monde Document, Passerelle

Analyses Sémantiques possibles

Document XML  Objets Java

Notre Modèle

AbSynt

Classes Java

sur DOM

génère

syntaxe abstraite versus dtd xml schema

<!ELEMENT el (op1, (op2|(op3, op4)|(op5, op6*)))>

el(T1 f1, T2[] f2); avec T1=op1; et T2= op2, op3, op4, op5, op6;

Exemple

Syntaxe abstraite versus DTD, XML Schema

Analogies

  • Constructeurs = Eléments, Attributs = Attributs
  • Types  certaines Entités paramètres, choix, éléments substituables ( notion type de XML Schema car modèle de contenu)

Différences/Difficultés

  • Notions de fils optionnels/tableaux
  • Descriptions EBNF : modèle de contenu parfois trop complexe

 Perte d'informations de structure

mod le des vues gui cosynt

assign

assign

a=2; Forme textuelle

var

int

var

int

"="

";"

assign

Nbox

"a"

"2"

"a"

"2"

Arbre d'objets

graphiques

Arbre d'objets

avec styles

line

Arbre de syntaxe

concrète

Sbox

AST

var

keyword

int

keyword

Nlabel

Slabel

Nlabel

Sbox

Spécialisation/Raffinement par

Transformations successives

"a"

"="

"2"

";"

Modèle des Vues/GUI : CoSynt

But: Transformer un AST en vue graphique/texte

Langage Haut niveau, Séparation des Préoccupations

Génération : Afficheur et Analyseur Syntaxique associé

  • Syntaxe concrète
  • Affichage (suite de transformations)
cosynt analyseur syntaxique afficheur avec des standards

AbSynt

assign(Var var, Exp e)

Spécification ANTLR

Analyseur syntaxique

LL(k) en Java

CoSynt

Concrete Syntax {

assign(v,e) : v "=" e ";"

}

Layout {

assign : line:(1 2 3 4)

BML

Nlabel : var, int

Text

newline : assign

}

Feuille XSLT (texte)

Texte

+

AST

Feuille XSLT (vue)

Fichier BML

Bénéficie d'Outils Standard

Objets graphiques

Swing

Objets graphiques

Swing avec style

(vue isomorphe AST)

+

CSS

CoSynt  Analyseur Syntaxique, Afficheur (avec des Standards)

+

slide15
Plan

Sujet

Outils

Syntaxiques

Outils

Sémantiques

Architecture

Conclusion

AbSynt

AOP

Contexte

Approche

Passerelles DTD

XML Schema

Visiteur

CoSynt

Visiteurs

configurables

Projection

Visiteurs

découplés

programmation par aspects
Programmation par Aspects

Separation of concerns

Rendre Modulaire les Préoccupations et les ajouter (Tisser), à la demande, au code de base

Où tisser?

Comment composer plusieurs aspects?

Quelle technique d'implémentation ?

Classes

Aspects

Tisseur

de

Code

patron de conception visiteur

type statique  type dynamique

class T2 implements I2 {

void accept(Visitor v) {

v.visit(this);

}...

class T1 …

class T3…

Patron de conception Visiteur

Définir des Opérations sur la structure d'Objets (arbre)

  • Sans Modifier les objets
  • Séparation Code (module extensible) et Structure

class Visitor1 implements Visitor {

void visit(T1 node) { ...

node.getSon().accept(this);

}

void visit(T2 node) {…}

void visit(T3 node) {…}

}

class Visitor2 extends Visitor1 {…}

1 re solution visiteurs configurables
1re Solution : Visiteurs Configurables

But : "Cacher" le patron Visiteur (en Java)

Code Naturel et Extensible

Inconvénients :accept, paramètres et type de retour figés des méthodes d'où casts ou variables globales

Solution : Générer, à partir d'un modèle (ViProfile),

  • Méthodes visit à signature et parcours configurables
  • Pré-calcul de recherche statique de méthodes

En Plus : Aspects dédiés aux visiteurs (analyses plus extensibles), à branchement dynamique ou statique

viprofile visiteur configur java

AbSynt

assign(Var var, Exp e)

ViProfile

Integer visitSt(%Statement, Type t);

String visit(%Var, Type t);

abstract class AbstractVisitor extends ClassicVisitorImpl {

void pré-calcul() {...} ...

class TraversalVisitor extends AbstractVisitor {…}

ViProfile  Visiteur Configuré (Java)

+

class Visitor extends TraversalVisitor {

Integer visitSt(AssignNode node, Type t) {

String s = visit(node.getVar(), t);...

class TraceAspect implements Aspect {

public void before(Type t, Object[] p) {

System.out.println("avant " + p[0]);

}

public void after(Type t, Object[] p) {}

}

2 e solution visiteurs d coupl s
2e solution : Visiteurs Découplés

But : Réutilisation d'Analyses  Composition, Enrichissement

Séparation : Structure, Parcours, Actions Sémantiques

 une Visite = n morceaux de code  Aspects

avant, après, et entre les fils

Visiteur = Tisseur de code

public Object beforeOp(AssignNode n, Object p) {…}

public Object betweenElem1and2(AssignNode n, Object p) {…}

public Object afterOp(AssignNode n, Object p) {…}

exemple d ex cution d un visiteur d coupl

3] beforeOp(AssignNode,

Object)

Action S1

1] traverse()

Action S2

4]

2] beforeOp(

UntypedNode)

Action S3

5]

Action S4

6]

Exemple d'exécution d'un Visiteur Découplé

Parcours Dynamique

Visiteur Découplé

~ Tisseur de Code

comparaison des deux solutions
Comparaison des deux Solutions

Même pouvoir d'Expression

  • 1re : code naturel (grâce à la génération) et extensible mais pas réutilisable
  • 2e : code réutilisable mais moins lisible

Exemple : analyse de vérification de type enrichie avec vérification d'initialisation de variables

slide23
Plan

Sujet

Outils

Syntaxiques

Outils

Sémantiques

Architecture

Conclusion

AbSynt

AOP

Contexte

Approche

Passerelles DTD

XML Schema

Visiteur

CoSynt

Visiteurs

configurables

Projection

Visiteurs

découplés

architecture contexte

Descriptif

lancement

Descriptif

composant

Architecture : Contexte

SmartTools : Générer des Outils autonomes (Services) pour des Langages Métiers + Méta-outil

Buts :Exportation et Importation d'Outils + Configuration Architecture selon Application

Approche objet à granularité trop Fine  Composants

  • Spécification des Interfaces Requises (dépendances)
  • Déploiement

Façade

Conteneur

Fonctionnel

Composant

architecture notre approche
Architecture : Notre Approche

Quelle Technologie de composant adopter?

  • Adéquation aux besoins
  • Technologie : handicap à l'évolution de l'outil
  • Implémentation "légère" et simple

 Création d'un Modèle de composant abstrait

Projetable vers les Technologies EJB, CCM et Web-Services

architecture projections

CCM

EJB

SmartTools

Web-Services

Classe container

+

Classe extension

façade

Fichier WSDL

+

Classe

correspondance

SOAP

Fichier IDL

+

Classe

serveur

CORBA

Interfaces

remote et

home

Architecture : Projections

Descriptif de Composant

<component name="graph" extends="abstractContainer">

<containerclass name="GraphContainer"/>

<facadeclass name="GraphFacade"/>

<input name="addNode" method="addNode">

<parameter name="nodeName" javatype="java.lang.String">...

</input>

</component>

slide27
Plan

Sujet

Outils

Syntaxiques

Outils

Sémantiques

Architecture

Conclusion

AbSynt

AOP

Contexte

Approche

Passerelles DTD

XML Schema

Visiteur

CoSynt

Visiteurs

configurables

Projection

Visiteurs

découplés

r sultats exemples d utilisation
Résultats : Exemples d'Utilisation

Langages internes de SmartTools

AbSynt, CoSynt, ViProfile, CDML (composant)

Langages du W3C

XSLT, SVG, DTD, XML Schema, CSS, XML

Langages de Programmation ou Métiers

java, ant, etc (car passerelles XML)

conclusion
Conclusion

Modèle

Indépendant

Techno/Langage

Génération /

Transformations

Code enrichi de

Technologies

Approche  MDA

Programmation Générative : évolution logiciels, applicable  niveaux

Logiques métiers

(PIM)

Cibles générées

(PSM)

Classes Java au-dessus de DOM,

DTD/XML Schema

Partie Données

AbSynt

Partie Vues/GUI

AbSynt + CoSynt

Afficheur, Analyseur Syntaxique

Partie Sémantique

AbSynt + ViProfile

Visiteurs en Java

Composants pour SmartTools,

EJB, CCM ou Web-Services

CDML

Partie Composants

perspectives de recherche
Perspectives de Recherche

Analyses Sémantiques :

  • Règles de composition d'Actions Sémantiques

Composants :

  • Modéliser les mécanismes de projection
  • Ajouter la possibilité d'Aspects à l'intérieur

SmartTools : plate-forme d'expérimentation

Passerelles vers d'autres mondes :

  • Web-sémantique : Syntaxe Abstraite  RDFS
  • UML : Syntaxe Abstraite  MOF
contribution la programmation g n rative1

Contribution à la Programmation Générative

Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants

Questions ...