• Aucun résultat trouvé

4 Concepts supplémentaires dans le SDL de base

4.3 Définition de système générique

Afin de répondre à divers besoins, une spécification de système peut avoir des parties optionnelles et des paramètres de système dont les valeurs ne sont pas spécifiées. Une telle spécification de système est appelée générique, sa propriété générique est spécifiée aux moyens de synonymes externes (qui sont analogues aux paramètres formels d'une définition de procédure). La spécification d'un système générique est adaptée en choisissant un sous-ensemble convenable et en donnant une valeur à chaque paramètre de système. La spécification de système qui en résulte ne contient pas de synonymes externes, et est appelée spécification de système spécifique.

4.3.1 Synonyme externe Grammaire textuelle concrète

<external synonym definition>::=

synonym <external synonym definition item>

{, <external synonym definition item> }*

<external synonym definition item> ::=

<external synonym name> <predefined sort> = external

<external synonym> ::=

<external synonym identifier>

Une définition <external synonym definition> peut apparaître à tout endroit où une définition <synonym definition> est permise (voir 5.3.1.13). Un synonyme <external synonym> peut être utilisé à tout endroit où un synonyme <synonym>

est autorisé (voir 5.3.3.3). Les sortes prédéfinies sont: Boolean, (booléen), Character (caractère), Charstring (chaîne de caractères), Integer (entier), Natural (entier naturel), Real (réel), PId, Duration (durée) ou Time (temps).

Sémantique

Un synonyme <external synonym> est un synonyme <synonym> dont les valeurs ne sont pas spécifiées dans la définition du système. Cela est indiqué par le mot clé external qui est utilisé à la place d'une expression <simple expression>.

Une définition générique de système est une définition de système qui contient des synonymes <external synonym> ou du texte <informal text> dans une option de transition (voir 4.3.4). Une définition particulière de système est créée à partir d'une définition générique de système en donnant des valeurs aux synonymes <external synonym>, et en transformant le texte <informal text> en construction formelle. La manière d'effectuer cette opération et la relation avec la grammaire abstraite ne font pas partie de la définition de langage.

4.3.2 Expression simple Grammaire textuelle concrète

<simple expression> ::=

<ground expression>

L’expression Ground-expression représentée par une expression <simple expression> ne doit contenir que des opérateurs et des littéraux définis dans le progiciel Predefined, comme défini dans l'Annexe D.

Sémantique

Une expression simple est une expression Ground-expression.

4.3.3 Définition optionnelle Grammaire textuelle concrète

<select definition> ::=

select if (<Boolean simple expression> ) <end>

{ <system type definition>

| <textual system type reference>

| <block type definition>

| <textual block type reference>

| <block definition>

| <textual block reference>

| <textual typebased block definition>

| <channel definition>

| <signal definition>

| <signal list definition>

| <remote variable definition>

| <remote procedure definition>

| <data definition>

| <process type definition>

| <textual process type reference>

| <process definition>

| <textual process reference>

| <textual typebased process definition>

| <service type definition>

| <textual service type reference>

| <service definition>

| <textual service reference>

| <textual typebased service definition>

| <timer definition>

| <channel connection>

| <channel endpoint connection>

| <variable definition>

| <view definition>

| <imported variable specification>

| <procedure definition>

| <textual procedure reference>

| <imported procedure specification>

| <signal route definition>

| <channel to route connection>

| <signal route to route connection>

| <select definition>

| <macro definition> }+

endselect <end>

Les seuls noms visibles dans une expression <Boolean simple expression> d'une définition <select definition> sont des noms de synonymes externes définis à l'extérieur de toutes les définitions <select definition> et zones <option area> et des littéraux et des opérateurs des sortes définies à l'intérieur du progiciel Predefined, comme défini dans l'Annexe D.

Une définition <select definition> ne peut contenir que les définitions syntaxiquement autorisées à cet endroit.

Grammaire graphique concrète

<option area> ::=

<option symbol> contains

{ select if (<Boolean simple expression> ) { <system type diagram>

| <system type reference>

| <block type diagram>

| <block type reference>

| <block area>

| <channel definition area>

| <system text area>

| <block text area>

| <process text area>

| <procedure text area>

| <block substructure text area>

| <channel substructure text area>

| <service text area>

| <macro diagram>

| <process type diagram>

| <process type reference>

| <process area>

| <service type diagram>

| <service type reference>

| <service area>

| <procedure area>

| <signal route definition area>

| <create line area>

| <option area> } + }

Le symbole <option symbol> est un polygone en pointillés ayant des angles droits par exemple:

T1007680-93/d21

FIGURE ..[D21] = 1 CM

Un symbole <option symbol> contient logiquement la totalité d'un symbole graphique unidimensionnel quelconque coupé par sa frontière (c'est-à-dire avec un point d'extrémité à l'extérieur).

Une zone <option area> peut apparaître n'importe où, sauf à l'intérieur d'une zone <process graph area>, de zone

<process type graph area>. Une zone <option area> ne peut contenir que les zones et les diagrammes qui sont syntaxiquement autorisés à cet endroit.

Sémantique

