• Aucun résultat trouvé

Notion de module

Dans le document Disponible à / Available at permalink : (Page 178-186)

IL SLr\^SL^e Es-telIL^

B. l Notion de module

B.1 Notion de module

Cette déclaration indique que le PI ipl est du type nom_canal et qu’il joue le rôle rôleliceci veut dire qu’ à travers ipl> le module peut envoyer les interactions associées à rôlel soit interl, inter2,

. • .et interN et qu’ il peut recevoir les interactions associées à rôle2 soit intl> int2>

...intM.

Les rôles rôlel et rôle2 sont dits opp>osés.

B.1.2 Description du corps

Le corps d’un module est défini de la manière suivante :

body nom_de_corps for nom_d’entête_de module;

Cdéfinition_du_corps end;) ou

(external ;)

Quand le mot-clé ”external” apparait dans la définition ceci veut dire que la spécification en cours n’est pas complète et que la définition du corps en question apparait dans une autre spécification.

La définition du corps spécifie trois parties :

- une partie déclaration (déclarâtion-part) qui inclut les définitions des modules fils (les en­ têtes et les corps) et qui spécifie tout objet local tel que les constantes, les t5rpes, les définitions des canaux, les états de contrôle, les procédures, les fonctions et les variables. La définition des états de contrôle se fait au moyen

B.1 Notion de module

éléments locaux sont définis exactement de la même manière qu’en Pascal.

une partie initialisation (initialization-part) qui affecte des valeurs initiales à des objets déclarés en local; elle peut créer certains sous- modules et des liens de canaux entre sous-modules et/ou entre sous-modules et le module lui-même, ceci est fait par des instructions spécifiques à. Estelle à savoir Init> Attach et Connect.

- une partie transition (transition-declaration- part)J qui sous la forme de transitions, décrit comment le module réagit à des sollicitations externes et donc : comment il reçoit des messages venant d’autres modules et comment il émet ses messages en réponse.

Il est à noter que cette partie transition peut être vide;dans ce cas le module est dit inactif et il sert simplement comme support d*initialisation pour les instances de ses modules fils.

B.1.3 Description des transitions

Les transitions sont spécifiées après le mot clé trans et peuvent être classées comme suit :

a) transitions de réception d’une interaction

cette réception correspond à la présence, en tête de la FIFO associée à un PI donné, d’une interaction qui est attendue quand la MAE est dans un état de contrôle, appelé aussi état donné;la transition Estelle écrit alors:

B.1 Notion de module

"transition name f rom to état_D état A

priority constante entière positive

v^en nom_de_PI.nom_d’ interaction

provided prédicat begin actions Pascal, incluant si

SX

plus instructions nécessaire des Estelle envois d’interactions au moyen de :

output nom_de_PI.nom_d’ interaction [paramètres] end ;

La transition est dite autorisée (enabled) si et seulement si les conditions suivantes sont vérifiées:

- la MAE est dans l’état spécifié après ”from”; - 1’ interaction nom_d’ interaction est en tête de la file FIFO associée au point d’interaction nom_d’ interaction;et

- le prédicat de la clause ”provided” est évalué è VRAI.

La transition sera mise à feu (firable) ssi : - elle est autorisée;

et si parmi toutes les transitions de réception qui sont autorisées, à ce moment là, elle a la priorité maximale (valeur entière de la priorité est minimale).

Quand une transition est mise à feu ou tirée, alors durant son tir, d’une p>art, le bloc d’instructions situé entre ”begin” et ”end” est

B. 1 Notion de module

b) transitions spontanées

Par rapport au type précédant, ces transitions sont caractérisées par l’ absence de la clause ”when” et par la présence, dans certains cas, de la clause '’delay”. Ces transitions sont introduites dans Estelle pour souligner le fait, que dans certains cas, une transition entre états de la MAE est nécessaire quand une certaine condition devient vraie ou quand un certain temps s’est écoulé.

La transition a la forme suivante:

f rom to priority delay provided begin état____ état_A

constante entière positive (val_min,val_max)

prédicat

end J

Dans cette transition la clause ”delay” est introduite et elle a la signification suivante:

quand la transition est autorisée c.ài.d quand la MAE se trouve dans l’état spécifié après le ”from” et que le prédicat après le "provided” est Vrai alors une horloge virtuelle associée à cette transition est déclenchée et:

la transition ne peut être tirée avant val_min;

- la transition peut comme elle ne peut pas être offerte pour son tir entre val_min et val_max

(même si elle est la seule autorisée);

- la transition doit être offerte pour son tir après val_max à condition qu’elle soit la seule

B.1 Notion de module

autorisée en ce moment là;dans le cas contraire elle peut ne pas être offerte (principe du non déterminisme).

