04.07.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!