Ingénierie des modèles (b)



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

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

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

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

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

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

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

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

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

Extensions à la formation. Laurent Pérochon, avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

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

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

Meta Object Facility. Plan

Gouvernance IT : par où commencer? Hubert Lalanne DE, Chief Architect for Industries IBM Software France

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

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

RTDS G3. Emmanuel Gaudin

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

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

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION

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

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

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

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

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

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

Architecture Reconfigurable Hétérogène à Gestion Hiérarchique Distribuée pour la Reconfiguration et la Prise de Décision

Module BD et sites WEB

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

Object Management Group

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

Visual Paradigm Contraintes inter-associations

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

Programmation Objet Java Correction

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Java Licence Professionnelle CISII,

Présentation du langage et premières fonctions

Étude et applications de l approche MDA pour des plates-formes de Services Web

Eclipse et ses plugins de modélisation (EMF GEF GMF). Entrée en matière. par. Jacques Barzic. Avertissement

Programmation en Java IUT GEII (MC-II1) 1

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

Cours en ligne Développement Java pour le web

Offre Nouvelles Technologies (NTIC)

F. Barthélemy. 17 mai 2005

DSL. Domain Specific Language. À l'aide des technologies Eclipse Modeling. Goulwen Le Fur Le 23 novembre 2012

Machines Virtuelles. et bazard autour. Rémi Forax

Langage Java. Classe de première SI

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

les techniques d'extraction, les formulaires et intégration dans un site WEB

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

TP1. Outils Java Eléments de correction

ÉCOLE DE TECHNOLOGIE SUPÉRIEURE UNIVERSITÉ DU QUÉBEC THÈSE PRÉSENTÉE À L ÉCOLE DE TECHNOLOGIE SUPÉRIEURE

Université Mohamed Khider Biskra. Faculté des sciences exactes et des sciences de la nature et de la vie. Département d Informatique.

Architecture Orientée Service, JSON et API REST

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

DES SYSTÈMES D INFORMATION

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

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

CQP Développeur Nouvelles Technologies (DNT)

Programmer en JAVA. par Tama

Projet de développement

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

Java - la plateforme

TP1 : Initiation à Java et Eclipse

Modélisation des processus métiers et standardisation

Éléments de programmation et introduction à Java

Environnement logiciel basé sur les modèles pour la conception collaborative de produit

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

devant l université de Rennes 1

Bases Java - Eclipse / Netbeans

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

OCL - Object Constraint Language

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Java Licence Professionnelle CISII,

Master d Informatique Corrigé du partiel novembre 2010

Cours 1 : La compilation

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Traduction des Langages : Le Compilateur Micro Java

Mise en œuvre des serveurs d application

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Construire des plug-ins pour SAS Management Console SAS 9.1

Elaboration de processus de développements logiciels spécifiques et orientés modèles : application aux systèmes à évenements discrets

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

DotNet. Plan. Les outils de développement

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

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

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

Génération de code binaire pour application multimedia : une approche au vol

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

Java et les bases de données

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

Approche Contract First

Vulgarisation Java EE Java EE, c est quoi?

BASE DE DONNÉES XML NATIVE

Cedric Dumoulin (C) The Java EE 7 Tutorial

TD/TP PAC - Programmation n 3

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Transcription:

Ingénierie des modèles b. Exploiter et produire Raphaël Marvie LIFL - IRCICA Université de Lille I marvie@lifl.fr http://www.lifl.fr/~marvie 1

Menu Introduction Model Driven Architecture PIM, PAM, POUM Transformations de modèles Récupération et innovations Mise en œuvre D un modèle de composants au code Java Conclusion 2

Introduction 3

Problème (rappel) La logique métier est mélangée avec le code technique Vrai pour toutes les technologies L évolution des applications n est pas simple Garder la logique métier Jeter le code technique Nécessite de s abstraire des technologies 4

Une solution Séparation des préoccupations Préoccupations métier Préoccupations techniques Modélisation des systèmes Description abstraite des préoccupations métiers Réutilisation dans différentes contextes (technologies) Comment automatiser l utilisation (et réutilisation) des modèles abstraits de systèmes 5

Des modèles aux systèmes Passer du modèle contemplatif Utilisation informelle (documentation) Définition manuelle de projections (idl -> java) au modèle productif Production automatisée de code Définition de projections standardisées 6

Model Driven Architecture 7

Model Driven Architecture Définition de méta-modèles Standardisation d un domaine d activité Standardisation des technologies Définition d une méthodologie Démarche à suivre pour produire une application, dans une technologie, à partir d un modèle abstrait Il existe différents types de modèles 8

