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 VII – Vérification formelle de <strong>la</strong> structure <strong>des</strong> applications<br />

VII-5 <strong>Modélisation</strong> de l’imp<strong>la</strong>ntation <strong>des</strong> composants<br />

Jusqu’ici, nous avons modélisé les opérations de traitement <strong>des</strong> composants par une transition.<br />

La représentation de l’imp<strong>la</strong>ntation d’un composant consiste à remp<strong>la</strong>cer cette transition par le<br />

sous-réseau de Petri décrivant les séquences d’appel décrits dans l’imp<strong>la</strong>ntation du composant. Le<br />

réseau de Petri fait alors apparaître les connexions entre les différents sous-éléments du composant.<br />

VII-5.1 <strong>Modélisation</strong> <strong>des</strong> sous-composants<br />

En section VII-4.1.2, nous avons indiqué que <strong>la</strong> représentation en réseaux de Petri se basait sur<br />

les composants actifs de l’architecture. D’après ce que nous avons établi dans <strong>la</strong> règle VII.7, un<br />

composant possédant <strong>des</strong> sous-composants est systématiquement remp<strong>la</strong>cé par ces derniers. Seuls<br />

les sous-composants sont donc représentés dans un réseau de Petri ; cette situation a donc déjà été<br />

traitée en section VII-4.1.2.<br />

VII-5.2 <strong>Modélisation</strong> <strong>des</strong> sous-programmes<br />

Contrairement à <strong>la</strong> génération de code que nous avons présentée au chapitre V, <strong>la</strong> traduction en<br />

réseau de Petri rend compte <strong>des</strong> flux d’exécution. Selon cette approche, chaque sous-programme<br />

est modélisé dans le réseau autant de fois qu’il est appelé. Chaque appel de sous-programme est<br />

donc assimilé à une instance. Il en est par conséquent de même <strong>pour</strong> un accès requis à un sousprogramme.<br />

Règle VII.12 (Traduction <strong>des</strong> accès à sous-programme)<br />

L’appel d’un sous-programme dont l’accès est requis par un thread ou un sousprogramme<br />

est assimilé à un appel normal au sous-programme correspondant.<br />

De <strong>la</strong> même façon que les composants de haut niveau, les sous-programmes sont modélisés<br />

par une transition entourée de p<strong>la</strong>ces modélisant les paramètres d’entrée et de sortie.<br />

Règle VII.13 (Traduction <strong>des</strong> sous-programmes)<br />

Un appel de sous-programme AADL est traduit par une transition et <strong>des</strong> p<strong>la</strong>ces correspondant<br />

à ses différents paramètres. Le flux d’exécution contrô<strong>la</strong>nt l’appel du sousprogramme<br />

est matérialisé par deux p<strong>la</strong>ces transmettant un jeton de contrôle à <strong>la</strong> transition<br />

du sous-programme. Ce jeton de contrôle est celui du thread dans lequel l’appel est<br />

effectué.<br />

Les p<strong>la</strong>ces d’entrée sont connectées à <strong>la</strong> transition du sous-programme par un arc simple,<br />

de <strong>la</strong> même façon que <strong>pour</strong> les p<strong>la</strong>ces de contrôle. Les p<strong>la</strong>ces de sortie ont un marquage<br />

initial fixé à u. La transition du sous-programme consomme et réinjecte les jetons issus<br />

de ces p<strong>la</strong>ces. Une garde est associée à <strong>la</strong> transition <strong>pour</strong> empêcher <strong>la</strong> consommation de<br />

<strong>la</strong> valeur indéfinie u.<br />

Un paramètre d’entrée sortie est traduit par une p<strong>la</strong>ce d’entrée et une p<strong>la</strong>ce de sortie.<br />

Les paramètres de sortie <strong>des</strong> sous-programmes modélisent <strong>des</strong> variables : leur valeur doit pouvoir<br />

être lue plusieurs fois, par différents sous-programmes. C’est <strong>pour</strong>quoi <strong>la</strong> transition du sousprogramme<br />

doit remp<strong>la</strong>cer un jeton qui est constamment à disposition.<br />

Le cas d’un appel à un sous-programme distant – dont l’accès est fourni par un autre thread –<br />

présente quelques spécificités. En effet, un tel sous-programme met en jeu à <strong>la</strong> fois le thread local,<br />

qui effectue l’appel, et le thread distant, qui exécute effectivement le sous-programme. L’exécution<br />

du sous-programme nécessite donc les ressources d’exécution <strong>des</strong> deux threads.<br />

c○ 2007 Thomas Vergnaud 133

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

Saved successfully!

Ooh no, something went wrong!