MDA

MDA : la technologie de l'architecture pilotée par le modèle (Model-Driven Architecture)

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

Proposé et soutenue par l'OMG (Object Management Group), MDA (ou l'architecture pilotée par le modèle 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 particulière.

Cette approache se concentre sur les modèles, fournissant un niveau d'abstraction supérieur 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 le modèle. 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.

 

Les Niveaux de Modèles MDA

MDA technology

 

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 des outils sur la 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, et ainsi de suite)
  • 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 de toute pièce.
  • 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, et ainsi de suite)

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, ait 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. En revanche, certains des ces langages apportent des fonctionnalités intéressantes, même s’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 contribution de Modelio à MDA

Depuis 1989, fait de la recherche et du développement dans le domaine de l'ingénierie piloté par le modèle une priorité, fournissant un outil supportant cette approche depuis 1991. Une technologie spécifique nommée "hypergenericité" et publiée dans un livre ("Object Engineering – The Fourth Dimension", Addison Welsey) en 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 Modelio dans l'outil Objecteering/UML depuis 1994. Depuis cette date, Modelio 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.

Support Modelio pour MDA

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énierie roundtrip 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 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.