Académique Documents
Professionnel Documents
Culture Documents
Année 2010
Matthias B RUN
le 18 octobre 2010
à l’École Centrale de Nantes
J URY :
Je tiens tout d’abord à remercier Jérôme Delatour qui a co-encadré cette thèse. Jérôme
m’a donné l’opportunité d’effectuer un travail de recherche et a su créer un contexte idéal
pour ce travail. En plus de son soutien, de ses conseils et du savoir qu’il m’a transmis, je
tiens à saluer son enthousiasme contagieux et sa générosité. Merci Jérôme.
Je suis également extrêmement reconnaissant envers mon directeur de thèse, Yvon Trin-
quet, pour son accompagnement amical, ses conseils avisés, ses remarques pertinentes et
l’exemplarité de sa rigueur scientifique.
J’adresse mes remerciements à Laurence Duchien et à Jean-Philippe Babau qui m’ont
fait l’honneur d’évaluer mon travail de thèse et d’en être les rapporteurs. Je les remercie
pour leurs remarques toujours très constructives. Je remercie également Joël Champeau et
Sébastien Gérard d’avoir accepté de faire partie des membres du jury.
Le travail présenté dans ce mémoire a été financé par le projet TOPCASED du pôle de
compétitivité Aérospace Valley. J’adresse donc mes remerciements aux responsables de ce
projet pour leur soutien.
Ce travail de recherche a été effectué au Centre d’Étude et de Recherche du groupe
ESEO, en collaboration avec l’Institut de Recherche en Communications et Cybernétique
de Nantes (IRCCyN). Aussi, je tiens à remercier Patrick Plainchault, directeur de la re-
cherche du groupe ESEO, et Jean-François Lafay et Michel Malabre, directeurs successifs
de l’IRCCyN, de m’avoir accueilli dans leurs laboratoires. Je remercie également Jacky
Charruault, directeur général du groupe ESEO, de m’avoir engagé à l’issue de cette thèse.
Je remercie les membres de l’équipe TRAME de l’ESEO, Guillaume et Jonathan,
pour leur accueil, leurs échanges et l’amitié que nous avons tissée. Mes remerciements
s’adressent également aux membres du département AII et du département GRI de l’ESEO
avec lesquels j’ai eu la chance d’enseigner durant ces années de doctorat et avec lesquels je
suis ravi de continuer. Je remercie aussi plus largement l’ensemble des membres de l’ESEO
avec lesquels j’ai eu et j’aurai toujours plaisir à travailler.
Je remercie l’ensemble des membres de l’équipe Systèmes Temps Réel de l’IRCCyN et
tout particulièrement Sébastien et Pierre pour leurs échanges toujours très instructifs.
Je remercie également l’ensemble de la communauté IDM pour son accueil et la convi-
vialité de ses rencontres.
Je profite de ces remerciements pour saluer Charlotte, Frédéric, Arnaud, Sébastien,
Vincent, Samir, Marcelle, Mathieu, Camille, Cédric et Benoît qui ont connu, connaissent
encore ou vont connaître les joies d’un doctorat. Je remercie également Christophe pour ses
contributions aux développements des éditeurs de modèles évoqués dans ce mémoire.
Enfin, je remercie chaleureusement mes parents, ma sœur, mon beau-frère et ma belle-
famille pour leur confiance et leur soutien sans faille. Et pour terminer, un merci tout parti-
culier – exceptionnel et très personnel – à Joëlle.
A Ismaël et Alix.
Table des matières
Introduction vii
1 Contexte 3
1.1 Les systèmes embarqués temps réel . . . . . . . . . . . . . . . . . . . . . 5
1.2 L’ingénierie dirigée par les modèles . . . . . . . . . . . . . . . . . . . . . 8
1.3 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 État de l’art 15
2.1 Les plates-formes d’exécution . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Les représentations des plates-formes d’exécution . . . . . . . . . . . . . . 18
2.3 Les déploiements sur des plates-formes d’exécution . . . . . . . . . . . . . 24
2.4 Comparaison des mises en œuvre . . . . . . . . . . . . . . . . . . . . . . . 42
2.5 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5 Évaluation 129
5.1 Expérimentations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.2 Critères de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
5.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Conclusion 143
vi Table des matières
Abréviations 199
Bibliographie 218
Introduction
Contexte
Depuis plusieurs années, les systèmes électroniques et informatiques embarqués tendent
à remplacer les systèmes de contrôles/commandes mécaniques ou électriques de nombreux
produits [59]. Le potentiel de ces systèmes, qualifiés de temps réel [118], motive non seule-
ment la prise en charge ou l’apport de fonctionnalités dans des produits existants (automo-
biles, multimédia, etc.), mais également la création de nouveaux produits (cartes à puces,
satellites, domotique, etc.). Les systèmes embarqués temps réel intègrent aujourd’hui des
équipements de plus en plus diversifiés, sophistiqués et présents dans nos environnements.
Cette diversité, cette sophistication et cette omniprésence ont inévitablement complexi-
fié les systèmes et leurs cycles de développement [60]. Face à cette complexité et depuis de
nombreuses années, différentes couches d’abstractions logicielles ont été introduites (tels
que les systèmes d’exploitations ou les intergiciels). Ces couches facilitent, d’une part,
l’adaptation des applications logicielles aux différents supports matériels et fournissent,
d’autre part, des composantes logicielles communes à de nombreuses applications. Elles
constituent des plates-formes d’exécution logicielles pour les applications.
Mais aujourd’hui ces plates-formes tendent elles-aussi à évoluer et à se diversifier. Les
besoins de réutilisation et de capacité de portage des applications sur différents supports
d’exécution (motivés entre autres par la réduction des temps de développement) orientent
donc le développement logiciel vers des conceptions indépendantes de toute plate-forme
d’exécution. Cette séparation se retrouve de plus en plus dans les pratiques métiers et les
formalismes utilisés dans le domaine de l’embarqué. Par exemple, dans la norme AUTO -
SAR [7], norme automobile pour la conception de l’électronique et l’informatique embar-
quées, la modélisation de l’application est clairement séparée et indépendante du support
d’exécution (support qui lui aussi a été normé, successivement O SEK /V DX -O S [93] et
AUTOSAR -O S [8]).
En outre, les préoccupations inhérentes aux systèmes embarqués temps réel (respect des
contraintes temporelles, limitation des ressources, etc.) dépendent étroitement du support
d’exécution. La plate-forme d’exécution joue un rôle depuis l’analyse des propriétés fonc-
tionnelles et temporelles d’une application, tôt dans le cycle de développement, jusqu’au
déploiement de l’application sur la plate-forme. Dans une vision idéale, une application
doit donc être conçue indépendamment de tout support d’exécution, tout en garantissant,
dès la phase de conception, son déploiement sur les supports envisagés (dans le respect de
ses contraintes d’exécution). Le support d’exécution doit donc être représenté à la fois ex-
plicitement, pour pouvoir être pris en compte dès la phase de conception, et séparément de
l’application, pour ne pas en dénaturer les représentations successives durant cette phase.
L’ingénierie dirigée par les modèles (I DM) [43], une discipline informatique émergente,
vise justement à faciliter la représentation et l’agencement des systèmes dans un cycle de
développement. Elle prône pour cela l’utilisation de modèles et de transformations de mo-
dèles. Les modèles décrivent les systèmes, les transformations automatisent la manipulation
et l’évolution de ces modèles.
viii Introduction
Problématiques et objectifs
Dans l’I DM, l’approche M DA (Model Driven Architecture) [84], initié par l’O MG (Ob-
ject Management Group), définit en particulier un cadre méthodologique pour différencier
les modèles indépendants des plates-formes (P IM, Platform Independant Model) de ceux
qui en dépendent (P SM, Platform Specific Model). Des transformations de modèles, plus ou
moins automatiques, spécialisent alors des P IM en P SM.
Cependant, le M DA ne précise pas comment renseigner les informations relatives aux
plates-formes dans ces transformations. La notion de description de plate-forme est évoquée
(P DM, Platform Description Model), mais aucune précision n’est donnée sur sa forme ou
sur sa prise en compte dans un processus de déploiement.
Dans de nombreux travaux, la notion de P DM se retrouve alors sous différentes formes.
Un P DM peut par exemple être décrit dans un modèle qu’il est envisageable de transmettre
comme paramètre à une transformation. Un P DM peut également être intégré dans une trans-
formation ou encore implicitement décrit dans un langage de modélisation (ou métamo-
dèle). Dans ce cas, une transformation de déploiement consiste à générer une description
d’application conforme à ce langage.
Nous constatons donc que chaque forme que prend un P DM influence la mise en œuvre
d’un déploiement. La répartition des connaissances relatives à l’application, à la plate-forme
et à notre domaine d’intérêt (l’embarqué temps réel) diffère par exemple d’une approche à
l’autre. L’investissement nécessaire au développement des modèles, des métamodèles et des
transformations impliqués dans un déploiement n’est donc pas le même. Mais, aucune étude
n’a été identifiée qui recense et qui compare ces approches et leurs répercussions.
Deux questions successives se posent alors :
– Quelle représentation d’une plate-forme d’exécution est préférable pour un déploie-
ment d’application ?
– Comment mettre en œuvre ce déploiement pour un système embarqué temps réel ?
Cette thèse vise à répondre à ces deux questions. La première réponse est de recenser
et de comparer les approches I DM de modélisation des plates-formes d’exécution dans un
objectif de déploiement d’applications. La seconde réponse est de proposer un processus de
déploiement concret, basé sur l’approche la plus appropriée au contexte d’utilisation prévu :
le déploiement d’applications sur des plates-formes d’exécution temps réel embarquées.
Contributions
Cette thèse contribue en trois points à la considération des plates-formes d’exécution
lors d’un processus de déploiement.
Une étude comparative des approches I DM de déploiement est présentée. Cette étude
couvre les différentes modélisations envisageables d’une plate-forme d’exécution et les ré-
percussions de ces modélisations sur un processus de déploiement d’applications.
Elle identifie les pratiques existantes et les pratiques qu’il reste à explorer, avant de sta-
tuer sur l’approche la plus adaptée à notre domaine d’intérêt (les plates-formes d’exécution
temps réel embarquées).
Un langage de modélisation des plates-formes d’exécution temps réel embarquées
est défini sous le nom de RTEPML (Real-Time Embedded Platform Modeling Language).
Ce langage s’appuie sur les concepts qu’identifie le package S RM (Software Resource Mo-
deling) du profil U ML-M ARTE (U ML profile for Modeling and Analysis of Real Time and
Introduction ix
Embedded systems) [89]. RTEPML permet de décrire des plates-formes d’exécution dans
un contexte de développement utilisant des D SML (Domaine Specific Modeling Language)
comme alternative aux langages de modélisation généralistes (Generic Purpose Modeling
Language, dont U ML est un représentant, y compris dans ses formes profilés).
Un processus de déploiement d’application basé sur RTEPML est finalement proposé.
Ce processus repose sur des transformations de modèles. L’originalité de ce processus ré-
side dans son articulation autour de règles de transformations génériques ou générées. Il
s’accompagne d’un langage dédié à l’expression des déploiements.
Plan
Ce rapport s’organise en deux parties. La première partie précise la portée de cette thèse
et présente une étude prospective sur les pratiques de déploiements dans l’I DM. La seconde
partie se focalise sur la solution que nous proposons pour mettre en œuvre un déploiement
d’application sur une plate-forme d’exécution temps réel embarquée.
La première partie se divise en deux chapitres.
Le premier chapitre détaille le contexte et la portée de cette étude. Les domaines des
systèmes embarqués temps réel et de l’I DM y sont successivement abordés.
Le second chapitre présente les approches de modélisation des plates-formes d’exécu-
tion dans l’I DM et les processus de déploiement d’applications qui en résultent. Dans un
état de l’art prospectif, trois approches de modélisation sont identifiées : enfouie, implicite
et explicite, selon que les informations relatives à une plate-forme sont capturées dans une
transformation, un métamodèle ou un modèle. A chacune de ces approches correspondent
une ou plusieurs pratiques de déploiement d’applications. Ces pratiques sont présentées et
évaluées sur des critères de séparation des préoccupations, de temps de développement, de
réutilisation et de prise en compte des choix de déploiement. A l’issue de cette évaluation,
l’une des pratiques est privilégiée.
La seconde partie se compose des trois derniers chapitres.
Le troisième chapitre présente le langage de description de plate-forme d’exécution
RTEPML que nous avons développé dans le cadre de cette thèse. Ce langage implante, d’une
part, le modèle de domaine du package S RM d’U ML-M ARTE et, d’autre part, un certain
nombre d’artefacts de modélisation utiles à la description de modèles de plates-formes.
Le quatrième chapitre propose un processus de déploiement d’applications temps réel
embarquées. Le processus proposé se concrétise par un algorithme de transformations de
modèles. Ces transformations prennent comme paramètres des modèles d’applications et
des modèles de plates-formes d’exécution décrits avec RTEPML. Elles se composent de
règles génériques ou générées. Leurs mises en œuvre s’appuient sur un langage de déploie-
ment que nous définissons également dans ce chapitre.
Le cinquième chapitre évalue finalement le processus de déploiement que nous propo-
sons. Cette évaluation repose sur une comparaison avec d’autres approches de déploiement
identifiées lors de la prospection du second chapitre. Elle vise à confirmer les résultats qui
ont motivé le développement du processus.
Première partie
La mise en œuvre d’un système temps réel requiert d’établir un lien entre l’occurrence
d’un évènement et l’activation d’une action associée. Deux principes fondamentaux per-
mettent de régir ce lien : l’approche « synchrone » et l’approche « asynchrone » [100].
L’approche synchrone repose sur (1) l’hypothèse de réalisation des actions en temps
nul vis-à-vis de la dynamique du procédé contrôlé et (2) la considération d’occurrences
d’évènement simultanées. Les occurrences des évènements mémorisés durant l’exécution
d’une action sont considérées comme survenues au même instant. Cette approche s’affran-
chit implicitement d’une concurrence entre les actions durant leurs exécutions. En pratique,
les systèmes synchrones sont programmés sous la forme de systèmes échantillonnés dans
lesquels la durée d’exécution des actions est inférieure à la période d’échantillonnage [21].
Positionnement Les systèmes que nous souhaitons mettre en œuvre suivent une ap-
proche asynchrone.
2
Dans la majorité des cas, un système embarqué nécessite cependant des périphériques spécifiques.
1.1. Les systèmes embarqués temps réel 7
Pour garantir des taux de défaillances acceptables, et apporter une confiance maximale
dans les systèmes réalisés, leurs mises en œuvre sont généralement guidées et contraintes
tout au long du cycle de développement [9].
Positionnement Les systèmes envisagés dans cette étude peuvent être étendus à des
systèmes critiques. Toutefois, nous n’aborderons pas les exigences de sûreté de fonctionne-
ment qui pourraient les accompagner, tant sur le processus de développement, que sur les
mécanismes mis en œuvre (tels que la gestion des erreurs ou les modes de fonctionnements).
F IG . 1.1: Principe de mise en œuvre d’une transformation de modèle dans l’I DM.
Modèle vers texte Les transformations de modèles génèrent habituellement des mo-
dèles destinés à des outils I DM et donc sérialisés dans des formats spécifiques à l’I DM, tels
que le X MI (XML Metadata Interchange) [88]. Or, le développement d’un système vise
habituellement la production de fichiers dans des formats textuels différents, tels que de la
documentation H TML ou du code source dans un langage de programmation donné.
Pour répondre à ce besoin de transformation d’un modèle vers du texte, plusieurs caté-
gories de langages peuvent être mis à contribution :
1. Les langages de transformation de modèle qui gèrent des chaînes de caractère en
sortie, comme le permet ATL ;
2. Les langages de template qui acceptent des modèles en entrée, tels que Acceleo [79]
et XPand [121] ;
3. Les langages de générateurs d’extracteurs (du modèle vers le texte) et d’injecteurs
(ou parseurs, du texte vers le modèle), tels que T CS [57] et SinTaks [78].
Remarque : Un fichier de template est composé de blocs de texte dont une partie des
informations doit être complétée à partir de données externes. Dans le cadre de l’I DM, ces
données sont transmises à un moteur de template sous la forme de modèles.
1.2. L’ingénierie dirigée par les modèles 11
Différentes approches centrées sur les modèles se déclinent au sein de l’I DM. Quatre de
ces approches se distinguent par la maturité des outils qui les accompagnent : les approches
C ASE (Computer Aided Software Engineering), M IC (Model-Integrated Computing), Usine
logicielle (Software Factories) et M DA (Model Driven Architecture) [52].
C ASE Dans les années 80, l’approche C ASE (Computer Aided Software Engineering)
spécialise pour le domaine du logiciel, l’approche C AD (Computer Aided Design) pratiquée
notamment pour la conception des systèmes mécaniques. L’approche C ASE se destine alors
à supporter les activités de génie logiciel dans un processus de développement, sans définir
précisément ces activités et la nature du support qui en est fait [16]. Ainsi les premiers
outils C ASE automatisent principalement des activités isolées de développement, telles que
la production de la documentation ou la gestion de version. Puis, dans les années 90, ces
différents outils sont intégrés dans des environnements de type C ASE, autour de supports
méthodologiques de conception et de réalisation, pour former de véritables plates-formes
de développement [77].
M IC Depuis le milieu des années 90, l’approche M IC (Model-Integrated Computing)
fonde son développement logiciel sur des modèles spécifiques à des domaines d’applica-
tion [108]. Cette approche se décompose en deux phases. La première consiste à spécifier
les concepts utiles pour modéliser le domaine d’application. Le résultat de cette étape se
concrétise par la définition d’un métamodèle et la génération d’un environnement de mo-
délisation dédié au domaine. La seconde phase consiste alors à modéliser les applications
avec cet environnement. G ME (Generic Modeling Environment) [28] est un exemple de
plate-forme de développement associée à cette approche.
Usine logicielle Depuis les années 2000, l’approche « usine logicielle » (Software
Factories) s’inspire des principes des lignes d’assemblage dans l’industrie [51]. Une usine
logicielle est un ensemble d’outils et de langages (par exemple, de modélisation, de pro-
grammation ou de transformation) spécialisés pour le développement d’un certain type
d’application. Cette approche encourage l’utilisation de « composants sur étagère »6 pour
un développement rapide de logiciels. Visual Studio .N ET est un exemple d’environnement
de développement adapté à cette approche.
M DA Depuis novembre 2000, l’approche M DA (Model Driven Architecture) [84],
initiée par l’O MG, standardise une architecture qui repose sur un niveau (M 0) des systèmes
à concevoir (ou « monde réel ») et trois niveaux de modélisation (M 1, M 2 et M 3) pour le
développement des modèles, métamodèles et méta-métamodèles7 . Dans cette architecture,
un méta-métamodèle du niveau M 3 est réflexif, c’est-à-dire qu’il se décrit lui-même. Le
M OF (Meta Object Facility) [86], standardisé dans le cadre du M DA, et Ecore (du projet
E MF) [36] sont des exemples de méta-métamodèles.
L’un des objectif du M DA est de faciliter la mise en œuvre de modèles de fonctionnalités
(ou modèles métiers) sur différents supports technologiques. Pour cela, cette approche pro-
pose de générer, par transformation, des modèles dédiés à des plates-formes technologiques
(P SM, Platform Specific Model), à partir de descriptions indépendantes de toute plate-forme
(P IM, Platform Independant Model). Au sens du M DA, les technologies et les plates-formes
6
Un composant sur étagère est un composant disponible pour être assemblé avec d’autres composants.
7
L’architecture « 3+1 niveaux » du M DA standardise ainsi ce que l’approche M IC et certains outils C ASE
pratiquent depuis plusieurs années.
12 Chapitre 1. Contexte
Positionnement Les approches par D SML et G PML présentent chacune des avantages
et des inconvénients qui, à notre sens, ne permettent pas de trancher, sur l’utilisation de l’une
ou de l’autre dans l’absolu. Nous considérons en effet que le choix d’une de ces approches
dépend du contexte de développement (domaines abordés, intervenants, collaborateurs, ou-
tillage, etc.). Ce choix appartient, in fine, aux utilisateurs (chef de projets, concepteurs,
développeurs, testeurs).
De ce point de vue, les travaux de recherche se doivent d’investir chacune des approches.
Cette étude s’inscrit donc dans une démarche d’investigation pour les deux approches.
Toutefois, une seule étude couvrant les D SML et les G PML serait ambitieuse. Seule
l’étude prospective sur la modélisation des plates-formes d’exécution et ses répercussions
sur un processus de déploiement sera donc abordée pour les deux approches. La proposition
de processus de déploiement d’application qui suivra sera présentée pour un contexte de
modélisation utilisant des D SML.
14 Chapitre 1. Contexte
1.3 Positionnement
Comme cela fut mentionné en introduction, les travaux de cette thèse portent sur le
déploiement d’applications logicielles sur des systèmes d’exploitation temps réel embar-
qués. Pour cela, les technologies de modélisation et de transformation de modèles, issues
de l’I DM, sont mises à contribution.
Dans une première section, nous venons de préciser la nature des systèmes sur lesquels
nous envisageons de déployer les applications. Les systèmes visés sont multitâches, caden-
cés par le temps ou par les évènements dans une approche asynchrone.
Dans une deuxième section, nous avons précisé la méthodologie de déploiement que
nous adopterons au travers des principes de l’I DM et plus particulièrement de l’approche
M DA. Les applications seront décrites dans des modèles indépendants de tout support d’exé-
cution. Un déploiement sera ensuite mis en œuvre par transformation de modèles, à l’issu
duquel un modèle de l’application déployée sera généré.
Cependant, l’approche M DA ne précise pas comment renseigner les informations re-
latives aux plates-formes lors du déploiement. Le chapitre suivant propose donc un état
de l’art prospectif sur les différentes formes que peuvent prendre ces informations et leurs
répercussions sur un processus de déploiement.
Cette prospection est menée dans des contextes de modélisation basés sur des langages
de modélisation génériques (G PML) et sur des langages de modélisation dédiés à des do-
maines métiers (D SML).
État de l’art
2
Sommaire
2.1 Les plates-formes d’exécution . . . . . . . . . . . . . . . . . . . . . . 17
2.1.1 Définition du concept de plate-forme d’exécution . . . . . . . . 17
2.1.2 Caractérisation des plates-formes d’exécution . . . . . . . . . . 17
2.1.3 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Les représentations des plates-formes d’exécution . . . . . . . . . . 18
2.2.1 Représentations enfouies . . . . . . . . . . . . . . . . . . . . . 18
2.2.2 Représentations implicites . . . . . . . . . . . . . . . . . . . . 19
2.2.3 Représentations explicites . . . . . . . . . . . . . . . . . . . . 21
2.3 Les déploiements sur des plates-formes d’exécution . . . . . . . . . 24
2.3.1 Plate-forme enfouie dans la technologie de déploiement . . . . 24
2.3.2 Déploiement sur une plate-forme implicitement décrite . . . . . 26
2.3.3 Déploiement sur une plate-forme explicitement décrite . . . . . 30
2.4 Comparaison des mises en œuvre . . . . . . . . . . . . . . . . . . . . 42
2.4.1 Génération d’un modèle de code source . . . . . . . . . . . . . 43
2.4.2 Génération d’un modèle d’application . . . . . . . . . . . . . . 45
2.5 Positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
e chapitre présente une étude prospective des considérations possibles des plates-
C formes d’exécution au sein d’un processus de déploiement d’applications. Pour cela,
ce chapitre s’organise en cinq sections.
La première section définit, dans le cadre de l’I DM, le concept de plate-forme d’exécu-
tion et recense les besoins de modélisation d’une telle plate-forme. La seconde section iden-
tifie trois approches majeures de modélisation d’une plate-forme d’exécution, approches
qualifiées de représentations enfouies, implicites ou explicites. La troisième section pré-
sente ensuite les processus de déploiement d’application conditionnés par ces différentes
approches de modélisation. Puis, la quatrième section compare les mises en œuvre de ces
processus. La cinquième et dernière section positionne finalement les travaux de cette étude
en fonction de l’évaluation des processus.
2.1. Les plates-formes d’exécution 17
2.1.3 Positionnement
Les représentations (ou modélisations) des plates-formes d’exécution envisagées dans
cette étude se focalisent sur les deux premiers axes définis par Thomas et al. : la description
des ressources et des services offerts par les plates-formes d’exécution. Nous nous limitons
pour cela à la description structurelle des ressources et des services, ce qui se traduit par
la définition de leurs signatures visibles depuis l’interface de programmation et une clas-
sification selon leurs rôles, c’est-à-dire leurs effets sur l’application. Les descriptions des
comportements observables (ou sémantiques d’exécution) des ressources et des services ne
seront pas abordées. Ces descriptions faisant l’objet d’une étude menée en parallèle, nous
les supposerons connues et accessibles, par exemple, dans des modèles annexes.
teur Gaia [119]. De même, les générateurs de code qui mettent à contribution des templates ,
tels que celui de Ptolemy II [69] ou l’outil RTW (Real-Time Workshop) [112] associé à Si-
mulink [113], capturent généralement les informations relatives aux plates-formes dans les
templates qui structurent le code source à générer.
Dans la lignée de ces pratiques, la section suivante présente, page 24, un exemple de
description de plate-forme d’exécution enfouie dans une transformation de modèles.
2.2.2.1 Approche U ML
Dans une approche U ML, la description implicite d’une plate-forme d’exécution peut
prendre la forme d’une extension légère du métamodèle U ML (un profil U ML). Les éléments
profilés du métamodèle sont alors spécialisés par des stéréotypes.
La figure 2.1 est un exemple de profil U ML dédié à la description d’application
O SEK /V DX. Ce profil définit les stéréotypes Task, Alarm et Counter permettant de décrire
respectivement des tâches, des alarmes et des compteurs O SEK /V DX.
Une tâche fournit un contexte pour l’exécution d’un traitement spécifié par l’utilisateur
sous la forme d’un point d’entrée. Une alarme permet de gérer des actions dans le temps
(telle que l’activation d’une tâche). Elle se déclenche sur une valeur de référence fournie
par un compteur.
L’interface de programmation d’O SEK /V DX définit également un ensemble normalisé
de services et de propriétés associés aux ressources de la plate-forme. Les propriétés spé-
cifiées dans l’exemple de la figure 2.1 concernent par exemple : (a) l’unité de temps d’un
compteur, en nombre de ticks (ticksperbase), (b) la taille de la pile et la priorité statique
d’une tâche (stacksize et priority), et (c) la première expiration et le cycle d’une alarme
(alarmtime et cycletime).
Les stéréotypes définis par ce profil étendent la métaclasse Classifier d’U ML. Ils per-
mettent ainsi de spécifier des classes de modèles U ML.
Dans l’exemple de la figure 2.2, page suivante, le profil est appliqué à un modèle de
contrôleur de robot (RobotController). Certaines entités de l’application sont alors identi-
fiées par le profil. La classe MotionController est par exemple stéréotypée Task, une tâche
20 Chapitre 2. État de l’art
de la plate-forme O SEK /V DX est ainsi dédiée au contrôle de mouvements. Les attributs des
stéréotypes sont également renseignés dans des notes attachées aux classes. L’attribut prio-
rity du stéréotype Task est ainsi renseigné dans le but d’accorder une priorité 10 à la tâche
responsable du contrôle du mouvement. De même, l’attribut entrypoint de ce même stéréo-
type stipule que le point d’entrée de la tâche correspond à la méthode trajectoryControl du
contrôleur.
F IG . 2.4: Description avec un D SML d’une application spécifique à la plate-forme O SEK /V DX.
Dans la littérature actuelle, les langages O IL [92] et A ADL [103] sont des exemples de
D SML décrivant implicitement une plate-forme d’exécution logicielle. A ADL a toutefois la
particularité de fournir des composants logiciels dont les sémantiques d’exécution sont pré-
cisément définies, mais auxquels aucune plate-forme d’exécution concrète n’est associée.
2.2.3.1 Approche U ML
Dans une approche U ML, la description explicite d’une plate-forme d’exécution peut se
conformer à un profil U ML dédié aux concepts des plates-formes d’exécution. Ces concepts
sont alors identifiés par des stéréotypes.
La figure 2.5 est un exemple de profil U ML dédié à la description de plates-formes
d’exécution temps réel embarquées. Ce profil définit les stéréotypes SchedulableResource,
AlarmResource et TimerResource permettant d’identifier les ressources d’une plate-forme
dédiées respectivement aux contextes d’exécutions gérés par un ordonnanceur, aux alarmes
et aux compteurs. Un stéréotype permet également d’identifier les points d’entrée des trai-
tements associés aux ressources d’exécution (EntryPoint).
La figure 2.6 illustre l’utilisation de ce profil pour la modélisation des concepts de tâche,
d’alarme et de compteur O SEK /V DX. Une tâche est par exemple identifiée comme une
ressource ordonnançable (SchedulableResource), car son activation et son exécution sont
gérées par un ordonnanceur. Les propriétés des ressources sont également identifiées en
renseignant les attributs du stéréotype. La propriété nommée priority permet d’exprimer la
priorité d’une tâche. Cette propriété est référencée par l’attribut priorityElt du stéréotype
SchedulableResource.
Dans un contexte U ML, différentes technologies sont actuellement disponibles pour dé-
crire explicitement des plates-formes d’exécution matérielles ou logicielles. Parmi celles-
ci, P ML (Platform Modeling Language) [107] se destine à la description de plates-formes
d’exécution et de plates-formes d’analyse1 . P ML permet, entre autre, de modéliser les res-
sources et les signatures des services qu’offre une plate-forme logicielle ainsi que leurs
contraintes d’utilisation. Dans le même esprit, T UT-Profile (Tampere University of Techno-
logy - U ML Profile) [63], initialement prévu pour la modélisation d’applications temps réel
embarquées et de plates-formes d’exécution matérielles, a été étendu pour la description de
plates-formes logicielles [4]. Enfin, issu des travaux les plus récents, le profil U ML-M ARTE
(U ML profile for Modeling and Analysis of Real Time and Enbedded systems) [89], stan-
dardisé par l’O MG pour la modélisation et l’analyse de systèmes embarqués temps réel,
identifie précisément les concepts relatifs aux plates-formes d’exécution matérielles et lo-
gicielles. Au sein de ce profil, le package S RM (Software Resource Modeling) propose en
particulier des artefacts de modélisation des plates-formes logicielles. Pour cela, S RM spé-
cialise, pour le domaine du temps réel et de l’embarqué, les concepts généraux de ressource
et de service du package G RM (Generic Resource Modeling). Ces concepts de ressource et
service étaient déjà présents dans le profil S PT de l’O MG (Schedulability, Performance and
Time) [85], que U ML-M ARTE tend à supplanter.
Nous proposons d’illustrer ces approches en nous appuyant sur les descriptions de la
plate-forme O SEK /V DX de la section précédente. Pour chacune, nous détaillons le principe
de déploiement d’une application et donnons un exemple de transformation. Les mises en
œuvre illustrées concernent des générations de modèles. L’utilisation de templates pour la
génération de code source sera évoquée, mais ne sera pas illustrée.
Dans cette approche, les informations relatives à la plate-forme cible sont capturées
dans la transformation (cf. figure 2.10, la référence à la fonction DeclareTask de l’A PI
d’O SEK /V DX, dans le code ATL). La plate-forme est ainsi enfouie dans la transformation.
Le modèle dans lequel les concepts de la plate-forme sont introduits n’est pas conforme à
un métamodèle de plate-forme d’exécution, ni à un méta-métamodèle, mais conforme au
métamodèle d’un langage de transformation.
Remarque : L’utilisation d’un template de génération de code suit le même principe. Les
informations relatives à la plate-forme et au langage de programmation sont alors capturées
dans le template [69] [112].
3
Les syntaxes concrètes de l’exemple ne sont pas détaillées. Les métamodèles sont exprimés avec des di-
grammes de classes. Le modèle de l’application générée utilise une syntaxe similaire à celles des éditeurs
arborescents de modèles (tel que celui d’E MF).
26 Chapitre 2. État de l’art
L’automatisation d’un tel déploiement est envisageable à partir d’un modèle d’applica-
tion dont les éléments sont stéréotypés pour le domaine de l’application. Dans l’exemple
de la figure 2.11, si la classe MotionController avait été identifiée par un stéréotype « Ac-
tivity » (défini dans un profil dédié aux applications de robotique), le marquage de cette
classe avec le stéréotype « Task » , dans le modèle de l’application déployée, aurait pu être
déduit à partir de règles de correspondance. Une telle règle aurait alors exprimé que toute
classe identifiée comme une activité se concrétise par une tâche sur la plate-forme.
Les règles de correspondance se matérialisent généralement sous la forme de règles de
transformation, à l’image de celles que nous présentons dans la suite de cette section.
F IG . 2.13: Déploiement d’une application sur une plate-forme O SEK /V DX implicitement décrite.
5
La concordance des sémantiques d’exécution attendues pour les deux modèles est supposée vérifiée pour
les besoins de l’application.
28 Chapitre 2. État de l’art
Un compteur unique pour toutes les alarmes est également créé par un appel à une règle
impérative (CreateOneCounter). Ce type de règle (unique lazy) permet de créer un élément
au premier appel et d’en retourner la référence aux appels suivants [6].
Les valeurs des propriétés de chaque tâche, de chaque routine et de chaque alarme sont
renvoyées par des fonctions (ou helpers, en ATL), telle que getPriority() pour la valeur de
priorité d’une tâche. Nous ne détaillerons pas les implantations possibles de ces fonctions
qui peuvent, par exemple, déduire leurs valeurs de retour par calcul (à partir de données
disponibles dans le modèle source) ou retransmettre des valeurs passées en paramètre de la
transformation (valeurs issues, par exemple, d’un outil externe d’analyse d’ordonnançabi-
lité [24] [101]).
2.3. Les déploiements sur des plates-formes d’exécution 29
F IG . 2.16: Déploiement d’une application sur une plate-forme O SEK /V DX via un pivot.
F IG . 2.17: Quatre approches de déploiement d’une application sur une plate-forme explicitement décrite.
2.3.3.1 Contexte U ML
forme pour les besoins de l’application, et à associer, dans un second temps, les instances
de ressources de la plate-forme aux instances des éléments de l’application.
Le principe d’allocation est principalement utilisé pour mettre en relation le logiciel
et le matériel. La notion de déploiement (deployment) définie dans le standard U ML [90]
permet, par exemple, d’exprimer la répartition spatiale du logiciel sur le matériel.
Certains profils U ML raffinent néanmoins des concepts d’association entre des classi-
fiers et des instance classifiers U ML (comme par exemple des classes ou des composants)
pour identifier des relations de déploiement qui concernent également les plates-formes
logicielles. T UT-Profile définit, par exemple dans ce but, le concept PlatformMapping [62]
qu’il étend à la notion de déploiement sur un support d’exécution logiciel. U ML-M ARTE dé-
finit également, dans le package Alloc (Allocation Modeling) [89], le concept d’allocation
(allocate) spatiale ou temporelle des fonctionnalités d’une application sur les ressources du
support d’exécution.
Le principe alternatif d’instanciation modélise explicitement les entités du support
d’exécution mises à contribution lors de l’exécution de l’application. Ces entités sont alors
agencées (ou mises en relation) avec les entités du modèle logique de l’application. Nous
nous focalisons, dans cette partie, sur ce principe d’instanciation des ressources d’une plate-
forme.
La figure 2.18 illustre ce principe pour le déploiement, sur une plate-forme O SEK /V DX,
de l’application de robotique introduite précédemment. L’application est modélisée en U ML
dans le package RobotController. Le modèle de l’application déployée sur la plate-forme
(O SEK /V DX Application) importe alors la description de la plate-forme7 . Deux tâches (t1
et t2) responsables de l’exécution des activités de contrôle et d’affichage de l’application
(Controller et Monitor) sont instanciées. Les propriétés de chacune des tâches ainsi que
leurs points d’entrée sont renseignés dans le modèle. Deux instances d’alarme (a1 et a2)
ainsi qu’une instance de compteur (c0) sont également crées pour la mise en œuvre des
activations périodiques des tâches.
F IG . 2.18: Déploiement d’une application sur une plate-forme O SEK /V DX décrite avec un profil U ML.
7
La modèle de la plate-forme O SEK /V DX de l’exemple reprend le modèle introduit dans la section précé-
dente (figure 2.6, page 22).
2.3. Les déploiements sur des plates-formes d’exécution 33
F IG . 2.19: Principe d’une transformation de déploiement sur une plate-forme décrite avec un profil U ML.
Remarque : Aucune mention ou implantation d’une telle transformation n’ont été iden-
tifiées dans les outils actuellement disponibles ou publiée avec des profils U ML existants.
Automatisation d’un portage
Une autre approche, proposée lors de travaux qui ont précédés cette étude [114], consiste
à automatiser une partie du portage d’une application, d’une plate-forme à une autre. Le
portage à pour principe de s’appuyer sur un déploiement existant pour générer un modèle
de l’application déployée sur une autre plate-forme d’exécution.
L’algorithme 2.1, page suivante, est une version simplifiée de transformation générique
issue de ces travaux (la transformation est qualifiée de « transformation de portage »). Son
principe consiste à reproduire un déploiement existant en faisant une analogie entre les
ressources offertes par les différentes plates-formes, via leurs stéréotypes.
Dans cette version simplifiée, pour chaque instance du modèle dont le type8 est stéréo-
typé dans la plate-forme source (la plate-forme sur laquelle l’application est déjà déployée),
s’il existe une ressource stéréotypée de la même façon dans la plate-forme cible (la nou-
velle plate-forme considérée), cette ressource est instanciée. Le nom de l’instance « cible »
8
Les types auxquels nous faisons référence dans l’algorithme correspondent à des ressources de la plate-
forme.
34 Chapitre 2. État de l’art
(l’instance générée) correspond alors, dans cette version, au nom de l’instance « source ».
Enfin, les valeurs des propriétés de l’instance source sont traduites et renseignées dans les
propriétés de l’instance générée.
Algorithme 2.1 : Principe d’un portage générique (basé sur le profilage U ML) [115]
Entrée :
Is : l’ensemble des instances d’un modèle d’application déployée sur une plate-forme Ps
Ms : le modèle de la plate-forme Ps
Mc : le modèle de la plate-forme Pc
Sp : l’ensemble des stéréotypes du profil U ML
Résultat :
It : l’ensemble des instances d’un modèle de l’application déployée sur une plate-forme Pc
Notations :
type(i) : la classe du modèle de la plate-forme qui type l’instance i
χ(c) : le stéréotype auquel se conforme la classe c
prop(s) : l’ensemble des propriétés du stéréotype s
prop(c) : l’ensemble des propriétés de la classe c
début
pour chaque is ∈ Is tel que χ(type(is )) ∈ Sp faire
si ∃ classe c ∈ Mc tel que χ(c) = χ(type(is )) alors
Créer ic une instance de la classe c
nom de ic ← nom de is
dépendances de ic ← dépendances de is
pour chaque propriété p ∈ prop(type(is )) tel que χ(type(is )) référence p
faire
si ∃ propriété p′ ∈ prop(χ(c)) tel que p′ = p alors
valeur p′ ← conversion de la valeur de p pour Pc
fin
Cette version de l’algorithme, ici présentée, se limite à des correspondances 1-1 et n’as-
sure pas la cohérence des valeurs des propriétés. Précisons qu’une version améliorée est
disponible et implantée pour le profil U ML-M ARTE [114].
ceux d’une application de robotique (dans la lignée des exemples précédents) et un concept
de mise en relation des éléments applicatifs et des éléments exécutifs (Mapping).
A l’image de ce qui se pratique dans un contexte U ML, cette approche se retrouve prin-
cipalement dans les technologies de modélisation conjointe des applications et des supports
d’exécution matériels. Les déploiements décrivent alors la répartition spatiale du logiciel
sur le matériel. Par exemple, A ADL fournit des mécanismes de mise en relation des com-
posants logiciels et matériels [103]. Il est ainsi possible de déclarer les déploiements auto-
risés (Allowed Binding) ou imposés (Actual Binding) du logiciel sur le matériel. Metropolis
intègre également dans son métamodèle un concept de déploiement de l’applicatif sur le
support d’exécution (Mapping) [75]. Ce concept met en relation les services que requière
un composant applicatif avec ceux que fournit un composant exécutif. Dans cette approche,
le composant du support d’exécution peut être matériel ou logiciel.
L’utilisation de relations internes à un métamodèle pour déployer une application reste
cependant cloisonnée dans une technologie. Aucune intégration de modèles d’applications
conformes à d’autres métamodèles n’est généralement possible.
Promotion du modèle de la plate-forme
L’utilisation de technologies ne permettant pas de décrire conjointement l’application et
le support d’exécution nécessite de mettre en œuvre des déploiements basés sur des méta-
modèles différents pour l’application et la plate-forme d’exécution. Comme cela a été men-
tionné en introduction de cette partie, la considération explicite d’une plate-forme d’exécu-
tion se décline alors en trois approches de déploiement (approche 2, 3 et 4 de la figure 2.17,
page 31). A chacune de ces approches correspond alors un type de modèle d’application
spécifique à une plate-forme d’exécution (ou P SM).
Le premier type de P SM, auquel nous nous intéressons dans cette partie, est conforme
à un métamodèle généré à partir de la description explicite de la plate-forme d’exécution
(approche 2 de la figure 2.17, page 31). Cette approche est une approche hybride qui met
à contribution des descriptions explicites et implicites de plates-formes d’exécution. Elle
consiste à promouvoir le modèle de la plate-forme en un métamodèle. Le métamodèle ré-
sultant offre alors les concepts nécessaires à la modélisation d’applications spécifiques à
cette plate-forme d’exécution.
Deux transformations sont impliquées dans cette approche. La première génère le méta-
modèle du P SM à partir d’une description explicite de la plate-forme d’exécution (transfor-
mation qualifiée de « promotion »). La seconde se charge du déploiement des applications
sur la plate-forme. Cette dernière transformation s’appuie sur le métamodèle issu de la pre-
mière transformation et celui de l’application.
36 Chapitre 2. État de l’art
Le métamodèle généré par cette transformation est similaire à celui d’une description
implicite de plate-forme d’exécution (figure 2.3, page 20). Les transformations de déploie-
ment associées à cette approche sont donc identiques à celles de la sous-section précédente
(cf. Utilisation d’un métamodèle d’application spécifique à une plate-forme, page 27).
Cependant, les concepts qu’identifient les métamodèles de P SM, ainsi générés, sont tous
liés au métamodèle de plate-forme d’exécution. Ces concepts sont en effet issus de modèles
conformes au métamodèle de plate-forme d’exécution. Les liens entre les concepts de dif-
férents métamodèles générés et les concepts du métamodèle de plates-formes peuvent donc
être exploités pour automatiser le portage d’applications (à l’image du portage générique
présenté précédemment dans un contexte U ML, page 34). L’automatisation d’un tel portage
prend ici la forme d’une génération de transformations (figure 2.22).
L’algorithme simplifié 2.2 donne les grands principes d’une telle génération. A partir de
deux modèles de plates-formes d’exécution, cet algorithme identifie les éléments conformes
à un même concept. Il génère ensuite les règles de correspondance entre les classes qui
résultent de la promotion de ces éléments.
Entrée :
M Mp : un métamodèle de plate-forme d’exécution (ressources/propriétés)
Ms : le modèle de la plate-forme Ps
Mc : le modèle de la plate-forme Pc
La transformation de promotion d’un modèle en un métamodèle est supposée connue.
Résultat :
Ts2c : l’ensemble des règles de transformation d’un portage de Ps vers Pc
Notations :
promo(c) : la (méta)classe issu de la promotion de la classe c
prop(c) : l’ensemble des propriétés que renseigne la classe c
χ : la relation de conformité
début
pour chaque ressource r ∈ M Mp faire
si ∃ classe cs ∈ Ms tel que cs χr ∧ ∃ classe cc ∈ Mc tel que cc χr alors
Créer la règle Rcs 2cc de correspondance entre promo(cs ) et promo(cc )
pour chaque propriété p ∈ prop(cs ) faire
si p ∈ prop(cc ) alors
Créer, dans Rcs 2cc , la traduction :
p dans promo(cc ) ← p dans promo(cs )
fin
38 Chapitre 2. État de l’art
Pour des raisons didactiques, la transformation du listing 2.3 ne comporte pas tout le code
ATL. Certaines parties ont été volontairement omises.
F IG . 2.23: Génération d’un modèle de code spécifique à une plate-forme O SEK /V DX décrite avec un D SML.
Remarque : Le principe de cette approche peut être appliqué à l’utilisation d’un template
de génération de code. Les modèles de l’application et de la plate-forme sont alors transmis
comme paramètres du template .
Bien que la transformation présentée soit très liée à la plate-forme O SEK /V DX dans la
mise en œuvre qu’elle propose10 , seuls les concepts du métamodèle de plate-forme sont
nécessaires à l’expression de ses règles. Cette caractéristique offre des perspectives de gé-
néricité vis-à-vis des plates-formes qu’il conviendrait de préciser. Cependant, actuellement,
aucune étude identifiée ne concrétise de telles transformations.
Intégration d’une application dans la plate-forme
Le dernier type de P SM, auquel nous nous intéressons dans cette partie, est conforme au
métamodèle de plate-forme d’exécution (approche 4 de la figure 2.17, page 31).
Ce principe consiste à introduire dans le métamodèle de plate-forme d’exécution, non
pas les concepts métiers de l’applicatif, comme le proposent les approches de modélisa-
tions conjointes de l’applicatif et de l’exécutif, mais un mécanisme générique d’intégration
d’applications sur les plates-formes d’exécution.
La figure 2.24 illustre l’insertion d’un tel mécanisme dans le métamodèle de plate-
forme d’exécution introduit précédement (figure 2.7, page 23). Ce mécanisme repose sur
un principe d’instanciation des ressources de la plate-forme, en vue d’exécuter l’applica-
tion. L’application s’intègre alors via des instances de ressource (ResourceInstance) mises
à contribution pour son exécution11 .
Dans l’exemple proposé (figure 2.24), les instances de ressource peuvent être mises en
relation (relatedTo). Les propriétés des ressources qui les typent sont de plus renseignées
pour chacune d’elles. Les instances possèdent ainsi des propriétés (InstanceProperty) dont
l’attribut value donne la valeur (ce D SML se contente d’une valeur littérale exprimée dans
une chaîne de caractère).
F IG . 2.25: Déploiement d’une application sur une plate-forme O SEK /V DX décrite avec un D SML.
Au sein des règles de transformation, les instances de ressources sont associées aux
ressources de la plate-forme qui les typent (lignes 9 et 20)12 . De même, les valeurs de
propriétés affectées dans une instance sont associées aux propriétés de la ressource qui type
l’instance (lignes 14-15 et 25-26). La valeur 2 de l’instance de tâche Controller (figure 2.25)
est, par exemple, ainsi affectée à la propriété priority issue de la ressource Task.
La mise en œuvre de cette transformation diffère de celle de l’approche précédente par
les concepts cibles impliqués. Les accès aux informations des modèles de l’application et de
la plate-forme restent cependant les mêmes. Ainsi, comme pour l’exemple précédent, bien
que la transformation présentée soit très liée à la plate-forme O SEK /V DX13 , aucun concept
propre à cette plate-forme n’intervient dans l’expression des règles de transformation. Cette
caractéristique offre donc des perspectives de généricité qu’il conviendrait de préciser. Ce-
pendant, comme pour l’approche précédente, aucune étude identifiée ne concrétise actuel-
lement de telles transformations.
12
Comme pour l’exemple précédent, pour des raisons didactiques, la transformation de l’exemple ne com-
porte pas tout le code ATL. Certaines parties ont été volontairement omises.
13
L’activation périodique d’une ressource ordonnançable n’est pas forcément mise en œuvre par une alarme
sur d’autres plates-formes d’exécution.
2.4. Comparaison des mises en œuvre 43
Description implicite
Description enfouie Description explicite
dans un langage
Ts2c M Ml Ts2c M Ml Ts2c M Mp Mp M Ml
Connaissances −− + −− − +? ++ + +
Temps + + + + − − ++ +
Taille −− − − −− −− ? −? ++ −
Réutilisation −− + −− − +? ++ + +
Choix −− − +?
Ts2c : transformation d’un modèle d’application en un modèle de code ;
M Mp : métamodèle de plate-forme d’exécution ;
Mp : modèle d’une plate-forme d’exécution ;
M Ml : métamodèle d’un langage de programmation (le langage C dans les expérimentations) ;
Temps de développement : − (∼ mois), + (∼ semaines), ++ (∼ jours) ;
Taille (en lignes) : −− (∼ 5.103 ), − (∼ 103 ), + (∼ 5.102 ), ++ (∼ 102 ) ;
Taille (en classes) : −− (∼ 70), − (∼ 50), + (∼ 40), ++ (∼ 30) ;
Autres : −− (très mauvais), ++ (très bon), ? (l’investigation nécessite un approfondissement) ;
TAB . 2.1: Approches de déploiement (génération d’un modèle de code de l’application déployée).
ce qui nous concerne). Cette approche conduit à une scission du processus de déploiement
en deux transformations.
Le tableau 2.2, de la présente page, résume l’évaluation de chacune de ces pratiques. Les
contextes U ML et D SML ne sont pas distingués dans cette évaluation, car les mécanismes
de déploiement mis en œuvre pour chacune des approches y sont similaires.
Description implicite
sans pivot avec pivot
Ts2c M Mc Ts2pi Tpi2c M Mpi M Mc
Séparation des connaissances + + + + + +
Temps de développement + + + ++ − +
Taille − + − + − +
Réutilisation − − + + ++ −
Prise en compte de choix − +/− ?
Ts2c : transformation d’un P IM en un P SM ;
M Mc : métamodèle cible (décrivant implicitement la plate-forme) ;
Ts2pi : transformation d’un P IM en un modèle pivot ;
Tpi2c : transformation d’un modèle pivot en un P SM (dépendant de la plate-forme cible) ;
M Mp i : métamodèle pivot ;
La première approche implicite, sans pivot intermédiaire, capture les informations re-
latives à la plate-forme d’exécution dans un métamodèle. Cette approche implique que les
transformations soient figées autour de la plate-forme cible. Bien que les concepts relatifs à
un langage de programmation soient écartés, vis-à-vis des approches précédentes, la mise en
œuvre, la maintenance et l’optimisation des transformations restent réservées à des experts
de l’I DM, du domaine applicatif et des plates-formes d’exécution envisagées.
Toute considération d’une plate-forme d’exécution alternative nécessite de plus le déve-
loppement complet d’une nouvelle transformation. Pour ce qui nous concerne, il n’y a pas
eu ou très peu de réutilisation possible des transformations développées durant nos expéri-
mentations. La réutilisation s’est essentiellement limitée à prendre exemple sur ce qui avait
été fait dans de précédentes transformations.
Parallèlement, à l’image de l’approche par description implicite dans un langage de
programmation, l’expression des décisions relatives aux choix de déploiement peuvent s’ap-
puyer sur les concepts qu’identifie le métamodèle cible. Ces décisions se restreignent ce-
pendant à une plate-forme d’exécution précise, aucune perspective d’expression à un niveau
d’abstraction plus élevé n’est ici envisageable.
La seconde approche implicite introduit une plate-forme pivot (abstraite). Cette plate-
forme intermédiaire, elle-même implicitement décrite, permet de scinder le processus de
déploiement en deux étapes de transformation. Cette scission améliore la réutilisation de
chacune des transformations. En effet, si les concepts du domaine métier interviennent dans
toutes les transformations, aucune compétence sur la plates-forme d’exécution ciblée n’est
2.4. Comparaison des mises en œuvre 47
mise à contribution dans celles de la première étape. De même, aucune compétence sur le
domaine applicatif n’est mise à contribution dans celles de la seconde étape. Les transfor-
mations de chacune des étapes sont ainsi utilisables (et donc réutilisables) indépendamment
des plates-formes concrètes envisagées ou des applications à déployer.
La taille et le temps de développement des transformations de la première étape restent
du même ordre que dans l’approche sans pivot (le nombre de concepts à manipuler étant lui
aussi du même ordre). La taille moyenne et les temps de développement des transformations
de la seconde étape sont, eux, nettement inférieurs (quelques centaines de lignes et quelques
jours respectivement). Cette simplicité de développement est due à la nature des relations
entre le pivot et les plates-formes cibles. Seules les correspondances entre les concepts
du pivot et leurs implantations dans les plates-formes concrètes sont exprimées par ces
transformations. Les relations sont alors majoritairement 1-1, par opposition aux relations
1-N des transformations impliquant le métamodèle de l’application.
Cependant, la conception et le développement du pivot a nécessité un temps supplémen-
taire pour la sélection des concepts qu’il offre. Il nous a fallu plusieurs mois pour étudier,
classer et organiser dans un métamodèle les différents concepts qu’offrent les plates-formes
d’exécution de notre domaine d’intérêt (les systèmes d’exploitation temps réel embarqués).
Ce métamodèle fut néanmoins réutilisé dans tous les projets axés sur cette approche.
L’introduction d’un métamodèle pivot offre également un support pour l’expression des
décisions relatives aux choix de déploiement à un niveau d’abstraction plus élevé. Des
décisions prises indépendamment des plates-formes concrètes, en ne considérant que des
concepts, peuvent ainsi s’ajouter, voir se mêler, à des décisions propres à une plate-forme
précise. Dans cette optique, la décomposition d’une transformation de déploiement en deux
transformations (l’une concentrée sur les concepts du domaine, l’autre sur une plate-forme
concrète) offre la perspective de pouvoir séparer les décisions de déploiements « concep-
tuelles » des décisions propres à une plate-forme. Cependant, l’existence de liens entre ces
décisions complexifient leurs considérations, leurs intégrations et leurs optimisations dans
les transformations. Une décision appliquée dans la première transformation est-elle perti-
nente et optimale sur toutes les plates-formes envisageables ? Cette considération mériterait
une investigation supplémentaire.
Dans ce même contexte de génération d’un modèle d’application, quatre approches im-
pliquant une description explicite de la plate-forme d’exécution ont été présentées dans ce
chapitre (page 31, page 35, page 36 et page 40). Chacune de ces approches introduit les
concepts communs aux plates-formes d’exécution dans un D SML ou un profil U ML. Le
tableau 2.3, page suivante, résume leurs évaluations.
Les contextes U ML et D SML sont ici distingués. U ML fournit en effet un contexte unifié
pour la modélisation de l’application, de la plate-forme et du déploiement de l’application
sur la plate-forme. Or, bien qu’une pratique similaire soit envisageable pour les D SML dé-
diés à la modélisation conjointe de l’application et de la plate-forme d’exécution (pratique
qualifiée de « mise en relations internes » dans le tableau 2.3), lorsque cette modélisation
est disjointe, car pratiquée avec des langages différents, d’autres approches de déploiement
doivent être considérées. Parmi ces approches, l’une, qualifiée de « promotion » dans le
tableau 2.3, consiste à promouvoir le modèle de la plate-forme en un métamodèle d’ap-
plication. Cette approche se ramène alors à un déploiement sur une plate-forme implicite-
ment décrite. L’autre, qualifiée d’« intégration d’application », consiste à générer un modèle
48 Chapitre 2. État de l’art
Description explicite
D SML
U ML (1)
relations internes promotion intégration appli.
Tp M Mp (2) Mp Md (3) M Mp Mp Td M Mp Tpr Mp Td M Mp Mp
Sép. ++ ++ + + −− +/− + ++ + + +? ++ +
Tps. −? − ++ + − ++(4) + − + ++ −? − ++
Tai. −? ++ ++ ++ −− ++(4) − − − ++ −? −? ++
Réu. +? ++ + −− +/− +/− − ++ ++ + +? ++ +
Chx. +? Ø − +?
(1)
Les expérimentations se sont appuyées sur des travaux qui ont précédé cette étude [114].
(2)
Profil U ML dédié aux concepts des plates-formes d’exécution.
(3)
Seules les associations de déploiement, au sein du modèle du système, sont considérées.
(4)
Seule la description de la plate-forme est comptabilisée.
Tp : transformation de portage ; Md : modèle de déploiement ;
M Mp : métamodèle de plate-forme d’exécution ; Td : transformation de déploiement ;
Mp : modèle d’une plate-forme d’exécution ; Tpr : transformation de promotion ;
La première approche, dans un contexte U ML, a été expérimentée lors de travaux qui
ont précédé cette étude [114]. Ces travaux se sont intéressés à définir un profil U ML16 pour
la description de plates-formes d’exécution logicielles embarquées temps réel. Dans cette
approche, les connaissances relatives aux plates-formes d’exécution sont ainsi explicitement
décrites et identifiées par stéréotypage dans des modèles U ML.
A l’instar du travail effectué pour la définition d’un pivot, la conception et le dévelop-
pement du profil a nécessité du temps pour la sélection et l’organisation des concepts qu’il
identifie. Cependant, la taille de ce profil reste modeste car le contexte de modélisation dans
lequel il s’applique bénéficie de l’ensemble du langage U ML. Seuls les concepts propres
aux plates-formes d’exécution y sont donc spécifiés.
Dans cette approche, les transformations mises en œuvre s’appuient sur des déploie-
ments existants pour automatiser les portages des applications d’une plate-forme à une
autre. Ces transformations, qualifiées de transformations de portage, sont en grande partie
génériques vis-à-vis des plates-formes d’exécution (leur principe repose sur l’algorithme 2.1
présenté dans ce chapitre, page 34). Cette généricité permet de les utiliser (et donc réutili-
ser) dans tous les projets, quelque soit le portage envisagé. Cependant, l’indépendance à une
plate-forme ne pouvant être totale, des expérimentations supplémentaires se doivent encore
d’être menées pour affiner la place des informations relatives aux plates-formes dans le
processus de déploiement.
16
Ce profil, intégré dans le profil U ML-M ARTE, sera détaillé dans la suite de ce document.
2.4. Comparaison des mises en œuvre 49
L’identification des concepts par le profil offre également un support pour l’expression
des décisions relatives aux choix de déploiement (ou choix de portage dans ce cas précis).
Comme pour l’approche par pivot, des décisions « conceptuelles », indépendantes d’une
plate-forme précise, peuvent s’ajouter, voir se mêler, à des décisions propres à une plate-
forme d’exécution donnée. La centralisation de ces informations dans une seule transfor-
mation semble néanmoins simplifier l’intégration et la possibilité d’optimiser ces décisions.
Les investigations qui ont été menées dans ce sens doivent être approfondies.
La première approche dans un contexte D SML, qualifiée de « relations internes » dans
le tableau 2.3, s’appuie sur une description conjointe de l’application et de la plate-
forme d’exécution. Le métamodèle auquel se conforme cette description regroupe donc les
connaissances relatives à l’application et au support d’exécution. Il offre de plus les concepts
nécessaires à l’expression du déploiement de l’application sur le support d’exécution.
Cette approche s’apparente à ce qui se pratique dans un contexte U ML, dans lequel
tout modèle s’exprime avec un seul langage de modélisation. Cependant, le métamodèle
utilisé ici se différencie par son caractère dédié aux domaines de l’applicatif et de l’exécutif.
La taille du métamodèle est donc fortement impactée par l’ensemble des concepts qu’il
doit identifier. L’organisation de ces concepts, issus de différents domaines, peut également
affecter les capacités de réutilisation de chacune des composantes (les parties du modèle qui
concernent l’application, la plate-forme d’exécution et les associations de déploiement).
La réutilisation de ces différentes composantes reste toutefois envisageable si des
conventions et des règles de bonnes pratiques sont respectées pour la conception et le déve-
loppement du métamodèle [32]. Un agencement des concepts de l’exécutif indépendant des
concepts de l’applicatif favorise, par exemple, la réutilisation de chacune des composantes.
De même, une interface structurelle « normalisée » entre les concepts de l’applicatif et ceux
de l’exécutif permet d’uniformiser leurs intégrations dans différents modèles.
Lors des expérimentations, la prise en compte des choix de déploiement n’a pas été inté-
grée dans les transformations (contrairement à leurs introductions dans les transformations
des approches précédentes). Les déploiements d’applications sur des plates-formes d’exé-
cution ont été manuels. A l’image de la modélisation U ML de l’approche précédente, où
seuls les portages ont été automatisés, une automatisation du portage des applications d’une
plate-forme à une autre est toutefois envisageable. Pour cela, une adaptation de l’algorithme
de portage générique (mis à contribution dans le contexte U ML) est encore à expérimenter.
En pratique, la principale limite de cette approche repose sur son rapport au métamodèle
de l’application (P IM). Si ce dernier ne permet pas de décrire les plates-formes d’exécution,
la possibilité de le modifier est indispensable à cette approche. Dans ce cas, il est en effet
nécessaire de pouvoir l’« étendre » à la description des plates-formes d’exécution. Or, le
métamodèle de l’application est parfois imposé et issu d’une technologie qui ne permet ou
ne prévoit pas ce genre d’extension.
La seconde approche dans un contexte D SML, qualifiée de « promotion » dans le ta-
bleau 2.3, consiste à promouvoir un modèle de plate-forme d’exécution en un métamodèle.
Une application est alors déployée par génération d’un modèle conforme à ce dernier. Cette
approche se ramène à l’utilisation d’une description implicite de plate-forme d’exécution.
A l’instar des définitions du métamodèle pivot ou du profil U ML de description de
plates-formes d’exécution, la conception et le développement du métamodèle de plate-
forme d’exécution a nécessité un investissement significatif pour la sélection et l’organi-
sation des concepts du domaine. Ce métamodèle s’est avéré fortement réutilisable, puisque
impliqué dans tous les processus de déploiement pratiqués. Sa taille est cependant nettement
supérieur à celle d’un profil U ML car l’ensemble des artefacts de modélisation nécessaires à
50 Chapitre 2. État de l’art
la description d’une plate-forme doit y être intégré (un profil U ML enrichit le langage U ML,
il bénéficie donc implicitement de tous les artefacts de modélisation U ML).
Le mécanisme de promotion d’un modèle de plate-forme d’exécution en un métamodèle
a été mis en œuvre par transformation de modèles. Une transformation générique a pour cela
été développée (à l’image de la transformation de promotion présentée dans le listing 2.2,
page 36). Cette transformation s’est également révélée fortement réutilisable, car mise à
contribution pour toutes les promotions.
Dans cette approche, les transformations de déploiement sont de même nature que dans
l’approche utilisant une description implicite de plate-forme d’exécution. Leur évaluation
coïncide donc avec celle de l’approche implicite présentée précédemment (tableau 2.2,
page 46). Cependant, une investigation supplémentaire (non reportée dans le tableau 2.3,
page 48) nous a permis de mettre en œuvre un processus de génération de transformations
de portage. Ce processus, en grande partie générique, s’appuyait sur l’algorithme 2.2 pré-
senté dans ce chapitre, page 37. Cette approche a toutefois été abandonnée en raison de la
complexité des générateurs de transformations et de la difficulté à les maintenir.
La troisième et dernière approche dans un contexte D SML, qualifiée d’« intégration
d’applications » dans le tableau 2.3, page 48, consiste à transformer les modèles de l’appli-
cation et de la plate-forme d’exécution en un modèle de la plate-forme dont les ressources
sont instanciées en vue d’exécuter l’application. Le métamodèle de plate-forme d’exécu-
tion, en partie analogue à celui de l’approche précédente, fournit pour cela des mécanismes
permettant d’intégrer, dans un modèle de plate-forme, une représentation de l’utilisation de
ses ressources par une application.
Cette forme d’intégration de l’application dans le modèle de la plate-forme ne consi-
dère aucun aspect métier de l’application, contrairement à la modélisation conjointe de
l’applicatif et de l’exécutif présentée précédemment. La taille du métamodèle n’est donc
pas impactée par la considération d’un domaine métier propre à l’application. Il est de plus
utilisable en tant que tel pour tout type d’application.
Cependant, à ce premier stade d’investigation, l’ensemble des artefacts de modélisa-
tion nécessaires à cette approche reste encore à identifier. Seuls les artefacts d’intégration
présentés dans ce chapitre, page 40, ont été implantés dans le métamodèle. Cette première
version laisse toutefois présager que la taille du métamodèle de plate-forme d’exécution
dépasse significativement celle du métamodèle de l’approche « par promotion ».
Une première version d’un tel métamodèle nous a permis de développer une transfor-
mation de déploiement en partie générique (à l’image de la transformation présentée dans
le listing 2.3, page 39). Au bilan, chacune des composantes impliquées dans le processus de
déploiement présente donc un fort potentiel de réutilisation. Le métamodèle de plate-forme
est utilisé dans tous les déploiements, à la fois pour modéliser les plates-formes cibles et
pour offrir un support aux transformations. Les modèles de plates-formes d’exécution sont
utilisables (et donc réutilisables) quelques soit la technologie source. Enfin, une unique
transformation est mise à contribution dans tous les déploiements. Dès lors, déployer une
application sur une nouvelle plate-forme consiste à fournir, d’une part, le modèle de cette
nouvelle plate-forme et, d’autre part, les éléments de traduction manquants à la transforma-
tion. Cette transformation centralise de plus la prise en compte des choix de déploiement,
qu’ils soient « conceptuels » (relatifs au domaine) ou propres aux plate-formes.
Cependant, comme pour toute approche mettant à contribution des mécanismes géné-
riques de transformations, la considération, au sein du processus de déploiement, des infor-
mations propres aux plates-formes doit encore être précisée. A ce stade d’investigation, des
études supplémentaires s’imposent donc pour confirmer les capacités prometteuses de cette
approche en terme de réutilisation et de prise en compte des choix de déploiement.
2.5. Positionnement 51
2.5 Positionnement
Vers une description explicite des plates-formes d’exécution
Que l’on souhaite générer un modèle du code source de l’application ou un modèle
de plus haut niveau de l’application déployée sur une plate-forme d’exécution, l’utilisa-
tion d’une description implicite de plate-forme d’exécution ne semble intéressante que
lorsque très peu de plates-formes cibles sont envisagées. En effet, bien que ce type d’ap-
proche s’avère plus simple et plus rapide à mettre en œuvre, la prise en compte de chaque
plate-forme d’exécution nécessite le développement complet d’une transformation de dé-
ploiement. La réutilisation est donc très limitée. De plus, la conception, l’optimisation et la
maintenance de ces transformations mettent à contribution des compétences du domaine ap-
plicatif et du domaine des plates-formes d’exécution envisagées. Les connaissances métiers
ne sont pas clairement séparées dans les différentes composantes du processus de déploie-
ment. Enfin, dans ce type d’approche, les choix de déploiement se limitent à des méca-
nismes internes à une plate-forme donnée. Aucune considération ne peut être portée à un
niveau d’abstraction plus élevé, tels que des choix sur différents concepts du domaine des
plates-formes d’exécution.
Si plusieurs plates-formes cibles sont envisageables, il semble plus intéressant de mettre
en œuvre une approche par description explicite de ces plates-formes. En effet, dans le cas
d’une génération d’un modèle du code source de l’application, ce type d’approche offre
un support pour la mise en œuvre de transformations en partie génériques vis-à-vis des
plates-formes d’exécution. De même, dans le cas d’une génération d’un modèle de plus haut
niveau de l’application, la définition d’un pivot ou la définition d’un métamodèle de plate-
forme d’exécution sont de la même complexité et prennent des temps de développement
équivalents. Mais, la considération explicite de la plate-forme d’exécution permet, là aussi,
de mettre en œuvre des transformations plus génériques. Enfin, les transformations de ce
type d’approche centralisent les décisions relatives aux choix de déploiements dans une
seule transformation, que ces choix portent sur des mécanismes internes à une plate-forme
d’exécution précise ou sur des concepts de plus haut niveau relatifs au domaine des plates-
formes d’exécution.
Ce premier constat concerne des démarches de développement dans des contextes
G PML et D SML. Cependant, les expérimentations menées jusqu’à présent révèlent unique-
ment le potentiel des approches qui décrivent explicitement les plates-formes d’exécution.
Une étude plus approfondie se doit donc d’être menée pour développer des composantes
matures à ces approches et confirmer ces résultats.
Nous proposons de mener cette étude dans un contexte D SML.
Ainsi, dans la suite de cette étude nous approfondirons la mise en œuvre d’un déploie-
ment d’application dans lequel la plate-forme d’exécution est explicitement décrite. Ce pro-
cessus suivra l’approche par « intégration d’application ». Les applications déployées seront
modélisées à un niveau d’abstraction plus élevé que celui d’un code source ou d’un modèle
de code source, indépendamment de toute technique ou de toute technologie de codage.
L’étude se focalisera sur un contexte de modélisation D SML. Un D SML de description de
plates-formes d’exécution temps réel embarquées sera donc proposé, inspiré du modèle de
domaine du package S RM du profil U ML-M ARTE.
17
Ce constat s’appuie sur un état de l’art établi lors de travaux qui ont précédé cette étude [114]. Les diffé-
rentes technologies existantes de modélisation des plates-formes d’exécution, identifiées lors de cet état de l’art
et mentionnées dans ce chapitre, sont présentées plus en détails en annexe (Annexe C, page 191).
2.5. Positionnement 53
Pour cela, la partie suivante de ce rapport présente, dans un premier chapitre, l’implanta-
tion de ce D SML, avant d’introduire, dans le second chapitre, un processus de déploiements
d’applications axé sur ce D SML. Ce second chapitre se concentre en particulier sur l’intro-
duction, dans le D SML, de concepts nécessaires à une approche par « intégration d’applica-
tion » dans un modèle de plate-forme, puis à la prise en compte des choix de déploiement
lors de ce type d’intégration. Un dernier chapitre présente finalement les résultats que nous
avons obtenus avec cette approche en la comparant à nouveau aux approches par description
implicite des plates-formes.
Deuxième partie
Sommaire
3.1 Le modèle de domaine du package S RM d’U ML -M ARTE . . . . . . 59
3.1.1 Le motif ressource/service appliqué au logiciel . . . . . . . . . 59
3.1.2 Les ressources et les services de S RM . . . . . . . . . . . . . . 60
3.2 Implantation du modèle de domaine dans un D SML . . . . . . . . . 63
3.2.1 Modélisation des ressources et des services . . . . . . . . . . . 63
3.2.2 Les ressources logicielles . . . . . . . . . . . . . . . . . . . . . 64
3.2.3 Les éléments typés . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2.4 Les types de données . . . . . . . . . . . . . . . . . . . . . . . 65
3.2.5 Les instances de ressources . . . . . . . . . . . . . . . . . . . . 65
3.2.6 Les routines et les points d’entrée . . . . . . . . . . . . . . . . 67
3.3 Artefacts de modélisation . . . . . . . . . . . . . . . . . . . . . . . . 68
3.3.1 L’héritage de ressource . . . . . . . . . . . . . . . . . . . . . . 68
3.3.2 La composition de services . . . . . . . . . . . . . . . . . . . . 69
3.3.3 Prototypes de conception . . . . . . . . . . . . . . . . . . . . . 69
3.4 Exemple d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.5 Synthèse et résultats sur le langage proposé . . . . . . . . . . . . . . 74
L’identification des rôles des services et des propriétés d’une ressource se fait au tra-
vers d’associations (ou références), telles que les associations entre la classe SwResource et
les classes ResourceProperty et ResourceService de la figure 3.2. Leur cardinalité multiple
(0..*) permet d’associer à plusieurs services ou plusieurs propriétés le même rôle.
Vis-à-vis d’une identification par classe, l’identification par référence offre l’avantage
de limiter le nombre de classe et la redondance d’information dans le modèle de do-
maine [114]. Ce mécanisme permet également d’associer un rôle à une propriété ou à un
service externe à une ressource.
1
Le profil U ML-M ARTE se destine à la modélisation des composants logiciels et matériels d’un système.
60 Chapitre 3. Un langage de description de plate-forme d’exécution
Les ressources d’exécution concurrentes peuvent être confinées dans un espace mé-
moire. Dans S RM, cet espace mémoire est qualifié de partition mémoire (MemoryPartition,
figure 3.4). Une partition mémoire représente un espace d’adressage affecté à des ressources
concurrentes. Il restreint l’espace mémoire accessible en lecture et en écriture à ces res-
sources. Une partition mémoire peut offrir des services de duplication ou de libération de
l’espace mémoire (forkServices, exitServices).
Les ressources d’interaction sont finalement rendues accessibles depuis les ressources
d’exécution concurrentes (figure 3.8).
F IG . 3.8: Extrait du modèle de domaine de S RM : les interactions des ressources concurrentes [89].
3.2. Implantation du modèle de domaine dans un D SML 63
F IG . 3.9: Extrait du D SML RTEPML : fondation de la modélisation des ressources et des services.
L’identification des rôles affectés aux services et aux propriétés d’une ressource, par
référence, est également conservée dans RTEPML. La figure 3.12 illustre ce mécanisme par
les associations d’une ressource à ses services de création, d’initialisation et de destruction.
F IG . 3.15: Extrait du D SML RTEPML : les instances de ressources prédéfinies dans une plate-forme.
66 Chapitre 3. Un langage de description de plate-forme d’exécution
RTEPML précise la notion d’instance de ressource pour pouvoir exprimer les valeurs des
propriétés associées aux ressources qui les typent (figure 3.16). Pour cela, les instances de
ressources possèdent des propriétés (ResourceInstanceProperty) qui renseignent ces valeurs
sous forme d’un littéral (pour les types de données natifs à la plate-forme) ou sous forme
d’une référence vers une instance de ressource.
F IG . 3.17: Extrait du D SML RTEPML : les instances de ressources et les appels de services.
3.2. Implantation du modèle de domaine dans un D SML 67
L’utilisation de cette représentation des appels de services sera mise en avant dans le
chapitre suivant, consacré à l’intégration d’une application dans une plate-forme (cette in-
tégration s’appuie également sur le concept d’instance de ressource). La modélisation d’un
appel de service reste néanmoins accessible au travers de toute représentation d’instance de
ressource, y compris celles qui sont prédéfinies dans une plate-forme d’exécution.
Remarque : Le choix d’une représentation des appels de services accessibles à toute
instance de ressource est motivé par une volonté d’uniformisation du langage autour des
concepts de ressource, de service et d’instance de ressource. En effet, les appels de services
sont principalement mis à contribution dans des routines (le concepts de routine est intro-
duit, dans la partie suivante, en tant que ressource d’une plate-forme). Mais, une prise en
compte des appels de service restreinte à ce type de ressource aurait contraint le langage
à considérer les instances de routine différemment des autres instances de ressources. Pour
éviter cette différenciation, nous avons préféré introduire les appels de service au niveau des
instances de ressources.
La représentation des points d’entrée d’une ressource concurrente est permissive dans
RTEPML. En effet, toute ressource peut, en pratique, représenter un traitement associé à un
point d’entrée. Toutefois, cette permissivité peut être limitée par l’expression de contraintes
sur le métamodèle (par exemple des contraintes O CL).
Le choix d’une représentation des points d’entrée sous forme de propriétés trouve son
origine dans l’utilisation qui est faite des ressources d’une plate-forme. En effet, l’utilisa-
tion des ressources se fait au travers des instances de ressources, pour lesquelles les valeurs
des propriétés peuvent être renseignées. Cependant, l’utilisation d’une relation directe entre
deux ressources ne permet pas de renseigner ces valeurs au niveau des instances. Pour cela
un mécanisme similaire à celui mis en place pour les propriétés devrait être instauré. Pour
permettre aux instances des ressources concurrentes de renseigner leurs points d’entrée sans
introduire de mécanisme supplémentaire, nous avons choisi de nous appuyer sur le méca-
nisme de renseignement des valeurs des propriétés.
68 Chapitre 3. Un langage de description de plate-forme d’exécution
Remarque : Les services qui composent un « service composé » n’étant pas restreints à
ce service, la composition de service se définit dans le métamodèle par une simple associa-
tion (et non par une composition).
en programmation objet. Plutôt que de créer plusieurs instances d’une classe, une première
instance est créée puis clonée. Les clones de l’instance sont modifiés de façon appropriée.
Un prototype sert de modèle pour la création de nouvelles copies.
Comme cela sera présenté dans le chapitre suivant, cette idée de clonage et d’adaptation
sera reprise lors d’un déploiement d’application. Pour ce qui concerne la description des
plates-formes d’exécution, l’idée principale est de modéliser un agencement de ressources
qui met en œuvre un concept du domaine, identifié par RTEPML.
F IG . 3.22: Extrait du D SML RTEPML : exemple de distribution des rôles dans un prototype de conception.
Les rôles des propriétés sont ensuite distribués dans le prototype. Le modèle spécifie,
par exemple, que le rôle de priorité pour une tâche périodique revient à la propriété qui
possède ce même rôle pour l’instance de tâche du prototype (T1 dans l’exemple, ligne 51).
La priorité d’une tâche périodique est donc la priorité de la tâche activée périodiquement.
En suivant ce même principe, la période d’une tâche périodique correspond à la période de
déclenchement de l’alarme qui active la tâche (ligne 53).
Remarque : L’utilisation des rôles à destination d’instance de ressource dans un proto-
type peut être complétée par l’interprétation de rôles exprimés à destination des propriétés
ou des services (rôles initiaux, issus de S RM). Le modèle du listing 3.1 spécifie par exemple,
dans des commentaires (lignes 50 et 52), les expressions équivalentes aux distributions des
rôles qu’ils précèdent, en stipulant les propriétés visées. Ce mécanisme permet d’affecter
un rôle, dans un prototype, à une propriété ou à un service pour lequel ce rôle n’est pas
identifié à l’identique.
Enfin, une ressource Resource (au sens O SEK /V DX) est modélisée conformément à une
ressource d’exclusion mutuelle RTEPML (MutualExclusion, ligne 58). Une ressource (au
sens O SEK /V DX) permet de coordonner les accès concurrents. Elle offre des services pour
prendre ou pour libérer la zone qu’elle protège (GetResource et ReleaseResource). Les accès
sont régis par le protocole P CP que prévoit le standard (ImmediatPCP).
Le standard O SEK /V DX spécifie, en particulier, une ressource prédéfinie sur les plates-
formes (RES_SHEDULER, ligne 65). Cette ressource symbolise le processeur. Toute tâche qui
la prend ne peut pas être préemptée.
dans ce rapport. Une étude doit encore être menée pour précisé la partie du langage dédié à
la description de prototype ou mettre en relation des langages existants.
Comme nous venons de l’évoquer, la version du langage RTEPML introduit dans ce cha-
pitre n’est pas définitive. Néanmoins, des modèles de plates-formes ont été développés pour
valider les concepts retenus dans cette première version. La suite de cette section présente
les résultats issus de ces modélisations.
La modélisation d’une partition A RINC -653 permet d’illustrer cette différence. Les par-
titions A RINC -653 sont des unités de ségrégations spatiales (espaces mémoires distincts)
et temporelles (partage d’une ressource processeur). Dans le respect du modèle de domaine
initial, une partition peut être identifiée via deux stéréotypes du profil U ML. L’un pour l’as-
pect temporel (tel que SchedulableResource), l’autre pour l’aspect spatial (tel que Memory-
Partition qui décrit une partition mémoire). Parallèlement, la modélisation d’une partition
A RINC -653, avec RTEPML, ne peut se conformer à l’équivalent de ces stéréotypes dans le
D SML. Cette modélisation nécessite donc d’introduire dans le D SML, soit un concept mixte
de partition mémoire ordonnançable, soit des notions de ségrégations temporelles au sein
du concept de partition mémoire existant5 .
Ces différences nous permettent de constater que la traduction du modèle de domaine
dans un profil ou dans un D SML n’est pas facilement automatisables et ne fait pas systéma-
tiquement appel aux mêmes règles. Des travaux complémentaires devront être menés pour
mieux identifier ces différences.
5
Cette deuxième solution a été privilégiée dans une seconde version du langage, succédant à celle qui a été
présentée dans ce chapitre.
Un processus de déploiement sur une
4
plate-forme explicitement décrite
Sommaire
4.1 Intégration d’applications sur une plate-forme . . . . . . . . . . . . 79
4.2 Principe d’un déploiement . . . . . . . . . . . . . . . . . . . . . . . 80
4.2.1 Un cas simple de transformation de déploiement . . . . . . . . 80
4.2.2 Première synthèse . . . . . . . . . . . . . . . . . . . . . . . . 84
4.3 Transformations de déploiement . . . . . . . . . . . . . . . . . . . . 85
4.3.1 Affiner les critères sur les concepts . . . . . . . . . . . . . . . . 85
4.3.2 Relations de correspondance entre les concepts . . . . . . . . . 87
4.3.3 Mise à disposition de ressources par une plate-forme . . . . . . 90
4.3.4 Une mise en œuvre est-elle possible ? . . . . . . . . . . . . . . 91
4.3.5 Avec ou sans prototype de conception . . . . . . . . . . . . . . 93
4.3.6 Renseigner les propriétés . . . . . . . . . . . . . . . . . . . . . 97
4.3.7 Gestion des appels de services . . . . . . . . . . . . . . . . . . 105
4.4 Développement d’une transformation de déploiement . . . . . . . . 110
4.4.1 Organisation d’une transformation de déploiement . . . . . . . 110
4.4.2 Contraintes sur la technologie de transformation . . . . . . . . 113
4.4.3 Génération des règles de déploiement . . . . . . . . . . . . . . 114
4.4.4 Assistance au développement des fonctions . . . . . . . . . . . 117
4.5 Choix de déploiement . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.5.1 Identification des choix . . . . . . . . . . . . . . . . . . . . . . 118
4.5.2 Prise de décision . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.5.3 Modélisation des décisions . . . . . . . . . . . . . . . . . . . . 120
4.6 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
F IG . 4.1: Approche proposée pour le déploiement d’une application sur une plate-forme d’exécution.
F IG . 4.3: Déploiement d’une application de robotique sur une plate-forme O SEK /V DX.
1 rule Activity2SchedulableResourceInstance {
2 from s : ROBOT!Activity
3 to
4 t : RTEPML!ApplicationResourceInstance (
5 name <- s.name,
6 type <- getResource(RTEPML!SchedulableResource),
7 properties <- Sequence{priority, stacksize}
8 ),
9 priority : RTEPML!ResourceInstanceProperty (
10 val <- s.getValue(’Priority’),
11 property <- t.type.getProperty(’Priority’)
12 ),
13 stacksize : RTEPML!ResourceInstanceProperty (
14 val <- s.getValue(’StackSize’),
15 property <- t.type.getProperty(’StackSize’)
16 )
17 }
Au sein des règles de transformation (ou règles de déploiement), les instances de res-
sources générées sont associées aux ressources de la plate-forme qui les typent. La ligne 6
du listing 4.1 déclare, par exemple, que la ressource qui type l’instance générée est conforme
à une SchedulableResource. L’instance générée sera donc associée à l’élément de la plate-
forme qui se conforme à ce concept. Comme l’illustre la figure 4.3 l’instance de tâche
HelloWorld est ainsi associée à la ressource Task (ce qui se matérialise par une flèche en
pointillé, suivant la convention graphique adoptée).
De même, les valeurs de propriétés affectées à une instance de ressource sont associées
aux propriétés de la ressource qui type l’instance. La ligne 11 du listing 4.1 précise, par
exemple, que la valeur affectée se réfère à la propriété dont le rôle concerne la priorité.
La valeur 2 de l’instance de tâche HelloWorld, dans la figure 4.3, est ainsi associée à la
propriété priority de la ressource Task (ce qui se matérialise également par une flèche en
pointillé, suivant la convention graphique adoptée).
Pour des raisons didactiques, le listing de l’exemple ne comporte pas tout le code de
la transformation. La partie chargée de dupliquer le modèle de la plate-forme n’est, par
exemple, pas présentée. Sa mise en œuvre peut être assurée par une fonctionnalité intégrée
dans la technologie de transformation ou, comme nous allons l’aborder, par un ensemble de
règles de transformation1 .
Dans la suite de ce rapport, nous nous efforcerons d’abstraire les principes de trans-
formation de toute technologie de transformation.Toutefois, pour mieux cerner la mise en
pratique de ces principes, une implantation en ATL sera également disponible en annexe.
Le principe de mise en œuvre de la transformation de déploiement que nous venons
d’introduire peut se résumer par l’algorithme 4.1.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
début
// Dupliquer le modèle de la plate-forme
pour chaque classe mp ∈ M Mp faire
correspondance avec mp // (identité)
// Intégrer l’application
pour chaque classe ma ∈ M Ma faire
ruleConcept2ResourceInstance(ma , mp )
avec une classe mp ∈ M Mp
fin
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
ma : une classe de M Ma
Concept impliqué :
mp : une classe de M Mp
Notation :
propertyRoles(mp ) : l’ensemble des rôles attribués aux propriétés de mp
début
// Générer une instance de ressource typée par une ressource conforme à mp
correspondance avec ApplicationResourceInstance ∈ RTEPML
type ← getResource(mp )
Renseigner les propriétés
// Générer les propriétés de l’instance
pour chaque rôle r ∈ propertyRoles(mp ) faire
correspondance avec ResourceInstanceProperty ∈ RTEPML
val ← getValue(ma , r)
property ← getProperty(type, r)
fin
L’algorithme 4.2, que nous venons d’introduire, s’appuie sur une fonction getResource
pour localiser, dans la plate-forme cible, la ressource qui type l’instance à générer (cette
fonction se matérialise par un helper éponyme dans l’exemple du listing 4.1, ligne 6).
Cette fonction identifie une ressource via sa relation de conformité avec un concept de
RTEPML. Son principe est précisé dans l’algorithme 4.3.
Entrée :
mp : une classe de RTEPML
Modèle impliqué :
Mp : un modèle de plate-forme d’exécution conforme à RTEPML
Résultat :
rp : une ressource de Mp conforme à mp
début
retourner rp ∈ Mp tel que rp χmp
fin
En suivant le même principe, l’algorithme 4.2 s’appuie sur une fonction getProperty
pour localiser les propriétés à renseigner (cette fonction se matérialise par un helper épo-
nyme dans l’exemple du listing 4.1, ligne 15). Pour une ressource de la plate-forme cible
(type, retournée par la fonction getResource dans l’algorithme 4.2), cette fonction identifie
les propriétés à renseigner par leur rôle.
Le principe de la fonction getProperty est précisé dans l’algorithme 4.4.
Entrées :
rp : une ressource de la plate-forme d’exécution
role : un rôle attribué à une propriété identifiée par RTEPML
Résultat :
une propriété de rp dont le rôle correspond à role
début
retourner rp .role
fin
Enfin, dans l’algorithme 4.2, les traductions et les affectations des valeurs des propriétés
sont assurées par la fonction getValue (cette fonction se matérialise par un helper éponyme
dans l’exemple du listing 4.1, ligne 14). A l’image de la fonction getProperty que nous
venons d’introduire, la fonction getValue identifie les propriétés par leur rôle.
Les implantations des algorithmes 4.3 et 4.4, dans des helpers ATL, sont données en
annexe pages 164 et 165.
Nous ne détaillerons pas les implantations possibles de la fonction getValue qui peuvent,
par exemple, déduire les valeurs de retour par calcul (à partir des données disponibles dans
le modèle source, comme le suggère l’algorithme présenté) ou retransmettre des valeurs
passées en paramètres à la transformation (solution non abordée dans l’algorithme pré-
senté). Nous considérerons pour l’instant que nous disposons d’une fonction qui retourne
une valeur appropriée pour renseigner une propriété dont le rôle est passé en paramètre.
84 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Dans un contexte plus réaliste, des précisions sur les concepts impliqués dans les trans-
formations et d’autres types de relations entre ces concepts doivent être considérés.
Ainsi, le principe d’un déploiement par « intégration d’applications » montre une ca-
pacité de généricité qu’il est nécessaire de confirmer pour l’ensemble des déploiements
envisageables. Pour cela, la section suivante aborde, dans un premier temps, les précisions
qu’il est possible d’apporter sur les concepts mis à contribution dans les transformations, en
plus des noms des classes qui les identifient. Puis elle cerne, dans un second temps, les types
de relations que les transformations de déploiement sont susceptibles d’implanter, avant de
détailler leur mise en œuvre.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Notations :
➤ γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
➤ γp [γa ] : un concept (mp , ψmp ) relatif à γa tel que mp ∈ M Mp et ψmp précise mp
début
// Dupliquer le modèle de la plate-forme
...
// Intégrer l’application
➤ pour chaque concept γa faire
➤ ruleConcept2ResourceInstance(γa , γp [γa ])
fin
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
➤ γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concept impliqué :
➤ γp : un concept (mp , ψmp ) tel que mp ∈ M Mp et ψmp précise mp
début
// Générer une instance de ressource typée par une ressource conforme à γp
correspondance avec ApplicationResourceInstance ∈ RTEPML
➤ type ← getResource(γp )
Renseigner les propriétés
// Générer les propriétés de l’instance
...
fin
Entrée :
➤ γp : un concept (mp , ψmp ) tel que mp ∈RTEPML et ψmp précise mp
Modèle impliqué :
Mp : un modèle de plate-forme d’exécution conforme à RTEPML
Résultat :
➤ rp : une ressource de Mp conforme à mp , dans le respect de ψmp
début
➤ retourner rp ∈ Mp tel que rp χmp et rp ψmp
fin
4.3. Transformations de déploiement 87
Relation 1-0 : Une relation 1-0 révèle l’absence de concept exécutif pour traduire un
concept applicatif. Dans le contexte de cette étude, deux cas peuvent alors se présenter, selon
que le concept applicatif présente ou non un intérêt pour le déploiement d’une application.
Dans le premier cas, l’absence de correspondance révèle un problème de déploiement.
Aucun concept du domaine des plates-formes d’exécution ne permet alors de mettre en
œuvre un mécanisme de l’application. Un tel constat nécessite d’enrichir le métamodèle de
plate-forme d’exécution.
Dans le second cas, certains éléments du modèle source ne sont pas jugés utiles au
modèle de l’application déployée (par exemple, des informations nécessaires à des outils
5
Que ces concepts soient ou non précisés par des critères.
6
Une règle (Rule) de la forme Cx 2Rx Instance exprime une correspondance entre un concept Cx du mé-
tamodèle source et un concept Rx de RTEPML (Rx I est une instance de ressource typée par Rx ).
88 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
➤ M Mt : un métamodèle de trace (non précisé dans cette étude)
Notations :
➤ Γa : l’ensemble {(ma , ϕma )|ma ∈ M Ma et ϕma précise ma } utile au déploiement
γp [γa ] : un couple (mp , ψmp ) relatif à γa ∈ Γa tel que mp ∈ M Mp et ψmp précise mp
début
// Dupliquer le modèle de la plate-forme
...
// Intégrer l’application
➤ pour chaque γa ∈ Γa faire
ruleConcept2ResourceInstance(γa , γp [γa ])
// Tracer les éléments non mis à contribution
➤ pour chaque γa ∈ ∁Γa faire
➤ traceUnusedConcept(γa )
fin
L’algorithme 4.8 répartit les concepts entre deux types de règles, selon qu’ils présentent
ou non un intérêt pour le déploiement de l’application. En particulier, ceux qui ne présentent
pas d’intérêt sont mis en relation avec des concepts d’un métamodèle de trace (traceUnu-
sedConcept). Toutefois, dans la suite de ce rapport, nous ne détaillerons ni ces mises en
relations (assurées par des règles de correspondances), ni les métamodèles de traces envisa-
geables (qui identifient, par exemple, un concept pour chaque type de trace générée).
4.3. Transformations de déploiement 89
Relation 1-1 : Une relation 1-1 traduit un concept applicatif en un concept exécutif.
La mise en œuvre d’un mécanisme de l’application ne nécessite alors qu’un seul concept
identifié par le métamodèle de plate-forme d’exécution. Les algorithmes proposés jusqu’à
présent reposent sur des relations 1-1.
Relation 1-N : Une relation 1-N traduit un concept applicatif en plusieurs concepts exé-
cutif. La mise en œuvre d’un mécanisme de l’application nécessite alors différents concepts
identifiés par le métamodèle de plate-forme d’exécution.
L’implantation d’une relation 1-N dans une règle de correspondance suit le même prin-
cipe que pour une relation 1-1, en impliquant toutefois plusieurs instances. L’algorithme 4.9
définit ainsi la règle ruleConcept2MultiResourceInstances, pour étendre le principe de la
règle ruleConcept2ResourceInstance7 aux relations 1-N.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concepts impliqués :
Γp : un ensemble {(mp , ψmp )|mp ∈ M Mp et ψmp précise mp }
début
pour chaque γp ∈ Γp faire
// Générer une instance de ressource typée par une ressource conforme à γp
ruleConcept2ResourceInstance(γa , γp )
fin
de la règle. Les accès aux autres concepts, impliqués dans le mécanisme à traduire, sont
implantés au sein de la règle, via les associations qui les « relient » à ce concept.
Au sein de l’algorithme proposé, tout accès à un concept différent du principal se ma-
nifeste uniquement dans la fonction getValue. L’algorithme, tel qu’il est présenté, n’est pas
impacté. Cette version permet donc d’implanter des relations N-1 et N-M au même titre
que les relations 1-1 et 1-N. De même, le mécanisme introduit pour la considération des
relations 1-0 s’applique aux relations N-0.
F IG . 4.6: Mise à disposition, par une plate-forme, de ressources conformes à des concepts de RTEPML.
prototypes de conception qui peuvent accompagner les descriptions des ressources (cf. Pro-
totypes de conception, page 69). Nous détaillerons également les mécanismes introduits
dans l’algorithme pour renseigner les propriétés des instances de ressources et générer des
appels de services.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
➤ M Mt : un métamodèle de trace (non précisé dans cette étude)
Notations :
Γa : l’ensemble {(ma , ϕma )|ma ∈ M Ma et ϕma précise ma } utile au déploiement
Γp [γa ] : un ensemble {(mp , ψmp )|mp ∈ M Mp et ψmp précise mp } relatif à γa ∈ Γa
début
// Dupliquer le modèle de la plate-forme
...
// Intégrer l’application
pour chaque γa ∈ Γa faire
➤ si ∀γp ∈ Γp [γa ], getResource(γp ) 6= ∅ alors
ruleConcept2MultiResourceInstances(γa , Γp [γa ])
➤ sinon
➤ // Tracer les problèmes de mise en œuvre
➤ traceLackOfResource(γa , Γp [γa ])
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
➤ M Mt : un métamodèle de trace (non précisé dans cette étude)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concepts impliqués :
Γp : un ensemble {(mp , ψmp )|mp ∈ M Mp et ψmp précise mp }
début
pour chaque γp ∈ Γp faire
➤ si getResource(γp ) 6= ∅ alors
// Générer une instance de ressource typée par une ressource conforme à γp
➤ ruleConcept2ResourceInstance(γa , γp )
➤ sinon
➤ // Générer la trace d’un problème de mise en œuvre
➤ traceLackOfResource(γa , γp )
fin
F IG . 4.7: Mise à disposition, par une plate-forme, de ressources avec ou sans prototype de conception.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concepts impliqués :
Γp : un ensemble {(mp , ψmp )|mp ∈ M Mp et ψmp précise mp }
début
pour chaque γp ∈ Γp faire
si getResource(γp ) 6= ∅ alors
➤ si getResource(γp ).prototype = ∅ alors
// Générer une instance de ressource typée par une ressource conforme à γp
ruleConcept2ResourceInstance(γa , γp )
➤ sinon
➤ // Générer des instances de ressources à partir du prototype
➤ ruleClonePrototype(γa , getResource(γp ).prototype)
sinon
...
fin
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Élement impliqué :
ω : un prototype de conception (conforme au concept Prototype de RTEPML)
début
// Générer les instances à partir de celles que précise le prototype
pour chaque instance i ∈ ω.instances faire
si i.match = ∅ alors
// L’instance ne correspond pas à une instance prédéfinie sur la plate-forme
si getResource(i.type).prototype 6= ∅ alors
// Appliquer une hiérarchie de prototypes (par appels récursifs)
ruleClonePrototype(γa , i.type.prototype)
sinon
// Générer une instance à partir d’une instance du prototype
ruleCreateResourceInstanceFromPrototype(γa , i)
L’algorithme 4.13 se déroule en deux étapes. La première génère les instances de res-
sources et la seconde les associe (à l’image de ce que décrit le prototype).
Lors de la première étape, seuls certains éléments du prototype engendrent la création
d’instances. En effet, les éléments d’un prototype de conception représentent soit des ins-
tances de ressources propres au prototype, soit des instances de ressource prédéfinies sur
la plate-forme d’exécution (cf. Prototypes de conception, page 69). Les instances prédéfi-
nies sur la plate-forme étant par définition déjà disponibles, seules les instances propres au
prototype suscitent une génération (d’où la condition i.match = ∅ qui vérifie qu’aucune
instance prédéfinie n’est associée à l’instance considérée).
La modélisation des prototypes de conception proposée dans RTEPML s’expose égale-
ment à une utilisation hiérarchique des prototypes de conception. Une instance de ressource
dans un prototype peut elle-même être mise en œuvre par un prototype. L’application hié-
rarchique des prototypes, lors de la transformation, est alors assurée par appels récursifs à
la règle ruleClonePrototype. Enfin, si l’instance de ressource ne nécessite pas de prototype
pour sa mise en œuvre, une instance est générée à son image. Cette génération est capturée
dans la règle ruleCreateResourceInstanceFromPrototype que nous détaillerons par la suite.
Finalement, lors de la seconde étape, les instances générées sont mises en relation. Pour
cela, une association est générée à l’image de chaque association précisée dans le prototype.
Cette génération est capturée dans la règle ruleCreateAssociationFromPrototype.
Les algorithmes suivants, 4.14 et 4.15, décrivent les principes respectifs des règles ru-
leCreateResourceInstanceFromPrototype et createAssociationFromPrototype chargées de
générer les instances et leurs associations.
L’algorithme 4.14 génère une instance de ressource dont le type correspond à celui
de l’instance du prototype (le renseignement des propriétés et des appels de services sera
abordé dans la suite de cette section). En complément, l’algorithme 4.15 génère une as-
sociation entre les « images » des éléments concernés par chaque association que décrit le
prototype. Ces images (src et dst) correspondent aux instances de ressources générées par
la règle ruleCreateResourceInstanceFromPrototype à partir de ces éléments.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Élement impliqué :
ι : une instance de ressource d’un prototype
(conforme à PrototypeResourceInstance ∈ RTEPML)
début
// Générer une instance de ressource
// typée par la ressource qui type l’instance du prototype
correspondance avec ApplicationResourceInstance ∈ RTEPML
type ← ι.type
...
...
fin
96 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Élement impliqué :
α : une association (conforme à PrototypeResourceInstanceAssociation ∈ RTEPML)
début
// Générer une association entre deux instances de ressources
correspondance avec ResourceInstanceAssociation ∈ RTEPML
src ← getInstance(α.src)
dst ← getInstance(α.dst)
...
fin
On remarquera que les images des éléments décrits par un prototype sont localisées par
la fonction getInstance. Nous ne détaillerons pas cette fonction dans ce rapport. Une mise
en œuvre de celle-ci peut, par exemple, s’appuyer sur une liste qui mémorise les instances
générées à partir d’un prototype. Ces instances sont ensuite localisées au sein de cette liste.
Une solution d’implantation ATL disponible en annexe, et à laquelle nous ferons référence
dans la section suivante, repose sur cette solution de localisation d’instances.
Remarque : La prise en compte d’un prototype de conception repose sur deux parcours
de celui-ci. Le premier couvre les instances qu’il décrit. Sa complexité est en O(n) (pour n
instances décrites). Le second couvre les associations. Sa complexité est également en O(n)
(pour n associations décrites) en considérant que la localisation des instances générées,
assurée par la fonction getInstance, soit en O(1) (pour n instances générées).
Exemple
La figure 4.8, page suivante, illustre un déploiement dans lequel intervient un prototype
de conception. Dans cet exemple, une application de robotique constituée d’une activité de
contrôle périodique est déployée sur une plate-forme O SEK /V DX9 .
Dans l’exemple proposé, la transformation Robot2RTEPML met en correspondance le
concept d’activité périodique avec celui de ressource ordonnançable périodique10 .
Or, comme cela fut évoqué dans le chapitre précédent, la plate-forme O SEK /V DX met
en œuvre un traitement périodique par une tâche périodiquement activée par une alarme. Le
modèle de la plate-forme décrit alors ce principe dans un prototype de conception de tâche
périodique (PeriodicTask) conforme au concept de ressource ordonnançable (la syntaxe gra-
phique de la figure 4.8 nous semble suffisamment intuitive pour ne pas être détaillée).
La ressource PeriodicTask de la plate-forme d’exécution possédant un prototype de
conception, lors de la transformation, la règle ruleConcept2MultiResourceInstances (adap-
tée aux concepts d’activité et de ressource ordonnançable périodiques) oriente son exécution
9
Cet exemple s’appuie sur les métamodèles de robotique et de la plate-forme d’exécution O SEK /V DX pré-
sentés dans les chapitres 2 et 3. Pour des raisons didactiques, l’exemple ne mentionne pas le compteur auquel
est connecté l’alarme.
10
Nous admettons que le comportement attendu de l’activité est vérifié pour la mise en œuvre envisagée.
4.3. Transformations de déploiement 97
vers la règle ruleClonePrototype (algorithmes 4.12 et 4.13). Cette dernière génère alors : (a)
une instance de ressource pour chaque instance stipulée dans le prototype et (b) les associa-
tions entre ces instances (algorithmes 4.14 et 4.15). Les instances de ressources Control_T
et Control_T-A1 sont ainsi créées et associées par la relation alarm.
F IG . 4.8: Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (prototype).
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
➤ M Mt : un métamodèle de trace (non précisé dans cette étude)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concept impliqué :
γp : un concept (mp , ψmp ) tel que mp ∈ M Mp et ψmp précise mp
début
// Générer une instance de ressource typée par une ressource conforme à γp
correspondance avec ApplicationResourceInstance ∈ RTEPML
type ← getResource(γp )
...
// Générer les propriétés de l’instance
➤ pour chaque rôle r ∈ getPropertyRoles(γp ) faire
➤ si getProperty(type, r) 6= ∅
➤ et hasPropertyInformation(γa , r) alors
// La ressource qui type l’instance possède une propriété dont le rôle est r
// et l’élément source fournit une ou des informations pour cette propriété
// Générer les propriétés d’instances renseignées par des valeurs
➤ pour chaque value ∈ getPropertyValues(γa , r) faire
➤ correspondance avec ResourceInstanceProperty ∈ RTEPML
➤ val ← value
➤ property ← getProperty(type, r)
// Générer les propriétés d’instances renseignées par des références
➤ pour chaque ref erence ∈ getPropertyReferences(γa , r) faire
➤ correspondance avec ResourceInstanceProperty ∈ RTEPML
➤ ref ← ref erence
➤ property ← getProperty(type, r)
➤ sinon
➤ // Générer la trace d’une absence d’information pour un rôle de propriété
➤ traceLackOfProperty(γa , type, r)
fin
Lorsqu’un prototype de conception est mis à contribution, les propriétés des instances
peuvent se déduire du modèle de l’application, mais aussi du prototype lui-même (un pro-
totype pouvant préciser les propriétés de ses instances).
Deux gestions sont donc prévues, l’une pour les informations issues du modèle de l’ap-
plication, l’autre pour les informations issues du prototype.
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
➤ M Mt : un métamodèle de trace (non précisé dans cette étude)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concept impliqué :
➤ γp : un concept (mp , ψmp ) tel que mp ∈ M Mp et ψmp précise mp
Élement impliqué :
ι : une instance de ressource d’un prototype (conforme à PrototypeResourceInstance ∈
RTEPML)
début
// Générer une instance de ressource typée par la ressource qui type l’instance du
prototype
correspondance avec ApplicationResourceInstance ∈ RTEPML
type ← ι.type
...
// Générer les propriétés à partir d’informations issues du modèle de l’application
➤ pour chaque rôle r ∈ getPropertyRoles(γp ) faire
➤ si getPrototypeProperty(γp , ι, r) 6= ∅
➤ et hasPropertyInformation(γa , r) alors
// Si l’instance du prototype est concernée par le rôle r
// et que l’élément source fournit une ou des informations pour cette propriété
// Générer les propriétés d’instances renseignées par des valeurs
➤ pour chaque value ∈ getPropertyValues(γa , r) faire
➤ correspondance avec ResourceInstanceProperty ∈ RTEPML
➤ val ← value
➤ property ← getPrototypeProperty(γp , ι, r)
// Générer les propriétés d’instances renseignées par des références
➤ pour chaque ref erence ∈ getPropertyReferences(γa , r) faire
➤ correspondance avec ResourceInstanceProperty ∈ RTEPML
➤ ref ← ref erence
➤ property ← getPrototypeProperty(γp , ι, r)
➤ sinon
➤ // Générer la trace d’une absence d’information pour un rôle de propriété
➤ traceLackOfProperty(γa , type, r)
fin
Cette gestion est similaire à celle que nous venons de présenter (sans prototype de
conception). Seule la localisation des propriétés à renseigner diffère. En effet, les rôles
des propriétés associées aux ressources sont « distribués » aux instances des prototypes de
conception (cf. Prototypes de conception, page 69). Les instances d’un prototype, ou plus
précisément les propriétés des ressources qui les typent, se voient ainsi attribuer les rôles
des propriétés associées à la ressource mise en œuvre par le prototype. Lors de la généra-
tion d’une instance à partir d’un prototype, les propriétés susceptibles d’être renseignées
sont donc celles dont le rôle a été attribué à l’instance du prototype à l’origine de sa géné-
ration (celle dont elle se fait l’image - ou le clone).
4.3. Transformations de déploiement 101
L’algorithme 4.17 parcourt donc l’ensemble des propriétés associées au concept exécutif
(γp ) mis en œuvre par le prototype de conception (comme précédemment, les propriétés sont
identifiées par les rôles que retourne la fonction getPropertyRoles).
Durant ce parcours, chaque propriété est renseignée sous deux conditions :
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Élement impliqué :
ω : un prototype de conception (conforme au concept Prototype de RTEPML)
début
// Générer les instances à partir de celles que précise le prototype
...
// Générer les propriétés des instances que précise le prototype
➤ pour chaque instance i ∈ ω.instances faire
➤ ruleCreatePropertiesFromPrototype(γa , i)
// Générer les associations entre les instances que précise le prototype
...
fin
102 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèle cible :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Élement impliqué :
ι : une instance de ressource d’un prototype (conforme à PrototypeResourceInstance ∈
RTEPML)
début
// Générer les propriétés précisées pour l’instance du prototype
pour chaque property ∈ ι.properties faire
// Créer une propriété à l’image d’une propriété de l’instance du prototype
correspondance avec ResourceInstanceProperty ∈ RTEPML
val ← property.val
ref ← getInstance(property.ref )
property ← property.property
fin
Les références
Nous venons de voir qu’une propriété pouvait être renseignée par une valeur littérale ou
par une référence vers une instance de ressource.
Dans le cas d’un renseignement par valeur littérale, la propriété de l’instance est direc-
tement créée et associée à la propriété de la ressource qui type l’instance.
Dans le cas d’un renseignement par référence, l’implication d’un élément généré au
cours de la transformation (l’instance référencée) soulève la question de l’existence de cet
élément, dans le modèle généré, au moment du référencement.
Un parallèle peut être fait avec l’application d’un prototype de conception que nous
avons présenté dans la sous-section précédente. Lors de l’application d’un prototype, la
4.3. Transformations de déploiement 103
génération des associations entre les instances repose également sur des références vers
des éléments générés. Cependant, les éléments concernés sont soit mis à disposition par la
plate-forme, soit générés par une règle dont l’exécution précède, par construction, celle qui
génère les associations. L’existence des instances référencées est donc systématiquement
garantie.
Ce même principe a été appliqué dans cette sous-section pour renseigner des propriétés
à partir de ce que précise un prototype de conception.
Ce principe de création d’éléments avant leur référencement est d’ailleurs communé-
ment employé dans les technologies de transformation déclarative. La résolution des réfé-
rences est alors transparente pour l’utilisateur.
Cependant, certaines parties de l’algorithme que nous proposons, qui concernent la
génération des instances de ressources, nécessitent un contexte impératif12 . Ces parties
concernent en particulier le clonage des prototypes de conception qui mettent, par exemple,
à contribution des appels récursifs. Or, les éléments générés dans un contexte impératif ne
bénéficient pas d’une génération « anticipée ». Et, ils ne peuvent être référencés qu’après
avoir été générés. La gestion des références qui impliquent des éléments potentiellement
générés dans un contexte impératif, telles que les instances issues d’un prototype de concep-
tion, doit donc être intégrée dans les algorithmes.
La gestion des propriétés renseignées à partir de ce que précise un prototype de concep-
tion étant assurée « par construction », nous nous intéressons plus particulièrement à la
gestion des propriétés renseignées à partir des informations présentes dans le modèle de
l’application (algorithmes 4.16 et 4.17 de cette sous-section).
Pour cela, nous proposons d’intégrer à la gestion de ces propriétés un mécanisme qui
consiste à renseigner une référence si l’instance à laquelle elle se réfère a déjà été géné-
rée. Dans le cas contraire, la propriété concernée et l’élément du modèle de l’application à
l’origine de la création de l’instance manquante sont mémorisés dans une liste.
Enfin, pour garantir le renseignement de toutes les propriétés, les propriétés incom-
plètes, mémorisées dans cette liste, sont complétées ultérieurement, lors de la génération
des instances manquantes13 .
Ce mécanisme concerne les règles ruleConcept2ResourceInstance et ruleCreateResour-
ceInstanceFromPrototype chargées de générer les instances de ressources et de renseigner
leurs propriétés. L’algorithme 4.20, page suivante, illustre son intégration en se concentrant
sur les parties communes à ces règles.
L’algorithme 4.20 introduit les fonctions getIfExistInstance et completePropertyRefe-
rences. La première localise une instance référencée, si cette instance a déjà été générée,
sinon mémorise la propriété à compléter et l’élément source impliqué. La seconde parcourt
les propriétés à compléter après chaque création d’instance. Ce parcours vise à compléter
les propriétés qui se réfèrent à l’instance qui vient d’être générée.
Ces fonctions ne seront pas détaillées dans ce rapport. On notera toutefois que leur mise
en œuvre s’appuie sur une structure qui mémorise des couples (propriété d’instance, élément
source), pour ce qui concerne les propriétés incomplètes, et peut nécessiter une structure
qui mémorise l’ensemble des traductions effectuées au cours de la transformation (pour
discerner les instances disponibles lors d’un référencement). Une solution d’implantation
ATL disponible en annexe repose sur ce mécanisme.
12
Nous détaillerons, dans la section suivante, les contraintes d’implantation qu’impose l’algorithme proposé.
13
La mémorisation de l’élément source à l’origine de la génération de l’instance manquante permet de détec-
ter qu’une propriété doit être complétée lors du traitement de cet élément.
104 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concept impliqué :
γp : un concept (mp , ψmp ) tel que mp ∈ M Mp et ψmp précise mp
début
// Générer une instance de ressource
...
// Générer les propriétés de l’instance
pour chaque rôle r ∈ getPropertyRoles(γp ) faire
si // conditions de génération
alors
// Générer les propriétés d’instances renseignées par des valeurs
...
// Générer les propriétés d’instances renseignées par des références
pour chaque ref erence ∈ getPropertyReferences(γa , r) faire
correspondance avec ResourceInstanceProperty ∈ RTEPML
➤ ref ← getIfExistInstance(ref erence)
property ← ...
sinon
// Générer la trace d’une absence d’information pour un rôle de propriété
...
// Compléter les références en attente
➤ completePropertyReferences(γa )
fin
Exemple
La figure 4.9, page suivante, complète l’exemple introduit dans la sous-section précé-
dente (figure 4.8, page 97) pour illustrer le renseignement des propriétés.
Dans cet exemple, l’activité de contrôle périodique (Control_T) est enrichie d’un sous-
programme (Control). Ce sous-programme est une unité séquentielle d’exécution qui consti-
tue le point d’entrée de l’activité.
Remarque : La transformation Robot2RTEPML assure la mise en œuvre d’un sous-
programme par une correspondance avec le concept de routine14 (dont la plate-forme fournit
une ressource qui s’y conforme (Function)).
Au cours de la transformation, les propriétés des instances générées sont renseignées
conformément aux algorithmes 4.17 et 4.20 que nous venons d’introduire. En effet, les ins-
tances concernées (Control_T et Control_T-A1) proviennent d’un prototype de conception
et les informations qui renseignent leurs propriétés sont issues du modèle de l’application.
14
Le concept de routine a été introduit dans le chapitre 3 lors de la présentation de RTEPML.
4.3. Transformations de déploiement 105
De cette façon, les propriétés dont les rôles correspondent à la priorité, à la taille de la
pile et à la période d’activation sont renseignées par valeurs. Ces valeurs sont associées aux
propriétés des instances auxquelles les rôles sont distribués dans le prototype15 .
Enfin, la propriété du point d’entrée de la tâche générée référence la fonction Control
(qui correspond au sous-programme homonyme de l’activité de contrôle).
F IG . 4.9: Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (propriétés).
La gestion des appels de services que nous proposons d’intégrer dans l’algorithme suit
alors le même principe que celui des propriétés déjà présentées : si un élément source à
l’origine de la création d’une instance implique des appels de services, ces appels sont gé-
nérés lors de la création de l’instance. Pour cela, des fonctions de « détection d’implication
de services » et une interprétation des services impliqués doivent être mises en place.
Pour mettre en œuvre les appels de services dans des contextes qui impliquent ou n’im-
pliquent pas de prototypes de conception, tout en répondant aux problématiques d’exis-
tences des instances référencées, la génération de ces appels suit des principes similaires à
ceux introduits dans la sous-section précédente :
– Sans prototype de conception, un appel de service est généré si :
1. L’élément source à l’origine de la création d’une instance procure des informa-
tions à destination de cet appel de service ;
2. La ressource qui type l’instance dont le service est sollicité fournit ce service ;
– Avec prototype de conception, un appel de service est généré si ;
1. L’élément source à l’origine de la création d’une instance procure des informa-
tions à destination de cet appel de service ;
2. Le rôle du service attendu est attribué à un service du prototype concerné ;
– Les appels de services précisés dans un prototype sont générés après la création de
toutes les instances du prototype ;
– Avec ou sans prototype de conception :
– Les paramètres des appels renseignés par valeurs littérales et par références d’ins-
tances sont générés successivement ;
– Les appels qui ne disposent pas de l’instance concernée par le service, ou d’une
instance concernée par l’un des paramètres, sont mémorisés ;
– Les appels incomplets sont complétés après chaque génération d’instance.
Dans le respect de ces principes, l’algorithme 4.21, page ci-contre, illustre l’introduc-
tion d’une gestion d’appels de services, dans la règle ruleConcept2ResourceInstance (qui
n’implique pas de prototype de conception).
A l’image de ce que nous avons proposé pour la gestion des propriétés, l’algorithme 4.21
s’appuie sur des fonctions de collecte d’informations associées aux concepts du métamo-
dèle de l’application16 . Ces fonctions permettent de détecter et de renseigner les services
impliqués lors d’un déploiement.
16
La répercussion de ces fonctions sur la généricité de l’algorithme sera discutée dans la section suivante.
4.3. Transformations de déploiement 107
Métamodèles sources :
M Ma : le métamodèle de l’application
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
Métamodèles cibles :
M Mp : le métamodèle de plate-forme d’exécution (RTEPML)
M Mt : un métamodèle de trace (non précisé dans cette étude)
Concept source :
γa : un concept (ma , ϕma ) tel que ma ∈ M Ma et ϕma précise ma
Concept impliqué :
γp : un concept (mp , ψmp ) tel que mp ∈ M Mp et ψmp précise mp
début
// Générer une instance de ressource typée par une ressource conforme à γp
correspondance avec ApplicationResourceInstance ∈ RTEPML
type ← getResource(γp )
...
// Générer les propriétés de l’instance
...
// Générer les appels de services
➤ pour chaque (element, concept, service) ∈ getCallServices(γa ) faire
// Pour chaque information fournie par l’élément source pour un appel de service
➤ si getService(concept, service) 6= ∅ alors
// Le service est bien fourni par une ressource (χconcept) de la plate-forme
➤ correspondance avec CallService ∈ RTEPML
➤ ref ← getIfExistInstance(element)
➤ service ← getService(concept, service)
// Générer les paramètres renseignés par des valeurs
➤ pour chaque (p, value) ∈ getParameterValues(service) faire
➤ correspondance avec CallParameter ∈ RTEPML
➤ value ← value
➤ parameter ← getParameter(p)
➤ sinon
➤ // Générer la trace d’une absence de service pour l’appel
➤ traceLackOfService(γa , concept, service)
L’algorithme prévoit que certaines fonctions retournent des informations sous la forme
de tuples.
Pour ce qui concerne la séquence de services que parcourt l’algorithme (getCallSer-
vices), ce tuple est constitué d’un élément source, d’un concept de RTEPML et d’un ser-
vice identifié par son rôle. L’élément source est l’élément qui est à l’origine de la généra-
tion de l’instance à laquelle s’adresse le service. Cette instance est typée par une ressource
conforme au concept stipulé17 .
Pour ce qui concerne les paramètres (getParameterValues et getParametersReferences),
le tuple est un couple constitué d’une information de localisation du paramètre et soit d’une
valeur, soit de l’élément à l’origine de l’instance que référence le paramètre.
Enfin, la gestion des références est similaire à celle que nous avons introduite dans la
sous-section précédente. La localisation des instances référencées est assurée par la fonction
getIfExistInstance, tant pour l’instance à laquelle s’adresse le service que pour les instances
passées en paramètre. Et finalement, les appels qui ne disposent pas d’une de ces instances
au moment de leur génération sont complétés au sein d’une fonction completeCallService-
References, à l’image de la fonction completePropertyReferences introduite précédemment.
Remarque : Cette algorithme montre des similitudes avec ceux que nous avons introduit,
dans la sous-section précédente, pour la gestion des propriétés. L’introduction d’une gestion
des services dans un prototype de conception étant également similaire à ce qui a déjà été
présenté (règles ruleCreateResourceInstanceFromPrototype et ruleClonePrototype), nous
n’en détaillerons pas les algorithmes dans cette sous-section.
Exemple
La figure 4.10, page suivante, complète l’exemple de la sous-section précédente (fi-
gure 4.9, page 105) pour illustrer la génération d’appels de services.
Dans cet exemple, l’application se compose de deux activités périodiques. L’une est
dédiée au contrôle du procédé (Control_T), l’autre à l’affichage des données contrôlées
(Display_T). Chacune des activités est munie d’un sous-programme (Control et Display)
qui constitue son point d’entrée.
Il est prévu que l’activité de contrôle transmette des données à l’activité d’affichage.
Pour cela, une communication entre les deux activités est décrite par des ports de données
(symbole H) et une connexion entre ces ports (Com).
Remarque : Dans cette version, la transformation Robot2RTEPML assure la mise en
œuvre d’une connexion par une correspondance avec le concept de variable partagée18 (dont
la plate-forme cible fournit une ressource qui s’y conforme (SharedData)).
Au cours de la transformation, lors de la génération des fonctions de contrôle et d’affi-
chage (Control et Display, qui correspondent aux sous-programmes homonymes du modèle
de l’application), un helper getCallSequence renseigne la transformation sur le fait que les
ports de données engendrent la création d’appels de services. L’algorithme 4.22, page ci-
contre, détaille le principe de ce helper .
L’échange de donnée décrit par les ports d’entrée et de sortie se concrétise alors par des
appels aux services de lecture et d’écriture (read et write) de la ressource SharedData (en
17
L’introduction du concept dans le tuple est motivée par le besoin de vérifier que la ressource de la plate-
forme qui type l’instance à laquelle s’adresse le service, fournit bien ce service.
18
Le concept de variable partagée (SharedDataComResource) a été introduit dans le chapitre 3 lors de la
présentation de RTEPML. Nous considérons que le comportement attendu de la communication modélisée est
vérifié pour la mise en œuvre proposée.
4.3. Transformations de déploiement 109
F IG . 4.10: Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (avec services).
Entrée :
sp : un élément de l’application conforme à un Subprogram du métamodèle Robot
Résultat :
seq : une séquence de tuples {element, concept, role}
début
seq ← ∅
// Pour chaque port de donnée de sortie
pour chaque output ∈ sp.outputDataP orts faire
// appel du service d’écriture sur une connexion par variable partagée
seq ← {output.connection, RTEPML !SharedDataComResource, ’write’}
// Pour chaque port de donnée d’entrée
pour chaque input ∈ sp.inputDataP orts faire
// appel du service de lecture sur une connexion par variable partagée
seq ← {input.connection, RTEPML !SharedDataComResource, ’read’}
retourner seq
fin
110 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
Le tableau 4.1 résume les dépendances des règles et des fonctions définies dans la sec-
tion précédente, avec :
– la technologie de modélisation de l’application source (M Ma ),
– le métamodèle de plate-forme d’exécution (RTEPML),
– la plate-forme d’exécution cible (P DM) et
– un métamodèle de trace (M Mt ).
M Ma RTEPML P DM M Mt
ruleConcept2M ultiResourceInstances ✓ (1)
✓
ruleConcept2ResourceInstance ✓(2) ✓
ruleCloneP rototype ✓(1) ✓
✓ ✓
Règles de correspondances
M Ma RTEPML P DM M Mt
getResource ✓
getInstance ✓
getIf ExistInstance ✓
getP roperty ✓
getP rototypeP roperty ✓
Fonctions (ou helpers )
getP ropertyRoles ✓
hasP ropertyInf ormation ✓ ✓
getP ropertyV alues ✓ ✓ ✓
getP ropertyRef erences ✓ ✓ ✓
getCallServices ✓ ✓
getService ✓
getP arameterV alues ✓ ✓ ✓
getP arameterRef erences ✓ ✓ ✓
getP arameter ✓ ✓
La première partie du tableau montre qu’aucun concept propre aux plates-formes d’exé-
cution n’est impliqué dans les règles de correspondances. De plus, les règles de traces sont
principalement dépendantes du métamodèle de trace. Elles se contentent d’accès génériques
aux éléments sources, tels qu’un attribut de nommage ou une référence.
On remarque également que les règles de déploiements transmettent directement les
éléments issus du modèle de l’application soit à d’autres règles, soit à des fonctions. Ainsi,
seuls les concepts qu’adressent les règles au sommet de la hiérarchie de règles s’expriment
dans les termes du métamodèle de l’application20 . En effet, les éléments issus du modèle
de l’application peuvent être transmis le long de la hiérarchie, sans stipuler les concepts
auxquels ils se conforment21 . Ces concepts sont uniquement pris en compte, in fine, par les
fonctions auxquelles les règles délèguent le traitement des éléments.
Au bilan, toutes les règles sont indépendantes de la plate-forme cible et seules les règles
au sommet de la hiérarchie dépendent du métamodèle de l’application.
Parallèlement, la seconde partie du tableau distingue trois catégories de fonctions.
Celles qui ne dépendent que du métamodèle de plate-forme d’exécution (RTEPML). Celles
qui dépendent également du métamodèle de l’application (M Ma ). Et celles qui sont propres
à la plate-forme cible (P DM). Ces dernières concernent la traduction des valeurs et des ré-
férences, à destination des propriétés d’instances ou des paramètres d’appels de services.
20
Dans un contexte déclaratif, le sommet de la hiérarchie de règles peut être défini comme étant l’ensemble
des règles qui ne sont pas explicitement appelées. Pour ce qui nous concerne, ces règles sont du type ruleCon-
cept2MultiResourceInstances et traceUnusedConcept.
21
Ceci suppose que les règles soient paramétrées avec un type générique (du type void ou OclAny).
4.4. Développement d’une transformation de déploiement 113
Finalement, en s’appuyant sur les règles et les fonctions que fournissent ces packages ,
la mise en œuvre d’une transformation de déploiement se restreint à :
– un ensemble de règles de correspondances (ruleConcept2MultiResourceInstances)
qui traduisent les concepts applicatif en concepts exécutif identifiés par RTEPML ;
– un ensemble de règles de correspondances (traceUnusedConcept) qui tracent les
concepts applicatif qui ne sont pas mis à contribution lors d’un déploiement ;
– un ensemble de fonctions de collecte d’informations (hasPropertyInformation, get-
CallServices et getParameter), dans le but d’identifier les éléments de l’application
qui concernent les propriétés, les services et les paramètres qu’identifient RTEPML ;
– un ensemble de fonctions de traduction de valeurs et de références (getPropertyVa-
lues, getPropertyReferences, getParameterValues et getParametersReferences), pour
renseigner les propriétés et les paramètres dans le modèle généré (P SM).
La suite de cette section se focalise sur le développement des deux premiers ensembles,
avant d’évoquer des perspectives d’assistance au développement des deux derniers. Mais
avant d’approfondir ces principes de développement, nous tenons à signaler certaines
contraintes sur la mise en œuvre des transformations.
Toutefois, nous ne détaillerons pas plus ce métamodèle dans la suite de cette section. La
solution proposée s’appuie sur la version que nous venons de présenter.
On remarquera que l’approche proposée s’apparente au tissage de modèles [34]. Le tis-
sage de modèles (ou weaving) consiste à modéliser des liens entre des éléments de modèles
ou de métamodèles distincts. Un tissage peut représenter tout type d’interaction (ou de re-
lation) entre les modèles. Différentes sémantiques peuvent être associées aux liens tissés.
Ainsi, lorsque la sémantique des liens concorde avec celle d’une transformation, un modèle
de transformation peut être généré à partir d’un modèle de tissage.
Toutefois, dans un objectif de transformation de modèles, les travaux et les outils relatifs
au tissage de modèles s’appuient sur des relations (ou correspondances) qui reflètent préci-
sément les transformations. Dans l’approche que nous proposons, les correspondances que
décrivent les modèles de déploiement reflètent uniquement les traductions de concepts ap-
plicatif en concepts exécutif. Les mécanismes de clonage des prototypes ou de gestion des
propriétés et des appels de services ne sont pas décrits dans les modèles de déploiement.
Ces mécanismes sont capturés dans les templates de génération de règles. L’approche que
nous proposons diffère donc sur ce point des approches par tissage existantes.
Le listing 4.2 illustre la modélisation d’un déploiement conforme au métamodèle de
déploiement de la figure 4.13. Ce modèle décrit le déploiement qui conduit à la génération
des règles de transformation mises à contribution dans le dernier exemple de la section
précédente (figure 4.10, page 109). La syntaxe textuelle et les termes employés dans ce
listing nous semblent suffisamment explicites pour ne pas être commentés.
Nous ne détaillerons pas plus cette approche dans la suite de ce rapport. Le template de
génération de règles qui y est associé dépend du métamodèle de trace employé.
Organisation de la transformation
La figure 4.15 illustre l’organisation d’une transformation dont les règles de déploie-
ment sont générées par un template 24 . Ce schéma enrichit la précédente organisation (fi-
gure 4.12, page 112) d’un modèle de déploiement (Xdeployment) conforme au métamodèle
que nous venons de présenter (Deployment). A partir de ce modèle et de templates mis à dis-
position dans le package templates4rtepml, l’ensemble des règles de déploiement propres à
l’application est généré (X2rtepml).
F IG . 4.15: Organisation d’une transformation de déploiement basée sur RTEPML (génération de règles).
Remarque : Pour des raisons didactiques, les éléments qui concernent les traces lors du
déploiement ne sont pas représentés dans la figure 4.15. Une vision globale et complète de
l’organisation d’une transformation de déploiement sera donnée en fin de chapitre.
24
Les packages générés sont grisés sur le schéma.
4.4. Développement d’une transformation de déploiement 117
Comme cela vient d’être mentionné dans la sous-section précédente, les choix que nous
sommes susceptibles de rencontrer portent :
– sur les concepts du métamodèle de plate-forme d’exécution (RTEPML) ou
– sur les ressources d’une plate-forme d’exécution cible.
Face à un choix, nous pouvons également imaginer que certaines mises en œuvre soient
favorables pour certains éléments de l’application, mais que d’autres mises en œuvre soient
plus adaptées à d’autres éléments. Une décision de déploiement peut donc concerner :
– tout élément conforme à un concept du métamodèle de l’application ou
– seulement certains éléments du modèle de l’application.
Au bilan, pour ce qui concerne les relations 1-1, les décisions de déploiement doivent
pouvoir refléter quatre types de correspondances :
– entre un concept applicatif et un concept identifié par RTEPML ;
– entre un concept applicatif et une ressource de la plate-forme d’exécution ;
– entre certains éléments applicatif et un concept identifié par RTEPML ;
– entre certains éléments applicatif et une ressource de la plate-forme d’exécution.
Pour les relations 1-N, les décisions de déploiement doivent, en plus, pouvoir refléter
des correspondances avec plusieurs concepts ou ressources de la plate-forme d’exécution.
Nous avons vu, dans la sous-section précédente, que les décisions de déploiement in-
fluencent l’application ou le déroulement des règles de transformations. Cette influence se
matérialise par des conditions au sein de la transformation, sous la forme, par exemple, de
pré-conditions d’application des règles ou de structures de contrôles.
Face à un choix, une telle condition évalue la décision qui répond à ce choix. Cette
décision peut alors prendre différentes formes.
La forme la plus simple se matérialise par un terme associé à une décision (décision A,
décision B, etc). L’évaluation d’une décision consiste alors à identifier le terme retenu (si
décision = décision A alors ...). Cette approche présente l’inconvénient de devoir définir un
terme pour chaque décision envisageable. Elle compromet de plus la généricité des règles
de transformations (un terme arbitraire n’a rien de générique).
Pour pallier à ces limitations, une convention de définition des termes peut être ins-
taurée. Dans le but de couvrir toutes les décisions envisageables, cette convention peut se
baser sur les correspondances que les décisions reflètent et imposer l’usage des termes des
modèles et des métamodèles impliqués. L’expression de décision qui ne concernent que
certains éléments du modèle de l’application n’est toutefois pas facilitée. Cette approche
nécessite d’assister la formulation des décisions, pour en faciliter l’usage.
4.5. Choix de déploiement 121
La troisième approche que nous ayons envisagée consiste à décrire explicitement les
correspondances que reflètent les décisions. Cette approche s’apparente alors à la modéli-
sation d’un déploiement, telle que nous l’avons introduite dans la sous-section précédente.
L’idée sous-jacente est alors de générer une transformation qui intègre les décisions. Celles-
ci ne sont plus évaluées dans la transformation.
Nous proposons donc d’étendre l’usage du métamodèle de déploiements présenté pré-
cédemment, pour la modélisation des décisions de déploiement.
Le premier modèle décrit les mises en œuvre possibles de mécanismes applicatif (dans
les termes du métamodèle de robotique des exemples précédents) avec les concepts qu’iden-
tifie RTEPML. Ce modèle reprend la description du listing 4.2, page 115 (la syntaxe stipule
maintenant les critères avec des fonctions et des paramètres).
4.5. Choix de déploiement 123
On notera que ce modèle propose un choix conceptuel pour la mise en œuvre d’une
connexion. Une connexion peut en effet être assurée par une variable partagée (SharedDa-
taComResource) ou par une communication par message (MessageComResource).
Le second modèle raffine le précédent modèle en y ajoutant des informations propre au
déploiement d’une application sur une plate-forme O SEK /V DX.
Nous avons mentionné, en introduction de cette section, qu’une plate-forme O SEK /V DX
distinguait les tâches étendues, susceptibles d’attendre un évènement (extended task), des
tâches basiques qui ne le peuvent pas (basic task). En supposant que le modèle de la plate-
forme O SEK /V DX que nous utilisons modélise deux types de ressources pour cela, le dé-
ploiement d’une application de robotique se confronte alors à un choix pratique. Toute ac-
tivité peut en effet s’implanter dans une tâche basique ou étendue.
En réponse à ce choix, la mise en œuvre d’une activité que décrit le modèle de déploie-
ment est raffinée. La correspondance initiale est dédoublée, et des critères sont associés aux
concepts applicatif et exécutif. Les activités d’affichages seront implantées par des tâches
basiques alors que celles de controles le seront par des tâches étendues.
Parallèlement, en réponse au choix conceptuel que soumet le modèle de déploiement,
les correspondances qui concernent les connexions sont également raffinées. Un critère per-
mettant d’identifier un élément source par son nom est associée à la première. Alors que la
seconde est neutralisée par un critère toujours faux. Lors d’un déploiement, seul l’élément
nommé « Com » sera ainsi mis en œuvre par une variable partagée. Aucune autre commu-
nication ne sera implantée (ni par variable partagée, ni par échange de message).
Organisation de la transformation
En pratique, l’approche que nous venons de définir suit le processus de génération des
règles de correspondances présenté dans la sous-section précédente. Cette génération repose
maintenant sur un modèle de décisions dans lequel des critères supplémentaires ont été
introduits, propres à l’application déployée et à la plate-forme considérée. La figure 4.18
illustre l’organisation de ce processus de déploiement.
F IG . 4.18: Organisation d’une transformation de déploiement basée sur RTEPML (choix de déploiement).
124 Chapitre 4. Un processus de déploiement sur une plate-forme explicitement décrite
La figure 4.18 regroupe dans un même package (X2Platform) les fonctions et le modèle
de décision propres à la plate-forme cible (X4platform et Application2Platform).
Dans ce même soucis de séparation des domaines et des technologies impliqués, un
package helpers4X a été introduit. Ce package regroupe les fonctions de parcours et de col-
lecte d’informations propres au métamodèle de l’application mais indépendant de tout autre
métamodèle. Ce package comprend, par exemple, les fonctions qui permettent d’exprimer
des critères sur les concepts ou les éléments applicatif.
Un exemple de template de génération de règles ATL compatible avec cette approche
est donné en annexe, page 187. Ce template s’appuie sur le métamodèle de déploiement que
nous venons d’étendre aux décisions.
4.6 Synthèse
Nous nous sommes intéressés, dans ce chapitre, à définir un processus de déploiement
basé sur le métamodèle de plate-forme d’exécution RTEPML. Ce processus permet de gé-
nérer, par transformation de modèles, une description d’application spécifique à une plate-
forme, à partir d’un modèle d’application indépendant de tout support d’exécution et du
modèle de la plate-forme cible.
L’algorithme de transformation au cœur du processus repose sur un mécanisme que
nous avons qualifié d’« intégration d’applications ». Son principe consiste à instancier les
ressources d’une plate-forme pour les besoins d’une application. Une description d’applica-
tion spécifique à une plate-forme se concrétise alors par un modèle de la plate-forme enrichi
des instances de ressources qui mettent en œuvre l’application.
Nous avons constaté, qu’une intégration d’applications dans un modèle de plate-forme
d’exécution offrait des perspectives de transformations de déploiement en grande partie
génériques vis-à-vis des plates-formes cibles. Dans un premier temps, ce chapitre s’est donc
focalisé sur le développement d’un algorithme de transformation qui confirme ce potentiel.
transformation peut être assurée par l’usage d’un métamodèle de trace qui se contente d’ac-
cès génériques aux éléments des modèles (par des attributs de nommage ou des références).
La troisième axe, proche du précédent, s’est intéressé à la disponibilité, sur les plates-
forme d’exécution, de ressources conformes à des concepts mis à contribution dans les
règles de correspondances. Un mécanisme générique de détection d’indisponibilités a donc
été instauré. Ce mécanisme repose également sur un métamodèle de trace.
Le quatrième axe concernait la gestion des artefacts de modélisation que fournit
RTEPML. Des mécanismes génériques de mises en œuvre de prototypes de conception, de
renseignements des propriétés et de générations d’appels de services ont alors été introduits
dans l’algorithme.
Enfin, le dernier axe, transversal aux précédents, a introduit un principe d’encapsula-
tion, par des fonctions, des accès aux éléments des modèles qui se destinent à renseigner
les propriétés ou les appels de services. La généricité des accès est alors assurée par une
convention de nommage et d’interprétation des fonctions. Cette convention s’appuie sur les
noms des rôles attribués aux propriétés et aux services dans RTEPML.
A l’issu de l’exploration de ces cinq axes, trois ensembles de règles et quatre de fonc-
tions, qui composent une transformation de déploiement, ont été identifiés, selon leur dé-
pendances aux technologies impliquées.
Le tableau 4.2 résume ces dépendances vis-à-vis du métamodèle de l’application
(M Ma ), du métamodèle de plate-forme d’exécution (RTEPML), d’une plate-forme cible
(P DM) et d’un métamodèle de trace (M Mt ).
M Ma RTEPML P DM M Mt
règles de correspondances ✓ ✓
règles de mises en œuvre des artefacts de RTEPML ✓
règles de générations de traces ✓
expression des critères associés aux concepts exécutif ✓
localisation d’éléments dans un modèle de plate-forme ✓
expression des critères associés aux concepts applicatif ✓
localisation d’éléments dans le modèle de l’application ✓ ✓
traduction des informations d’une technologie à une autre ✓ ✓ ✓
TAB . 4.2: Règles et fonctions mises à contribution dans une transformation de déploiement.
Processus de déploiement
La figure 4.19, page ci-contre, illustre le processus de déploiement auquel nous avons
abouti. Ce processus s’appuie sur quatre métamodèles : le métamodèle de plate-forme
4.6. Synthèse 127
e chapitre propose une évaluation du processus que nous venons de définir. Cette éva-
C luation repose sur une comparaison avec d’autres approches de déploiement identifiées
dans l’état de l’art de ce rapport. Ce chapitre vise à compléter la comparaison initiée durant
cet état de l’art et confirmer les résultats qui ont motivés cette étude.
Pour cela, une première section introduit le contexte et l’outillage des expérimentations
que nous avons menées, ainsi que les processus de déploiements expérimentés et comparés.
Les critères de comparaisons sont ensuite définis. Puis, les résultats que nous avons obtenus
sont présentés et commentés, avant de conclure.
5.1. Expérimentations 131
5.1 Expérimentations
Le processus de déploiement que nous venons de définir repose sur des descriptions ex-
plicites de plates-formes d’exécution. Ce processus offre une alternative aux considérations
implicites des plates-formes, telles que le pratiquent d’autres approches de déploiement
identifiées dans l’état de l’art de ce rapport. Plusieurs expérimentations ont donc été menées
pour comparer ces différentes approches avec le processus que nous venons de proposer.
5.1.1 Contexte
Les expérimentations menées s’inscrivent dans un processus de génération de code
conforme à des standards du domaine de l’embarqué et du temps réel (tels que O SEK /V DX
ou A RINC -653), à partir de descriptions A ADL ou de D SL « maison » d’applications de
robotiques. Nous abordons, dans cette partie, la première phase de ce processus (figure 5.1).
Cette phase est consacrée à la transformation d’un modèle d’application indépendant du
support d’exécution, en un modèle dépendant de ce support. La seconde phase, que nous ne
détaillerons pas, fut assurée par des technologies de génération de code par templates .
5.1.2 Outillage
Les expérimentations autour de descriptions A ADL ont été menées sur des modèles
conformes au métamodèle standard d’A ADL (métamodèle au format Ecore, intégré dans
l’outil O SATE [104]). Ce métamodèle se compose de sept packages (core, component, fea-
ture, connection, flow, property et instance) qui totalisent 198 classes.
Les D SL « maison », ainsi que les métamodèles propres à chacune des approches (méta-
modèles des plates-formes d’exécution, RTEPML, métamodèle de déploiement et métamo-
dèle de trace) ont été développés avec les outils A MMA (ATLAS Model Management Archi-
tecture) [65] tels que K M 3 (Kernel Meta Meta Model) [56] pour les syntaxes abstraites et
T CS (Textual Concret Syntax) [57] pour les syntaxes textuelles concrètes.
L’atelier T OPCASED (The Open-Source Toolkit for Critical Systems) [41] a été mis à
contribution pour la génération de syntaxes graphiques et l’intégration des différents outils
dans un atelier commun (figure 5.2, page suivante).
Les transformations de toutes les expérimentations ont été développées en ATL. Le lan-
gage Acceleo, ainsi que l’outil éponyme associé [83], ont été utilisés pour développer et
appliquer les templates de génération de règles ATL et de génération des codes source des
applications (durant la seconde phase du processus).
132 Chapitre 5. Évaluation
F IG . 5.2: Éditeurs développés et intégrés à l’atelier TOPCASED pour mener les expérimentations.
5.3 Résultats
Comme cela fut annoncé précédemment, cette partie présente successivement les ré-
sultats sur le développement des composantes propres aux applications, aux technologies
d’exécution et aux transformations impliquées dans un déploiement.
Description implicite
Description explicite
sans pivot avec pivot
M Mcible M Mpivot M Mcible RTEPML Mcible
Domaine cible ETR cible ETR cible
Temps + − + − ++
Taille + − + − ++
Maintenance + + + + ++
Réutilisation − + − ++ −
Domaine : cible (plate-forme cible), ETR (embarqué temps réel) ;
Temps de développement : − (∼ mois), + (∼ semaines), ++ (∼ jours) ;
Taille (en classes) : − (∼ 50), + (∼ 40), ++ (∼ 30) ;
Maintenance, Réutilisation : − (mauvaise), + (bonne), ++ (très bonne) ;
Les résultats qui concernent les deux premières approches ont été présentés et commen-
tés dans l’état de l’art de ce rapport. Nous y avons souligné que, lors d’un changement de
plate-forme cible, seule quelques parties du métamodèle qui décrit implicitement la plate-
forme d’origine peuvent être réutilisées (par exemple, celles qui traitent des notions de
fonction et d’appel de fonctions, communes à différentes plates-formes). Par contre, la se-
conde approche investit dans le développement d’un pivot mis à contribution dans tous les
déploiements, quelque soit l’application ou la plate-forme envisagée. L’intérêt de cet inves-
tissement sera souligné dans la sous-section suivante qui présente les transformations de
déploiement associées à chacune des approches.
La mise en œuvre d’un métamodèle pivot a toutefois nécessité plusieurs mois pour étu-
dier, classer et organiser, dans ce métamodèle, les différents concepts qu’offrent les plates-
formes d’exécution du domaine du temps réel et de l’embarqué.
La troisième approche, que nous proposons, investit dans le développement d’un méta-
modèle de plate-forme d’exécution (RTEPML). Le temps consacré au développement de ce
métamodèle fut équivalent à celui du développement du pivot de l’approche précédente.
Cependant, RTEPML permet de décrire les plates-formes d’exécution et les applications
déployées sur ces plates-formes. Il est donc sollicité en amont du processus de déploie-
ment, pour modéliser les plates-formes cibles, et pendant le processus, pour déployer les
applications. Tout déploiement d’application s’appuie donc essentiellement sur celui-ci.
Enfin, comme cela vient d’être mentionné, cette approche décrit explicitement les
plates-formes dans des modèles. Le développement, la taille et la maintenance de ces mo-
dèles sont alors beaucoup plus avantageux qu’une description dans un métamodèle. Ce bé-
néfice est essentiellement dû à l’absence de mécanismes (ou d’artefacts) de modélisation à
inclure dans un modèle de plate-forme. Ce dernier capture uniquement les informations qui
concernent la plate-forme, alors qu’un métamodèle qui capture implicitement ces informa-
tions se destine avant tout à décrire des applications.
5.3. Résultats 137
Les deux dernières approches offrent donc une meilleure considération de plates-formes
alternatives, sous réserve d’un investissement relativement conséquent, de l’ordre de plu-
sieurs mois, pour le développement d’un métamodèle pivot ou d’un métamodèle de plate-
forme d’exécution. L’approche proposée dans cette étude montre toutefois de meilleurs per-
formances en termes de réutilisation et de réactivité sur un changement de plate-forme cible.
Le tableau 5.2 résume les résultats relatifs aux développements des fonctions d’accès
aux informations des modèles2 . Ces fonctions servent pour collecter des données et pour
exprimer des critères sur les éléments des modèles. Elles s’appuient pour cela sur les méta-
modèles que nous venons d’évoquer. Elles trouvent leur utilité lors des transformations et
sont donc à la jonction entre les préoccupations de modélisation et de transformation.
Description implicite
Description explicite
sans pivot avec pivot
Fcible Fpivot Fcible Frtepml
Domaine cible ETR cible ETR
Temps ++ + ++ −
Taille + + + +
Maintenance + + + +
Réutilisation − ++ − ++
Domaine : cible (plate-forme cible), ETR (embarqué temps réel) ;
Temps de développement : − (∼ mois), + (∼ semaines), ++ (∼ jours) ;
Taille (en lignes) : − (∼ 5.103 ), + (∼ 103 ), ++ (∼ 5.102 ) ;
Maintenance, Réutilisation : − (mauvaise), + (bonne), ++ (très bonne) ;
TAB . 5.2: Développement des fonctions d’accès aux informations des modèles.
Description implicite
Description explicite
sans pivot avec pivot
(1) (2) (3)
Rapp2cible Rapp2pivot Rpivot2cible Mapp2rtepml Mapp2cible Rlib
application application ETR application application
Dom. RTEPML
cible ETR cible ETR cible
Tps. + + ++ ++ ++ −
Tai. − − + ++ ++ −
Mnt. − + + ++ ++ +
Réu. − + + + −− ++
(1) Modèle de déploiement (conforme au métamodèle de déploiement).
(2) Modèle de décisions (conforme au métamodèle de déploiement).
(3) Concerne les librairies de règles génériques et les templates de génération de règles.
Description implicite
Description explicite
sans pivot avec pivot
(1) (2)
Fapp2cible Fapp2pivot Fpivot2cible Fapp2rtepml Fapp2cible
application application ETR application application
Domaine
cible ETR cible ETR cible
Temps + + ++ + ++
Taille + + + + +
Maintenance − + + + +
Réutilisation − + + + −
(1) Fonction de localisation d’informations (pour les propriétés et les appels de services).
(2) Fonction de traduction d’informations (pour les propriétés et les appels de services).
La troisième approche, que nous avons développée durant cette étude, investit dans un
ensemble de règles génériques à toutes les plates-formes d’exécution et toutes les applica-
tions. Son développement, relativement long, a accompagné la mise en œuvre du métamo-
dèle de plate-forme d’exécution sur lequel il s’appuie.
140 Chapitre 5. Évaluation
La généricité de ces règles leur confère une capacité de réutilisation très élevée. Tout
déploiement d’application s’y réfère, quelque soient la technologie source et la plate-forme
d’exécution cible. De plus, la taille, en nombre de lignes, de ces règles n’altère pas leur
maintenance, qui ne dépend que du métamodèle de plate-forme d’exécution (RTEPML).
L’ensemble de règles, que nous venons de mentionner, s’accompagne de templates de
génération de règles. Ces templates sont impliqués dans tous les déploiements. Ils per-
mettent de réduire l’expression des correspondances, entre les concepts applicatif et les
concepts exécutif, nécessaires aux déploiements.
L’élaboration d’un déploiement se concrétise alors, dans un premier temps, par le dé-
veloppement d’un modèle de déploiement et d’un ensemble de fonctions de localisation
d’information. Un modèle de déploiement exprime des correspondances entre les concepts
du domaine de l’application et ceux qu’identifie RTEPML (indépendamment de toute plate-
forme d’exécution). Les fonctions de localisation identifient les éléments du modèle de
l’application susceptibles de renseigner des propriétés ou des appels de services.
Un modèle de correspondance est concis sur l’expression des règles, ce qui favorise
les temps de développement et la maintenance. De plus, l’absence de concepts propres aux
plates-formes cibles lui confère une capacité de réutilisation relativement élevée. Un modèle
de déploiement est générique à toutes les plates-formes cibles.
Pour les mêmes raisons, les fonctions de localisation développées en parallèle bénéfi-
cient également d’un fort taux de réutilisation. De plus, comme cela fut mentionné dans ce
rapport, une assistance à leur développement est envisageable. Leur temps de développe-
ment et leur maintenance en serait alors améliorés.
L’élaboration d’un déploiement est ensuite complétée, dans un second temps, par le
développement d’un modèle de décision et d’un ensemble de règles de traduction de va-
leurs. Un modèle de décision raffine un modèle de déploiement pour une application et une
plate-forme précises. Il permet en particulier de trancher parmi des choix de déploiement.
Parallèlement, les fonctions de traduction adaptent les valeurs du modèle de l’application
pour la plate-forme d’exécution cible.
Comme pour un modèle de déploiement, l’expression des décisions est concise, ce qui
favorise leur temps de développement et leur maintenance. Durant les expérimentations, le
temps passé pour l’élaboration des modèles de décisions a plus été consacré à la prise de
décision qu’à la formulation des décisions. Toutefois, un modèle de décision n’est valable
que pour un seul déploiement. La réutilisation d’un tel modèle n’est donc pas envisageable.
Les fonctions de traduction sont également affectées par leur dépendances au métamo-
dèle de l’application et à la plate-forme d’exécution cible. Elles sont toutefois utilisables
pour toutes les applications du domaine. Contrairement au modèle de décision qui n’est
parfois valable que pour une application donnée.
Au bilan, l’approche que nous proposons nous a permis de simplifier l’expression des
déploiements, d’en réduire les temps de développement et d’en faciliter la maintenance.
Cette approche s’est donc montrée plus rentable qu’un pivot et, bien que la conception des
fonctions qui l’accompagne nécessite plus de temps et de réflexion, elle semble également
plus efficace qu’une approche de déploiement directe sans pivot.
Enfin, le développement des déploiements n’est plus réservé à des expert d’une techno-
logie de transformation. En effet, l’expression d’un déploiement se restreint aux concepts du
domaine de l’application et des plates-formes d’exécution. La technologie de transformation
ne concerne que les règles génériques et les templates de génération de règles « cachées »
à l’utilisateur. Le seul lien persistant avec la technologie de transformation concerne le dé-
veloppement des fonctions. Mais, d’une part, ces fonctions reposent sur des technologies
5.3. Résultats 141
dédiées au parcours des modèles ou à l’expression de contraintes (tel qu’O CL) et, d’autre
part, des perspectives d’assistances à leur développement permettront certainement à terme
de s’abstraire également de ces technologies.
5.4 Bilan
Les résultats qui ont motivés cette étude, et que nous avons présentés dans le chapitre de
l’état de l’art, incitaient à mettre en œuvre un déploiement basé sur des descriptions expli-
cites de plates-formes d’exécution, si plusieurs plates-formes cibles étaient envisageables.
Les résultats que nous venons de présenter le confirment.
En effet, la définition d’un pivot ou la définition d’un métamodèle de plate-forme d’exé-
cution sont de la même complexité et prennent des temps de développement équivalents.
Mais, le métamodèle de plate-forme d’exécution que nous avons développé durant cette
étude nous a permis de mettre en œuvre un processus de déploiement basé sur des règles
génériques ou générées à partir de modèles de déploiement concis, rapides à développer,
faciles à maintenir et indépendants de la technologie de transformation sous-jacente. Ces
modèles intègrent de plus une gestion des choix de déploiements qu’il est difficile de mettre
en œuvre dans les approches concurrentes.
Les expérimentations que nous avons menées révèlent également que cette approche
peut s’avérer plus efficace qu’une description implicite lorsqu’une seule plate-forme est
envisagée. En effet, la plate-forme est décrite dans un modèle beaucoup plus simple à déve-
lopper qu’un métamodèle et l’expression d’un déploiement se concrétise par des modèles
beaucoup plus concis qu’un ensemble de règles de transformation.
Quelque soit le contexte, l’investissement que nécessite l’approche que nous proposons
peut donc s’avérer rentable sur le long terme.
Les prototypes développés durant cette étude ont été mis à disposition en logiciel libre4 .
L’outillage se compose en particulier :
– du métamodèle de RTEPML (aux formats K M 3 et Ecore) ;
– d’éditeurs RTEPML textuels et graphiques, compatibles avec Eclipse, développés
dans l’atelier T OPCASED ;
– d’un métamodèle et d’un éditeur textuel de déploiements ;
– de templates Acceleo de génération de règles ATL ainsi que des bibliothèques de
règles ATL qui les accompagnent ;
– de helpers ATL de localisation d’informations dans des modèles de plates-formes ;
– de helpers ATL de localisation d’informations dans des descriptions A ADL.
4
http://trame.eseo.fr
Conclusion
Synthèse
Les travaux de cette thèse avaient pour objectif d’étudier la considération des plates-
formes d’exécution logicielles lors d’un processus de déploiement d’application. Plus par-
ticulièrement, ils devaient contribuer à : (1) recenser et comparer les approches I DM de
modélisation des plates-formes d’exécution dans un objectif de déploiement d’applications
et (2) proposer un processus de déploiement concret, basé sur l’approche la plus appro-
priée au contexte d’utilisation prévu : le déploiement d’applications sur des plates-formes
d’exécution temps réel embarquées.
Pour cela, le champs d’application de l’étude a été centré sur les systèmes d’exploita-
tion temps réel embarqués multitâches, cadencés par le temps ou par les évènements, dans
une approche asynchrone. L’approche M DA a été adoptée comme méthodologie de déploie-
ment. Nous visions à générer, par transformation, des modèles d’applications déployées sur
des systèmes d’exploitations temps réel embarqués à partir de modèles d’applications indé-
pendants de tout support d’exécution.
La première partie s’est attachée à recenser, d’une part, les représentations possibles des
plates-formes de notre domaine d’intérêt (les systèmes d’exploitation temps réel embarqués)
et, d’autres part, les intégrations de ces représentations dans des processus de déploiement
d’applications (chapitre 2). Cet état de l’art a été mené dans des contextes de modélisation
basés sur des D SML et sur des G PML (et plus particulièrement U ML). Les déploiements
abordés couvraient la génération de modèles de codes source et la génération de modèles
d’applications indépendants de toute technologie de codage.
Trois approches de représentation des plates-formes d’exécution dans l’I DM ont été
identifiées au cours de cette étude. Ces approches se basent respectivement sur des repré-
sentations enfouies, implicites et explicites des plates-formes d’exécution, selon que les
informations relatives aux plates-formes sont capturées dans des transformations, des mé-
tamodèles ou des modèles. Pour chacune de ces approches, une ou plusieurs pratiques de
déploiement ont été présentées. Ces pratiques étaient issues de travaux existants ou ont été
proposées en complément. Elles ont ensuite été évaluées pour orienter notre investigation.
La seconde partie de l’étude s’est focalisée sur la mise en œuvre d’un déploiement d’ap-
plications basé sur des descriptions explicites de plates-formes d’exécution. Cette partie
s’est concentrée sur la génération de modèles d’applications indépendants de toute techno-
logie de codage, dans un contexte de modélisation D SML.
Un langage de modélisation de systèmes d’exploitation temps réel embarqués a été dé-
fini (chapitre 3). Puis, un processus de déploiement d’application basé sur ce langage a été
développé (chapitre 4). Ce processus a finalement été évalué dans le but de confirmer les
résultats, issus de l’état de l’art, qui avaient motivé cette étude (chapitre 5).
144 Conclusion
Contributions
Les travaux de cette thèse ont contribué en trois points à la considération des plates-
formes d’exécution lors d’un processus de déploiement d’applications.
de générer des règles. Ce langage se focalise sur l’expression des mises en œuvre de méca-
nismes applicatifs avec des concepts exécutifs. Il permet également de préciser des décisions
qui répondent à des choix de déploiement (ces choix peuvent concerner toutes ou une seule
application et toutes ou une seule plate-forme d’exécution).
Une transformation de déploiement s’organise alors en trois ensembles :
Bien que des contraintes existent sur la technologie susceptible de le mettre en œuvre,
le processus de déploiement proposé a été conçu indépendamment de toute technologie de
transformations.
Une implantation ATL a été développée pour outiller l’approche et l’expérimenter. A
l’issue des expérimentations, les transformations développées ont montré une nette sépara-
tion des considérations de l’application, de la plate-forme d’exécution et, plus généralement,
du domaine applicatif et du domaine du temps réel et de l’embarqué dans différents modèles
et ensembles de fonctions. L’introduction d’un langage dédié au déploiement aboutit à des
descriptions concises, rapides à développer et faciles à maintenir. Enfin, la construction in-
crémentale que propose le processus, en fonction des technologies impliquées, permet de
capitaliser sur les modèles et les fonctions qui composent les transformations.
Perspectives
Les suites à donner à cette étude se répartissent en trois axes. Le premier vise à améliorer
la modélisation des plates-formes d’exécution et le processus de déploiement proposés. Le
second et le troisième axes visent à étendre ces principes de modélisation et de déploiement
à d’autres domaines d’applications et à un contexte de modélisation G PML.
Approfondir l’approche
Nous nous sommes restreints dans cette étude à des modèles structurels qui se limitent
à l’interface de programmation des plates-formes d’exécution. Pour donner les moyens aux
concepteurs des déploiements de vérifier que les règles de transformations produisent des
systèmes conformes aux modèles de départ, il conviendra d’enrichir les modèles des plates-
formes pour qu’ils capturent également le comportement de ces plates-formes. Ce point fait
actuellement l’objet d’une étude à part entière.
Le métamodèle de plates-formes d’exécution que nous avons proposé identifie un en-
semble de concepts issus du package S RM d’U ML-M ARTE. Ces concepts ne sont toutefois
pas suffisants. Ils devront être complétés pour couvrir des mécanismes supplémentaires que
sont susceptibles de fournir les systèmes d’exploitation temps réel embarqués (telle que la
gestion des erreurs ou des modes de fonctionnement). De même, certains concepts déjà pré-
sents dans le métamodèle devront être étendus (un concept de structure de données sera, par
exemple, envisagé pour enrichir l’usage des données natives à une plate-forme).
146 Conclusion
Nous nous sommes intéressés, dans cette étude, aux déploiements d’application sur des
plates-formes d’exécution logicielles embarquées temps réel. Or, bien que nous n’ayons pas
identifié de points particuliers qui pourraient limiter l’application de l’approche proposée à
d’autres domaines que l’embarqué et le temps réel, d’autres expérimentations devront être
menées sur des domaines d’études différents.
Pour faciliter la production des métamodèles de plates-formes dans différents domaines,
la réutilisation de métamodèles existants devra alors être envisagée (par exemple, par com-
position de sous-ensembles communs ou par spécialisation de métamodèles abstraits).
Plus généralement, les avantages d’une approche de déploiement basée sur des repré-
sentations explicites des plates-formes, vis-à-vis d’une approche par pivot, pourront être
confirmés dans d’autres domaines dans lesquels une approche par pivot est souvent utilisée.
Au delà du domaine des logiciels ou des considérations d’exécution, deux études sont, par
exemple, actuellement en cours pour adapter l’approche proposée au plates-formes maté-
rielles ou aux plates-formes d’analyse d’ordonnancement.
Conclusion 147
Annexes
A
Métamodèle de RTEPML
153
-- @name RTEPML
-- @version 1.0
-- @authors matthias.brun@eseo.fr (@irccyn.ec-nantes.fr)
-- @description Real Time Embedded Platform Modeling Language
-- @nsURI RTEPML
-- @nsPrefix RTEPML
package RTEPML {
---------------------------------------------------------------
-- + -- Located and Named Elements
---------------------------------------------------------------
---------------------------------------------------------------
-- 1 -- Platform Model
---------------------------------------------------------------
---------------------------------------------------------------
-- 1.1 -- Resource and Resource Property
---------------------------------------------------------------
---------------------------------------------------------------
-- 1.2 -- Resource Instance and Resource Instance Property
---------------------------------------------------------------
---------------------------------------------------------------
-- 1.3 -- Resource Service and Call Service
---------------------------------------------------------------
---------------------------------------------------------------
-- 1.4 -- Data Type
---------------------------------------------------------------
---------------------------------------------------------------
-- 1.5 -- Routine
---------------------------------------------------------------
---------------------------------------------------------------
-- 2 -- Artefacts
---------------------------------------------------------------
---------------------------------------------------------------
-- 2.1 -- Prototype
---------------------------------------------------------------
---------------------------------------------------------------
-- 2.2 -- Application
---------------------------------------------------------------
---------------------------------------------------------------
-- 3 -- Resources
---------------------------------------------------------------
---------------------------------------------------------------
-- 3.1 -- Concurrent Resource
---------------------------------------------------------------
enumeration ArrivalPattern {
literal Undefined;
literal Periodic;
literal Aperiodic;
literal Sporadic;
}
---------------------------------------------------------------
-- 3.1.1 -- Interrupt Resource
---------------------------------------------------------------
enumeration InterruptKind {
literal HardwareInterruption;
literal ProcessorDetectedException;
literal ProgrammedException;
}
---------------------------------------------------------------
-- 3.1.2 -- Schedulable Resource
---------------------------------------------------------------
---------------------------------------------------------------
-- 3.2 -- Memory Partition
---------------------------------------------------------------
---------------------------------------------------------------
-- 3.3 -- Interaction Resource
---------------------------------------------------------------
enumeration QueuePolicyKind {
literal Undefined;
literal FIFO;
literal LIFO;
literal Priority;
}
---------------------------------------------------------------
-- 3.3.1 -- Synchronisation Resource
---------------------------------------------------------------
158 Annexe A. Métamodèle de RTEPML
---------------------------------------------------------------
-- 3.3.1.1 -- Mutual Exclusion Resource
---------------------------------------------------------------
enumeration MutualExclusionResourceKind {
literal BooleanSemaphore;
literal CountSemaphore;
literal Mutex;
}
enumeration ConcurrentAccessProtocolKind {
literal PIP;
literal PCP;
literal ImediatePCP;
literal NoPreemption;
}
---------------------------------------------------------------
-- 3.3.1.2 -- Notification Resource
---------------------------------------------------------------
enumeration NotificationResourceKind {
literal Barrier;
literal Event;
}
enumeration OccurencePolicyKind {
literal Memorized;
literal Bounded;
literal Memoryless;
}
---------------------------------------------------------------
-- 3.3.2 -- Communication Resource
---------------------------------------------------------------
---------------------------------------------------------------
-- 3.3.2.1 -- Message Com Resource
---------------------------------------------------------------
enumeration MessageResourceKind {
literal MessageQueue;
literal Pipe;
literal Blackboard;
}
---------------------------------------------------------------
-- 3.3.2.2 -- Shared Data Com Resource
---------------------------------------------------------------
---------------------------------------------------------------
-- 4 -- Timer Resource
---------------------------------------------------------------
Transformation de promotion
La transformation Platform2Meta du listing B.1 sert à promouvoir un modèle de plate-
forme d’exécution en un métamodèle d’application (passage d’une description explicite à
une description implicite).
Cette transformation est utilisée dans l’exemple de la figure 2.21 du chapitre 2, page 36.
1 -- Transformation Platform2Meta
2 --
3 -- Promote a platform model into an application metamodel.
4 --
5 module Platform2Meta;
6 create OUT : MMM from IN : Platform;
7
8 -- Rule Platform2Metamodel
9 --
10 -- Create a metamodel of application from a platform description.
11 --
12 rule Platform2Metamodel {
13 from platform : Platform!Platform
14 to
15 metamodel : MMM!Metamodel (
16 classes <- Sequence{application}->union(platform.resources)
17 ),
18 application : MMM!Class (
19 name <- ’Application’,
20 ref <- platform.resources
21 )
22 }
23
24 -- Rule Resource2Class
25 --
26 -- Create a metaclass for each resource. Create first a reference to that
27 -- metaclass, in order to reference the created metaclass in the application.
28 --
29 rule Resource2Class {
30 from resource : Platform!Resource
31 to
32 reference : MMM!Reference (
33 contain <- true,
34 cardinal <- ’-1’.toInteger(),
35 class <- class
36 ),
37 class : MMM!Class (
38 name <- resource.name,
39 attributes <- Sequence{resource.properties}
40 ),
41 name : MMM!Attribute (
42 name <- ’name’,
43 type <- #String
44 )
45 }
46
47 -- Rule Property2Attribute
48 --
49 -- Create attribute of meta-class from property of resource.
50 --
51 rule Property2Attribute {
52 from property : Platform!Property
53 to
54 attribute : MMM!Attribute (
55 name <- property.name,
56 type <- property.getType()
57 )
58 }
164 Annexe B. Extraits de transformations ATL
1 -- Helper getResource
2 --
3 -- Parameter : A metaclass of metamodel conform to MOF.
4 -- Return : The first class of a model that conforms to
5 -- the metaclass parameter passed to the helper.
6 -- RTEPML use : Return a platform resource conforms to
7 -- an executive concept identified by a metaclasse.
8 --
9 helper def: getResource(metaclass : MOF!EClass) : MOF!EClass =
10 metaclass.allInstances()->first();
11
12 -- Rule Activity2SchedulableResourceInstance
13 --
14 -- Generate an RTEPML instance resource typed by a
15 -- schedulable resource from a ROBOT activity.
16 --
17 rule Activity2SchedulableResourceInstance {
18 from s : ROBOT!Activity
19 to
20 t : RTEPML!ApplicationResourceInstance (
21 ...
22 type <-
23 thisModule.getResource(RTEPML!SchedulableResource),
24 ...
25 ),
26 ...
27 }
1 -- Helper getResource
2 --
3 -- Parameters : A metaclass of metamodel conform to MOF,
4 -- a criterion that correspond to an operation (helper) and
5 -- a sequence of parameters associated to the criterion helper.
6 -- Return : The first class of a model that conforms to
7 -- the metaclass respecting the criterion.
8 -- RTEPML use : Return a platform resource conforms to an executive
9 -- concept identified by a metaclasse and a criterion.
10 --
11 helper def: getResource( metaclass : MOF!EClass,
12 criterion : String,
13 parameters : Sequence(String) ) : MOF!EClass =
14
15 thisModule.getResources(metaclass, criterion, parameters)->first();
16
17 -- Helper getResources
18 --
19 -- Parameters : A metaclass of metamodel conform to MOF,
20 -- a criterion that correspond to an operation (helper) and
21 -- a sequence of parameters associated to the criterion helper.
22 -- Return : A set of class of a model that conforms to
23 -- the metaclass respecting the criterion.
24 --
25 helper def: getResources( metaclass : MOF!EClass,
26 criterion : String,
27 parameters : Sequence(String) ) : Set(MOF!EClass) =
28
29 let resources : Set(MOF!EClass) =
30 metaclass.allInstances()->asSequence() in
31
32 if criterion.oclIsUndefined()
33 then resources
34 else resources
35 ->select(r|r.refInvokeOperation(criterion, parameters))
36 endif;
La partie du helper getResource chargée de récolter l’ensemble des ressources est fac-
torisée dans un helper getResources défini à la suite. Ce helper se charge alors de localiser
les ressources en s’appuyant, dans un premier temps, sur l’opération O CL allInstances, que
nous avons évoquée dans la version simple, et en appliquant, dans un second temps, si un
critère est stipulé, une sélection (select) sur l’ensemble retourné.
Au sein de cette sélection, l’opération O CL refInvokeOperation, également fournie par
ATL, est mise à contribution pour évoquer le helper du critère dont le nom est passé en pa-
ramètre (sous forme d’une chaîne de caractères). L’appel à ce helper peut être accompagné
de paramètres transmis dans une séquence.
Un exemple d’utilisation de ce helper est donné dans la suite de cette annexe, au sein
d’une règle XConcept2XResourceInstance, page 168.
Chacune de ces implantations se réfère aux algorithmes 4.2 et 4.4, introduits dans le
chapitre 4, page 82.
Le listing B.4 présente une implantation simplifiée d’un helper ATL getProperty qui
met à contribution un ensemble de helpers dédiés à la localisation de chaque propriété.
Listing B.4: getProperty : localisation d’une propriété (version simple, multi-helpers , en ATL)
Cette approche présente l’avantage de pouvoir vérifier la légitimité d’un accès à une pro-
priété, comme cela est pratiqué ligne 21. Il est toutefois nécessaire d’implanter des helpers
dédiés pour chaque rôle identifié pour les propriétés.
Listing B.5: getProperty : localisation d’une propriété (version simple, générique, en ATL)
1 -- Rule XConcept2XResourceInstance
2 --
3 -- Translate an application XConcept into a platforme resource instance
4 -- typed by XResource. Both XConcept and XResource have criterion.
5 --
6 rule XConcept2XResourceInstance {
7
8 from s : Application!XConcept (
9 s.XConceptCriterion()
10 )
11
12 to t : RTEPML!ApplicationResourceInstance
13 type <- thisModule.getResource(
14 RTEPML!XResource, ’XResourceCriterion’, Sequence{}
15 ),
16 ...
17 ),
18 ...
19 }
Dans l’exemple proposé, les critères sont exprimés par des helpers ATL. L’implantation
de ces helpers , que nous ne détaillerons pas, se fait en O CL.
Le critère sur le concept applicatif est pris en compte au sein d’une pré-condition
d’application (ou d’exécution) de la règle (ligne 9). Le critère sur le concept exécutif est
passé comme paramètre au helper getResource, via le nom du helper qui capture ce critère
(ligne 14). Remarque : Un ensemble de paramètres peut accompagner le helper du critère.
Ceux-ci sont alors transmis par une séquence (vide dans l’exemple) dans le dernier para-
mètre du helper getResource.
Le helper getResource permettant de prendre en compte des critères associés aux classes
est présenté dans cette annexe page 164.
1 -- Rule XConcept2XResourceInstance
2 --
3 -- Translate an application XConcept into a platforme resource instance
4 -- typed by XResource. Both XConcept and XResource have criterion.
5 --
6 rule XConcept2XResourceInstance {
7
8 from s : Application!XConcept (
9 s.XConceptCriterion()
10 and
11 thisModule.getResources(
12 RTEPML!XResource, ’XResourceCriterion’, Sequence{}
13 )->notEmpty()
14 )
15
16 to t : RTEPML!ApplicationResourceInstance
17 type <- thisModule.getResource(
18 RTEPML!XResource, ’XResourceCriterion’, Sequence{}
19 ),
20 ...
21 ),
22 ...
23 }
24
25 -- Rule XConcept2notXResourceInstance
26 --
27 -- Trace the lack of XResource (with XResourceCriterion)
28 -- in the target execution platform.
29 --
30 rule XConcept2notXResourceInstance {
31
32 from s : Application!XConcept (
33 s.XConceptCriterion()
34 and
35 thisModule.getResources(
36 RTEPML!XResource, ’XResourceCriterion’, Sequence{}
37 )->isEmpty()
38 )
39
40 -- TRACE : Can’t reach previous translation.
41 to t : Trace!LackOfResource (
42 ...
43 ),
44 ...
45 }
Dans un contexte déclaratif, l’exécution d’une des règles est guidée par des pré-
conditions d’application des règles. Concrètement, une telle pré-condition est une formule
(une propriété) qui accompagne la définition d’une règle. Cette formule doit être vérifiée
pour que la règle puisse être appliquée (exécutée).
Dans la solution proposée, les conditions d’application des règles, exprimées dans les
instructions de contrôle (Si, Sinon) de l’algorithme 4.10, sont ainsi implantées comme pré-
condition d’application dans les définitions des règles (lignes 11 à 13, et 35 à 37).
170 Annexe B. Extraits de transformations ATL
Ces pré-conditions s’appuient sur le helper getRessources pour évaluer l’ensemble des
éléments conformes au concept envisagé dans le modèle de la plate-forme (modèle transmis
comme paramètre à la transformation). Si cet ensemble n’est pas vide (not empty), la mise
en œuvre du mécanisme applicatif est effectuée. Dans le cas contraire, une trace est générée.
Le helper getResources mis à contribution est présenté dans cette annexe page 164.
1 -- Rule XConcept2XResourceInstance
2 --
3 -- Translate an application XConcept into a platforme resource instance
4 -- typed by XResource. Both XConcept and XResource have criterion.
5 --
6 -- Trace the lack of XResource (with criterion) in the target platform.
7 --
8 rule XConcept2XResourceInstance {
9
10 from s : Application!XConcept (
11 s.XConceptCriterion()
12 )
13 using {
14 resource : RTEPML!Resource =
15 thisModule.getResource(
16 RTEPML!XResource, ’XResourceCriterion’, Sequence{})
17 }
18 do {
19 if ( not resource.oclIsUndefined() ) {
20 -- Create a resource instance typed by resource
21 thisModule.CreateResourceInstance(s, resource);
22 } else {
23 -- Trace the lack of resource
24 thisModule.TraceLackOfResource(s, resource);
25 }
26 }
27 }
28
29 -- Rule CreateResourceInstance
30 --
31 -- Called rule that generate an application resource instance typed by
32 -- the resource passed to the rule in the second parameter, from the
33 -- source element passed to the rule in the first parameter.
34 --
35 -- Parameters : A source application element and a platform resource.
36 --
37 rule CreateResourceInstance (
38 source : OclAny, -- application element
39 resource : RTEPML!Resource -- platform resource
40 ) {
41 to
42 t : RTEPML!ApplicationResourceInstance (
43 ...
44 type <- resource,
45 ...
46 ),
47 ...
48 }
171
1 -- Rule XConcept2XResourceInstance
2 --
3 -- Translate an application XConcept into a platforme resource instance
4 -- typed by XResource. Both XConcept and XResource have criterion.
5 -- A resource provided by the target platform conform to the XResource
6 -- may be described with a design prototype.
7 --
8 -- Trace the lack of XResource (with criterion) in the target platform.
9 --
10 rule XConcept2XResourceInstance {
11
12 from s : Application!XConcept (
13 s.XConceptCriterion()
14 )
15 using {
16 resource : RTEPML!Resource =
17 thisModule.getResource(
18 RTEPML!XResource, ’XResourceCriterion’, Sequence{})
19 }
20 do {
21 if ( not resource.oclIsUndefined() ) {
22 if (resource.prototype.oclIsUndefined()) {
23 -- without prototype :
24 -- create a resource instance typed by resource
25 thisModule.CreateResourceInstance(s, resource);
26
27 } else {
28 -- with prototype :
29 -- create resource instances according to the prototype,
30 -- (1) initialize a SetOfInstances structure
31 thisModule.initSequence(’SetOfInstances’);
32 -- (2) create the elements
33 thisModule.ClonePrototype(s, ’’, resource);
34 }
35 } else {
36 -- Trace the lack of resource
37 thisModule.TraceLackOfResource(s, resource);
38 }
39 }
40 }
Règle ClonePrototype
Le listing B.10, page suivante, illustre la génération d’un ensemble d’instances de res-
sources, conformément à ce que précise un prototype de conception. La règle CloneProto-
type de ce listing est mise à contribution dans le listing B.9 de la sous-section précédente.
Son principe est introduit dans l’algorithme 4.13 du chapitre 4, page 94.
La règle ClonePrototype est une règle ATL explicitement appelée (called rule). Les
paramètres de cette règle concernent :
– l’élément applicatif à mettre en œuvre (source),
– un préfixe utile au nommage des instances à générer si une hiérarchie de prototypes
est impliquée (nous détaillons ce principe dans la suite de cette sous-section) et
– la ressource de la plate-forme qui fournit le prototype de conception (resource).
Cette règle se déroule en deux temps. Dans un premier temps, l’ensemble des instances
représentées dans le prototype est générée pour l’application (lignes 17 à 36). Dans un
second temps, ces instances sont mises en relation, à l’image des associations spécifiées
dans le prototype (lignes 39 à 42).
173
1 -- Rule ClonePrototype
2 --
3 -- Called rule that generate application resource instances
4 -- and their associations according to a design prototype.
5 --
6 -- Parameters : A source application element, a prefix (used to identifie
7 -- instances when hierachic prototypes are used), and
8 -- a platform resource that provides a design prototype.
9 --
10 rule ClonePrototype(
11 source : OclAny, -- application element
12 prefix : String, -- prefix for the instance names
13 resource : RTEPML!Resource -- platform resource
14 ) {
15 do {
16 -- Create resource instances according to the prototype
17 for (i in resource.prototype.instances) {
18
19 if ( i.isNotPlatformResourceInstance() ) {
20
21 -- the considered instance within the prototype
22 -- is not a platform native one (predefined)
23
24 if ( i.type.prototype.oclIsUndefined() ) {
25 -- without prototype :
26 -- generate an application resource instance
27 thisModule.CreateResourceInstanceFromPrototype(
28 source, prefix, resource, i );
29 } else {
30 -- with prototype :
31 -- recursive call
32 thisModule.ClonePrototype(
33 source, prefix + i.name, i.type );
34 }
35 }
36 }
37
38 -- Create resource instance associations according to the prototype
39 for (a in resource.prototype.associations) {
40 thisModule.CreateAssociationFromPrototype(
41 source, prefix, resource, a );
42 }
43 }
44 }
Les éléments d’un prototype de conception peuvent représenter des instances de res-
sources propres au prototype ou des instances de ressource prédéfinies sur la plate-forme
d’exécution. Seule les instances propres au prototype engendre une génération d’instance
pour l’application (ligne 19). Les instances prédéfinies sont mises à disposition par la plate-
forme, elles sont donc accessibles dans le modèle de la plate-forme.
Lors de la génération des instances, deux situations peuvent se présenter, selon que
l’instance à générer est typée par une ressource unique, directement instanciable, ou par
une ressource dont la mise en œuvre relève (elle aussi) d’un prototype de conception.
Dans le premier cas, une instance est générée via un appel à la règle CreateResourceIns-
tanceFromPrototype (ligne 27). Cette règle est présentée dans la sous-section suivante.
Dans le second cas, l’ensemble des instances du prototype est généré par un appel ré-
cursive à la règle ClonePrototype (ligne 32), avec comme paramètres l’élément applicatif à
mettre en œuvre, le préfixe enrichi du nom de l’instance considérée (l’instance dont la mise
en œuvre se conforme également à un prototype) et la ressource qui type cette instance
(ressource qui fournit le prototype nouvellement considéré).
174 Annexe B. Extraits de transformations ATL
Lors d’appels récursifs, l’unicité des noms des instances générées est ainsi garantie, en
préfixant le nom des instances par le nom du chemin de progression à travers la hiérarchie
de prototypes (le nom du chemin est donné par la concaténation des nom successifs des
instances concernées dans les prototypes).
Finalement, les associations entre les instances qui viennent d’être générées sont égale-
ment générées, conformément à ce que précise le prototype. Pour cela, la règle CreateAsso-
ciationFromPrototype est appelée (ligne 40). Cette règle est présentée dans la suite de cette
annexe, page 175.
Règle CreateResourceInstanceFromPrototype
Le listing B.11 illustre la génération d’une instance de ressource à partir d’une instance
de ressource stipulée dans un prototype de conception. La règle CreateResourceInstance-
FromPrototype de ce listing est mise à contribution dans le listing B.10 de la sous-section
précédente. Son principe est introduit dans l’algorithme 4.14 du chapitre 4, page 95.
La règle CreateResourceInstanceFromPrototype est une règle ATL explicitement appe-
lée (called rule). Les paramètres de cette règle concernent :
– l’élément applicatif à mettre en œuvre (source),
– un préfixe utile au nommage de l’instance à générer (son rôle a été présenté dans la
sous-section précédente),
– la ressource de la plate-forme qui fournit le prototype de conception (resource),
– l’instance de ressource concernée, issue de ce prototype.
Listing B.11: CreateResourceInstanceFromPrototype : générer une instance à partir d’un prototype (en ATL)
1 -- Rule CreateResourceInstanceFromPrototype
2 --
3 -- Called rule that create an application resource instance
4 -- from an instance represented in a resourcedesign prototype.
5 --
6 -- Parameters : A source application element, a prefix (used to identifie
7 -- instance when hierachic prototypes are used), a platform
8 -- resource that provides the design prototype, and the
9 -- considered instance.
10 --
11 rule CreateResourceInstanceFromPrototype(
12 source : OclAny, -- application element
13 prefix : String, -- prefix for the instance name
14 resource : RTEPML!Resource, -- platform resource
15 instance : RTEPML!PrototypeResourceInstance,
16 ) {
17 to
18 t : RTEPML!ApplicationResourceInstance (
19 ...
20 name <- source.name + prefix + instance.name,
21 type <- instance.type,
22 ...
23 )
24 do {
25 -- Add created element into the SetOfInstances structure
26 thisModule.addSequence(’SetOfInstances’, t);
27 }
28 }
Chaque instance générée de la sorte est référencée dans une structure de données (Se-
tOfInstances, ligne 26). Cette structure est consultée, par la suite, pour la génération des
associations entre les instances (dans la règle CreateAssociationFromPrototype introduite
dans la sous-section précédente et présentée dans la sous-section suivante).
Les helpers relatifs à la structure SetOfInstances sont présentées dans la suite de cette
annexe (page 177).
Règle CreateAssociationFromPrototype
Le listing B.12, page suivante, illustre la génération d’une association, dans le modèle de
l’application déployée, à partir d’une association stipulée dans un prototype de conception.
La règle CreateAssociationFromPrototype de ce listing est mise à contribution lorsqu’un
prototype est appliqué pour générer un ensemble d’instances (listing B.10, page 173). Son
principe est introduit dans l’algorithme 4.15 du chapitre 4, page 96.
La règle CreateAssociationFromPrototype est une règle ATL explicitement appelée (cal-
led rule). Les paramètres de cette règle concernent :
– l’élément applicatif dont la mise en œuvre suit le prototype de conception (source),
– le préfixe impliqué dans le nommage des instances de ressources concernées par l’as-
sociation (le rôle de ce préfixe a été présenté dans la sous-section précédente),
– la ressource de la plate-forme qui fournit le prototype de conception (resource),
– l’association concernée, issue de ce prototype.
La règle CreateAssociationFromPrototype génère une association dont les extrémités
(src et dst) sont déduites des extrémités de l’association stipulée dans le prototype (lignes 22
et 23). Pour cela un helper getInstance est introduit.
Le helper getInstance (défini ligne 34) localise, dans le modèle du système généré,
l’instance qui correspond à ce que représente l’élément du prototype auquel il s’applique.
Or comme cela a été rappelé précédemment, les éléments d’un prototype représentent soit
une instance de ressource propre à l’application, soit une instance de ressource prédéfinie
sur la plate-forme d’exécution. Deux situations se présentent alors.
Si l’instance concernée est une instance de ressource prédéfinie sur la plate-forme, celle-
ci est directement accessible dans le modèle du système généré (puisque ce modèle com-
prend le modèle de la plate-forme d’exécution cible). L’accès à cette instance se fait alors au
travers de l’association match qui relie l’élément du prototype à l’instance de la plate-forme
qu’elle représente (ligne 49).
Si l’instance concernée est propre à l’application, la localisation de cette instance s’ap-
puie sur la structure de données SetOfInstances. Cette structure mémorise l’ensemble des
instances qui ont été générées à partir des éléments du prototype (ce principe a été introduit
dans la sous-section précédente). L’instance concernée est alors localisée dans la structure
SetOfInstances à partir de son nom. Les informations impliquées dans le nommage de l’ins-
tance sont fournies au helper , via le paramètre infoname.
Cependant, l’instance concernée a pu être générée à partir d’un élément du prototype
dont le type (la ressource) est directement instanciable, ou à partir d’un autre prototype de
conception (cf. ClonePrototype, page 172). Dans le premier cas, les informations de nom-
mage fournies suffisent pour la localisation (ligne 42). Dans le second cas, la localisation
de l’instance s’appuie sur le helper getMasterName pour identifier l’instance « maîtresse »
qui ressort de la hiérarchie de prototypes (cf. Motifs de conception, page 69). Le nom de
cette instance maîtresse permet alors de référencer l’instance concernée par l’association,
en suivant le protocole de nommage utilisé (ligne 44).
176 Annexe B. Extraits de transformations ATL
Remarque : En pratique, le protocole de nommage peut être capturé dans des helpers .
1 -- Rule CreateAssociationFromPrototype
2 --
3 --
4 -- Called rule that create an application resource instance association from
5 -- an association between prototype resource instance in a design prototype.
6 --
7 -- Parameters : A source application element, a prefix (used to identifie
8 -- instance when hierachic prototypes are used), a platform
9 -- resource that provides the design prototype, and the
10 -- considered association.
11 --
12 rule CreateAssociationFromPrototype(
13 source : OclAny, -- application element
14 prefix : String, -- prefix for the instance name
15 resource : RTEPML!Resource, -- platform resource
16 association : RTEPML!PrototypeResourceInstanceAssociation
17 ) {
18 to
19 t : RTEPML!ResourceInstanceAssociation (
20 ...
21 name <- source.name + prefix + association.name,
22 src <- association.src.getInstance(source.name + prefix),
23 dst <- association.dst.getInstance(source.name + prefix)
24 )
25 }
26
27 -- Helper getInstance
28 --
29 -- Parameter : An information about an application resource instance that was
30 -- genereted from the ’self’ prototype resource instance.
31 -- Return : The application instance that was generated from the
32 -- ’self’ prototype resource instance.
33 --
34 helper context RTEPML!PrototypeResourceInstance
35 def : getInstance(infoname : String) : RTEPML!ResourceInstance =
36
37 if (self.isNotPlatformResourceInstance())
38 then
39 -- select the correct generated instance,
40 -- into the SetOfInstances structure
41 if (self.type.prototype.oclIsUndefined())
42 then thisModule.selectSequence(’SetOfInstances’,
43 infoname + self.name)
44 else thisModule.selectSequence(’SetOfInstances’,
45 infoname + self.name + self.getMasterName())
46 endif
47
48 else -- use platform resource instance
49 self.match
50
51 endif;
52
53 -- Helper getMasterName
54 --
55 -- Return : The name of the prototype resource instance whith ’master’ role.
56 --
57 helper context RTEPML!PrototypeResourceInstance
58 def: getMasterName() : String =
59
60 self.type.prototype.masterInstance.name +
61 if (not self.type.prototype.masterInstance
62 .type.prototype.oclIsUndefined())
63 then self.type.prototype.masterInstance.getMasterName()
64 else ’’
65 endif;
177
Structure SetOfInstances
Le listing B.13 présente la structure SetOfInstances mise à contribution pour mémori-
ser et localiser les instances de ressources générées à partir des prototypes de conception.
Cette structure et les opérations qui l’accompagnent sont utilisées au sein des règles qui
concernent les prototypes de conception, dans les sous-sections précédentes.
Listing B.13: SetOfInstances : une structure de mémorisation d’instances de ressources (en ATL)
1 -- Helper SetOfInstance
2 --
3 -- A sequence of resource instances.
4 --
5 helper def : SetOfInstance : Sequence(RTEPML!ResourceInstance) =
6 Sequence{};
7
8 -- Helper initSequence
9 --
10 -- Initialize an empty sequence.
11 --
12 -- Parameter : The name of the sequence to initialize.
13 --
14 helper def : initSequence(structure : String) : OclAny =
15 thisModule.refSetValue(structure, Sequence{});
16
17 -- Helper addSequence
18 --
19 -- Add an element into a sequence.
20 --
21 -- Parameters : The name of the sequence and the element to add.
22 --
23 helper def : addSequence(structure : String, element : OclAny) : OclAny =
24 thisModule.refSetValue(
25 structure,
26 thisModule.refGetValue(structure)->including(element) );
27
28 -- Helper selectSequence
29 --
30 -- Select an element into the sequence, by its name.
31 --
32 -- Parameters : The name of the sequence and
33 -- the name of the element to select.
34 -- Return : The selected element.
35 --
36 helper def : selectSequence(structure : String, name : String) : OclAny =
37 thisModule.refGetValue(structure)
38 ->select(e | e.name = name)
39 ->first();
1 -- Rule CreateResourceInstance
2 --
3 -- Called rule that generate an application resource instance typed by
4 -- the resource passed to the rule in the second parameter, from the
5 -- source element passed to the rule in the first parameter.
6 --
7 -- This rule is called by XConcept2XResourceInstance rule.
8 --
9 -- Parameters : A source application element and a platform resource.
10 --
11 rule CreateResourceInstance (
12 source : OclAny, -- application element
13 resource : RTEPML!Resource -- platform resource
14 ) {
15 to
16 t : RTEPML!ApplicationResourceInstance (
17 ...
18 type <- resource,
19 properties <- Sequence{},
20 ...
21 ),
22 ...
23
24 do {
25 -- memorize correspondance between source element and
26 -- generated instance (useful to locate which instances
27 -- have been already generated, in order to reference them)
28 thisModule.addSequence(’InstancesMemory’, Sequence{source, t});
29
30 -- fill in properties
31 for ( role in resource.getPropertyRoles() ) {
32 if ( not t.type.getProperty(role).oclIsUndefined()
33 and source.hasPropertyInformation(role)
34 ) {
35 -- the type of the target element accept a property and
36 -- a property information exists in the source element
37
38 -- generate properties with value
39 for ( value in source.getPropertyValues(role) ) {
40 t.properties.append(
41 thisModule.CreateResourceInstanceProperty(
42 t.type.getProperty(role),
43 value,
44 OclUndefined
45 )
46 );
47 }
48 -- generate properties with reference
49 for ( reference in source.getPropertyReferences(role) ) {
50 t.properties.append(
51 thisModule.CreateResourceInstanceProperty(
52 t.type.getProperty(role),
53 OclUndefined,
54 reference
55 )
56 );
57 }
58
59 } else {
60 -- Trace the lack of property
61 thisModule.TraceLackOfProperty(source, resource, role);
62 }
63 }
64
65 -- fill in incomplete properties
66 thisModule.CompletePropertyReferences(source, t);
67 }
68 }
180 Annexe B. Extraits de transformations ATL
Règle CreateResourceInstanceProperty
Le listing B.15 illustre l’implantation d’une règle ATL dédiée à la création des propriétés
d’instances de ressources (ResourceInstanceProperty).
Cette règle, CreateResourceInstanceProperty, est mise à contribution pour renseigner
les propriétés, dans la règle CreateResourceInstance de la sous-section précédente.
1 -- Rule CreateResourceInstanceProperty
2 --
3 -- Called rule that generate an application resource instance property
4 -- fill in with either a value or a reference to a resource instance.
5 --
6 -- This rule is called by the CreateResourceInstance rule.
7 --
8 -- Parameters : The property to fill in, the value and the reference.
9 --
10 rule CreateResourceInstanceProperty (
11 property : RTEPML!ResourceProperty,
12 value : String,
13 reference : OclAny
14 ) {
15 to
16 t : RTEPML!ResourceInstanceProperty (
17 property <- property,
18 val <- value,
19 ref <- thisModule.getInstance(reference)
20 )
21 do {
22 if ( not reference.oclIsUndefined()
23 and t.ref.oclIsUndefined()
24 ) {
25 thisModule.addSequence(
26 ’SetOfPropertyToComplete’, Sequence{reference, t} );
27 }
28 }
29 }
30
31 -- Helper getInstance
32 --
33 -- Parameter : A source application element.
34 -- Return : A resource instance generated from the source application
35 -- element passed to the helper (if that instance has already
36 -- been generated).
37 -- Use : Locate target element into the InstancesMemory structure.
38 --
39 helper def : getInstance(reference : OclAny) : RTEPML!ResourceInstance =
40
41 let memory : Sequence(OclAny) =
42 thisModule.refGetValue(’InstancesMemory’)
43 ->select(e | e.first() = reference) in
44
45 if memory.oclIsUndefined()
46 then OclUndefined
47 else memory.last()
48 endif;
Remarque : Bien qu’une valeur littérale et une référence puisse renseignées une pro-
priété, en pratique les deux formes ne sont pas utilisées conjointement.
La règle CreateResourceInstanceProperty génère une propriété d’instance de ressource
(ResourceInstanceProperty) associée à la propriété passée en paramètre. La valeur (val) de
cette propriété d’instance est renseignée par le second paramètre. Sa référence vers une
instance de ressource (ref ) est déduite du troisième paramètre. Cette déduction repose sur
le helper getInstance défini dans le même listing (ligne 39).
Le helper getInstance s’appuie sur la structure InstancesMemory évoquée dans la sous-
section précédente. Cette structure mémorise les instances de ressources qui sont générées,
ainsi que les éléments source à l’origine de leur génération (cette mémorisation est effectuée
lors de la création des instances, au fur et à mesure de l’exécution de la transformation).
Le helper getInstance localise donc, au sein de cette structure, l’instance qui a été gé-
nérée à partir de l’élément source désigné pour renseigner la propriété. Si cette instance n’a
pas encore été générée (i.e. si le couple formé de l’élément source et de l’instance générée
n’est pas présent dans la structure), le helper ne retourne pas d’instance (OclUndefined).
Au sein de la règle CreateResourceInstanceProperty l’absence d’instance retournée
par le helper getInstance, bien qu’une référence soit stipulée pour renseigner la propriété,
conduit à mémoriser la propriété (alors incomplète) et l’élément source dont l’instance cor-
respondante n’est pas encore disponible dans le modèle généré (lignes 22 à 26). Cette mé-
morisation se fait dans une structure (SetOfPropertyToComplete) dont les principes de ma-
nipulation s’apparentent a ce qui a été présenté pour la structure SetOfInstances (page 177).
Comme cela fut abordé dans la sous-section précédente, les références des propriétés à
compléter sont résolues lors de la création des instances manquantes (quand les éléments
sources à l’origine de la génération de ces instances sont transformés). Cette résolution est
assurée par la règle CompletePropertyReferences présentée dans la sous-section suivante.
Règle CompletePropertyReferences
Le listing B.16, page suivante, illustre l’implantation d’une règle ATL qui se destine à
renseigner des propriétés d’instances encore incomplètes.
Cette règle, CompletePropertyReferences, est mise à contribution pour renseigner les
propriétés, dans la règle CreateResourceInstance présentée dans cette annexe, page 178.
La règle CompletePropertyReferences est une règle explicitement appelée (called rule).
Les paramètres de cette règle concernent :
– un élément source à l’origine de la création de l’instance de ressource passée dans
l’autre paramètre ;
– l’instance de ressource que nous venons de mentionner (susceptible de renseigner des
références dans des propriétés d’instances encore incomplètes).
La règle s’appuie sur la structure SetOfPropertyToComplete que nous avons introduit
dans la sous-section précédente. Cette structure mémorise des couples composés d’un élé-
ment source et d’une propriété à compléter par une référence vers l’instance de ressource
générée à partir de cet élément source.
Dans un unique bloc impératif, la règle parcourt l’ensemble des propriétés à compléter
concernées par l’élément source passé en paramètre (ligne 18). Chacune de ces propriétés
est alors renseignée par une référence vers l’instance de ressource passée en second pa-
ramètre (ligne 23). Les propriétés ainsi complétées sont finalement retirées de la liste des
propriétés à compléter (ligne 26).
182 Annexe B. Extraits de transformations ATL
Listing B.16: CompletePropertyReferences : résolution des références pour les propriétés (en ATL)
1 -- Rule CompletePropertyReferences
2 --
3 -- Called rule that complete resource instance properties whose
4 -- referenced element was not generated when they are created.
5 --
6 -- That rule is called by the CreateResourceInstance rule.
7 --
8 -- Parameter : A source element and its corresponding generated resource
9 -- instance that is perhaps referenced by incomplete properties.
10 --
11 rule CompletePropertyReferences (
12 source : OclAny,
13 instance : RTEPML!ResourceInstance
14 ) {
15 do {
16 -- for each property that must refer to the instance
17 -- generated from the source element
18 for (property in
19 thisModule.refGetValue(’SetOfPropertyToComplete’)
20 ->select(e | e.first() = source) ) {
21
22 -- resolve the reference with the correponding instance
23 property.last().ref <- instance;
24
25 -- delete the property from the set of property to complete
26 thisModule.delSequence(’SetOfPropertyToComplete’, property);
27 }
28 }
29 }
Remarque : Nous ne détaillerons pas, dans la suite de cette annexe, plus de règles pour
ce qui concerne la gestion des propriétés. La gestion des propriétés que nous venons de pré-
senter dans les trois dernières sous-sections de cette annexe, ne concerne que la génération
d’instances de ressources sans mise à contribution de prototypes de conception. Il convient
donc de préciser que la prise en compte de prototypes de conception nécessite de modifier
d’une part les règles ClonePrototype (page 172) et CreateResourceInstanceFromPrototype
(page 174) dans le respect des algorithmes 4.17 et 4.18 présentés dans le chapitre 4. Mais
également de modifier les structures de mémorisation, leurs accès et les règles que nous
venons de présenter pour s’adapter aux prototypes, à leur hiérarchie d’application et surtout
à la prise en compte des instances issues des prototypes (instances potentiellement mises à
contribution dans toutes les règles qui se réfèrent à des instances de ressources).
1 -- Rule CreateResourceInstance
2 --
3 -- Called rule that generate an application resource instance typed by
4 -- the resource passed to the rule in the second parameter, from the
5 -- source element passed to the rule in the first parameter.
6 --
7 -- This rule is called by XConcept2XResourceInstance rule.
8 --
9 -- Parameters : A source application element and a platform resource.
10 --
11 rule CreateResourceInstance (
12 source : OclAny, -- application element
13 resource : RTEPML!Resource -- platform resource
14 ) {
15 to
16 t : RTEPML!ApplicationResourceInstance (
17 ...
18 type <- resource,
19 call <- Sequence{},
20 ...
21 ),
22 ...
23
24 do {
25 -- memorize correspondance between source element and
26 -- generated instance (useful to locate which instances
27 -- have been already generated, in order to reference them)
28 thisModule.addSequence(’InstancesMemory’, Sequence{source, t});
29 ...
30
31 -- generate call services
32 for ( service in source.getCallServices() ) {
33 -- for each information provided by the source
34 -- element in order to call a service
35
36 if ( not service.get(’concept’)
37 .getService(service.get(’role’))
38 .oclIsUndefined()
39 ) {
40 -- the type of the element that is concerned
41 -- by the service provide it
42
43 t.call.append(
44 thisModule.CreateCallService(
45 service.get(’element’),
46 service.get(’concept’),
47 service.get(’role’)
48 )
49 );
50
51 } else {
52 -- Trace the lack of call service
53 thisModule.TraceLackOfService(source, resource, service);
54 }
55 }
56
57 -- fill in incomplete call service
58 thisModule.CompleteCallServiceReferences(source, t);
59 }
60 }
184 Annexe B. Extraits de transformations ATL
La seconde étape génère les appels de services. Elle parcourt pour cela une séquence
de tuples (élément, concept, rôle ) associés à l’élément source. Cette séquence est retournée
par le helper getCallServices (ligne 32).
Un tuple (élément, concept, rôle ) correspond à un appel au service identifié par un
rôle, adressé à une instance générée à partir d’un élément, conformément à un concept.
Remarque : Les accès aux champs du tuple se font avec l’opération O CL get sur une Map).
Le helper getCallServices ne sera pas détaillé dans cette annexe. Son implantation est
propre à la technologie de modélisation de l’application source. Un exemple d’algorithme
est donné page 109.
Les appels générés sont ceux dont le service appelé est fournit par la ressource qui type
l’instance à laquelle s’adresse le service (condition des lignes 36 à 38).
La création de l’appel de service est déléguée à la règle CreateCallService (ligne 44).
Cette règle, explicitement appelée, prend comme paramètres les différentes informations
associées au service (élément, concept et rôle) que nous venons d’évoquer. Une implantation
de la règle CreateResourceInstanceCallService est présentée dans la sous-section suivante.
L’implantation proposée pour cette seconde phase génère finalement une trace lorsqu’un
service susceptible d’être appelé est ignoré lors du déploiement (ligne 53).
Enfin, la troisième et dernière phase vise à compléter les appels de services incomplets
dont l’une des références concerne l’instance que la règle vient de générer (soit l’instance
à laquelle s’adresse le service, soit une instance passée en paramètre). Cette phase est délé-
guée à la règle CompleteCallServiceReferences (ligne 58). Cette règle ne sera pas détaillée
dans cette annexe. Son implantation s’apparente à celle de la règle CompletePropertyRefe-
rence présentée précédemment (page 181).
Règle CreateCallService
Le listing B.18, page ci-contre, illustre l’implantation d’une règle ATL dédiée à la créa-
tion des appels de services (CallService).
Cette règle, CreateCallService, est mise à contribution pour générer les appels de ser-
vices, lors de la création d’une instance de ressource, dans la règle CreateResourceInstance
de la sous-section précédente.
La règle CreateCallService est une règle explicitement appelée (called rule). Les para-
mètres de cette règle concernent :
– un élément source à l’origine de l’instance à laquelle s’adresse un service ;
– le concept auquel se conforme la ressource qui type cette instance ;
– le rôle du service.
La règle CreateCallService génère un appel (CallService) associé à un service et adressé
à une instance de ressource (ref ). Le service est localisé par le helper getService. Nous ne
détaillerons pas ce helper dans la suite de ce rapport. Son implantation s’apparente à celle
du helper getProperty introduit précédemment dans cette annexe (page 165). L’instance de
ressource à laquelle s’adresse le service est déduite du premier paramètre. Cette déduc-
tion repose sur le helper getInstance que nous avons introduit précédemment (listing B.15,
page 180, ligne 39).
Le helper getInstance localise, au sein de la structure InstancesMemory évoquée dans
la sous-section précédente, l’instance qui a été générée à partir de l’élément source passé en
paramètre. Si cette instance n’a pas encore été générée (i.e. si le couple formé de l’élément
source et de l’instance générée n’est pas présent dans la structure), le helper ne retourne pas
d’instance (OclUndefined).
185
1 -- Rule CreateCallService
2 --
3 -- Called rule that generate a call service.
4 --
5 -- This rule is called by the CreateResourceInstance rule.
6 --
7 -- Parameters : The instance adressed by the service and the service.
8 --
9 rule CreateCallService (
10 element : OclAny,
11 concept : RTEPML!Resource,
12 role : String
13 ) {
14 to
15 t : RTEPML!CallService (
16 ref <- thisModule.getInstance(element),
17 service <- concept.getService(role),
18 parameters <- Sequence{}
19 )
20 do {
21 -- detect service to complete
22 if ( t.ref.oclIsUndefined() ) {
23 thisModule.addSequence(
24 ’SetOfCallServiceToComplete’, Sequence{element, t} );
25 }
26
27 -- fill in parameters with value
28 for ( val in reference.getParameterValues(role) ) {
29 t.parameters.append(
30 thisModule.CreateCallServiceParameter(val, OclUndefined)
31 );
32 }
33
34 --fill in parameters with reference
35 for ( ref in reference.getParameterReferences(role) ) {
36 t.parameters.append(
37 thisModule.CreateCallServiceParameter(OclUndefind, ref)
38 );
39 }
40 }
41 }
Dans chacune de ces phases, la création des appels de services est déléguée à la règle
CreateCallServiceParameter. Cette règle, explicitement appelée, prend comme paramètre
soit une valeur littérale, soit une référence. Nous ne la détaillerons pas dans la suite de cette
annexe. Son implantation s’apparente à celle de la règle CreateResourceInstanceProperty
présentée précédemment (page 180).
Listing B.19: Template de génération d’une règle ATL de déploiement (version simple)
L’exemple proposé dans le listing B.19 ne s’appuie pas sur un langage de template
précis, mais reprend une syntaxe proche de langages existants (tel qu’Acceleo [79]).
Le principe d’un template est de fournir un code source dont une partie sera complétée
soit par un simple remplacement, soit par une construction plus complexe guidée par des
structures de contrôles. La génération d’un code source ainsi complété et construit émane
d’un moteur de template . Ce moteur prend en entrée le template et les informations néces-
saires à la complétion de celui-ci. Ces informations peuvent provenir de différentes sources,
tels que des bases de données ou des modèles.
Le template présenté dans le listing B.19 est censé prendre sa source d’information dans
un modèle de déploiement conforme au métamodèle que nous avons introduit dans la sous-
section 4.4.3 du chapitre 4, page 114 (figure 4.13). Un exemple de modèle associé à ce type
de template est disponible dans le listing 4.2 de cette même section, page 115.
Le template proposé prend comme paramètres les « références » des concepts appli-
catif et exécutif mis en correspondance (ces références sont respectivement conformes à
ApplicationConcept et à RTEPMLConcept dans le métamodèle de déploiement).
Les parties du template à remplacer ou à construire se distinguent par des balises (en
gras dans le listing). La balise de la ligne 20 se destine par exemple à un remplacement.
Alors que celle de la ligne 23 décrit un parcours sur un ensemble d’éléments du modèle de
déploiement. Remarque : La notion de paramètre associé à un critère est introduite dans le
métamodèle de déploiement présenté dans la sous-section 4.5.3, page 120 (figure 4.17).
Enfin, le code du bloc impératif (lignes 44 à 46) est identique à celui de la règle XCon-
cept2XResourceInstance présentée dans le listing B.9, page 172. Ce code est générique à
tout concept impliqué par la règle. Pour des raisons didactiques nous ne l’avons donc pas
retranscrit dans cette exemple qui se concentre sur les parties qu’influence le template .
L’utilisation de ce template dans un template de génération de transformation est pré-
sentée dans la suite de cette section (page 189).
Template GenerateTransformation
Le listing B.21 illustre le principe d’une génération de transformation ATL de déploie-
ment. Le template de ce listing fait appel au template de génération de règles présenté dans
le listing B.20, de la sous-section précédente.
Cette annexe propose un aperçu non exhaustif des technologies qui offrent des solu-
tions de descriptions explicites des plates-formes d’exécution. Cet aperçu vise à recenser
les potentielles de modélisation des plates-formes de notre domaine d’intérêt (les systèmes
embarqués temps réel), au travers des métamodèles associés à ces technologies et des utili-
sations qui en sont faites.
Cette annexe s’appuie sur des résultats énoncés dans l’état de l’art d’une étude an-
térieure [114]. Elle aborde, dans deux parties distinctes, les technologies identifiées dans
chacune des approches U ML et D SML.
C.0.1 Approche U ML
P ML (Platform Modeling Language) [107] est un métamodèle dédié à la description
de plate-forme au sens large (telles que des plates-formes d’exécution ou d’analyse). Ce
métamodèle définit les concepts de composants (ComponentModel) et de règles de trans-
formation entre les composants des plates-formes sources et cibles (Pattern, Match). Il a
été implanté sous la forme d’une extension lourde d’U ML (P ML-U ML, dans la version 1.4
d’U ML) 1 et intégré dans G ME. P ML-U ML permet, entre autre, de modéliser les ressources
et les signatures des services qu’offre la plate-forme ainsi que leurs contraintes d’utilisation.
Dans cette approche, la modélisation des plates-formes d’exécution peut être implicite
ou explicite. Pour cela, des transformations de modèles, en G ReaT (Graph Rewriting and
Transformation) [54], sont disponibles pour passer d’un métamodèle à un modèle conforme
à P ML. L’outillage associé à P ML, et intégré dans G ME, offre également la génération auto-
matique d’une partie des règles de portage d’une application d’une plate-forme à une autre.
Le mécanisme de génération automatique s’appuie cependant sur une approche de mo-
délisation dans laquelle les considérations ne sont pas clairement séparées. La description
des règles de transformation se confond avec les descriptions des ressources et des services
des plates-formes d’exécution.
Le profil U ML-M ARTE (U ML profile for Modeling and Analysis of Real Time and
Enbedded systems) [89], standardisé par l’O MG, est dédié à la modélisation et à l’ana-
lyse de systèmes embarqués temps réel. U ML-M ARTE concerne les applications logicielles,
les supports d’exécution (matériels et logiciels) et les propriétés fonctionnelles et non-
fonctionnelles des systèmes.
Le package S RM (Software Resource Modeling) propose en particulier des artefacts
de modélisation des plates-formes d’exécution logicielles pour le domaine du temps réel
et de l’embarqué. Pour cela, S RM spécialise pour son domaine d’application les concepts
1
L’utilisation d’une extension lourde d’U ML pourrait s’apparenter à une approche D SML, en opposition à
l’approche par profil U ML.
194 Annexe C. Technologies de modélisation explicite des plates-formes d’exécution
T HINK (THink Is Not a Kernel) [42] est une implantation d’un modèle de compo-
sants de type Fractal [39] pour le développement de systèmes d’exploitation embarqués.
T HINK se compose d’outils de gestion de composants et d’une bibliothèque de composants
(KORTEX) qui implante une abstraction des couches matérielles et les principaux services
d’un système d’exploitation embarqué.
Au travers de KORTEX, T HINK permet de concevoir des plates-formes d’exécution em-
barquée par assemblage de composants. T HINK montre ainsi la capacité de Fractal à décrire
195
Metropolis [94] est une méthodologie de conception basée sur les modèles de plates-
formes (ou Platform Based Design [97]). Le métamodèle de Metropolis (Metropolis Meta
Model [75]) définit des concepts d’un haut niveau d’abstraction pour la modélisation de
systèmes hétérogènes. Cette modélisation se fonde sur les notions d’activités concurrentes
(Process) et de communication entre les activités (Media) pour décrire des plates-formes
d’exécution (matérielles et logicielles) et les applications qui s’y destinent. Le déploiement
d’une application sur une plate-forme se concrétise par des relations entre leurs composants
(Mapping).
L’outil de modélisation Metropolis intègre, en complément, des langages formels, tels
que LTL (Linear Temporal Logic) ou L OC (Logic Of Constraints), pour la vérification de
propriétés fonctionnelles et non-fonctionnelles des systèmes modélisés.
La modélisation des systèmes embarqués temps réel est encouragée par l’utilisation
conjointe de langages de modélisation et de langages de logique temporelle. Cette approche
offre, de plus, les artefacts nécessaires à la modélisation explicite de plates-formes d’exé-
cution logicielles de tous domaines. Néanmoins, la généricité du métamodèle de cette ap-
proche ne facilite pas la description de plates-formes dédiées à un domaine métier particu-
lier [26]. Le haut niveau d’abstraction de ses concepts n’identifie, par exemple, aucun aspect
métier du domaine du temps réel et de l’embarqué.
C.0.3 Synthèse
Le tableau C.1, de la présente page, présente une évaluation synthétique de chacune
des technologies évoquées. Cette évaluation porte sur leur capacité d’utilisation dans le do-
maine du temps réel et de l’embarqué au travers, notamment, du nombre et de la précision
des concepts qu’offrent ces technologies pour ce domaine. Les résultats affichés sont prin-
cipalement issus d’une analyse faite lors de travaux précédents cette étude [114].
Les composantes du système que visent les technologies sont également mentionnées.
Ces composantes concernent l’application et les plates-formes d’exécution logicielles et
matérielles. L’utilisation envisagée de chacune des technologies est finalement abordée.
Emb.T.R ++ ++ + ++ ++ − + ++
Concepts ++ + − +(1) + − − +++
Modélisation
P.mat. ✓ ✓ ✓ ✓ ✓
P.log. ✓ ✓ ✓(1) ✓(2) ✓ ✓ ✓
Appl. ✓ ✓ ✓ ✓ ✓ ✓ ✓
Utilisation (prévue)
Emb.T.R : peu adapté (−), conseillé (+) ou conçu (++) pour le temps réel embarqué ;
Concepts : génériques (−), adaptés (+) ou spécialisés (++, + + +) pour le domaine ;
Modélisation : Plate-forme matérielle (P.mat.), logicielle (P.log.), application (Appl.) ;
Parmi les D SML, le langage A ADL offre un ensemble assez complet de concepts du
domaine. Ce langage se focalise toutefois sur la description des supports matérielles et des
applications. Bien que les concepts relatifs aux applications soient étroitement liés avec ceux
des plates-formes logicielles, les artefacts de modélisation proposés par A ADL limitent la
description de ces plates-formes.
Parmi les technologies évaluées, D SML et U ML confondus, le profil U ML-M ARTE offre
actuellement l’ensemble le plus complet de concepts métiers pour modéliser des plate-
formes d’exécution temps réel embarquées. La conception de ce profil a de plus été conduite
sur la base d’un modèle de domaine qui spécifie ces concepts. Le profil U ML-M ARTE est
197
une implantation de ce modèle de domaine. Une implantation alternative dans un D SML est
également envisageable. Le langage RTEPML présenté dans ce rapport est par exemple une
implantation, dans un D SML, du package S RM d’U ML-M ARTE.
Abréviations
1.1 Principe de mise en œuvre d’une transformation de modèle dans l’I DM. . . . . . . . . . 10
1.2 Considération progressive des plates-formes dans le M DA. . . . . . . . . . . . . . . . 12
4.1 Approche proposée pour le déploiement d’une application sur une plate-forme d’exécution. 79
4.2 Extrait du D SML RTEPML : intégration d’une application sur la plate-forme. . . . . . . . 79
4.3 Déploiement d’une application de robotique sur une plate-forme O SEK /V DX. . . . . . . 80
4.4 Principe de déploiement d’une application via RTEPML. . . . . . . . . . . . . . . . . 84
4.5 Relations identifiées entre les concepts applicatif et exécutif. . . . . . . . . . . . . . . 87
4.6 Mise à disposition, par une plate-forme, de ressources conformes à des concepts de RTEPML. 90
4.7 Mise à disposition, par une plate-forme, de ressources avec ou sans prototype de conception. 93
4.8 Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (prototype). . 97
4.9 Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (propriétés). . 105
4.10 Déploiement d’une application de robotique sur une plate-forme O SEK /V DX (avec services). 109
4.11 Composition d’une transformation de déploiement basée sur RTEPML. . . . . . . . . . . 110
4.12 Organisation d’une transformation de déploiement basée sur RTEPML. . . . . . . . . . . 112
4.13 Exemple de métamodèle de déploiement (simple) . . . . . . . . . . . . . . . . . . . 114
4.14 Exemple de métamodèle de déploiement (simple, avec trace) . . . . . . . . . . . . . . 116
4.15 Organisation d’une transformation de déploiement basée sur RTEPML (génération de règles). 116
4.16 Choix de déploiement conceptuels et pratiques. . . . . . . . . . . . . . . . . . . . . 118
4.17 Exemple de métamodèle de déploiement (simple, avec décisions) . . . . . . . . . . . . 121
4.18 Organisation d’une transformation de déploiement basée sur RTEPML (choix de déploiement). 123
4.19 Organisation d’un processus de déploiement d’application basé sur RTEPML. . . . . . . . 127
2.1 Principe d’un portage générique (basé sur le profilage U ML) [115] . . . . . . 34
2.2 Principe d’une génération de transformation de portage . . . . . . . . . . . . 37
4.1 Principe d’une transformation de déploiement . . . . . . . . . . . . . . . . . 81
4.2 Règle de correspondance (ruleConcept2ResourceInstance ) . . . . . . . . . . 82
4.3 Localisation d’une ressource (getResource ) . . . . . . . . . . . . . . . . . . 83
4.4 Localisation d’une propriété dans la plate-forme (getProperty ) . . . . . . . . 83
4.5 Principe d’une transformation de déploiement (➤concept/critère) . . . . . . . . 86
4.6 Règle de correspondance (ruleConcept2ResourceInstance ) (➤concept/critère) . 86
4.7 Localisation d’une ressource (getResource ) (➤concept/critère) . . . . . . . . . 86
4.8 Principe d’une transformation de déploiement (➤relations 1-0) . . . . . . . . . 88
4.9 Règle de correspondance (ruleConcept2MultiResourceInstances ) . . . . . . 89
4.10 Principe d’une transformation de déploiement (➤disponibilité) . . . . . . . . . 92
4.11 Règle de correspondance (ruleConcept2MultiResourceInstances ) (➤disponibilité) 92
4.12 Règle de correspondance (ruleConcept2MultiResourceInstances ) (➤prototypes) 94
4.13 Règle d’application d’un prototype (ruleClonePrototype ) . . . . . . . . . . . 94
4.14 Génération d’une instance (ruleCreateResourceInstanceFromPrototype ) . . . 95
4.15 Génération des associations (ruleCreateAssociationFromPrototype ) . . . . . 96
4.16 Sans prototype (ruleConcept2ResourceInstance ) (➤propriétés) . . . . . . . . . 99
4.17 Avec prototype (ruleCreateResourceInstanceFromPrototype ) (➤propriétés) . . 100
4.18 Règle d’application d’un prototype (ruleClonePrototype ) (➤propriétés) . . . . 101
4.19 Génération des propriétés (ruleCreatePropertiesFromPrototype ) . . . . . . . 102
4.20 Renseignement des propriétés (avec ou sans prototype) (➤référence) . . . . . . 104
4.21 Sans prototype (ruleConcept2ResourceInstance ) (➤services) . . . . . . . . . . 107
4.22 Exemple d’une déclaration d’appels de services (getCallServices ) . . . . . . 109
Listings
[1] Alfred V. Aho, Brian W. Kernighan, and Peter Weinberger. The AWK programming
language. Addison-Wesley, 1988.
[2] Airlines Electronic Engineering Committee. Avionics Application Software Standard
Interface, ARINC Specification 653-1, October 2003. Aeronautical radio INC., An-
napolis, Maryland, USA.
[3] Joäo Paulo Andrade Almeida. Model-Driven Design of Distributed Applications.
Computer science, Telematica Instituut Fundamental Research Series, Enschede, The
Netherlands„ 2006.
[4] Tero Arpinen, Mikko Setälä, Erno Salminen, Marko Hännikäinen, and Timo D.
Hämäläinen. Modeling embedded software platform with a U ML profile. In Fo-
rum on specification and Design Languages, FDL’07, Barcelona, Spain, September
2007.
[5] Colin Atkinson and Thomas Kühne. A generalized notion of platforms for model-
driven development. pages 119–136. 2005.
[6] ATLAS group. ATL : ATLAS Transformation Language, ATL User Manual, version
0.7. LINA & INRIA, Nantes, France, February 2006.
[7] AUTomotive Open Source ARchitecture. AUTOSAR, release 3.1, 2008.
http ://www.autosar.org.
[8] AUTomotive Open Source ARchitecture. AUTOSAR, Specification of Operating Sys-
tem, v3.1.1, February 2009. http ://www.autosar.org/.
[9] Jean-Philippe Babau. Formalisation et structuration des architectures opération-
nelles pour les systèmes embarqués temps réel. Thèse d’Habilitation à Diriger les
Recherches, Institut National des Sciences Appliquées de Lyon, université Claude
Bernard de Lyon - Lyon 1, Décembre 2005.
[10] Abdessamad Belangour, Jean Bézivin, and Mounia Fredj. The design decision as-
sistant tool : A contribution to the M DA approach. In Actes des 1ère Journées sur
l’Ingénierie Dirirgée par les Modèles, IDM05, Paris, France, juin 2005.
[11] Jean Bézivin. La transformation de modèles. In École d’Été d’Informatique CEA
EDF INRIA cours numéro 6, Juin 2003.
[12] Jean Bézivin, Mireille Blay, Mokrane Bouzhegoub, Jacky Estublier, Jean-Marie
Favre, Sébastien Gérard, and Jean-Marc Jézéquel. Rapport de Synthèse de l’A S
C NRS sur le M DA. Novembre 2004.
[13] Jean Bézivin, Sébastion Gérard, Pierre-Alain Muller, and Laurent Rioux. M DA Com-
ponents : Challenges and Opportunities. In Metamodelling for MDA, First Interna-
tional Workshop, York, UK, November 2003.
[14] Jean Bézivin and Ivan Kurtev. Model-based technology integration with the techni-
cal space concept. In In Proceedings of the Metainformatics Symposium. Springer-
Verlag, 2005.
212 Bibliographie
[15] Mireille Blay-Fornarino and Paul Franchi. Espace technologique langages et I DM.
Technical report, Novembre 2004.
[16] A. W. Brown, D. J. Carney, E. J. Morris, D. B. Smith, and P. F. Zarrella. Principles of
CASE tool integration. Oxford University Press, Inc., New York, NY, USA, 1994.
[17] James Bruck and Kenn Hussey. Customizing U ML : Wich technique is right for you ?
Technical report, International Business Machines Corporation, 2007.
[18] Matthias Brun. Utilisation des techniques développées dans le cadre de l’ingénierie
dirigée par les modèles pour la réalisation d’un outil de génération de code conforme
O SEK/V DX á partir d’une description A ADL, Septembre 2006. Rapport de Master.
[19] Matthias Brun, Jérôme Delatour, Yvon Trinquet, Frédérique Thomas, and Sébastien
Gérard. Etude comparative pour la modélisation de plates-formes d’exécution, 2010.
[20] Ken Butts, Dave Bostic, Alongkrit Chutinan, Jeffrey Cook, Bill Milam, and Yanxin
Wang. Usage scenarios for an automated model compiler. In EMSOFT ’01 : Pro-
ceedings of the First International Workshop on Embedded Software, pages 66–79,
London, UK, 2001. Springer-Verlag.
[21] Paul Caspi, Grégoire Hamon, and Marc Pouzet. Systèmes Temps-réel : Techniques
de Description et de Vérification – Théorie et Outils, volume 1, chapter Lucid Syn-
chrone, un langage de programmation des systèmes réactifs, pages 217–260. Hermes,
2006.
[22] Rong Chen, Marco Sgroi, Grant Martin, Luciano Lavagno, Alberto Sangiovanni-
Vincentelli, and Jan Rabaey. U ML and Platform-Based Design, volume U ML for
Real : Design of Embedded Real-Time Systems, chapter 5. Kluwer Academic Publi-
shers, May 2003.
[23] William R. Cook, Walter Hill, and Peter S. Canning. Inheritance is not subtyping. In
POPL ’90 : Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Prin-
ciples of programming languages, pages 125–135, New York, NY, USA, 1990. ACM
Press.
[24] Francis Cottet and Anne-Marie Déplanche. Encylcopédie de l’informatique et des
systèmes d’information, chapter Ordonnancement temps réel et ordonnançabilité
d’une application, pages 740–760. Vuibert, 2006.
[25] K. Czarnecki and U.W. Eisenecker. Generative programming : methods, tools, and
applications. ACM Press/Addison-Wesley Publishing Co. New York, NY, USA,
2000.
[26] Abhijit Davare, Douglas Densmore, Trevor Meyerowitz, Alessandro Pinto, Alberto
Sangiovanni-Vincentelli, Guang Yang, Haibo Zeng, and Qi Zhu. A next-generation
design framework for platform-based design. In Conference on Using Hardware
Design and Verification Languages (DVCon), February 2007.
[27] Vincent. David, Christophe. Aussaguès, Stéphane. Louise, Philippe Hilsenkopf, Ber-
trand. Ortolo, and Christophe. Hessler. The OASIS based qualified display system.
In Lecture Notes in Computer Science, 17th International Conf. on Computer Sa-
fety, Reliability and Security Fourth American Nuclear Society International Topical
Meeting on Nuclear Plant Instrumentation, Controls and Human-Machine Interface
Technologies (NPIC&HMIT 2004), Columbus, Ohio. September, 2004., September
2004.
[28] James Davis. GME : the Generic Modeling Environment. In OOPSLA ’03 : Compa-
nion of the 18th annual ACM SIGPLAN conference on Object-oriented programming,
Bibliographie 213
systems, languages, and applications, pages 82–83, New York, NY, USA, 2003.
ACM.
[29] Julien DeAntoni. SAIA : un style architectural pour assurer l’indépendance vis-
à-vis d’entrées/sorties soumises à des contraintes temporelles. PhD thesis, Institut
National des Sciences Appliquées de Lyon, France, Octobre 2007.
[30] Julien DeAntoni and Jean-Philippe Babau. A mda-based approach for real time em-
bedded systems simulation. In DS-RT ’05 : Proceedings of the 9th IEEE Internatio-
nal Symposium on Distributed Simulation and Real-Time Applications, pages 257–
264, Washington, DC, USA, 2005. IEEE Computer Society.
[31] Jérôme Delatour. Contribution á la spécification des systèmes temps réel : l’approche
U ML/ P NO. PhD thesis, Université Paul Sabatier, Toulouse, France, Septembre 2003.
[32] Jérôme Delatour, Raphaël Marvie, and Guillaume Savaton. Workshop on Metamodel
Pattern, MP2006. In 2èmes Journées sur l’Ingénierie Dirigée par les Modèles, Lille,
Juin 2006.
[33] Jérôme Delatour, Frédéric Thomas, Guillaume Savaton, and Sébastien Faucou. Mo-
dèle de plate-forme pour l’embarqué : première expérimentation sur les noyaux
temps réel. In Actes des 1ère Journées sur l’Ingénierie Dirirgée par les Modèles,
IDM05, pages 209–216, Paris, France, juin 2005.
[34] M. Didonet Del Fabro, J. Bézivin, F. Jouault, E. Breton, and G. Gueltas. A MW : a
generic model weaver. In In proceedings of 1ères Journées sur l’Ingénierie Dirigée
par les Modèles, pages 105–114, Paris, France, 2005.
[35] Eclipse. Eclipse Modeling Project. http ://www.eclipse.org/modeling/.
[36] Eclispe Modeling Framework. E MF Core. http ://www.eclipse.org/modeling/emf/.
[37] Sven Efftinge, Peter Friese, Arno Haase, Clemens Kadura, Bernd Kolb, Dieter Mo-
roff, Karsten Thoms, and Markus Völter. openArchitectureWare User Guide, version
4.2, September 2007. http ://www.openarchitectureware.org.
[38] Jean-Pierre Elloy. Le temps réel. Rapport établi par le Groupe de réflexion du CNRS-
SPI, TSI 7(5), Hermes, 1988.
[39] Jean-Bernard Stefani Eric Bruneton, Thierry Coupaye. The Fractal Component Mo-
del, version 2.0. Technical report, September 2003. http ://fractal.ow2.org/.
[40] Huscar D. Espinoza Ortiz. An Integrated Model-Driven Framwork for Specifying and
Analyzing Non-Functional Properties of Real-Time Systems. PhD thesis, Université
d’Evry, Sarclay, France, Septembre 2007.
[41] Pierre Farail and Patrick Gaufillet. T OPCASED : un environnement de développement
open source pour les systèmes embarqués. In Journée de travail N EPTUNE, numéro
2, Paris , France, pages 16–20. Génie logiciel, GL & IS, Meudon, France, Mai 2005.
[42] Jean-Philippe Fassino. T HINK : vers une architecture de systèmes flexibles. PhD
thesis, Ecole Nationale Supérieure des télécommunications, Paris, France, Décembre
2001.
[43] Jean-Marie Favre. Towards a basic theory to model model driven engineering. In In
Workshop on Software Model Engineering, WISME 2004, joint event with UML2004,
Lisbon, Portugal, October 2004.
[44] Jean-Marie Favre and Jacky Estublier. Concepts et relations de base pour l’ingénierie
dirigée par les modèles. Technical report, Novembre 2004.
[45] Pierre Ficheux. Linux Embarqué. édition Eyrolles, 2002.
214 Bibliographie
[46] Franck Fleurey. Langage et méthode pour une ingénierie des modèles fiable. PhD
thesis, Université de Rennes 1, octobre 2006.
[47] L. Fuentes-Fernández and A. Vallecillo-Moreno. An introduction to uml profiles.
U PGRADE, European Journal for the Informatics Professional, 5(2) :5–13, April
2004.
[48] Erich Gamma, Richard Helm, Ralf Johnson, and John Vlissides. Design patterns :
Elements of reusable object-oriented software. Addison Wesley, Boston, MA, 1994.
[49] Sébastien Gérard and Jean-Philippe Babau. Model Driven Schedulability Analysis,
chapter Model Driven Engineering for Distributed Real-Time Embedded Systems,
pages 197–204. Hermes, 2005.
[50] A. Gokhale, B. Natarajan, D. C. Schmidt, A. Nechypurenko, J. Gray, N. Wang,
S. Neema, T. Bapty, and J. Parsons. CoS MIC : An M DA generative tool for distributed
real-time and embdedded component middleware and applications. In In Proceedings
of the OOPSLA 2002 Workshop on Generative Techniques in the Context of Model
Driven Architecture. ACM, 2002.
[51] J. Greenfield, K. Short, S. Cook, and S. Kent. Software Factories : Assembling Ap-
plications with Patterns, Models, Frameworks, and Tools. Wiley & Sons, 2004.
[52] Cécile Hardebolle. Composition de modèles pour la modélisation multi-paradigme
du comportement des systèmes. PhD thesis, Université Paris-Sud XI, Paris, France,
Novembre 2008.
[53] Institute for Software Integrated System (ISIS). GME : Generic Modeling Environ-
ment, 2008. http ://www.isis.vanderbilt.edu/projects/gme/.
[54] Institute for Software Integrated Systems. Graph Rewriting and Transformation
(G ReaT). http ://www.isis.vanderbilt.edu/tools/GReaT.
[55] Frédéric Jouault. Contribution à l’étude des langages de transformation de modèles.
PhD thesis, Université de Nantes, Nantes, France, 2006.
[56] Frédéric Jouault and Jean Bézivin. KM 3 : a D SL for Metamodel Specification. In Pro-
ceedings of 8th IFIP International Conference on Formal Methods for Open Object-
Based Distributed Systems, LNCS 4037, pages 171–185, Bologna, Italy, 2006.
[57] Frédéric Jouault, Jean Bézivin, and Ivan Kurtev. T CS : a D SL for the specification
of textual concrete sysntaxes in model engineering. In In GPCE’06 : Proceedings of
the 5th international conference on Generative programming and component engi-
neering, pages 249–254, New York, NY, USA, 2006. ACM.
[58] Anneke Kleppe, Jos Warmer, and Wim Bast. MDA Explained : The Model Driven
Architecture–Practice and Promise. Addison-Wesley Professional, April 2003.
[59] Herman Kopetz. Real-Time Systems, Design Principles for Distributed Embedded
Applications. Kluwer Academic Publishers, 1997.
[60] Hermann Kopetz. The complexity challenge in embedded system design. In 11th
IEEE International Symposium on Object-Oriented Real-Time Distributed Compu-
ting (ISORC 2008), pages 3–12, Orlando, Florida, USA, May 2008. IEEE Computer
Society.
[61] Hermann Kopetz, Andreas Damm, Christian Koza, Marco Mulazzani, Wolfgang
Schwabl, Christoph Senft, and Ralph Zainlinger. Distributed fault-tolerant real-time
systems : The M ARS approach. IEEE Micro, 9(1) :25–40, 1989.
[62] Petri Kukkala, Marko Hännikäinen, and Timo D. Hämäläinen. Design and imple-
mentation of a W LAN terminal using U ML 2.0 based design flow. In SAMOS, pages
404–413, 2005.
Bibliographie 215
[63] Petri Kukkala, Jouni Riihimâki, Marko Hännikäinen, Timo D.Hämäläinen, and Klaus
Kronlöf. U ML 2.0 profile for embedded system design. In Design, Automation and
Test in Europe (DATE’05), Vol.2, pages 710–715., Los Alamitos, CA, USA, March
2005. IEEE Computer Society.
[64] I. Kurtev, J. Bézivin, and M. Akşit. Technological spaces : An initial appraisal. In
International Conference on Cooperative Information Systems (CoopIS), DOA’2002
Federated Conferences, Industrial Track, Irvine, USA, pages 1–6, October 2002.
[65] Laboratoire d’Informatique de Nantes Atlantique (L INA). The A MMA Home Page.
http ://atlanmod.emn.fr/.
[66] François Laburthe. C HOCO : implementing a cp kernel. In In : Proceedings of TRICS
2000, pages 71–85, Singapore, 2000.
[67] J.-C. Laprie, J. Arlat, J.-P. Blanquart, A. Costes, Y. Crouzet, Y. Deswarte, J.-C. Fabre,
H. Guillermain, M. Kaaniche, K. Kanoun, C. Mazet, D. Powell, C. Rabejac, and
P. Thevenodothers. Guide de la sûreté de fonctionnement. Cépaduès Editions, 1995.
[68] A. Ledeczi, M. Maroti, A. Bakay, G. Karsai, Garrett J., C. Thomason, G. Nordstrom,
Sprinkle J., and P Volgyesi. The generic modeling environment. In In Workshop on
Intelligent Signal Processing, Budapest, Hungary, May 2001.
[69] Edward A. Lee. Overview of the Ptolemy project. Technical Report UCB/ERL
M03/25, EECS Department, University of California, Berkeley, July 2003.
[70] Edward A. Lee and Alberto Sangiovanni-Vincentelli. A framework for comparing
models of computation. IEEE Transactions on Computer-Aided Design of Integrated
Circuits and Systems, 17 :1217–1229, 1998.
[71] C.-L. Liu and James W. Layland. Scheduling algorithms for multiprogramming in a
hard-real-time environment. J. ACM, 20(1) :46–61, 1973.
[72] Frédérique Loiret. Tinap : Modèle et infrastructure d’exécution orienté composant
pour applications multi-tâches á contraintes temps réel souples et embarquées. PhD
thesis, Université des Sciences et Technologies de Lille, Lille, France, Mai 2008.
[73] Raphaël Marvie, Laurence Duchien, and Mireille Blay-Fornarino. Les plates-formes
d’exécution et l’I DM, chapter 4, pages 71–86. Number ISBN : 2-7462-1213-7.
Hermes, January 2006.
[74] MetaCase. MetaEdit+ metaCASE tool. http ://www.metacase.com.
[75] Metropolis Project Team. The Metropolis meta model, version 0.4. Technical report.
UCB/ERL M04/38.
[76] Marvin L. Minsky. Semantics Information Processing, chapter Matter, Mind and
Models, pages 227–270. MIT Press, 1968.
[77] S. L. Montgomery. AD/Cycle : I BM’s Framework for Application Development and
Case. Van Nostrand Reinhold, 1991.
[78] Pierre-Alain Muller, Frédéric Fondement, Franck Fleurey, Michel Hassenforder,
Rémi Schnekenburger, Sébastien Gérard, and Jean-Marc Jézéquel. Model-driven
analysis and synthesis of textual concrete syntax. Software and Systems Modeling,
7(4) :423–441, October 2008.
[79] Jonathan Musset, Etienne Juliot, and Stéphane Lacrampe. Acceleo 2.2 : guide utili-
sateur, Avril 2008. Obeo, http ://www.acceleo.org.
[80] Sandeep Neema. Design space representation and management for model-based em-
bedded system synthesis, 2001.
216 Bibliographie
[81] Nicholas Nethercote, Peter J. Stuckey, Ralph Becket, Sebastian Brand, Gregory J.
Duck, and Guido Tack. Minizinc : Towards a standard cp modelling language. In
In : Proc. of 13th International Conference on Principles and Practice of Constraint
Programming, pages 529–543. Springer, 2007.
[82] nxtO SEK. NXT O SEK Operating System, version 2.10, May 2009. http ://lejos-
osek.sourceforge.net/.
[83] Obeo. Acceleo Guide Utilisateur, version 2.6, 2009. http ://www.acceleo.org/.
[84] Object Management Group (O MG). Model Driven Architecture (M DA) Guide, ver-
sion 1.0.1, March 2001. http ://www.omg.org/mda/.
[85] Object Management Group (O MG). Response to the O MG R FP for Schedulability,
Performance and Time, June 2001. O MG Document ad/2001-06-14.
[86] Object Management Group (O MG). Meta Object Facility (M OF) Core Specification,
version 2.0, January 2006. http ://www.omg.org/mof/.
[87] Object Management Group (O MG). C ORBA Component Model, version 4.0,
April 2006. http ://www.omg.org/technology/documents/formal/components.htm,
formal/2006-04-01.
[88] Object Management Group (O MG). M OF 2.0 X MI Mapping Specification, version
2.1.1, December 2007. http ://www.omg.org/technology/documents/formal/xmi.htm.
[89] Object Management Group (O MG). U ML Profile for Modeling and Analysis of
Real Time and Embbeded systems (M ARTE), second revision submission, June 2007.
http ://www.omg.org/marte/.
[90] Object Management Group (O MG). Unified Modeling Language (U ML) : Super-
structure, version 2.1.2, November 2007. http ://www.omg.org/mda/.
[91] Object Management Group (O MG). Meta Object Facility (M OF)
Query/View/Transformation Specification, version 1.0, April 2008.
http ://www.omg.org/spec/QVT/1.0/.
[92] OSEK/VDX Group. O SEK /V DX System Generation O IL : O SEK Implementation
Language, version 2.5, July 2004. http ://www.osek-vdx.org/.
[93] OSEK/VDX Group. O SEK /V DX Operating System Specification, version 2.2.3, Fe-
bruary 2005. http ://www.osek-vdx.org/.
[94] A. Pinto. Metropolis design guidelines. Technical report, University of California,
Berkeley, USA, November 2004.
[95] T. Quinot. Conception et réalisation d’un intergiciel schizophrène pour la mise en
oeuvre de systèmes répartis interopérables. PhD thesis, Ecole Nationale Supérieure
des télécommunications, Paris, France, Mars 2003.
[96] Alberto Sangiovanni-Vincentelli, Luca Carloni, Fernando De Bernardinis, and Marco
Sgroi. Benefits and challenges for platform-based design. In DAC ’04 : Proceedings
of the 41st annual conference on Design automation, pages 409–414. ACM Press,
May 2004.
[97] Alberto Sangiovanni-Vincentelli and Grant Martin. Platform-based design and soft-
ware design methodology for embedded systems. IEEE Des. Test, 18(6) :23–33,
2001.
[98] Bran Selic. A generic framework for modeling resources with U ML. Computer,
33(6) :64–69, 2000.
Bibliographie 217
[99] Bran Selic. On software platforms, their modeling with U ML 2, and platform-
independent design. In ISORC ’05 : Proceedings of the Eighth IEEE Internatio-
nal Symposium on Object-Oriented Real-Time Distributed Computing (ISORC’05),
pages 15–21, Washington, DC, USA, 2005. IEEE Computer Society.
[100] Françoise Simonot-Lion and Yvon Trinquet. Encylcopédie de l’informatique et des
systèmes d’information, chapter Exemple de systèmes temps réel et choix d’implé-
mentation, pages 723–732. Vuibert, 2006.
[101] Frank Singhoff, Alain Plantec, Pierre Dissaux, and Jérôme Legrand. Investigating the
usability of real-time scheduling theory with the cheddar project. Real-Time Syst.,
43(3) :259–295, 2009.
[102] Smart-(Q VT). Smart-(Q VT) manual, 2007. http ://smartqvt.elibel.tm.fr.
[103] Society of Automotive Engineer (S AE). Architecture Analysis & Design Language
(A ADL) AS5506, version 1.0, 2004.
[104] Software Engineering Institute (S EI). O SATE Open-Source A ADL Tool Environment,
version 2.0, 2009. http ://www.aadl.info/aadl/currentsite/tool/osate.html.
[105] Peter J. Stuckey, Maria J. García de la Banda, Michael J. Maher, Kim Marriott,
John K. Slaney, Zoltan Somogyi, Mark Wallace, and Toby Walsh. The g12 pro-
ject : Mapping solver independent models to efficient solutions. In CP, pages 13–16,
2005.
[106] Syntec Informatique, RNT Logiciel. Livre Blanc des premières Assises Françaises
du Logiciel Embarqué. Number 6. Collection ThémaTIC, Mars 2007.
[107] Tivadar Szemethy. Domain-specific models, model analysis, model transformation.
PhD thesis, Vanderbilt University, Nashville, Tennessee, USA, May 2006.
[108] Janos Sztipanovits and Gabor Karsai. Model-integrated computing. Computer,
30(4) :110–111, 1997.
[109] S. Taha, A. Radermacher, S. Gérard, and J-L. Dekeyzer. An open framework for
hardware detailed modeling. In IEEE proceedings SIES’2007, number 1-4244-0840-
7, pages 118–125, Lisbon, Portugal, July 2007. IEEE.
[110] Andrew S. Tanenbaum. Structured Computer Organization, 5th edition. Prentice-
Hall, Inc., Upper Saddle River, NJ, USA, 2005.
[111] Andrew S. Tanenbaum. Modern Operating Systems, 3rd edition. Prentice Hall Press,
Upper Saddle River, NJ, USA, 2007.
[112] The MathWorks. Real-Time Workshop User’s Guide. The MathWorks Inc., Natick,
MA, USA, September 2007.
[113] The MathWorks. Using Simulink. The MathWorks Inc., Natick, MA, USA, Septem-
ber 2007.
[114] Frédéric Thomas. Contribution à la prise en compte des plates-formes logicielles
d’exécution dans une ingénierie générative dirigée par les modéles. PhD thesis,
Université d’Evry, Sarclay, France, Novembre 2008.
[115] Frédéric Thomas, Jérôme Delatour, François Terrier, Matthias Brun, and Sébastien
Gérard. Contribution á la modélisation explicite des plates-formes d’exécution pour
l’I DM. L’Objet, 13(4) :9–32, 2007.
[116] Yvon Trinquet. Encylcopédie de l’informatique et des systèmes d’information, chap-
ter Systèmes temps réel - Introduction, pages 719–722. Vuibert, 2006.
[117] Yvon Trinquet. Encylcopédie de l’informatique et des systèmes d’information, chap-
ter Noyaux d’exécutif temps réel, pages 733–739. Vuibert, 2006.
218 Bibliographie
[118] Yvon Trinquet and Jean-Pierre Elloy. Systèmes d’exploitation temps réel. Techniques
de l’ingénieur, Traité Contrôle et Mesures, Mars 1999.
[119] T. Vergnaud and B. Zalila. Ocarina, a compiler for the A ADL. Technical report, Paris,
France, 2006. http ://ocarina.enst.fr.
[120] Thomas Vergnaud. Modélisation des systèmes temps-réel répartis embarqués pour
la génération automatique d’applications formellement vérifiées. PhD thesis, Ecole
Nationale Supérieure des télécommunications, Paris, France, Décembre 2006.
[121] Markus Völter and Thomas Stahl. Model-driven Software Devlopment : Technology,
Engineering, Management. Wiley & Sons, June 2006.
[122] W3C. X SL Transformations (X SLT) Version 1.0, November 1999.
[123] Axel Wabenhorst and Brenton Atchison. A survey of international safety standards.
Technical Report 99-30, Software Verification Research Centre, School of Informa-
tion Technology, The University of Queensland, Brisbane 4072, Australia, November
1999.
[124] WindRiver. VxW ORKS Programmer’s Guide, 5.4. Edition 1, Mars 1999.
[125] Wayne Wolf and Jorgen Staunstrup. Hardware/Software CO-Design : Principles and
Practice. Kluwer Academic Publishers, Norwell, MA, USA, 1997.
Contribution à la considération explicite des plates-formes d’exécution logicielles
lors d’un processus de déploiement d’application
Mots-clés Plate-forme d’exécution, Temps réel, Ingénierie Dirigée par les Modèles
(I DM), Transformation de modèles, Métamodèle de plate-forme, Modèle de plate-forme,
U ML-M ARTE, Langage de modélisation dédié.
Abstract Real-time and embedded software concerns, such as time and resource usage,
are closely related to the execution platform. But the need for reuse leads to design platform-
independent software. In order to ease platform integration of the application software,
model-driven engeneering (M DE) aims at specializing application model using model trans-
formations. But few works specify how to consider a platform within a transformation. On
the one hand, this study compares several processes that transform a platform-independent
model of an application into a platform-dependent model. This comparative work focuses
on implicit or explicit consideration of real-time and embedded operating systems. On the
other hand, this study explores a modeling method where platforms are explicitly described.
A domain-specific modeling language (D SML) dedicated to the description of execution
platforms is proposed. Then an application deployment process based on this language is
introduced and evaluated. The process uses generic or generated transformation rules and a
D SML dedicated to the description of application deployment.