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<br />

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

UNE MODÉLISATION en AADL permet de décrire les éléments architecturaux d’une application,<br />

éventuellement répartie. Dans ce chapitre nous étudions <strong>la</strong> démarche de transformation<br />

d’une <strong>des</strong>cription AADL en application répartie exécutable.<br />

Les problématiques que nous abordons ici sont l’interprétation <strong>des</strong> éléments AADL en terme<br />

de construction logicielle, ainsi que l’intégration de <strong>des</strong>criptions comportementales au sein de <strong>la</strong><br />

<strong>des</strong>cription. Nous avons montré en section IV-4.1.1 que nous adoptions une démarche de construction<br />

alternative par rapport à celle suggérée par le standard AADL actuel. Cette différence d’approche<br />

a une incidence sur <strong>la</strong> définition <strong>des</strong> règles de production de code source. Nous étudions<br />

les différents cas à considérer dans le cadre de <strong>la</strong> <strong>des</strong>cription <strong>des</strong> composants logiciels en AADL.<br />

V-1 Identification <strong>des</strong> éléments applicatifs d’AADL<br />

Dans le chapitre III, nous avons établi qu’AADL définit un certain nombre de composants<br />

<strong>pour</strong> formaliser <strong>la</strong> partie logiciel d’un système : il s’agit <strong>des</strong> sous-programmes, <strong>des</strong> fils d’exécution<br />

(threads) et <strong>des</strong> composants de donnée. À ces trois catégories de composants s’ajoutent les<br />

processus, qui représentent les exécutables en eux-mêmes.<br />

Les threads et les sous-programmes définissent les flux d’exécution et représentent donc <strong>des</strong><br />

instructions en code source ; les composants de données représentent les structures de données,<br />

c’est-à-dire les variables et les paramètres <strong>des</strong> procédures. Les processus définissent <strong>des</strong> espaces<br />

de mémoire dans lesquels les threads s’exécutent.<br />

Au chapitre IV, nous avons expliqué que les éléments d’une architecture AADL modélisaient<br />

<strong>la</strong> couche d’adaptation entre les composant de l’application et un intergiciel d’exécution. Cette<br />

couche d’adaptation est constituée de deux parties :<br />

– une enveloppe permettant de lier les composants applicatifs fournis par l’utilisateur à l’intergiciel<br />

;<br />

– une couche d’interface assurant <strong>la</strong> coordination entre l’enveloppe et l’intergiciel lui-même.<br />

Dans ce chapitre, nous nous focalisons sur <strong>la</strong> génération de l’enveloppe à partir de <strong>la</strong> <strong>des</strong>cription<br />

AADL. Cette enveloppe correspond aux composants purement applicatifs de <strong>la</strong> modélisation,<br />

c’est-à-dire les sous-programmes et les composants de donnée.<br />

Nous nous intéressons à <strong>la</strong> traduction <strong>des</strong> éléments applicatifs – les sous-programmes et les<br />

composants de donnée – en <strong>la</strong>ngage de programmation, comme illustré sur <strong>la</strong> figure V.1. Les<br />

éléments architecturaux doivent être retranscrits en appliquant <strong>des</strong> règles de correspondance entre<br />

AADL et le <strong>la</strong>ngage cible. Cette partie de <strong>la</strong> génération dépend donc uniquement du <strong>la</strong>ngage<br />

de programmation à utiliser. Étant donné qu’elle ne dépend pas de l’imp<strong>la</strong>ntation de l’exécutif,<br />

c○ 2007 Thomas Vergnaud 71

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

Saved successfully!

Ooh no, something went wrong!