Ingénierie des Modèles. Transformations de Modèles



Documents pareils
Ingénierie des Modèles. Méta-modélisation

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Object Constraint Language (OCL)

Générer du code à partir d une description de haut niveau

OCL - Object Constraint Language

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

Université de Bangui. Modélisons en UML

MDA (Model Driven Architecture) principes et états de l art.

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Chapitre VI- La validation de la composition.

Etat de l art sur le développement logiciel dirigé par les modèles.

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Généralités sur le Langage Java et éléments syntaxiques.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Projet Active Object

Description de la formation

CC30 Certificat de compétence Conception, développement et animation de sites Web

RTDS G3. Emmanuel Gaudin

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

Spécification et transformation de langages de points de vue des systèmes répartis ouverts

Chapitre I : le langage UML et le processus unifié

GOL502 Industries de services

Cours 1 : La compilation

Information utiles. webpage : Google+ : digiusto/

Les diagrammes de modélisation

Composants Logiciels. Le modèle de composant de CORBA. Plan

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

PROSOP : un système de gestion de bases de données prosopographiques

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

1. Installation d'un serveur d'application JBoss:

TD/TP PAC - Programmation n 3

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

MOTEUR DE WORKFLOW Mise en oeuvre d'openwfe Version septembre 2006

TP1 : Initiation à Java et Eclipse

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Introduction à JDBC. Accès aux bases de données en Java

UML et les Bases de Données

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Intégration d un ERP guidée par les modèles

THESE. DOCTORAT EN SCIENCES APPLIQUEES Spécialité : Informatique

Construire des plug-ins pour SAS Management Console SAS 9.1

Java DataBaseConnectivity

THÈSE. Présentée à. L Université Paris VIII. Pour obtenir le grade de DOCTEUR DE L UNIVERSITE DE PARIS VIII. Spécialité INFORMATIQUE

Le pilotage des collaborations et l interopérabilité des systèmes d information Vers une démarche intégrée

Université de Sherbrooke, Département d informatique

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Projet de développement

Développement d un interpréteur OCL pour une machine virtuelle UML.

Meta Object Facility. Plan

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Refonte front-office / back-office - Architecture & Conception -

Architecture Orientée Service, JSON et API REST

Démarches d urbanisation : réorganiser le Système d Information en structurant ses fonctions dans des blocs fonctionnels communicants.

JavaServer Pages (JSP)

Web Tier : déploiement de servlets

Fiche méthodologique Rédiger un cahier des charges

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

MEMOIRE. Présenté à. L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTERE

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

L approche Model-Driven Architecture, crédible pour développer un progiciel de

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

UML. Diagrammes de classes (suite) Delphine Longuet.

Introduction au Génie Logiciel

En vue de l obtention du. Discipline : Informatique. Présentée et soutenue par Mohamed HADJ KACEM. Le Jeudi 13 Novembre 2008

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

MEMOIRE. Présenté à L École Nationale d Ingénieurs de Sfax. en vue de l obtention du MASTÈRE INFORMATIQUE NTSID. Par.

Méthodologies de développement de logiciels de gestion

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Une architecture pour les transformations de modèles et la restructuration de modèles uml

Christian Soutou UML 2. pour les. bases de données. Avec 20 exercices corrigés. Groupe Eyrolles, 2007, ISBN :

Démarche dirigée par les modèles pour la conception d entrepôts de données multidimensionnelles. F.Atigui, F.Ravat, O.Teste, G.

Table des matières Sources

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

CQP Développeur Nouvelles Technologies (DNT)

OpenPaaS Le réseau social d'entreprise

Application web de gestion de comptes en banques

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Catalogue Formation «Vanilla»

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

NFP111 Systèmes et Applications Réparties

Devenez un véritable développeur web en 3 mois!

IDM 2009 Actes des 5èmes journées sur l Ingénierie Dirigée par les Modèles. Nancy, mars 2009

Programmation en Java IUT GEII (MC-II1) 1

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Cours de Génie Logiciel

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP1. Outils Java Eléments de correction

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Transcription:

Ingénierie des Modèles Transformations de Modèles Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1

Plan Types de transformation Raffinement Projection Exécution de transformations Déclaratif vs impératif Techniques, outils Compilation, graphes, XSLT Standard QVT de l'omg Contrats de transformations de modèles 2

