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

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

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

Saved successfully!

Ooh no, something went wrong!