Problème : XMI ne permet pas le développement d’opérations sur les modèles.
Un autre format de représentation des modèles est nécessaire pour :
permettre leur manipulation dans les langages de programmation orientée objet.
développer les opérations sur les modèles de la même manière que pour développer n’importe quelle application informatique.
L’OMG a proposé un format de représentation permettant la manipulation des modèles dans les langages de programmation orientée objet.
Ce format était défini initialement dans le standard MOF1.3 et utilisait le langage de définition d’interface CORBA/IDL.
Actuellement, c’est le standard MOF2.0 to IDL qui définit ce format.
De son côté, le JCP (Java Community Process) a défini le standard JMI (Java Metadata Interface), une API Java permettant la manipulation des modèles.
Enfin, le framework EMF (Eclipse Modeling Framework) a été conçu pour la manipulation des modèles dans l’environnement ouvert Eclipse.
Le principe
Quel que soit le standard ou le framework (MOF, JMI ou EMF), l’approche est sensiblement la même.
L’idée est de fournir un ensemble d’interfaces offrant les opérations nécessaires à la manipulation des modèles.
Le développement d’une opération sur les modèles consiste simplement à développer une application utilisant ces interfaces de manipulation des modèles.
Les interfaces de manipulation de modèles proposées par ces standards sont de deux types :
les interfaces dites taylored, c’est-à-dire taillées sur mesure pour un métamodèle donné.
et les interfaces dites réflectives, qui permettent l’accès au niveau du métamodèle.
Les interfaces taylored
Les interfaces taylored relatives au métamodèle représentant la structure des diagrammes de cas d’utilisation permettent d’effectuer les opérations suivantes :
Connaître le nombre d’acteurs contenus dans un modèle, ajouter ou supprimer des acteurs, connaître le nom d’un acteur et le modifier, connaître les liens d’héritage entre acteurs et les modifier et connaître et modifier les cas d’utilisation dans lesquels participe un acteur.
Connaître le nombre de cas d’utilisation contenus dans un modèle, ajouter ou supprimer des cas d’utilisation, connaître l’intitulé d’un cas d’utilisation et le modifier, connaître les cas d’utilisation étendus ou inclus dans un cas d’utilisation et les modifier.
Connaître le nombre de systèmes contenus dans un modèle, ajouter ou supprimer des systèmes, connaître le nom d’un système et le modifier et connaître l’ensemble des cas d’utilisation contenus dans un système et les modifier.
Métamodèle représentant les diagrammes de cas d’utilisation associés à un exemple de modèle:
Les interfaces réflectives
L’intérêt des interfaces réflectives est qu’elles offrent des moyens d’accéder aux métaclasses des métamodèles.
À partir d’un élément d’un modèle, il est possible d’accéder à sa métaclasse et ainsi d’obtenir toutes les informations qui le structurent (attributs, références, etc.).
Par exemple, sur le modèle de la figure (diapositive précédente) , à partir de l’élément correspondant au système, il est possible d’accéder à la métaclasse système et ainsi de savoir que cette métaclasse a un méta-atttibut nommé nom et des métaréférences vers des éléments instances de la métaclasse cas d’utilisation.
Grâce à ces informations, nous pouvons connaître le nom du système ainsi qu’obtenir les cas d’utilisation qui le composent.
Rendre les modèles productifs consiste à leur appliquer des transformations de modèles pour obtenir des résultats utiles au développement, généralement sous la forme de modèles plus détaillés et proches de la solution technique ou du code.
Différentes transformation
Transformations de modèles CIM vers PIM:
Transformations de modèles PIM vers PIM: Permettent de raffiner les PIM afin d’améliorer la précision des informations qu’ils contiennent.
Transformations de modèles PIM vers PSM.
Transformations de modèles PSM vers du code.
une transformation exprime des correspondances structurelles entre les modèles source et cible.
Ces correspondances structurelles s’appuient sur les métamodèles des modèles source et cible.
Par exemple, une transformation de modèles visant à transformer des modèles UML vers des schémas de bases de données relationnelles (BD) spécifierait la règle suivante :
à toute classe UML correspond une table d’un schéma d’une base de données.
Cette règle exprime bien une correspondance structurelle entre les métamodèles UML et BD et plus précisément une correspondance entre les métaclasses Class et Table.
Spécification des règles de transformation
Trois approches aujourd’hui répertoriées permettent la spécification de ces règles de correspondances:
Approche par programmation: Consiste à utiliser les langages de programmation orientée objet, Cette approche est la plus utilisée car elle est très puissante et fortement outillée.
Approche par template : Consiste à définir les canevas des modèles cibles souhaités en y déclarant des paramètres. Ces paramètres seront substitués par les informations contenues dans les modèles sources.
Cette approche nécessite un langage particulier permettant la définition des modèles templates.
Approche par modélisation : L’objectif est de modéliser les transformations de modèles et de rendre les modèles de transformation pérennes et productifs et d’exprimer leur indépendance vis-à-vis des plates-formes d’exécution.
Le standard MOF2.0 QVT (Query, View, Transformation) définie par l’OMG a pour objectif de définir le métamodèle permettant l’élaboration des modèles de transformation de modèles.
Résumé
La transformation des modèles de MDA avec les différentes approches à donner issue au développement des outils permettant d’automatiser le passage d’un modèle à un autre.
Les différents outils montrent que l’approche MDA n’est pas seulement théorique et qu’elle est incontournable dans les développements logiciels.