Transformations Une transformation est une opération qui Prend un modèle source en entrée Fournit un modèle cible en sortie Transformation endogène Dans le même espace technologique Les modèles source et cible sont conformes au même méta-modèle Transformation d'un modèle UML en un autre modèle UML Transformation exogène Entre 2 espaces technologique différents Les modèles source et cible sont conformes à des méta-modèles différents Transformation d'un modèle UML en programme Java Transformation d'un fichier XML en schéma de BDD 3

Model Driven Architecture Le MDA définit 2 niveaux de modèles PIM : Platform Independent Model Modèle spécifiant une application indépendamment de la technologie de mise en oeuvre Uniquement spécification de la partie métier d'une application PSM : Platform Specific Model Modèle spécifiant une application après projection sur une plate-forme technologique donnée 4

Model Driven Architecture Relation entre les niveaux de modèles Projection vers une architecture/ technologie génération de code PIM PSM Code Rétro-ingénierie Rétro-ingénierie Raffinement Raffinement 5

Model Driven Architecture Cycle de développement d'un logiciel selon le MDA Cycle en Y Plus complexe en pratique Plutôt un cycle en épi Logique métier (PIM) Code de l'application Technologie/ plate-forme (PDM) 6

Niveaux de Modèles Les niveaux PIM et PSM du MDA peuvent se généraliser dans tout espace technologique Modèles de niveau abstrait : indépendamment d'une plateforme de mise en oeuvre, d'une technologie Modèles de niveau concret : par rapport à une plateforme, technologie de mise en oeuvre Nécessité de modéliser une plateforme de mise en oeuvre PDM : Platform Deployment Model Peu de choses sur ce sujet... 7

Transformations en série Réalisation d'une application Processus basé sur une série de transformations de modèles Exemple 1. Modèle de l'application au niveau abstrait, avec un modèle de composant abstrait : modèle PIM 2. Projection du modèle vers un modèle de composant EJB : modèle PSM 3. Raffinement de ce modèle pour ajouter des détails d'implémentation : modèle PSM 4. Génération du code de l'application modélisée vers la plateforme EJB 8

Autre vision des transformations Depuis longtemps on utilise des processus de développement basé sur les transformations Rien de nouveau Adaptation à un nouveau contexte Exemple : compilation d'un programme C Programme C : modèle abstrait Transformation de ce programme sous une autre forme mais en restant à un niveau abstrait Modélisation, représentation différente du programme C pour le manipuler : transformation en un modèle équivalent Exemple : arbres décorés Génération du code en langage machine Avec optimisation pour une architecture de processeur donnée 9

Outils pour réaliser des transformations Outils de mise en oeuvre Exécution de transformations de modèles Nécessité d'un langage de transformation Qui pourra être défini via un méta-modèle de transformation Les modèles doivent être manipulés, créés et enregistrés Dans un repository (dépôt, référentiel) Doit pouvoir représenter la structure des modéles Via des méta-modèles Qui devront aussi être manipulés via les outils : on les stockera dans un repository Il existe de nombreux outils ou qui sont en cours de développement (industriels et académiques) Notamment plusieurs moteurs/langages de transformation 10

Relation modèles/méta-modèles/repository 11

