Ces modèles et métamodèles qui nous entourent ! Cédric Dumoulin - DaRT Qu’est ce qu’un modèle Définitions (Wikipedia by Google) « Un modèle mathématique est une traduction de la réalité pour pouvoir lui appliquer les outils, les techniques et les théories mathématiques » « [En économie] Un modèle est une représentation de la réalité. » « En informatique, un modèle a pour objectif de structurer les données, les traitements, et les flux d'informations entre entités. » C’est une abstraction de la réalité Qu’est-ce qu’un modèle One and Three Chairs" by Joseph Kosuth « This artwork is about different ways to show ideas. It presents one chair and three different ways of picturing this same chair. » Qu’est-ce qu’un modèle Une carte routière Qu’est-ce qu’un modèle autre plan plan d’évacuation Qu’est-ce qu’un modèle One and Three Chairs" by Joseph Kosuth « This artwork is about different ways to show ideas. It presents one chair and three different ways of picturing this same chair. » Qu’est-ce qu’un modèle Un plan d’architecte Pourquoi modéliser ? Que font les ingénieurs ? Avant de construire de vraies choses … …ils construisent d’abord des modèles … les étudient, et tirent des conclusions Pourquoi modéliser ? Modèle de l’ingénieur Représentation réduite d’un système Système modélisé Modèle Objectifs Aider à comprendre un problème complexe ou une solution Communiquer à propos d’un problème complexe ou d’une solution Avantages d’un modèle Abstrait Compréhensible Il représente fidèlement le système modélisé Prédictif Il permet d’exprimer une chose complexe dans une forme plus facilement compréhensible par l’observateur Précis Il fait ressortir les points importants tout en enlevant les détails non nécessaires Il permet de faire des prévisions correcte sur le système modélisé Peu coûteux Il est bien moins coûteux à construire et étudier que le système lui même Les modèles et l’informatique pour faire un programme complexe, on a besoin de le modéliser. Article * -prix -reference -stock 0..1 Catalogue 1 Titre pour explorer les solutions, pour les valider, pour montrer au client ce que sera l’application. Video Description 1 Album UML : Unified Modeling Langage * Support -descriptionSupport Pourquoi comprend t-on un modèle ? Parce qu’il est simple ? Parce qu’il représente la réalité ? Parce qu’il existe une légende ! Pourquoi comprend t-on un modèle ? La légende c’est La légende est elle même un modèle ! l’explication des concepts /dessins du modèle la grammaire du modèle On l’appelle un métamodèle Existe-t-il un métamodèle décrivant le modèle-légende ? nom, nom, … = dessin, dessin, … c’est le méta-métamodèle Existe-t-il un métamodèle décrivant le modèle décrivant le modèle-légende ? Et si oui, Existe-t-il … Mettre image legende carte Récapitulons ! Modèle et Métamodèle Standardisé par l’OMG méta-métamodèle métamodèle langage pour décrire des modèles modèle langage pour décrire des langages ce décrit lui-même ! abstraction de la réalité Le monde réel Qu’est ce que l’IDM Ingénierie Dirigée par les Modèles Tr Met le modèle au cœur des processus Part d’un ou plusieurs modèles … … transforme vers un autre modèle … … jusqu’à avoir du code Tr Ce n’est pas nouveau : une compilation est aussi une transformation ! Compilation/Tr A quoi sert l’IDM?? avantages abstraction, réutilisation, pérennité, automatisation, contrôles et tests à différents niveaux unification des processus compiler = transformer des modèles on peut réutiliser les travaux fait sur la compilation Conception puis développement == changement de niveau d’abstraction (de modèle) IDM vs MDA Model Driven Architecture Architecture Dirigé par les Modèles Modèle proposé par l’OMG (le nom est déposé !) Part d’un CIM (Computation Independent Model) Transforme en PIM (Platform Independent Model) Puis en PSM (Platform Specific Model) Et génère le code … Variante particulière de l’IDM Plus restrictive Quelques outils actuels Papyrus UML Éclipse - EMF framework pour manipuler modèle et métamodèle QVT (QVTO) modeleur UML 2 open source standard pour transformer des modèles M2T (Acceleo) standard pour la génération de texte (code) D’autres Modèles et Métamodèles méta-métamodèle métamodèle modèle monde réel Texte, Livre … eBNF Langage Informatique syntaxe eBNF XML schema schema PARTIE 2 IDM en pratique Comment structurer un projet IDM ? Comment utiliser le projet ? Comment modéliser un métamodèle, un modèle ? J’ai fait un métamodèle, que puis-je faire avec ? Comment fonctionnent les transformations, la génération de texte/code ? IDM en pratique Structure typique d’un projet MM1.1 MM1.2 haut niveau d’abstraction MM2 MM2 MM C++ MM Java MM .net code C++ code Java code .net code IDM en pratique Structure typique d’un projet MM1.1 MM1.2 transfo transfo MM2 vérification simulations, … transfo transfo MM2 transfo transfo MM C++ MM Java MM .net génération génération génération code C++ code Java code .net Métamodèles transformations génération de code/texte optionnel : vérifications, simulations, tests, … Utilisation du projet Point de vue utilisateur Modèle 1.1 transfo Modèle 1.2 transfo Modèle 2 vérification simulations, … transfo Modèle 2 transfo exécuter transfo transfo Modèle C++ Modèle Java Modèle .net génération génération génération code C++ code Java code .net L’utilisateur appuie sur le bouton L’application produit le texte/code Utilisation du projet Derrière la scène Modèle 1.1 transfo Modèle 1.2 transfo Modèle 2 vérification simulations, … transfo L’application Modèle 2 transfo transfo transfo Modèle C++ Modèle Java Modèle .net génération génération génération code C++ code Java code .net produit les modèles intermédiaire Effectue les testes, les vérifications, les simulations, … Construire un métamodèle 1 concept 1 (méta)classe 1 relation entre concepts 1 association entre classes Peut se faire en UML Exemple : bibliothèque de livres Du métamodèle aux outils pour manipuler les modèles manipulation édition arborescente sauvegarde édition graphique Le tout en quelques minutes !!! D’un modèle à l’autre La transformation de modèles métamodèle métamodèle d’entrée d’entrée typé par typé par lit conforme à modèle modèle d’entrée d’entrée règles lit métamodèle métamodèle de desortie sortie conforme à produit modele modèle de desortie sortie Du modèle au code La génération de code métamodèle métamodèle d’entrée d’entrée typé par templates templates lit conforme à modèle modèle d’entrée d’entrée lit produit code code code Saisir un modèle, Quel éditeur utiliser ? Editeur arborescent directement avec le code java Editeur graphique GMF Editeur graphique home made Ergonomie du modeleur plus près du domaine très bien adapté au domaine adapté au prototypage rapide modèle graphique complexe à faire problème d’ergonomie, customisation limité Le même éditeur pour différent modéles Adaptation au domaine grâce au profil associé pas toujours intuitif demande une bonne compréhension du modèle Modeleur UML + profil - temps de réalisation Profile à définir - une transformation à prévoir (UMLMM domaine) Demo ! Modéliser une ville les rues les bâtiments les habitants Générer les programmes Java pour manipuler des modèles de villes Construire des modèles !! Mieux que les syms !! Métamodèle d’une ville En savoir plus Wikipedia OMG – www.omg.org http://www.eclipse.org/downloads/ Eclipse EMF UML, QVT, M2T, … Eclipse Modeling http://fr.wikipedia.org/wiki/Ingénierie_dirigée_par_les_modèles http://www.eclipse.org/modeling/emf/ Tutorial : Help > Help Contents > EMF Developer Guide > Tutorials > Generating an EMF Model Papyrus – modeleur UML Open Source Papyrus I – www.papyrusuml.org Papyrus II (Juin 2010) – QVTo CEA - LIFL projet Eclipse – CEA – LIFL – Airbus – Atos http://www.eclipse.org/m2m/ Acceleo http://www.eclipse.org/modeling/m2t/?project=acceleo