Model Driven Architecture PIM: Platform Independant Model Définit la structure et les fonctions d un système Indépendant des détails technologiques PSM: Platform Specific Model Définit la mise en œuvre de la structure et des fonctions dans une technologie particulière PDM: Platform Definition Model Définit une technologie particulière 9

Model Once Generate Everywhere Modèle indépendant de toute technologie System PIM Génération de code pour plusieurs paltes-formes CCM.Net WS 10

Un processus logiciel naïf Raffinement Raffinement PIM Projection PSM Projection Système Rétro-ingénierie Rétro-ingénierie 11

Exemple de processus MDA Définition d une application à base de composants Définition de la structure de l application Raffinement pour spécifier les fonctions Mise en œuvre dans un langage orienté objets Définition des correspondances (projections) Évaluation des projections Production de code Génération du code Java correspondant au modèle 12

Méta-modèle simple de composants ComponentXXS provides Component uses Port * * Provided Required 1 to Connection from 1 13

D un PIM de composants (base) Application «Component» Notifier «uses» obs «provides» itf «Component» Observer Structure du système 14

A un PIM (raffiné) Application «Interface» INotify + notify (String) type «Component» Notifier «uses» obs «provides» itf «Component» Observer Fonctions du système 15

Méta-modèle simple de Java JavaXXS super type Class attributes Attribute methods Method type Parameter 16

A un PSM pour Java Application «Class» Observer - itf «Class» INotify + provides_itf () + notify (String) «Class» Notifier + connect_obs (INotify) + disconnect_obs () - obs 17