Familles de techniques de transformations On peut classer en 3 grandes catégories les techniques de transformation Approche déclarative Recherche de certains patrons (d'éléments et de leurs relations) dans le modèle source Chaque patron trouvé est remplacé dans le modèle cible par une nouvelle structure d'élément Ecriture de la transformation «assez» simple mais ne permet pas toujours d'exprimer toutes les transformations facilement Approche impérative Proche des langages de programmation On parcourt le modèle source dans un certain ordre et on génère le modèle cible lors de ce parcours Ecriture transformation plus complexe mais permet de toutes les définir Approche hybride : à la fois déclarative et impérative 12

Techniques de transformations Techniques existantes et abouties Compilation Transformation de graphes Techniques récentes XSLT Transformations de fichiers XML en fichiers XML Approche déclarative Transformation de modèles de type UML ou génération de code à partir de modèles Spécialisation, adaptation des transformations au MDE En plein essor et développement Quelques exemples de langages de transformation Industriels : Langage interne de France Telécom,... Académiques : MTL (Rennes), ATL (Nantes), Mod-Transf (Lille)... 13

Repository Référentiel (repository) pour stocker modèles et méta-modèles Les (méta)modèles sont stockés selon le formalisme de l'outil XML par exemple pour les modèles Et DTD XML pour les méta-modèles Forme de stockage d'un modèle «instance» d'un méta-modèle, via la syntaxe abstraite Stocke la présence d'éléments et leurs relations L'affichage du modèle via une notation graphique est faite par l'agl Les référentiels peuvent être notamment basés sur XML Base de données relationnelle Codage direct dans un langage de programmation 14

Repository en Java pour diag. états public class StateMachine { protected Vector state = new Vector(); protected Vector transition = new Vector(); public void addstate(state s) { state.add(s); } public void addtransition(transition t) { transition.add(t); }... } public class Transition { protected State from, to; protected String event; public Transition(State from, to, String evt) { this.from = from; this.to = to; event = evt; } 15

Repository en Java pour diag. états public class State { protected String name; public State(String name) { this.name = name; } } Définition d'un modèle : instances et liaisons de ces 3 classes... StateMachine sm; State s1,s2;... sm = new StateMachine(); s1 = new State(''Ouvert''); s2 = new State(''Ferme''); sm.addstate(s1); sm.addstate(s2); sm.addtransition(new Transition(State.Initial, s1, '''')); sm.addtransition(new Transition(s1, s2, ''fermer'')); sm.addtransition(new Transition(s2, s1, ''ouvrir'')); 16

Transformations de modèles en Java Transformation de modèles Ajout de méthodes pour lire les éléments du modèle Ex. pour StateMachine : getstates(), gettransitions() Parcours du modèle via ces méthodes Approche impérative Utilisation possible du patron Visiteur Génération d'un nouveau modèle à partir de ce parcours En utilisant éventuellement des méthodes des différentes classes pour gérer la transformation des éléments un par un public class State {... public String toxml() { return new String(''<state>\n<name>\n''+name +''\n</name>\n</state>\n''); }... 17

Query/View/Transformation Un langage de transformation et de manipulation de modèles est en cours de normalisation à l'omg Query/View/Transformation ou QVT Query : sélectionner des éléments sur un modèle Le langage utilisé pour cela est OCL très légèrement modifié et étendu Avec une syntaxe différente et simplifiée View : une vue est une sous-partie d'un modèle Peut être définie via une query Une vue est un modèle à part, avec éventuellement un métamodèle restreint spécifique à cette vue Transformation : transformation d'un modèle en un autre 18

Transformations dans QVT Deux niveaux de transformations dans QVT Relations La spécification d'une transformation Éventuellement avec des parties non définies totalement Pour pouvoir réutiliser et adapter facilement une transformation dans différents contextes Relation est bi-directionnelle Mapping Relation générale entre 2 modèles Un mapping est le raffinement d'une relation dans un but d'exécution Définit complètement et totalement la transformation Mapping est généralement uni-directionnel Transformation d'un modèle en un autre 19

Langage de transformation QVT QVT propose un langage commun pour définir les relations et mappings Avec syntaxe graphique et textuelle Basé sur le pattern-matching Recherche de patrons : approche déclarative Exemple de transformation : syntaxe textuelle relation IncreasingWisdom { var n, a, w1; -- free vars domain Person {name = n, age = a, wisdom = w1} when a + 1 < 13 or a + 1 > 19; domain Person {name = n, age = a + 1, wisdom = w2}; when { w2 > w1 } } 20

Langage de transformation QVT Exemple : syntaxe graphique Partie non complétement définie w2 est supérieur à w1 Sera précisé dans le mapping 21

Langage de transformation QVT Mapping raffinant cette relation Spécifie l'augmentation du wisdom mapping IncreasingWisdomMapping(in person:person) : Person refines IncreasingWisdom guard match(n,a,w1) Person{name = n, age = a, wisdom = w1} when a + 1 < 13 and a + 1 > 19 } { name := n; p.age := a + 1; p.wisdom := w1 + 5; } 22

Langage de transformation QVT Transformation attributs d'une classe UML en XML Transformation entre 2 méta-modèles : Relation pour cette transformation : 23

Exécution/spécification Travaux actuels autour des outils et techniques de transformation Concerne quasiment uniquement que des problématiques d'exécution de transformation Mais doit aussi pouvoir spécifier les transformations Trois buts principaux Spécification et documentation Préciser ce que fait la transformation, dans quelles conditions on peut l'utiliser Validation et test Valider ou tester qu'un modèle peut bien être transformé ou est le résultat valide d'une transformation Validation de l'enchainement de transformation Enchainement de transformations est à la base de tout processus de développement basé sur le MDE 24

Spécification de transformation Mes travaux de recherche Spécification de transformations via des contrats de transformations Contrats : ensemble de contraintes sur un élément logiciel que s'engage à respecter l'élément (et l'utilisateur de l'élément) Spécifie ce que ce fait l'élément sans détailler comment il fait (ce qui correspond au code) Exemple du compte banquaire du cours sur OCL context Compte : débiter(somme : int) pre: somme > 0 post: solde = solde@pre - somme L'opération débiter s'engage à respecter la post-condition si l'élément appelant l'opération respecte la pré-condition Travaux actuels : essayer de spécifier en OCL ces contrats de transformations de modèles UML 25

Contrats de transformations Contrat de transformations de modèles : 3 ensembles de contraintes Contraintes que doit respecter un modèle source Contraintes que doit respecter un modèle cible Contraintes sur l'évolution des éléments du modèle source vers le modèle cible Deux premiers ensembles de contraintes Contraintes sur les modèles : s'expriment au niveau de leur méta-modèle Ils sont définis par spécialisation du méta-modèle UML Via des profils 26

Contrats de transformations Troisième ensemble de contraintes Spécifier en OCL via des pré et post-conditions l'opération de transformation définie au niveau du méta-modèle La pré-condition définit des contraintes avant la transformation : contraintes sur le modèle source La post-condition définit des contraintes après la transformation : contraintes sur le modèle cible Avec la construction @pre, on peut référencer dans la post-condition les éléments avant et après la transformation : peut spéficier contraintes sur l'évolution des éléments Problème de cette approche Les modèles cible et source doivent être conformes au même méta-modèle Pas de spécification de transformations exogènes Et pas toujours possible de spécifier toutes les transformations endogènes non plus (d'uml vers UML) 27

Contrats de transformations Autre approche plus générale pour spécifier opération de transformations Utiliser une opération qui prend en paramètre le modèle source (sous forme de package) et retourne le modèle cible (sous forme de package) Permet de définir des transformations avec méta-modèles source et cible différents Mais nécessite de définir une opération de mapping entre 2 éléments de modèles différents ens1 > mappedonto (ens2) elt1.mappedonto (elt2) 28

Exemple basique de transformation Privatisation des attributs Chaque attribut d'une classe devient privé et se voit associer une paire d'accesseurs Contraintes sur modèles sources : aucune Contraintes sur modèles cibles : attributs privés context Class inv: attributes > forall ( a : Attribute a.visibility = #private and a.owner.operation > exists (op : Operation op.name = get + a.name) and a.owner.operation > exists (op : Operation op.name = set + a.name)) 29

Exemple basique de transformation Troisième ensemble de contraintes Plusieurs façons d'avoir des modèles cibles valides Transformer les attributs publics en privés et ajout de getter/setter Supprimer tous les attributs ne respectant pas les contraintes On doit donc spécifier que tous les attributs sont conservés Utilise la première approche car les méta-modèles source et cible sont le méta-modèle UML (contraint pour le cible) context Class : :addaccessors() pre: -- none post: attributes@pre = attributes and attributes > forall ( a : Attribute a@pre.visibility = #public implies a.visibility = #private) 30

Exemple : ajout de proxy 31

Exemple : ajout de proxy Contraintes sur modèles source et cible Définition des profils UML Voir cours sur méta-modélisation pour plus de précisions Ces 2 profils sont contradictoires Le premier spécifie qu'un client doit être connecté à un serveur Le second spécifie qu'un client ne doit pas être connecté à un serveur 2 méta-modèles sont «incompatibles» bien que proches Utilise la deuxième approche pour spécification de l'évolution des éléments pendant la transformation Contrainte principale sur évolution des éléments Le proxy ajouté et associé à un client doit réaliser l'interface dont est dépendant ce client 32

Exemple : ajout de proxy context Package::proxyAddition(Package source) : Package pre: source.oclistypeof(profile) and source.name= ClientServer post: result.oclistypeof(profile) and result.name= ClientProxyServer and source.modelelement > select ( me me.ocliskindof(client)) -> mappedonto ( result.modelelement > select ( me me.iskindof(client))) and -- tous les clients sont conservés pendant la transformation result.modelelement > select ( me me.ocliskindof(client)) > forall ( cl cl.oclastype(client).dependson > forall ( i let sourceserver = (source.modelelement > select ( me me.ocliskindof(interface) and me.oclastype(interface) = i)) > first().oclastype(interface).isimplementedby in let server = (result.modelelement > select ( me me.mappedonto(sourceserver)) > first() in let proxy = self.newproxy() in server.oclistypeof(server) and proxy.implements > includes (i) and proxy.hasclassrefwith(cl) and proxy.hasclassrefwith(server) ) ) Peut simplifier ces contraintes avec les simplifications définies dans QVT 33