! You are browsing an archive website for Modelio 1.x. Click here to visit the official website for most recent versions of Modelio

La technologie MDA (Model Driven Architecture)


Qu'est-ce que c'est que MDA?

Proposée et soutenue par l'OMG (Object Management Group), l'architecture pilotée par les modèles ou MDA (pour l'anglais Model Driven Architecture) est une démarche de spécification de systèmes informatiques, qui sépare la spécification des fonctionnalités d'un système de celle de l'implémentation de ces fonctionnalités sur une plate-forme technologique particulière.

Cette approche se concentre sur les modèles, fournissant un niveau supérieur d'abstraction pendant le développement, et permettant la séparation des modèles indépendants de la plate-forme (les modèles PIM) des modèles spécifiques à une plate-forme cible (les modèles PSM).

Les notions de méta-modèles et de transformation de modèles sont particulièrement importantes dans l'architecture pilotée par les modèles. Les méta-modèles sont définis à l'OMG en utilisant le standard MOF (Meta Object Facility). Un langage standard spécifique à la transformation de modèles appelé QVT a été défini par l'OMG, qui a également défini un mécanisme d'échange de modèles basé sur XML et appelé XMI.

Technologie MDA


La réalité industrielle de MDA

Les implémentations industrielles de MDA se basent pour la plupart sur le standard UML et le mécanisme des profils UML. Ce mécanisme présente les avantages suivants :

  • Supporté par la plupart d'outils UML sur le marché
  • Réutilise le méta-modèle UML, évitant ainsi la réinvention de la roue avec les notions principales de modélisation de logiciels (classe, état, ...)
  • Interchangeable entre différents outils UML : Un modèle UML étendu par un profil peut être échangé entre différents outils UML, même si le profil lui-même n'est ni connu ni appliqué par l'autre outil. La partie UML du modèle étendu sera encore présente.
  • Evite le schéma de "l'autisme" : Partir de zéro et inventer une nouvelle technique de modélisation pour un certain groupe d'utilisateurs aurait comme conséquence de verrouiller ces utilisateurs et leur travail dans un format qu'eux seuls comprennent et que seul leur outil sait traiter. Voici l'avantage principale de la réutilisation du standard UML par rapport au développement d'un nouveau méta-modèle "from scratch".
  • Un profil s'applique ou s'enlève d'un modèle dynamiquement. Il peut également être combiné à d'autres profils sur le même modèle.
  • Très rapide à mettre en oeuvre, bénéficiant de tous les avantages de toutes les fonctionnalités fournies par les outils UML (génération de documentation, support du travail en équipe, ...)

Une implémentation notable de MDA est l'outil opensource EMF (Eclipse Metamodel Framework). Cet outil est très largement utilisé par les projets de recheche et constitue un bon moyen de support rapide d'un méta-modèle. En revanche, EMF est moins adapté aux modèles de grande taille, ne fournit aucun support du travail en équipe, et n'est pas généralement utilisé dans l'élaboration des outils industriels. EMF n'est pas complètement conforme au standard MOF. Modelio supporte XMI pour les imports ou exports EMF.

On ne peut pas dire que QVT, le langage de transformation de modèles standardisé par l'OMG, a connu un grand succès. Il n'a pas d'implémentation complète, pas de support industriel fort et n'est pas largement utilisé. D'autres langages de transformation tels que ATL (opensource) ont eu plus de réussite.

A notre avis, certains des ces langages possèdent des fonctionnalités intéressantes, mais ils sont généralement loin de la qualité des langages 3G bien établis, tels que Java or C#  (une organisation bien définie, un support et une implémentation d'outils efficaces, des capacités de debug, une large gamme de librairies, ...). L'utilisation de ces langages peut rapidement entraîner des problèmes de maintenance, de performance ou d'échelle.


La vision et la contribution de SOFTEAM et Modelio à MDA

Depuis sa création en 1989, SOFTEAM fait de la recherche et du développement dans le domaine de l'ingéniérie piloté par le modèle une priorité, fournissant un outil supportant cette approche depuis 1991. Une technologie spécifique nommée "hypergenericité" (publiée dans un livre - "Object Engineering – The Fourth Dimension", Addison Welsey – 1994), créée en 1992 et supportée par Objecteering depuis 1994, a évolué pour intégrer et renforcer la technologie des profils UML. Les profils UML font maintenant partie du standard UML de l'OMG, et seront améliorés encore dans le standard UML 2.0. Ces améliorations seront l'écho de celles implémentées par SOFTEAM dans l'outil Objecteering depuis 1994. SOFTEAM continue à gagner en expérience, fournissant une gamme d'outils et de services de conseil en constante amélioration, conçue pour apporter aux clients des approches et des implémentations dédiées MDA. Basée sur UML, les profils UML et la gamme d'outils Objecteering/UML Profile Builder, cette technologie arrive maintenant à maturité et s'applique à des centaines de projets.

L'outil Modelio fournit une large gamme de fonctionnalités pour le support de MDA :

  • Un méta-modèle ouvert et facile à utiliser : Le méta-modèle UML a été retravaillé afin de renforcer sa cohérence, simplifier son usage et bénéficier de son orientation objet. Les développeurs qui connaissent UML2/EMF API le trouveront très facile à comprendre et utiliser.
  • Une riche API Java pour programmer de nouvelles capacités de modélisation : Tout ce qui peut être fait manuellement dans Modelio peut également l'être par les programmes. Par exemple, la transformation de modèles, la création de diagrammes et l'application de patterns peuvent facilement être programmées à l'aide de l'API. De même, de nouveaux générateurs peuvent être développés en utilisant des services d'ingéniérie round trip prédéfinis. L'éditeur Modelio peut être customisé par le rajout de nouveaux types de diagrammes, une nouvelle IHM ou de nouveaux couplages aux outils externes.
  • Un mécanisme de packaging MDA très flexible : Modelio peut être étendu par l'installation de "modules" dans les projets. Ces  modules regroupent des extensions et des services MDA. Leur installation customise l'outil Modelio, en ajoutant de nouveaux services, en appliquant des profils dédiés et en adaptant l'IHM Modelio à un contexte particulier.
  • Un module dédié appelé MDA Designer : Ce module permet la modélisation de profils et la définition de nouveaux services. Il fournit également des assistants de création de modules et de services qui génèrent automatiquement le code Java nécessaire. Le module MDA Designer gère le packaging de définition de profils, de code MDA Java et de toutes les ressources  nécessaires (comme des icônes, par exemple) en un module, qui peut ensuite être chargé dans Modelio.
  • Un langage de script (Jython) : Ce langage de script vous permet de définir et d'appliquer dynamiquement des requêtes MDA aux modèles. Le refactoring de modèles et la définition de batchs de processus MDA (par exemple, l'exécution de toutes les opérations de transformation PIM->PSM et de génération de code la nuit, et leur connexion à un processus MAVEN, ANT ou makefile) sont deux exemples des services fournis par ce support du langage de script Jython.
  • Support de profils renforcé : Vous pouvez appliquer, enlever ou combiner des profils de manière dynamique, ou mettre à jour un modèle avec une nouvelle version d'un profil.

Toutes ces fonctionnalités font de Modelio un outil hautement efficace dans l'implémentation d'une approche MDA. Les utilisateurs bénéficient de toute la puissance de Java, ainsi que celle du méta-modèle et des librairies Modelio, tout en gardant la possibilité d'utiliser d'autres moteurs de transformation, comme par exemple des moteurs de transformation modèle->texte basés sur des templates.