Bien que cette clause ”delay” introduit la notion de temps» il est à noter que la sémantique du temps n’est pas complètement définie en Estelle. En effet, il est supposé que la connaissance nécessaire à l’expression complète des paramètres temporels est dépendante de critères d’implantation et les seules contraintes imposées par le langage sont les suivamtes:

- le temps progresse comme le calcul ;

- il progresse de la même façon par rapport à tous les retards existants.

En guise de résumé pour ce paragraphe, une transition sera tirable

- si elle est autorisée;

- si, dans le cas de la présence de la clause ”delay”, sa condition temporelle est vérifiée;

- et si sa priorité est maximale.

Parmi toutes les transitions tirables, une d’entre elles sera choisie d’une manière non déterministe et c’est elle qui sera mise à feu

B.1.4 Fonctionnement d3mamique d’un module

Comme il a été déjà signalé, une spécification Estelle met en présence, simultanément, plusieurs instances d’un même module(ou/et de modules différents). La création, la destruction et 1’ interconnexion des iiKadules se fait d’une manière dynamique au moyen d’instructions spécifiques à Estelle.

B.1 Notion de module

B.1.4.1 Création d’un module

Une instance de module est crée et initialisée au moyen de l’instruction init dont la S3mtaxe est

la suivante :

init variable_de_type_module with nom_du_corps [(liste de paramétres)1 ;

Les modules sont déclarés comme des types et une instance de module sera donc référencée par une variable de t5rpe module. La déclaration d’une variable de type module se fait à. l’aide du mot clé ”modvar” et ceci de la manière suivante :

modvar nom_de_variable_de_module : nom_d’ entête_de_module;

L’ exécution de ”init” inclut le tir d’une transition de la partie initialisation du module dont l’instance est en cours de création;ces transitions sont spécifiées après la clause ”initialize” et précisent en particulier les valeurs des paramètres des différentes variables et 1’ état initial qui est obtenu par 1’ existence d’une clause ”to” (une transition d’initialisation ne peut contenir que les clauses ”to” et "provided”).

Après son initialisation> une instance de module va évoluer suivant le tir d’une transition p>armi les transitions tirables» le choix de cette transition étant fait d’une manière non déterministe. Ainsi si plusieurs transitions sont simultanément tirables c.à.d qu’elles ont même état , le provided Vrai, même priorité et soit une interaction attendue en tête de file (pour la clause v4ien ) soit un instant de ten^ps con^satible avec les intervalles définis (clause delay) alors

B.1 Notion de module

le choix est non déterministe et l’une quelconque parmi elles doit être tirée.

B.1.4.2 Interconnexion des modules

Pour établir une communication entre les

différents modulesj il est nécessaire de

"connecter” les canaux associés aux différents Pis de ces modules. Ceci est accompli par les deux instructions suivantes : attach PI_externe to variable_de_module_fils.PI_ externe ; connect PI_interne ou variable_de_module_fils.PI_ externe to PI_interne ou

variable de module fils.PI externe

L’ instruction "attach” lie un point d’interaction externe de 1’ instaince du module à. un point d’interaction externe d’un fils. A partir de cet instant le point d’interaction du fils remplace celui du module auquel il a été attaché et c’est pour cette raison que les deux Pis attachés doivent faire référence au même canal et prendre le même rôle dans leur déclaration.

L’instruction "connect” peut lier :

- deux Pis externes de deux instances de module fils ou

B.l Notion de module

Après l’exécution de cette instruction» toute interaction envoyée à partir d’un des deux Pis "connectés” (au moyen de l’instruction output) est reçue à l’autre PI; c’est pour cette raison que les deux Pis "connectés” doivent faire référence dans leur déclaration à la même définition de canal mais les rôles doivent être, dans ce cas, "opposés”.

B.1.4.3 Destruction des nodules

La destruction ainsi que la libération des liens d’interconnexion entre les modules se fait d’une manière djmamique au moyen des instructions suivantes :

release variable_de_module;

detach PI_externe ;ou

vaj~iable_de_module_f ils . PI_externe ;

disconnect variable_ de module_ fils; ou

PI_interne; ou

variable_de_module_fils.PI-externe ;

Après l’exécution de l’instruction "release” tous les Pis externes de 1’ instance du module

référencée par variable_de_module sont

"déconnectés” ou "détachés”;après quoi l’instance du module et toute sa descendance sont détruites et n’ont plus aucune existence propre.

B.2 Structuration et Parallélisme

Comme nous déclairation d’un d’autres modules

1’avons déjà vu, la partie module peut inclure la définition (appelés modules fils);nous

Dans le document Disponible à / Available at permalink : (Page 178-186)

Documents relatifs