Contribution à la Programmation Générative Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants Carine Courbis Soutenance de thèse, le 10 décembre 2002 Thèse dirigée par Didier Parigot et Isabelle Attali INRIA Sophia-Antipolis
31
Embed
Contribution à la Programmation Générative Application dans le générateur SmartTools : technologies XML, programmation par aspects et composants Carine.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Contribution à la Programmation
GénérativeApplication dans le générateur SmartTools :
technologies XML, programmation par aspects et composants
Carine Courbis
Soutenance de thèse, le 10 décembre 2002
Thèse dirigée par Didier Parigot et Isabelle AttaliINRIA Sophia-Antipolis
2
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 TechnologiesPlusieurs solutions à un problème (ex : composant)
Laquelle choisir ? la plus Pérenne ? Evolutive ?
Former les programmeurs
3
Contexte : Facteurs de Bouleversements [2/3]
– Démocratisation de l'Informatique Extension aux domaines non techniques
Bouleversements des Méthodes de Développement d'Applications
Logiciels évolutifs, adaptables aux Besoins
4
Contexte : Techniques de Développement [3/3]
Niveau ProgrammationOO : 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écificationStandardisation des formats de document (W3C)
UML, MDA de l'OMG
5
Objectif et ApprocheAider 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)
Génération /Transformations
CodeModèle
6
Approche MDAMDA : Model-Driven Architecture
Modèle Indépendant de la Plate-forme/Techno
Modèle Spécifique à la Plate-forme/Techno
Avoir un Modèle Métier UML et le Spécialiser par Transformation
Notre Approche : MDA à Différents Niveaux et avec des Langages
EJB
Modèle de composants
CCMWeb-Services
Génération /Transformations
PIM
Exemple:
PSMPSMPSM
7
Instanciation, à différents niveaux, dans SmartTools
SmartTools = Atelier Logiciel Aide au Développement Langages métiers/Outils
Visiteurs pardéfaut + AOP
Pour un Langage L
Modèle deComposants
AfficheurSpécification
Parseur
Composants
Générateurs
SmartTools
API manipulationdonnées DTD ou XML
SchemaEditeur guidé par
la Syntaxe
PSM
Modèle de Données
PIM
Modèle d'Analyses
Sémantiques
Modèle deVues/GUI
8
Plan
Sujet OutilsSyntaxiques
OutilsSémantiques
Architecture Conclusion
AbSynt
Passerelles DTDXML Schema
CoSynt
AOP
Visiteur
Visiteurs configurables
Visiteursdécouplés
Contexte
Projection
Approche
9
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
<assign> <var>a</var> <int>2</int></assign>
a=2;
assignvar int
"a" "2"ou
10
PIM : Constructeurs (Opérateurs), Types, Attributs, et et Données sémantiquesPSM : Classes Java sur DOM pour Arbres Strictement Typés Services DOM : serialisation, XPath, XSL, etc.
AbSynt Classes Java sur DOM
package tiny.astpublic interface AssignNode extends StatementType { public tiny.ast.VarType getVariableNode(); public void setVariableNode(tiny.ast.VarType node); ...
Statement = assign(Var variable, Exp value);Required env as java.lang.String in affect;vector as java.util.HashMap in affect;
Type Interface, Constructeur Interface + ClasseAttribut Variable
Code Naturel et ExtensibleInconvé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
19
ViProfile Visiteur Configuré (Java)
+assign(Var var, Exp e)AbSynt
Integer visitSt(%Statement, Type t);String visit(%Var, Type t);
ViProfile
abstract class AbstractVisitor extends ClassicVisitorImpl { void pré-calcul() {...} ...
class TraversalVisitor extends AbstractVisitor {…}
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) {}
public Object beforeOp(AssignNode n, Object p) {…}public Object betweenElem1and2(AssignNode n, Object p) {…}public Object afterOp(AssignNode n, Object p) {…}
21
Exemple d'exécution d'un Visiteur Découplé
Visiteur Découplé~ Tisseur de Code
Parcours Dynamique
Action S1
Action S2
Action S3
Action S4
1] traverse()
2] beforeOp(UntypedNode)
4]
5]
6]
3] beforeOp(AssignNode, Object)
22
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 lisibleExemple : analyse de vérification de type
enrichie avec vérification d'initialisation de variables
23
Sujet OutilsSyntaxiques
OutilsSémantiques
Architecture Conclusion
AbSynt
Passerelles DTDXML Schema
CoSynt
AOP
Visiteur
Visiteurs configurables
Visiteursdécouplés
Contexte
Projection
Approche
Plan
24
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 ApplicationApproche objet à granularité trop Fine Composants
• Spécification des Interfaces Requises (dépendances)• Déploiement
Descriptifcomposant
DescriptiflancementConteneur
Composant
Fonctionnel
Façade
25
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