• Aucun résultat trouvé

Limites des approches existantes

3.3 Facilités d’ingénierie pour les langages de modélisation dédiés

3.3.3 Limites des approches existantes

Les approches existantes fournissent des facilités pour la définition et l’outillage des lan- gages dédiés, et pour la manipulation des modèles. Ainsi, il est possible de définir explicitement des relations entre modèles au sein de mégamodèles, afin de de visualiser et de manipuler des ensembles de modèles liés. Il existe également des approches permettant de réutiliser des transformations de modèles entre différents langages dédiés, ou au sein de transformations plus complexes.

Cependant, ces approches restent déconnectées les unes des autres et manquent d’un cadre unifié permettant à la fois leur combinaison et leur comparaison. En effet, ces approches utilisent différents formalismes et langages pour la définition de la syntaxe abstraite (e.g., Ecore, MOF, sous-ensemble du MOF, triple graphs) et pour l’expression des transformations de modèles réutilisables (e.g., langages de transformation déclaratifs ou impératifs). Certaines approches nécessitent également d’intégrer de nouvelles entités à l’ingénierie dirigée par les modèles (e.g., templates, concepts, relations sous la forme de triple graphs).

Cette disparité rend ces différentes approches difficilement combinables. Puisque les trans- formations de modèles génériques s’appuient sur des entités différentes des métamodèles, il n’est pas possible de les chaîner à l’aide d’approches qui comparent la signature des transforma- tions en termes de métamodèles. De même, il n’est pas possible de chaîner des transformations déclarées à l’aide de relations explicites in-the-large au sein de transformations plus complexes. Enfin, utiliser ces relations explicites pour déclarer des transformations génériques n’est pas non plus possible, puisque les différents mégamodèles s’appuient sur les métamodèles.

La Figure 3.3représente cette situation : les transformations de modèles génériques sont définies sur des entités spécifiques (concepts, templates, ou motifs à entités variables), les trans- formations qu’il est possible de composer sont définies sur les métamodèles et les mégamodèles contiennent les transformations réifiées par la modélisation in-the-large.

Puisqu’il n’existe pas de formalisme commun à ces approches, il est également difficile de les comparer. Pour connaître leurs caractéristiques et les comparer, voir les mesurer, afin, par exemple, de choisir une méthode plutôt qu’une autre, il faudrait pouvoir exprimer ces caractéristiques d’une manière unique.

En effet, si la définition de la syntaxe abstraite sous la forme d’un graphe de classes est un standard accepté dans la communauté de l’ingénierie dirigée par les modèles, il n’en va pas de même pour le reste de la spécification des langages de modélisation dédiés. Il n’existe donc pas de cadre unifié et bien défini qui permette la comparaison et la combinaison d’outils et de facilités tels que ceux présentés plus haut.

Conclusion 43 ��������� �� ������� ��� ������ ��� ������ ������������� �� ��� ���������������� �������� ���������������� ���������������� ������ ��� ���������������� ������� �������� ��������������� ����������������� ���� ��������������� ������������ ���������������� �� �� ��������������� ���������������� �� �� ����������������� ��������� ���������������� �� �� ������������ ��� ������������

Figure 3.3 – Facilités pour la définition et l’outillage de langages de modélisation dédiés.

3.4 Conclusion

L’ingénierie dirigée par les modèles prône l’utilisation de multiples modèles dans la concep- tion de systèmes logiciels. Chaque modèle est exprimé dans un langage de modélisation dédié à une préoccupation particulière, permettant la séparation des préoccupations. De plus, l’in- génierie dirigée par les modèles a développé une méthodologie et des outils pour faciliter la définition et l’outillage des langages de modélisation dédiés.

Cependant, un certain nombre de ces outils ont été conçus uniquement pour contourner des limites inhérentes à la spécification d’un langage de modélisation dédié et pourtant inutiles. En effet, la relation de conformité, considérée par certains comme un principe de base de l’ingénie- rie dirigée par les modèles [Béz06] et sur laquelle s’appuient les outils et les environnements de modélisation est trop contraignante.

44 Définition de langages de modélisation dédiés

conformité interdit à un modèle de se conformer à plus d’un métamodèle. Cependant, lors de la conception d’un langage de modélisation dédié, l’instanciation n’est pas la seule préoccupation. Les concepteurs et utilisateurs de langages de modélisation dédiés ont besoin de visualiser, d’éditer, de connecter, de vérifier et de modifier les modèles. Or, définir les transformations de modèles à partir du métamodèle du langage empêche la réutilisation des outils et pousse à la conception de langages de modélisation dédiés monolithiques.

Pour contourner les limites de la relation de conformité et faciliter la définition des langages de modélisation dédiés, de nombreuses approches ont été proposées. Cependant, ces approches restent déconnectées les unes des autres et manquent d’un cadre unifié qui permettrait de les comparer et de les combiner.

Dans le chapitre suivant (Chapitre4), nous présentons les systèmes de types des langages de programmation orientés-objet. Ces systèmes unifient de nombreuses facilités au travers des relations de typage et de sous-typage, y compris la réutilisation par polymorphisme de sous-type. Nous présentons également les travaux existants pour le typage de modèles afin d’amener les facilités de typage au niveau des modèles et des langages de modélisation dédiés.

Chapitre 4

Typage de modèles

L’ingénierie dirigée par les modèles est intrinsèquement liée aux concepts du paradigme objet. En effet la spécification des langages de modélisation dédiés est centrée sur la définition de la syntaxe abstraite sous la forme d’un graphe de classes. Les systèmes de types fournissent un cadre formel supportant de nombreuses facilités au sein des langages de programmation orientés-objet. Ces facilités incluent notamment différents mécanismes de réutilisation, ainsi que la possibilité de manipuler les objets comme des entités de première classe (i.e., les affecter à une variable, les passer en paramètre ou les retourner à la fin d’une opération). C’est pourquoi nous étudions dans ce chapitre les mécanismes des systèmes de types orientés-objet et les facilités qu’ils supportent. Parmi ces mécanismes, certains peuvent permettre la substituabilité de modèles par des relations de sous-typage entre groupes de types. Steel et al. ont proposé une première définition d’un type de modèles et d’une relation de sous-typage afin d’amener les facilités de typage de l’objet au niveau des modèles, notamment le polymorphisme.

Nous commençons par présenter les mécanismes de base qui sous-tendent les systèmes de types orientés-objet : objets, types objets et classes (Section4.1). Nous présentons ensuite le polymorphisme et l’héritage, qui permettent la réutilisation de la structure et du comportement des objets (Section4.2). Nous abordons également les approches proposées pour repousser les limites du polymorphisme dans le cadre du polymorphisme de groupe de types (Section4.3). Enfin, nous présentons les travaux de Steel et al. inspirés de ces approches et étudions leurs limites (Section4.4).

4.1 Principes de base du typage objet

La relation de typage dans les langages de programmation orientés-objet est le support à de nombreuses facilités telles que la réutilisation sûre, l’abstraction, la détection précoce d’erreurs, le refactoring, l’auto-complétion ou les analyses d’impact. Nous présentons dans cette section les bases sur lesquelles s’appuient les systèmes de types orientés-objet.