• Aucun résultat trouvé

5.2 Le flot de conception du contrôle

5.2.2 Les transformations de modèles

5.2.2.1 Le mécanisme de fusion dans Gaspard2

Le mécanisme de merge dans UML permet au contenu d’un package d’être étendu par le contenu d’un autre package [98]. Cela permet à un élément source d’ajouter des caractéristiques de l’élément cible à ses caractéristiques résultant en un élément qui combine les caractéristiques des deux. Ce mécanisme peut être utilisé quand des éléments définis dans des packages différents ont le même nom et représentent le même concept. Souvent ce mécanisme est utilisé pour fournir différentes définitions pour un concept donné pour différents objectifs, commençant par une définition de base commune. Le concept de base est étendu d’une façon incrémentale où l’incrément est défini dans un package séparé [98].

L’utilisation de ce mécanisme de merge dans la transformation de modèles permet de réduire le nombre de règles de transformation puisque le métamodèle cible n’est qu’une version étendue du métamodèle source. Ces règles considèrent dans ce cas la partie du modèle source qui sera traduite conformément aux concepts introduits par le métamodèle cible et qui étendent le métamodèle source.

La transformation de modèles dans Gaspard2 est basée sur ce mécanisme. A partir du métamodèle MARTE différents métamodèles sont construits. Une chaîne de trans- formations dans Gaspard2 est composée dans un ensemble de transformations qui commencent par une transformation d’UML vers MARTE. Ensuite, les transformations qui suivent ont des métamodèles cibles qui sont des versions étendues du métamodèles MARTE. Ce mécanisme permet aussi à des chaînes ciblant différentes plates-formes (OpenCl, SystemC, VHDL, etc) des transformations avant d’aller dans des transforma- tions qui ajoutent des concepts de plus en plus spécifiques à la plate-forme cible. Les transformations dans Gaspard2 sont écrites en QVTO [111]

5.2.2.2 La chaîne de transformations des modèles de contrôle

La figure 5.11 montre la chaîne de transformations que nous utilisons pour la généra- tion des systèmes de contrôle en VHDL. Les deux premières transformations existent déjà dans Gaspard2. Pour pouvoir générer les systèmes de contrôle modélisés en utili- sant le profil MARTE avec les extensions proposées dans la section 5.2.1.2, nous avons modifié la transformation UML2MARTE. A la base, cette transformation traduit le mo- dèle en entrée en un modèle conforme au métamodèle MARTE tel qu’il est défini par l’OMG. Nous avons modifié cette transformation afin que les modèles en sortie sup- portent les concepts du contrôle semi-distribué qu’on a introduit dans les extensions

UML2MARTE ClockReset VHDLSyntax MARTE2PortInstance Modèle de contrôle déployé Modèle conforme au métamodèle VHDL

FIG. 5.11 – Chaîne de transformations pour les modèles de contrôle

du profil MARTE proposées. Le métamodèle cible de cette transformation n’est plus le métamodèle MARTE mais une version étendue de ce modèle et qui contient les concepts du contrôle semi-distribué. Les trois transformations qui restent font parti de notre contribution dans le environnement Gaspard2. A la base, notre proposition de ces trois transformations était dans le cadre de la génération de systèmes ciblant la plate-forme VHDL dans Gaspard2. Elle visait à la génération d’accélérateurs matériels à partir d’un modèle d’application en entrée mettant en oeuvre le parallélisme de données en utilisant le package RSM de MARTE. La figure 5.12 illustre la chaîne de transfor- mations utilisée pour cela. Cette chaîne contient des transformations génériques (qui peuvent être utilisées par différentes chaînes indépendamment de la plate-forme visée). Ces transformations sont les quatre premières transformations qui existaient déjà dans Gaspard2 avant notre contribution. Les trois dernières transformations font parti de notre contribution dans l’environnement Gaspard2 pour la génération du code VHDL. La chaîne de transformations que nous utilisons pour la génération des systèmes de contrôle réutilise un sous-ensemble des transformations de la chaîne de la figure 5.12 moyennant une modification dans la transformation UML2MARTE pour y intégrer les concepts de contrôle semi-distribué. Les transformations Tiler2Task et Shape2Loop de la chaîne de la figure 5.12 ne sont pas utilisées dans la chaîne de contrôle puisque les modèles UML utilisés ne contiennent pas de Tilers et il n’y a pas de répétitions d’instances de composants. Ces deux transformations peuvent toujours être utilisées dans la chaîne de contrôle, mais il n’y aura aucune différence entre leurs entrées et sorties. Plus de détails sur ces deux transformations peuvent être trouvées dans [10].

Dans le reste de cette section, nous décrivons brièvement la chaîne de transforma- tions du modèle de contrôle. Plus de détails sur les transformations et les métamodèles proposés pour cette chaîne se trouvent dans l’annexe B. La transformation UML2MARTE a comme entrée le modèle UML et comme sortie un modèle conforme au métamodèle MARTE. Pour que le modèle généré par la transformation supporte les notions du

UML2MARTE Tiler2Task

Shape2Loop ClockReset VHDLSyntax

MARTE2PortInstance

Modèle d'entrée

Tranformations réutilisées par la chaîne de contrôle Tranformations étendues dans la chaîne de contrôle

Modèle conforme au métamodèle VHDL

FIG. 5.12 – Chaîne de transformations de la plate-forme VHDL

contrôle semi-distribué, le métamodèle MARTE a été étendu. Cette extension est une traduction de l’extension que nous avons présentée dans la section 5.2.1.2 pour le profil MARTE selon la syntaxe du métamodèle. Plus de détails sur cette extension se trouvent dans l’annexe B. La transformation UML2MARTE a été également étendue en ajoutant des règles de transformations permettant de traduire les composants UML appliquant les stéréotypes proposés pour le contrôle en des classes selon l’extension du métamodèle MARTE. La transformation MARTE2PortInstance déjà existante dans Gaspard2 permet d’ajouter au modèle intermédiaire la notion d’instances de ports qui n’existe pas dans MARTE. La transformation ClockReset permet d’ajouter la notion de ports d’horloge et réinitialisation aux composants puisque la plate-forme cible ici est la plate-forme VHDL. Une extension du métamodèle MARTE a été proposée pour réaliser cette transformation. La transformation VHDLSyntax permet de traduire les éléments du modèle en entrée selon les concepts VHDL. Ces concepts sont introduits dans par un métamodèle VHDL qui étend le métamodèle MARTE. La transformation VHDLSyntax permet donc d’avoir un modèle contenant toutes les notions nécessaires (entités, composants, architectures, ports, signaux, etc) permettant de faciliter la génération du code en VHDL. Pour la trans- formation modèle vers texte permettant la génération du code, nous avons choisi de la décrire dans ce chapitre puisqu’elle permet d’obtenir le résultat final des transformations qui sera utilisé dans le chapitre suivant pour l’implémentation physique du contrôle semi-distribué.