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 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapitre V – Génération du code <strong>pour</strong> l’enveloppe applicative<br />
27 end une_donnee.tableau_entier2;<br />
Listing V.5 – Déc<strong>la</strong>ration de tableaux en AADL<br />
Les chaînes de caractères constituent un mécanisme à mi-chemin entre les types sca<strong>la</strong>ires et<br />
les tableaux. Pour <strong>des</strong> raisons pratiques, nous ne considérons que les chaînes de taille fixée ; nous<br />
évitons ainsi de traiter le redimensionnement <strong>des</strong> chaînes. Ceci permet d’une part de simplifier<br />
<strong>la</strong> manipu<strong>la</strong>tion <strong>des</strong> chaînes, et également de pouvoir déterminer de façon statique <strong>la</strong> taille <strong>des</strong><br />
communications. Nous utilisons donc une propriété supplémentaire <strong>pour</strong> spécifier <strong>la</strong> taille de <strong>la</strong><br />
chaîne, comme illustré sur le listing V.6. Les chaînes de caractères sont vues implicitement comme<br />
<strong>des</strong> tableaux de caractères unidimensionnels.<br />
29 data implementation une_donnee.chaine<br />
30 properties<br />
31 Language_Support::Data_Format => String;<br />
32 Language_Support::Dimension => (7);<br />
33 end une_donnee.chaine;<br />
Listing V.6 – Déc<strong>la</strong>ration d’une chaîne de caractères en AADL<br />
Les structures de données constituées de plusieurs champs (aussi appelées enregistrements<br />
dans certains <strong>la</strong>ngages) constituent <strong>des</strong> données complexes. Leur organisation peut être représenté<br />
par une construction AADL à l’aide de sous-composants, comme illustré sur le listing V.7. Une<br />
telle déc<strong>la</strong>ration traduit exactement le fait que le type de donnée une_donnee.structure est constitué<br />
de deux champs i et c, correspondant tous deux à un type défini par ailleurs. Aucune propriété<br />
AADL n’a besoin d’être spécifiée, car <strong>la</strong> syntaxe AADL suffit à fournir toutes les informations<br />
nécessaires.<br />
35 data implementation une_donnee.structure<br />
36 subcomponents<br />
37 i : data une_donnee.entier;<br />
38 c : data une_donnee.chaine;<br />
39 end une_donnee.structure;<br />
Listing V.7 – Déc<strong>la</strong>ration d’une structure de données complexe en AADL<br />
Les listes constituent un cas limite <strong>pour</strong> lequel AADL ne permet pas une <strong>des</strong>cription efficace.<br />
Les listes ne peuvent pas être représentées comme <strong>des</strong> structures de données. En effet, une liste<br />
est une succession de données de même type chaînées les unes aux autres, le dernier éléments<br />
de <strong>la</strong> liste n’ayant pas de successeur. Une telle construction ne peut pas être représentée comme<br />
une structure de donnée telle que décrite dans le listing V.7, dans <strong>la</strong> mesure où AADL ne possède<br />
pas <strong>la</strong> notion de pointeur ou de référence : un composant s’instanciant lui-même comme souscomposant<br />
produit systématiquement une architecture infiniment récursive, qui ne peut pas être<br />
exploitée. Une solution consiste à utiliser <strong>des</strong> propriétés AADL permet de décrire un type de<br />
donnée opaque, qui masque <strong>la</strong> structure exacte de <strong>la</strong> donnée, comme représenté sur le listing V.8.<br />
Nous masquons alors <strong>la</strong> structure interne du type de donnée, en suivant une approche simi<strong>la</strong>ire à<br />
celle appliquée <strong>pour</strong> les conteneurs de <strong>la</strong> bibliothèque standard du C++ [Stroustrup, 2003]. Pour<br />
ce<strong>la</strong>, nous introduisons une nouvelle valeur <strong>pour</strong> <strong>la</strong> propriété Data_Structure : chained_list. De<br />
<strong>la</strong> même façon que <strong>pour</strong> les tableaux, nous pouvons utiliser Language_Support::Data_Format ou<br />
Language_Support::Data_Type.<br />
41 data implementation une_donnee.liste<br />
42 properties<br />
43 Language_Support::Data_Structure => Chained_List;<br />
c○ 2007 Thomas Vergnaud 75