Si la valeur de l’expression <Boolean simple expression> est fausse (False), toutes les constructions contenues dans la définition <select definition> ou dans le symbole <option symbol> ne sont pas sélectionnées. Dans l'autre cas, ces constructions sont sélectionnées.

Modèle

La définition <select definition> et la zone <option area> sont supprimées à la transformation et remplacées par les constructions sélectionnées qu'elles contiennent, s'il y en a. Tous les connecteurs connectés à une zone dans des zones

<option area> non sélectionnées sont également supprimés.

Exemple

Dans le système Alfa il y a trois blocs: B1, B2 et B3. Le Bloc B1 et les canaux qui sont connectés sont optionnels, selon les valeurs des synonymes externes p et extension. Dans le SDL/PR, on représente cet exemple comme suit:

system Alfa;

synonym p Integer = external;

synonym extension Boolean = external;

signal s1,s2,s3,s4,s5,s6,s7;

select if (p = 3 and extension);

block B1 referenced;

channel C1 from env to B1 with s1 ; endchannel C1;

channel C2 from B1 to B2 with s2 ; endchannel C2;

channel C6 from B3 to B1 with s6; endchannel C6;

endselect;

channel C3 from B2 to env with s3 ; endchannel C3;

channel C4 from B3 to B2 with s4 ; endchannel C4;

channel C5 from B2 to B3 with s5; endchannel C5;

channel C7 from env to B3 with s7 ; endchannel C7;

block B2 referenced;

block B3 referenced;

endsystem Alfa;

Le même exemple en SDL/GR est représenté ci-dessous.

T1007850-93/d22 [s6]

C1 [s1]

C5 [s5]

C3 [s3]

C6

C4 [s4]

B3 C2 [s2]

B1 B2

C7 [s7]

system Alfa

synonym p Integer = external ; synonym extension Boolean = external ; signal s1, s2, s3, s4, s5, s6, s7;

select if (p = 3 and extension)

FIGURE ...[D22] = 8CM

4.3.4 Chaîne de transition optionnelle Grammaire textuelle concrète

<transition option> ::=

alternative <alternative question> <end>

{ <answer part> <else part>

| <answer part> { <answer part> }+ [ <else part> ] } endalternative

<alternative question>::=

<simple expression>

| <informal text>

Chaque expression <ground expression> dans une réponse <answer> doit être une expression <simple expression>. Les réponses <answer> dans une option <transition option> doivent s'exclure mutuellement. Si la question <alternative question> est une <expression>, la condition Range-condition des réponses <answer> doit être de la même sorte que la question <alternative question>.

Aucune réponse <answer> dans les parties <answer part> d'une option <transition option> ne peut être omise.

Grammaire graphique concrète

<transition option area> ::=

<transition option symbol> contains {<alternative question>}

is followed by {<option outlet1>

{<option outlet1> | <option outlet2> } { <option outlet1> }* } set

<transition option symbol> ::=

<option outlet1> ::=

<flow line symbol> is associated with <graphical answer>

is followed by <transition area>

<option outlet2> ::=

<flow line symbol> is associated with else is followed by <transition area>

Le symbole <flow line symbol> dans <option outlet1> et <option outlet2> est relié au bas du symbole <transition option symbol>. Les symboles <flow line symbol> issus d'un symbole <transition option symbol> peuvent avoir un trajet de départ commun. La réponse <graphical answer> et le terme else peuvent être placés le long du symbole <flow line symbol> associé, ou dans le symbole <flow line symbol> discontinu.

Les réponses <graphical answer> dans une zone <transition option area> doivent s'exclure mutuellement.

Sémantique

Les constructions dans <option outlet1> sont sélectionnées si la réponse <answer> contient la valeur de la question

<alternative question>. Si aucune des réponses <answer> ne contient la valeur de la question <alternative question> ce sont les constructions dans <option outlet2> qui sont sélectionnées.

Si aucun <option outlet2> n'est fourni et aucun des trajets sortants n'est sélectionné, la sélection n'est pas valable.

Modèle

Si une option <transition option> n'est pas terminale, elle constitue une syntaxe dérivée pour une option <transition option> dans laquelle toutes les parties <answer part> et les parties <else part> ont inséré dans leur <transition>:

a) un branchement <join> à l'instruction <terminator statement> suivante, si l'option de transition est la dernière instruction <action statement> dans une chaîne <transition string>; ou

b) sinon un branchement <join> à la première instruction <action statement> qui suit l'option de transition.

L'option <transition option> terminale est définie en 2.7.5.

L'option <transition option> et la zone <transition option area> sont effacées à la transformation et remplacées par les constructions sélectionnées contenues.

Exemple

Une partie d'une définition <process definition> contenant une option <transition option> est montrée ci-après. p et s sont des synonymes.

...

alternative p + s;

(>2) : task ’Do what you want’;

nextstate -;

else: task ’Do nothing’;

nextstate Hum;

endalternative;

...

Le même exemple en syntaxe graphique concrète est montré ci-après:

T1007860-93/d23

p + s

(>2) else

’Do what

you want’ ’Do nothing’

Hum

FIGURE ...[D23] = 7CM

4.4 Etat astérisque