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.

17 end sp.impl;<br />

<strong>Modélisation</strong> <strong>des</strong> <strong>systèmes</strong> <strong>temps</strong>-<strong>réel</strong> <strong>répartis</strong> <strong>embarqués</strong><br />

Listing V.9 – Exemple de sous-programme AADL avec une imp<strong>la</strong>ntation opaque<br />

Règle V.5 (Traduction <strong>des</strong> sous-programmes ayant une imp<strong>la</strong>ntation opaque)<br />

Un sous-programme AADL n’ayant pas de séquences d’appel et dont les propriétés<br />

Source_Language, Source_Text et Source_Name sont définies est traduit par une enveloppe<br />

appe<strong>la</strong>nt le code spécifié par les propriétés.<br />

L’enveloppe générée doit faire le lien avec le code source que l’utilisateur doit fournir, en<br />

faisant correspondre les paramètres. L’utilisateur doit donc écrire le code source d’imp<strong>la</strong>ntation<br />

sous forme d’une procédure ou d’une fonction dont <strong>la</strong> signature correspond à celle décrite en<br />

AADL. Les types de données utilisés correspondent aux types générés à partir <strong>des</strong> déc<strong>la</strong>rations de<br />

composants de donnée AADL. Dans notre approche, <strong>la</strong> cohérence entre <strong>la</strong> déc<strong>la</strong>ration AADL et<br />

l’imp<strong>la</strong>ntation comportementale est vérifiée par le compi<strong>la</strong>teur.<br />

Nous matérialisons ainsi une séparation nette entre <strong>la</strong> partie architecturale et <strong>la</strong> <strong>des</strong>cription<br />

algorithmique, comme nous l’avions illustré sur <strong>la</strong> figure V.1. Le fait de fournir le code complet<br />

d’une procédure – au lieu d’insérer du code au sein d’un squelette généré – permet d’avoir une<br />

séparation nette entre l’enveloppe AADL et l’imp<strong>la</strong>ntation comportementale. Ce<strong>la</strong> facilite <strong>la</strong> maintenance<br />

du code source d’imp<strong>la</strong>ntation : l’imp<strong>la</strong>ntation fournie par l’utilisateur n’est pas affectée<br />

par les changements dans <strong>la</strong> <strong>des</strong>cription architecturale, <strong>pour</strong>vu que l’interface du sous-programme<br />

AADL ne soit pas modifiée. Ce<strong>la</strong> autorise également un découp<strong>la</strong>ge entre le <strong>la</strong>ngage cible produit<br />

par le traducteur AADL et le <strong>la</strong>ngage utilisé <strong>pour</strong> l’imp<strong>la</strong>ntation en code source : l’enveloppe<br />

générée à partir de l’AADL dépend à <strong>la</strong> fois du <strong>la</strong>ngage cible et du <strong>la</strong>ngage d’imp<strong>la</strong>ntation, et<br />

contient toutes les instructions nécessaires <strong>pour</strong> faire <strong>la</strong> liaison entre les deux code sources.<br />

V-2.3.4 Séquences d’appel pures<br />

AADL permet de modéliser un sous-programme comme étant une séquence d’appel à d’autres<br />

sous-programmes AADL, comme illustré sur le listing V.10. En l’absence de <strong>des</strong>cription comportementale,<br />

nous considérons que le comportement du sous-programme consiste à exécuter <strong>la</strong><br />

séquence.<br />

1 data entier<br />

2 properties<br />

3 Language_Support::Data_Type => integer;<br />

4 end entier;<br />

5<br />

6 subprogram spA<br />

7 features<br />

8 s : out parameter entier;<br />

9 end spA;<br />

10<br />

11 subprogram spB<br />

12 features<br />

13 s : out parameter entier;<br />

14 end spB;<br />

15<br />

16 subprogram spC<br />

17 features<br />

18 e : in parameter entier;<br />

78 c○ 2007 Thomas Vergnaud

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

Saved successfully!

Ooh no, something went wrong!