• Aucun résultat trouvé

Les propriétés constituent un aspect fondamental d’AADL. Elles permettent d’exprimer les différentes caractéristiques des entités AADL telles que les composants, les sous-composants, les éléments d’interface, les connexions, etc. Il est ainsi possible de décrire les contraintes s’appliquant à l’architecture. Par exemple, les propriétés sont utilisées pour spécifier le temps d’exécution théo- rique d’un sous-programme, la période d’un thread, le protocole de file d’attente utilisé pour un port d’événement/donnée, etc.

III-8.1.1 Déclarations de propriétés

Les déclaration de propriétés sont regroupées dans des ensembles de propriétés (property sets), semblables aux paquetages. Il existe trois types de déclarations : les types de propriétés, les constantes et les noms de propriétés.

Généralités

Une propriété se définit par un nom, un type, la liste des éléments auxquels elle peut s’appli- quer, et éventuellement une valeur par défaut. Les types de propriétés peuvent être définis à partir de types de base (chaîne de caractère, booléen, entier, réel, énumération, référence à une instance de composant ou référence à une déclaration de composant, plage de valeurs). Un type peut être une valeur simple ou une liste. Il est également possible de définir des unités. Des exemples de déclaration de propriété sont présentés sur le listingIII.7.

1 property set Utilisateur is

2 Compiler : aadlstring => "gcc" applies to (subprogram,

thread);

3 Pressure : type units (Pa, hPa => Pa * 100);

4 Pressure_Range : range of Pressure applies to (device);

5 Version : aadlinteger applies to (all);

6 end Utilisateur;

Listing III.7 – Déclarations de propriétés

Le standard AADL définit deux ensembles de propriétés :AADL_Propertiescontient les dé-

clarations des propriétés standard etAADL_Projectcelles des propriétés de projet. Les propriétés

standard ne peuvent pas être modifiées ; en revanche les propriétés de projet peuvent être adaptées en fonction des dimension de l’architecture qu’on l’on décrit ou des technologies que l’on a sa disposition.

1 property set AADL_Properties

2 Source_Language : Supported_Source_Languages

3 applies to (subprogram, data, thread, process, bus, device, processor);

4

5 Thread_Limit : aadlinteger 0 .. value (Max_Thread_Limit)

6 => value (Max_Thread_Limit)

7 applies to (processor);

9

10 property set AADL_Project is

11 Max_Thread_Limit : constant aadlinteger

12 => <project-specified-integer-literal>;

13

14 Supported_Source_Language : type enumeration (<project-specified >);

15 -- The following are examples software source languages:

16 -- (Ada95, C, Simulink_6_5)

17 end AADL_Project;

Listing III.8 – Extrait des déclarations de propriétés standard

Le listingIII.8donne un extrait des déclarations de propriétés standard qui illustre le paramé- trage des propriétés. La définition de certaines propriétés standard font référence à des définitions relatives au projet. L’ensembleAADL_Projectdépend donc des outils AADL, qui doivent le définir

en accord avec leurs propres possibilités ou limitations.

L’ensemble des propriétés standard permet d’exprimer un certain nombre de caractéristiques sur les entités AADL. Nous en décrivons ici quelques unes, qui sont pertinentes pour nos travaux. Périodes et politiques de déclenchement desthreads

Le standard définit quatre politiques de déclenchement pour les threads, à l’aide de la propriété

Dispatch_Protocol:

– périodique ; – apériodique ; – sporadique ;

– tâche de fond (background).

Les threads périodiques se déclenchent d’eux-mêmes selon la période indiquée par la pro- priété Period. Les threads apériodiques se déclenchent sur l’arrivée d’un événement ou d’une

donnée/événement sur l’un de leurs ports. Les threads sporadiques se déclenchent également à l’arrivée d’un événement, mais avec une période de garde indiquée par la propriété Period. Les

threadsen tâche de fond s’exécutent en continu. Descriptions des implantations

Le standard défini trois propriétés permettant d’associer un code source aux composants : – Source_Languagepermet de spécifier le langage utilisé dans la description ;

– Source_Textpermet d’indiquer la liste des fichiers contenant la description ;

– Source_Namepermet de préciser l’entité référencée dans le fichier (par exemple le nom de

la procédure).

