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.

40<br />

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

41 parameter spC2.s -> spB2.e;<br />

42 parameter spB2.s -> spD3.e;<br />

43<br />

44 parameter spD3.s -> d;<br />

45 properties<br />

46 Source_Name => ‘‘Algo’’;<br />

47 Source_Text => ‘‘Imp<strong>la</strong>ntation’’;<br />

48 Source_Language => Ada95;<br />

49 end sp1.impl;<br />

Listing V.11 – Exemple de sous-programme AADL hybride<br />

Afin d’illustrer notre propos, considérons un exemple de scénario d’exécution <strong>pour</strong> le sousprogramme<br />

spA.impl. Celui-ci reçoit une donnée a, dont <strong>la</strong> sémantique correspond à <strong>la</strong> définition<br />

d’un entier. spA.impl peut avoir différents comportements possibles en fonction de <strong>la</strong> valeur de <strong>la</strong><br />

donnée ; ces comportements correspondent à <strong>des</strong> séquences d’appel différentes et sont décrits par<br />

l’algorithme suivant :<br />

Requiert a est un entier<br />

si a < 4 alors<br />

b ← spB (a)<br />

sinon<br />

c ← spC ()<br />

b ← spB (c)<br />

fin si<br />

d ← spD (b)<br />

renvoyer d<br />

Selon <strong>la</strong> valeur de a, spA.impl appelle directement spB, ou spC puis spB. Dans tous les cas,<br />

<strong>la</strong> valeur retournée par spB est ensuite transmise à un dernier sous-programmes spD ; <strong>la</strong> valeur de<br />

retour de spD est ensuite retournée par spA.<br />

Afin d’avoir une séparation c<strong>la</strong>ire entre <strong>la</strong> partie architecturale (décrite en AADL) et <strong>la</strong> partie<br />

comportementale (décrite en code source), cette dernière doit pouvoir manipuler les différentes<br />

séquences d’appel comme <strong>des</strong> blocs opaques ; il est alors possible de modifier le contenu <strong>des</strong><br />

séquences (afin de changer les sous-programmes effectivement appelés) sans affecter l’algorithme.<br />

Celui-ci ne manipule donc seulement les séquences :<br />

Requiert a est un entier<br />

si a < 4 alors<br />

seq1<br />

sinon<br />

seq2<br />

fin si<br />

seq3<br />

Nous voyons que les appels aux trois séquences seq1, seq2 et seq3 s’apparentent en fait à <strong>des</strong><br />

appels de procédure (ou de fonction) qui doivent être générée d’après <strong>la</strong> <strong>des</strong>cription AADL.<br />

Connexion avec les données de <strong>la</strong> <strong>des</strong>cription comportementale<br />

Nous avons ainsi décrit comment coordonner <strong>des</strong> séquences d’appel en fonction <strong>des</strong> données<br />

reçues par le sous-programme AADL. Nous n’avons cependant pas pu exprimer le fait que le<br />

c○ 2007 Thomas Vergnaud 81

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

Saved successfully!

Ooh no, something went wrong!