Au code Java class INotify { void notify (String s) { // write code } } class Notifier { private INotify _obs ; void connect_obs (INotify o) { // this._obs = o ; } void disconnect_obs () { // this._obs = null ; } } class Observer { private INotify _itf ; INotify provides_itf () { // return this._itf ; } } 18

Transformations de modèles 19

Pourquoi des transformations? Raffinement Un modèle A1 devient un modèle A2 Même méta-modèle pour les deux [Structure puis fonctions] Projection Un modèle A1 devient un modèle B1 Méta-modèles distincts [Composants -> Java] Représente la base Production de systèmes dirigée par les modèles Support de l interopérabilité entre les systèmes 20

Définition de transformations Transformation = ensemble de règles Correspondances entre éléments du modèle source et éléments du modèle cible Exemple: projection d un composant vers Java Une interface de port devient une classe Java Un composant devient une classe Java Provide devient attribut privé Provide devient méthode publique provides_* (<Itf>) 21

Exemple de transformation (*) transformation comp2java rule comp2clss forall Component cc make Class c, jc.name = cc.name linking cc to jc by comp2clss rule itf2clss forall Interface it make Class cl, cl.name = it.name linking it to cl by citf2jclss rule op2meth forall Operation op where itf2class links op.itf to Y make Method me, me.name = op.name, Y.methods += me linking op to me by cop2jmeth 22 rule provides2java forall Port p where p.kind == "provides" && citf2jclss links p.type to XX && comp2clss links p.owner to YY make Attribut a, a.name = "_" + p.name, Argument a1, a1.type = XX, Method m, m.name = "provide_" + p.name, m.returntype = a1, YY.method += m, YY.fields += a linking p to a by port2attr linking p to a1 by port2arg linking p to m by port2meth (*) Syntaxe définie et proposée lors de la première soumission de MOF QVT à l OMG (M. Lawley, R. Marvie et J. Steel)

Modèle de transformations Modélisation d une transformation Définition d une transformation Utilisation des concepts de transformations Méta-modèle de transformation Définit les concepts relatifs aux transformations Parallèle: syntaxe du langage Java pour écrire des programmes 23

Transformation dirigée par les M2 MOF Component Metamodel Transformation Metamodel Java Metamodel Comp. based Model Comp2java Trans. Model 24 Java based Model

Moyens et standards Langages de (méta-)modélisation MOF, UML, OCL Un langage de transformation unifié MOF 2.0 QVT RFP Un standard de sérialisation de modèles MOF XMI (XML Metadata Interchange) Des définition de M2, PDM, Trans Pour chaque domaine d activité 25

Mise en œuvre 26

Réaliser des transformations Exemple Composant -> Java Utilisation des deux méta-modèles Plusieurs mises en œuvres possibles Utiliser un formalisme de description MOF QVT en cours de définition Utilisation d XSLT sur des modèles en XMI «Coder» la transformation Langage de programmation Utilisation de référentiels MOF pour les modèles 27

Mise en œuvre avec XSLT Langage de transformation de documents XML Projection vers HTML ou XHTML Application de feuilles de styles XSL Une transformation XSLT Ensemble de pattern à rechercher Structure des éléments à produire Utilisation avec des modèles écrits en XML Version très light de XMI pour dérouler l exemple 28

XSLT: Une transformation Une transformation est définie par une feuille de style XSL qui Contient un certain nombre de templates <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <!-- définition des templates --> </xsl:stylesheet> 29

XSLT: Un template Un template définit une règle de transformation Pattern dans le document source Texte à produire dans le document cible / templates à appliquer (sous-templates) <xsl:template match="compmodel"> <javamodel> <xsl:apply-templates /> </javamodel> </xsl:template> 30

XSLT: Accéder aux valeurs Un nœud XML Contient du texte -> récupérer la valeur Contient un sous-nœud -> récupérer sa valeur <xsl:template match= "name"> <name> <xsl:value-of select= ". " /> </name> </xsl:template> <xsl:template match= "Port"> <class><name> <xsl:value-of select= "name" /> </name></class> </xsl:template> 31

Modèle de l application (comp. i) <?xml version="1.0"?> <compmodel> <basetype> <bname>string</bname> </basetype> <basetype> <bname>void</bname> </basetype> <port> <name>inotify</name> <operation> <return>void</return> <name>notify</name> <parameter> <name>msg</name> <type>string</type> </parameter> </operation> </port> 32

Modèle de l application (comp. ii) <component> <name>observer</name> <provides> <type>inotify</type> <name>itf</name> </provides> </component> <component> <name>notifier</name> <uses> <type>inotify</type> <name>obs</name> </uses> </component> </compmodel> 33

Modèle de l application (java i) <?xml version="1.0" encoding="utf-8"?> <javamodel> <class> <name>inotify</name> <method> <return>void</return> <name>notify</name> <parameter> <name>msg</name> <type>string</type> </parameter> </method> </class> <class> <name>observer</name> <attribute> <type>inotify</type> <name>_itf</name> </attribute> <method> <name>provide_itf</name> <return>inotify</return> </method> </class> 34

Modèle de l application (java ii) <class> <name>notifier</name> <attribute> <type>inotify</type> <name>_obs</name> </attribute> <method> <name>connect_obs</name> <parameter> <type>inotify</type> <name>obs_</name> </parameter> <return>void</return> </method> <method> <name>disconnect_obs</name> <return>void</return> </method> </class> </javamodel> 35

Mise en œuvre «codage» Référentiels de modèles Produit à partir des M2 Règles de projections MOF Programme Parcours du référentiel source (Exemple: pattern visiteur) Production d éléments dans référentiel destination Référentiel Modèles Comp. Transformation codée Référentiel Modèles Java 36

Extrait de transformation (python) def itf2clss (input, output): for itf in input.interface: clss = output.create_jclass () ; clss.name = itf.name ; for op in itf.operation: meth = clss.create_method () ; meth.name = op.name ; meth.type = op.type ; for arg in op.parameter: param = meth.create_parameter () ; param.name = arg.name ; param.type = arg.type ; 37

Remarques XSLT Peut paraître plus simple à mettre en œuvre Limité dans les capacités de transformation Ne permet pas de produire le code «Codage» Plus technique à mettre en œuvre Aucune limite en terme de transformation Implique de disposer de référentiels (ModFact) -> Nécessité de disposer d un langage adapté 38

Exercices Définir complètement en XSLT la transformation du modèle de Composants au modèle Java et l exécuter avec le support d exécution Xalan. Faire la même chose avec un script Python et l environnement fourni (référentiel de modèles de composants, référentiel de modèles Java, extrait de transformation). 39

Conclusion 40

Conclusion Principaux paradigmes de l ingénierie logicielle Raffinement de procédures Composition d objets Transformations de modèles Ingénierie dirigée par les modèles Approche innovante et prometteuse Beaucoup de travail (chantier ~10 ans) Une nouvelle évolution de l ingénierie logicielle Qui était dans l air depuis quelque temps 41

Perspectives Définir un méta-modèle de transformations Comprendre les mécanismes sous-jacents Définir le standard MOF 2.0 QVT On y travaille :o) Outillage pour processus logiciels «MDA» Produire un environnement adapté (depuis M2) Disposer de moteurs de transformations Définir des méthodologie de spécification de processus On y travaille aussi :o)) 42

Références Les spécifications de l OMG UML, MOF, OCL, QVT Les travaux des projets ou labos Triskel (Rennes), Atlas (Nantes) DSTC (Brisbane,.au) Les techniques de compilations Une transformation est au bout du compte une forme de compilation Un petit coup de Google :o) 43