Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
Modélisation des systèmes temps-réel répartis embarqués pour la ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapitre V – Génération du code <strong>pour</strong> l’enveloppe applicative<br />
nommé partition.c, et les fichiers correspondant aux espaces de nom sont nommés partition<br />
-.c. Étant donné que toutes les déc<strong>la</strong>rations C se trouvent dans l’unique espace<br />
de nom géré par le <strong>la</strong>ngage, nous appliquons une règle différente d’Ada <strong>pour</strong> le nommage <strong>des</strong><br />
entités issues <strong>des</strong> composants AADL : leur nom est le résultat de <strong>la</strong> concaténation du nom de leur<br />
paquetage de définition et de leur nom à l’intérieur de ce paquetage.<br />
V-4.1.2 Traduction <strong>des</strong> composants de donnée<br />
Le <strong>la</strong>ngage C permet de manipuler les mêmes types de données qu’Ada. La traduction <strong>des</strong><br />
composants de donnée suit donc les mêmes principes. Les chaînes de caractères sont imp<strong>la</strong>ntées<br />
par <strong>des</strong> tableaux de caractères, de <strong>la</strong> dimension spécifiée en AADL, plus un octet <strong>pour</strong> stocker le<br />
caractère de fin de chaîne 0.<br />
Dans <strong>la</strong> mesure où C n’offre pas de mécanisme permettant de définir <strong>des</strong> sous-programmes génériques,<br />
il est nécessaire de générer plus de code, s’appuyant sur une structure de liste manipu<strong>la</strong>nt<br />
<strong>des</strong> pointeurs vers les structures de données à stocker.<br />
V-4.1.3 Traduction <strong>des</strong> sous-programmes<br />
Règle V.12 (Traduction <strong>des</strong> sous-programmes AADL en C)<br />
Les sous-programmes AADL sont traduits en C par <strong>des</strong> fonctions dont le type de retour<br />
est void.<br />
Les accès aux composants de donnée sont traduits par un pointeur sur le type de donnée considéré<br />
; de même, les accès aux sous-programmes sont traduits par <strong>des</strong> pointeurs sur procédure. Les<br />
autres paramètres sont traduits selon les mêmes principes que <strong>pour</strong> Ada. Les paramètres AADL<br />
déc<strong>la</strong>rés « out » ou « in out » sont traduits par <strong>des</strong> pointeurs sur les types de données correspondants.<br />
Les paramètres « in » sont traduits par un passage de paramètre c<strong>la</strong>ssique.<br />
V-4.2 Traduction vers Java<br />
La traduction en Java reprend en partie les mêmes principes que <strong>pour</strong> Ada et C. Cependant,<br />
du fait qu’il s’agisse d’un <strong>la</strong>ngage orienté objet implique quelques différences notables. AADL<br />
ne développe en effet pas les concepts que l’on retrouve habituellement dans les <strong>la</strong>ngages objets<br />
(telles que les c<strong>la</strong>sses, notamment). La traduction d’AADL vers Java conduit donc à générer du<br />
code qui, dans sa logique, n’est pas orienté objet ; le code produit, bien que correct, ne correspond<br />
donc pas nécessairement à ce qu’écrirait naturellement un programmeur.<br />
V-4.2.1 Traduction <strong>des</strong> espaces de nom<br />
Java possède <strong>la</strong> notion de paquetage ; <strong>la</strong> notion de paquetages d’AADL s’en inspire d’ailleurs<br />
<strong>la</strong>rgement. Cependant, du fait que Java se fonde sur l’usage <strong>des</strong> c<strong>la</strong>sses alors que cette notion<br />
n’existe pas dans AADL, il n’est pas possible de traduire simplement les paquetages AADL en<br />
paquetages Java ; bien que de sémantique très proche, les paquetages Java et AADL ne contiennent<br />
en effet pas les mêmes genres de déc<strong>la</strong>rations. Notamment, il n’est pas possible de déc<strong>la</strong>rer une<br />
méthode Java directement dans un paquetage. Il est donc impératif de tenir compte à <strong>la</strong> fois <strong>des</strong><br />
notions de c<strong>la</strong>sse et de paquetage dans <strong>la</strong> traduction d’AADL vers Java, tout particulièrement <strong>pour</strong><br />
les sous-programmes.<br />
c○ 2007 Thomas Vergnaud 91