• Aucun résultat trouvé

3. Scénario d’usage dans un environnement de

3.1. Supports nécessaires pour un environnement coopératif

3.1.2. Approches par modèles (IDM)

L’Ingénierie dirigée par les modèles (IDM) [Hal05] et [Fav06] ou Model Driven Engineering (MDE) [Sch06] propose des pistes qui permettent aux informaticiens de générer tout ou partie d’une application informatique à partir de modèles. Dans le contexte de l’IDM, les modèles sont utilisés comme des éléments de la conception, de la discussion ou de la documentation. Le principe de l’IDM réside dans l’exploitation de modèles comme des entrées du processus de développement d’un logiciel. En pratique, cela nécessite de formaliser les modèles de logiciels à un haut niveau d’abstraction et de traduire ces modèles sur des solutions techniques spécifiques le plus automatiquement possible. Dans la terminologie de l’IDM, ces automates sont regroupés sous le terme de transformations de modèles. Les deux originalités de l’IDM sont donc d’une part des modèles plus formels à haut niveau sémantique, et d’autre part des programmes de transformations de modèles.

3.1.2.1. Intérêt de l’approche basée sur les modèles

L’approche par modèles présente de nombreux avantages. Les modèles constituent un moyen utile pour représenter des activités humaines. Les modèles sont les outils privilégiés des ingénieurs. L’utilisation des modèles favorise la communication entre les acteurs dans le cadre de la représentation et du support d’activités ou de processus coopératifs de la conception et du développement d’applications [Hal05]. La Figure 3.2 montre les trois principaux acteurs indispensables à tout développement logiciel utilisant des modèles.

(a) (b) (c)

Figure 3.2 Trois principaux acteurs de l’ingénierie des modèles [Fle06b].

La Figure 3.2-c présente un processus d’ingénierie dirigée par les modèles (IDM). Les Figure

3.2-b et Figure 3.2-a détaillent les pré-requis de ce processus de développement : les

environnements et outils indispensables à l’exploitation productive des modèles :

Ingénierie dirigée par les modèles [Kab06] : La Figure 3.2-c présente un processus de développement d’applications utilisant l’ingénierie des modèles. L’idée est que le

développeur d’applications commence par modéliser son système à partir des exigences clients avec des modèles adaptés mettant en œuvre des niveaux d’abstraction élevés. Lors de cette phase de modélisation, il utilise plusieurs langages (ou méta-modèles), fournis par le développeur d’outils de génie logiciel, afin de capturer au mieux les différents aspects du système. Pour passer de ces modèles d’analyse à un modèle de conception, le développeur d’applications édite les modèles et utilise des transformations sur étagère qui permettent de composer et de raffiner les modèles de l’application.

Outils de génie logiciel [Sri06] : La Figure 3.2-b présente les développeurs d’outils de génie logiciel et de transformations de modèles. Ces développeurs utilisent les normes et les plateformes génériques d’ingénierie des modèles pour créer des outils de génie logiciel destinés à un domaine d’application particulier. Le rôle de ces développeurs est de définir des langages ou méta-modèles spécifiques, de proposer des éditeurs permettant d’éditer les modèles correspondants et de rendre ces modèles exploitables en fournissant des transformations de modèles.

Plateformes de modélisation [Mar05] : La Figure 3.2-a représente les fournisseurs de plateformes qui sont à la base de l’ingénierie des modèles. Leur rôle est de définir les briques de base des techniques fondées sur les modèles. Ainsi, ils doivent, par exemple, définir précisément ce que l’on entend par modèle, méta-modèle, transformation, et les relations qui existent entre ces éléments. Une fois les éléments de base, leurs sémantiques et leurs relations clairement définies, l’objectif est de proposer des outils et des plateformes qui implémentent ces normes. L’environnement de modélisation GAM présenté dans la suite de ce chapitre est un exemple particulier d’une telle plateforme. Un environnement pour l’ingénierie des modèles doit permettre de définir des langages de modélisation et des transformations de modèles. Dans la pratique actuelle, des formalismes hétérogènes sont utilisés pour la définition de la structure et de la sémantique des langages et des transformations de modèles. L’hétérogénéité des formalismes utilisés est un obstacle à la fiabilité du processus de développement car le non interopérabilité entre ces formalismes rend difficile toute vérification relative à la cohérence entre les différents artefacts d’un projet [Bur04]. La première contribution de l’environnement coopératif est un langage dédié à l’ingénierie des modèles qui permet d’exprimer de façon homogène les différents artefacts d’un projet, tout en respectant des points de vue différents.