La sélection du langage peut s’appliquer aux sous-programmes, données, threads, proces- sus, bus, dispositifs et processeurs, permettant ainsi de décrire les composants logiciels (sous- programmes, par exemple en C) ou matériels (processeurs, par exemple en VHDL).

Contraintes spatiales et temporelles

Diverses propriétés permettent d’exprimer les temps d’exécution ou de propagation à travers les composants. Ainsi, la propriété Propagation_Delaypermet de spécifier une plage de temps

le temps d’accès en lecture à une mémoire,Subprogram_Execution_Timedéfinit la plage de temps

d’exécutions pour un sous-programme, etc.

De même, Source_Code_Size, Source_Heap_Size permettent d’exprimer les contraintes en

taille mémoire.

Association des composants logiciels à la plate-forme d’exécution

Le déploiement des composants applicatifs sur la topologie matérielle est spécifiée par des propriétés AADL.

Actual_Connection_Binding,Actual_Memory_BindingetActual_Processor_Bindingpeuvent

être utilsées pour indiquer respectivement par quel bus, mémoire ou processeur est porté une connexion, une donnée ou processus. Par ailleurs, des propriétés telles que Thread_Limit per-

mettent de spécifier les limitations du système d’exploitation des processeurs en terme de capacité d’ordonnancement.

III-8.1.2 Associations de propriétés

Les associations de propriétés permettent d’attribuer une valeur à une propriété (c’est-à-dire associer une valeur à un nom de propriété).

Déclarations

Les associations de propriétés peuvent intervenir dans trois situations différentes : – déclarées dans un paquetage ;

– déclarées dans la section « properties » d’un composant ; – directement attachées à une sous-clause.

Lorsqu’une association est réalisée au niveau d’un paquetage, elle concerne tous les compo- sants du paquetage auxquels la propriété peut s’appliquer.

Une propriété déclarée dans la section « properties » d’un composant s’applique dans le cadre de ce composant. La déclaration s’applique au composant en question, sauf si l’association contient le mot-cléapplies to; dans ce cas la propriété s’applique à la déclaration désignée par applies to. Cette déclaration peut être une sous-clause du composant, ou une sous-clause du

composant référencé par la sous-clause, et ainsi de suite, selon ce qu’indique leapplies to.

Si l’association est réalisée au niveau d’une sous-clause (par exemple. un sous-composant), elle s’applique dans le cadre de la sous-clause en question. Si le mot-cléapplies toest utilisé, la

propriété s’applique à une sous-clause du composant référencé par la sous-clause. Il s’agit donc du même principe que pour le cas précédent, mais appliqué à une sous-clause au lieu de la déclaration d’un composant.

Valeurs associées aux propriétés

La valeur associée à une propriété peut être une valeur simple ou une liste de valeurs simples, selon le type de la propriété. Dans le cas d’une liste, il est possible d’ajouter des éléments à la valeur déjà définie pour la propriété, dans le cas où une valeur aurait déjà été associée à la propriété (valeur par défaut dans la déclaration ou déjà définie par ailleurs). Une valeur peut également être une référence à la valeur d’une autre association de propriété ou à une constante.

1 processor processeur_a

3

4 processor implementation processeur_a.f40MHz

5 properties 6 Clock_Period => 25 ns; 7 end processeur_a.f40MHz; 8 9 system ordinateur 10 end ordinateur; 11

12 system implentation ordinateur.overclock

13 subcomponents

14 processeur1 : processor processeur_a.f40MHz {Clock_Period => 20 ns;};

15 end ordinateur.overclock;

Listing III.9 – Associations de valeurs aux propriétés

La valeur d’une propriété est déterminée en cherchant sa valeur dans l’ordre suivant (illustré sur la figureIII.7) :

1. dans l’instance de l’entité ;

2. dans la déclaration de l’implantation correspondante ;

3. dans les éventuelles déclarations d’implantation dont dérive l’implantation du composant ; 4. dans la déclaration du type correspondant à l’implantation ;

5. dans les éventuelles types de composant dont dérive le type du composant ; 6. dans l’instance parente.

Une propriété à laquelle aucune valeur n’est associée est dite indéfinie.

instance impl. 1A impl. 1B type 1 type 2 instance parente 1 2 3 4 5 6

FIG. III.7 – Ordre d’évaluation des propriétés