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.

39 connections<br />

Chapitre V – Génération du code <strong>pour</strong> l’enveloppe applicative<br />

40 cnx1 : parameter a -> spB1.e;<br />

41 cnx2 : parameter spB1.s -> spD3.e;<br />

42<br />

43 cnx3 : parameter default_value -> spB2.e;<br />

44 cnx4 : parameter spB2.s -> spD3.e;<br />

45<br />

46 cnx5 : parameter spD3.s -> d;<br />

47 properties<br />

48 Source_Text => "Algo";<br />

49 Source_Name => "spA_impl";<br />

50 Source_Language => Ada95;<br />

51 end spA.impl;<br />

Listing V.12 – Exemple de sous-programme avec une donnée locale<br />

En terme de code source, <strong>la</strong> donnée locale se traduit par une variable, qui doit être manipu<strong>la</strong>ble<br />

par toutes les séquences et par <strong>la</strong> partie algorithmique.<br />

Nommage <strong>des</strong> éléments architecturaux<br />

La syntaxe AADL impose de nommer les sous-composants de donnée représentant les variables<br />

locales. Les séquences d’appels doivent également toutes être nommées afin de pouvoir y<br />

faire référence. Des séquences d’appel anonymes sont en effet syntaxiquement correctes, mais inexploitables<br />

dans notre situation car elles ne <strong>pour</strong>raient alors pas être désignées, donc pas appelées,<br />

par le code source de <strong>la</strong> <strong>des</strong>cription comportementale.<br />

Le cas <strong>des</strong> connexions de paramètres est légèrement différent. En effet, les connexions se<br />

traduisent en effet par <strong>des</strong> variables intermédiaires, dont <strong>la</strong> valeur doit pouvoir être lue par l’algorithme.<br />

Le code source généré doit donc permettre à <strong>la</strong> partie algorithmique de manipuler les<br />

connexions AADL. Cependant, une connexion anonyme est tout à fait admissible : sa valeur ne<br />

<strong>pour</strong>ra simplement pas être lue par l’imp<strong>la</strong>ntation comportementale.<br />

Traduction <strong>des</strong> sous-programmes hybri<strong>des</strong><br />

Une séquence d’appel est tout naturellement traduite en une procédure (ou fonction sans type<br />

de retour) dans le <strong>la</strong>ngage de programmation cible, de <strong>la</strong> même façon que le sous-programme<br />

AADL englobant. Les signatures de toutes les procédures correspondant aux séquences d’appels<br />

doivent être identiques, afin de pouvoir les manipuler de façon uniforme, quel que soit leur<br />

contenu.<br />

Règle V.7 (Traduction <strong>des</strong> séquences d’appel d’un sous-programme hybride)<br />

Chaque séquence d’un sous-programme hybride est traduit par une procédure ou une<br />

fonction dont <strong>la</strong> signature accepte un paramètre en entrée/sortie. Ce paramètre est une<br />

structure de donnée permettant de stocker les différentes variables correspondant aux<br />

connexions AADL déc<strong>la</strong>rées dans le sous-programme.<br />

Le code sources correspondant à l’algorithme doit pouvoir manipuler les informations décrivant<br />

l’état du sous-programme AADL, c’est-à-dire les différentes variables correspondant aux<br />

paramètres ou aux connexions dans le sous-programme AADL, ainsi que les références aux procédures<br />

correspondant aux séquences.<br />

c○ 2007 Thomas Vergnaud 83

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

Saved successfully!

Ooh no, something went wrong!