L’ensemble des acteurs représentés dans la section précédente partage l’utilisation des modèles comme base pour le processus de développement. Pour chacune de ces approches de développement, l’utilisation de modèles nécessite la définition de langages de modélisation et de transformations de modèles. En fin de compte, l’ingénierie des modèles est la discipline qui s’intéresse à ces problèmes. Dans la section suivante nous définissons avec précision ce que l’on entend par modèle dans le contexte de l’ingénierie des modèles.

3.1.2.2. Modèle, Méta-modèle, Méta-méta-modèle

Cette section présente les concepts de base de l’ingénierie des modèles (modèle, méta-modèle, méta-méta-modèle) et les relations qui existent entre ces différents concepts [Met08] :

Modèle (Le système) : La première notion importante est la notion de Modèle. Quelle que soit la discipline considérée, un modèle est une abstraction d’un système construite dans un but précis. On dit alors que le modèle représente le système. Un modèle est une abstraction dans la mesure où il contient un ensemble restreint d’informations sur un système.

Méta-modèle (le langage de modélisation) : Afin de rendre un modèle utilisable il est nécessaire de préciser le langage de modélisation dans lequel il est exprimé. On utilise pour cela un modèle. Le modèle représente les concepts du langage de modélisation utilisé et la sémantique qui leur est associée. En d’autres termes, le méta-modèle décrit le lien existant entre un méta-modèle et le système qu’il représente. Un méta-modèle est dit conforme à/ compatible avec un modèle ; le modèle est une instance de méta-modèle.

Méta-méta-modèle (le langage de la méta-modélisation) : De la même manière qu’il est nécessaire d’avoir un méta-modèle pour interpréter un modèle, pour pouvoir interpréter un méta-modèle il faut disposer d’une description du langage dans lequel il est écrit : un modèle pour les modèles. C’est naturellement que l’on désigne ce méta-modèle particulier par le terme de méta-méta-méta-modèle. En pratique, un méta-méta-méta-modèle détermine le paradigme utilisé dans les méta-modèles et les modèles construits.

La base de cette approche est représentée de manière simplifiée sur la Figure 3.3 [Fle06].

Cette figure représente les trois niveaux de modélisation M1 (modèle), M2 (méta-modèle) et M3 (méta-méta-modèle) ainsi que les différentes relations qui existent entre eux. Les trois

relations de base de l’ingénierie du modèle sont : la conformité (χ), la représentation (μ) et

l’appartenance (ε). Cela permet de mettre en évidence les relations qui existent entre modèles

et langages : un modèle est exprimé dans un langage de modélisation (c’est-à-dire qu’il appartient à ce langage) et est conforme au modèle qui représente ce langage. Le méta-méta-modèle représente le langage dans lequel il est exprimé, il est donc conforme à lui même. Cette représentation permet de stopper la déclination aux trois niveaux M1, M2 et M3.

Figure 3.3 Niveaux de modélisation [Fle06].

En pratique, un produit industriel comme un « Ventilateur d’un PC » définit le Système réel, et la façon de représenter et de comprendre ses fonctionnalités et ses composants définit le Modèle du produit. Le modèle est décrit via un langage avec des concepts définis, par un Méta-modèle (PPO, STEP, CPM, …). Notons qu’un méta-modèle n’est pas un modèle d’un modèle. Selon l’IDM, un méta-modèle est un modèle qui définit le langage d’expression d’un modèle. Dans l’exemple précédent, les concepts « fonction » ou « composant » qui accompagnent la représentation du Ventilateur d’un PC constituent le méta-modèle utilisé pour réaliser le modèle de produit. Le modèle de produit doit être conforme à ce langage pour être lisible et utilisable.

Les principaux langages de méta-modélisation existants dans le domaine d’IDM sont MOF, CMOF, EMOF et ECore. MOF (Meta-Objet Facilities) a été normalisé par l’OMG lors de la construction d’UML. EMOF (Essential MOF) et CMOF (Complete MOF) sont deux

évolutions de MOF définies lors de la normalisation de UML. CMOF contient un ensemble de concepts plus important que EMOF qui lui ne contient que les concepts essentiels à la modélisation. Enfin, le langage ECore n’est pas une norme mais le langage de méta-modélisation défini par IBM et utilisé dans l’EMF (Eclipse Modeling Framework).