• Aucun résultat trouvé

Les composants logiciels

2.3 Synth`ese

3.1.2 Les composants logiciels

On pr´esente ici les composants logiciels : data, subprogram, threads, threads group, et process. AADL permet d’associer au composant son code sous la forme d’un fichier externe. Ce fichier externe peut contenir un pro-gramme exprim´e dans un langage de programmation traditionnel, un langage sp´ecifique au domaine (DSL), ou mˆeme un fichier binaire objet. Chaque ob-jet du langage poss`ede une repr´esentation graphique, la figure 3.2 pr´esente les repr´esentations graphiques des ´el´ements logiciels.

Les donn´ees (data)

Un composant data peut ˆetre utilis´e pour d´efinir un nouveau type de donn´ee. La structure interne d’une donn´ee (champs d’un enregistrement par exemple) peut ˆetre repr´esent´ee par des sous composants data dans l’im-plantation du composant. Au niveau du type on peut d´eclarer des sous programmes permettant la manipulation de cette donn´ee. Dans ce cas, les instances de cette donn´ee ne peuvent ˆetre manipul´ees que par ces sous pro-grammes. AADL offre ainsi la possibilit´e d’encapsuler des donn´ees.

Un sous composant data repr´esente une donn´ee statique de l’application. Diff´erents composants peuvent partager l’acc`es `a cette donn´ee. En AADL le partage de donn´ees est possible, mais doit ˆetre explicite, le composant contenant la donn´ee doit en proposer l’acc`es et un composant d´esirant par-tager cette donn´ee doit en requ´erir l’acc`es. On a alors ´eventuellement besoin de pr´eciser par l’interm´ediaire d’une propri´et´e le m´ecanisme d’exclusion mu-tuelle utilis´e.

Les sous programmes (subprogram)

Un composant subprogram repr´esente un texte source appel´e avec des param`etres. Dans son type, on trouve ses param`etres, les acc`es requis `a des donn´ees externes, et la liste des ´ev´enements qu’il est susceptible d’´emettre. Un sous programme n’a pas d’´etat r´emanent entre deux appels. Des com-posants data peuvent repr´esenter des variables locales dans leur implan-tation. Un sous programme est appel´e depuis un thread ou un autre sous programme. En AADL on ne dispose pas de notion d’exception, tous les traitements li´es `a une d´etection d’erreur se font par transmission de mes-sages.

Les threads

Un thread mod´elise une tˆache concurrente, une unit´e ex´ecutable. Chaque thread repr´esente un flot de contrˆole s´equentiel. L’interface du thread, d´efinie dans son type, contient une liste de ports, et une liste des acc`es requis ou propos´es `a des donn´ees ou des sous programmes. Les sous composants d’un thread peuvent ˆetre des data ou des sous programmes. Les sous programmes peuvent ˆetre partag´es par plusieurs threads au sein du mˆeme processus. Lors d’un appel `a un sous programme le thread ex´ecute le code associ´e. Dans le cas o`u le thread propose l’acc`es `a un sous programme comme un service, lorsqu’un second thread appelle ce sous programme, ce thread (appelant) est suspendu ; il reprendra la main lorsque le premier thread (appel´e) aura termin´e d’ex´ecuter le sous programme. AADL permet ainsi de d´efinir la notion de serveur de sous programmes.

Toutes les caract´eristiques li´ees `a l’ordonnancement du thread sont d´e-crites en utilisant des propri´et´es. On peut ainsi fixer pour chaque thread

3.1. PR ´ESENTATION DU LANGAGE 29

son protocole d’activation (p´eriodique, ap´eriodique, sporadique, ou tˆache de fond), sa p´eriode, sa priorit´e, sa date limite d’´ech´eance et son temps d’ex´e-cution.

thread PF features

TC port : in event data port ; end PF ;

thread implementation PF . Impl properties

D i s p a t c h P r o t o c o l => P e r i o d i c ;

Compute Execution time => 4 ms . . 4 ms ;

SEI : : P r i o r i t y => 1 8 5 ; D e a d l i n e => 125 ms ; P e r i o d => 125 ms ; end PF . Impl ;

Tous les threads ont un port pr´ed´eclar´e appel´e dispatch, si ce port est connect´e, alors la r´eception d’un message sur ce port d´eclenchera l’activation du thread. Dans ce cas, lorsque les autres ports du thread re¸coivent des messages, ils sont stock´es dans une file et deviennent disponibles lorsque le thread est activ´e. Si ce port n’est pas connect´e, la r´eception de n’importe quel message d´eclenche l’activation du thread. Pour les threads p´eriodiques, l’arriv´ee de messages ne d´eclenche pas d’activation. Tous les threads ont un port complete, si celui-ci est connect´e, un ´ev´enement est envoy´e sur ce port lorsque le thread a termin´e son ex´ecution.

Les thread groups

Les threads peuvent ˆetre logiquement regroup´es au sein d’un composant appel´e thread group. Il permet de factoriser des ´el´ements de l’interface des threads ou des propri´et´es. Un thread group peut contenir d’autres thread group, ce composant peut donc servir `a cr´eer une hi´erarchie de threads.

Les processus

Un processus repr´esente un espace d’adressage virtuel. Cet espace d’adres-sage contient le code et les donn´ees associ´e aux threads et aux sous pro-grammes du processus. Un processus contient au moins un thread. L’inter-face du processus est similaire `a celle du thread ; elle comporte une liste de ports ainsi qu’une liste de services requis ou propos´es. L’implantation d’un processus peut contenir des data, des sous programmes, des threads ou des groupes de threads.

Processor memory Bus Device

Fig.3.3 – Repr´esentation graphique des ´el´ements mat´eriels