• Aucun résultat trouvé

7.3 Propri´ et´ es dynamiques

7.3.2 D´ efinition de patrons de raffinement

Afin d’aider le concepteur `a trouver les conditions CD des op´erations B, nous proposons des conditions qui fonctionnent dans le cas des patrons de processus pr´esent´es dans la section4.1.2.3. Par exemple, le processus du type d’entit´e book d´ecrit ci-dessus est une instanciation du patron (a) d´ecrit dans la section4.1.2.3. Or un processus de la forme producteur-modificateur-consommateur implique des conditions CD tr`es pr´ecises pour chaque type d’action dans le processus. Dans les paragraphes suivants, nous pr´esentons les conditions CD que nous avons identifi´ees et prouv´ees pour deux patrons caract´eristiques des expressions de processus eb3.

Pour les besoins de compr´ehension des sections suivantes, rappelons le sens des termes “producteur”, “modificateur” et “consommateur” utilis´es dans les patrons de processus. Un producteur d’une entit´e ou d’un lien d’association identifi´e par −→

k , dans le processus d’un type d’entit´e ou d’une association dont la d´efinition de cl´e est eKey, est une action qui a pour effet de rajouter−→

k dans l’ensemble des valeurs de cl´e existantes ; autrement dit, apr`es l’ex´ecution du producteur, la propri´et´e suivante est satisfaite :−→

k ∈ eKey(t ), o`u t est la trace courante du syst`eme. Un modificateur d’une entit´e ou d’un lien d’association identifi´e par −→

k , dans le processus d’un type d’entit´e ou d’une association, est une action qui a pour effet de modifier les valeurs d’attributs associ´ees `a −→

k . Un consommateur d’une entit´e ou d’un lien d’association identifi´e par−→

k , dans le processus d’un type d’entit´e ou d’une association dont la d´efinition de cl´e est eKey, est une action qui a pour effet de supprimer −→

k dans l’ensemble des valeurs de cl´e existantes ; autrement dit, apr`es l’ex´ecution du consommateur, la propri´et´e suivante est satisfaite : −→

k 6∈ eKey(t ), o`u t est la trace courante du syst`eme.

Dans la suite, on reprend les mˆemes notations et les mˆemes classes de patrons de processus d´ecrites dans la section4.1.2.3.

7.3.2.1 Patron de base pour les types d’entit´e et associations Les op´erations de type producteur doivent v´erifier que l’entit´e k n’existe pas avant l’ex´ecution de l’op´eration. Par cons´equent, CD est de la forme : k 6∈ Vk, o`u Vk est la variable d’´etat qui repr´esente la cl´e du type d’entit´e. Par exemple, la condition CD 1 de l’op´eration Acquire de la biblioth`eque est : bId 6∈ bookKey. Les op´erations de types modificateur ou consommateur doivent v´erifier avec CD que l’entit´e k existe : k ∈ Vk. Par exemple, la condition CD 2 de l’op´eration Discard est : bId ∈ bookKey.

7.3.2.2 Patron pour les entit´es participant `a des associations binaires Les op´erations de type producteur d’une association doivent v´erifier que les entit´es k 1 et k 2 existent et que le couple (k 1, k 2) n’existe pas encore dans l’association. La condition CD est de la forme suivante : k 1 ∈ Vk 1 ∧ k 2 ∈ Vk 2 ∧ CC , o`u Va est une relation de type Vk 1 ↔ Vk 2. La forme de Va et la condition CC d´ependent de la cardinalit´e de l’association.

Si a est une association 1 : N , alors Va est de la forme Va ∈ Vk 1 7→ Vk 2

et le processus contient un choix quantifi´e sur k 1 et un entrelacement quan-tifi´e sur k 2. Dans ce cas, la condition CC est de la forme k 1 6∈ dom(Va). Par exemple, la condition CD 6 de l’op´eration Lend est : bId ∈ bookKey ∧ mId ∈ memberKey ∧ bId 6∈ dom(loan).

Si a est une association 1 : 1, alors Va est de la forme Va ∈ Vk 1 7 Vk 2et le processus contient un choix quantifi´e sur k 1 et sur k 2. Dans ce cas, la condition CC est : k 1 6∈ dom(Va) ∧ k 2 6∈ ran(Va), car le couple (k 1, k 2) doit ˆetre unique. Si a est une association M : N , alors Va est de la forme Va ∈ Vk 1↔ Vk 2et le processus contient un entrelacement quantifi´e sur k 1 et sur k 2. Dans ce cas, la condition CC est : (k 1, k 2) 6∈ Va, car il peut y avoir d’autres tuples incluant des k 1 ou des k 2, mais pas le couple (k 1, k 2).

Les op´erations de types modificateur et consommateur d’une association doivent v´erifier que les entit´es k 1 et k 2 existent et que le couple (k 1, k 2) existe dans l’association. Par cons´equent, CD est de la forme : k 1 ∈ Vk 1 ∧ k 2 ∈ Vk 2 ∧ (k 1, k 2) ∈ Va.

7.3.2.3 Analyse de la preuve

Nous pr´esentons maintenant un aper¸cu de l’analyse `a faire pour prouver l’obligation de preuve (OP3) pour chaque patron de raffinement. Pour illustrer, nous consid´erons le cas d’une action de type producteur dans une association de cardinalit´e 1 : N . Les preuves pour les autres cas suivent le mˆeme raisonnement. Soit Pj un producteur d’une association 1 : N entre deux types d’entit´e e1 et e2. Les expressions APi1et APi2sont respectivement de la forme (AP-Multi) et (AP-One), comme d´ecrites dans la section 4.1.2.3. Pour prouver la condition suivante :

CS ∧ CD ⇔ t ← Operation(parametres) ∈ T (main)

nous devons comparer les conditions de d´eclenchement des transitions de l’ac-tion Pj dans le LTS qui repr´esente les transitions du processus eb3 avec les conditions de d´eclenchement des transitions de l’op´eration B qui correspond `a Pj. Si les quatre premi`eres ´etapes de la m´ethode eb4 ont ´et´e r´ealis´ees correc-tement, la condition CS est exactement ´equivalente aux gardes de l’action Pj

dans l’expression de processus.

Le raisonnement suivant est commun `a tous les cas de processus. Si on ana-lyse le patron de processus d´efini dans la section4.1.2.3, paragraphe (a), on re-marque que les actions de type producteur pour une association sont pr´ec´ed´ees par :

– un producteur de l’entit´e identifi´ee par k 1 (dans le processus du type d’entit´e e1),

– un producteur de l’entit´e identifi´ee par k 2 (dans le processus du type d’entit´e e2).

7.3. PROPRI ´ET ´ES DYNAMIQUES 137 Par cons´equent, nous pouvons identifier la forme de la trace t afin qu’elle res-pecte ces deux conditions. Soit Tk 1 l’ensemble des traces valides de la forme t 1 :: Pk 1 :: t 2, o`u Pk 1 est un producteur de l’entit´e identifi´ee par k 1, t 1 est une trace arbitraire, et t 2 est une trace qui ne contient aucune action de type consommateur pour k 1. De mani`ere analogue, Tk 2est d´efini comme l’ensemble des traces valides de la forme t 1 :: Pk 2 :: t 3, o`u Pk 2 est un producteur de l’entit´e identifi´ee par k 2, et t 3 est une trace qui ne contient aucune action de type consommateur pour k 2. Dans ce cas, la trace t que nous analysons v´erifie le pr´edicat suivant : t ∈ Tk 1∩Tk 2. Par d´efinition de Pk 1 et Pk 2, ce pr´edicat est ´equivalent `a : k 1 ∈ e1(t ) ∧ k 2 ∈ e2(t ), o`u e1 et e2 sont respectivement les d´efinitions de cl´e des types d’entit´e e1 et e2. Nous notons ce pr´edicat par (CE1).

Si on analyse le patron de processus d´efini dans la section4.1.2.3, paragraphe (b), nous d´eduisons du cycle de vie d’une association que :

– soit un producteur de l’entit´e (k 1, k 2) n’a jamais ´et´e ex´ecut´e dans le pro-cessus de l’association depuis l’initialisation du syst`eme,

– soit un nombre fini de producteurs de (k 1, k 2) ont d´ej`a ´et´e ex´ecut´es (par la fermeture de Kleene sur l’association a), mais les effets de chacun d’eux ont ´et´e annul´es par la suite par un consommateur de (k 1, k 2).

Ainsi, nous pouvons d´eterminer la forme de la trace t afin qu’elle respecte ces contraintes d’ordonnancement et nous en d´eduisons qu’elle v´erifie la propri´et´e suivante : (k 1, k 2) 6∈ a(t ), o`u a est la d´efinition de cl´e de l’association a. Ce pr´edicat est not´e par (CE2).

Dans la cas particulier de l’association 1 : N , on d´eduit de l’analyse des quantifications de k 1 et k 2 que la trace t satisfait le pr´edicat suivant, que nous notons par (CE3) : k 1 6∈ {k ∈ K Set 1 | ∃ k 2 ∈ K Set 2 • (k , k 2) ∈ a(t )}.

L’invariant de collage J permet de relier la variable d’´etat t aux variables d’´etat qui repr´esentent les diff´erents attributs dans la sp´ecification B obtenue `a l’´etape 3. En particulier, nous avons : e1(t ) = Vk 1, e2(t ) = Vk 2 et a(t ) = Va. Le pr´edicat (CE1) est donc ´equivalent `a : k 1 ∈ Vk 1∧ k 2 ∈ Vk 2. De mˆeme, on en d´eduit que (CE2) est ´equivalent `a : (k 1, k 2) 6∈ Va, et (CE3) `a : k 1 6∈ dom(Va). Par cons´equent, la conjonction (CE1) ∧ (CE2) ∧ (CE3) est ´equivalente `a la condition CD que nous avons propos´ee dans le patron de raffinement.

7.3.2.4 Exemple de la biblioth`eque

Dans cette section, nous pr´esentons quelques exemples de conditions CD , qui sont d´eduites de nos patrons de raffinement, pour les op´erations de l’exemple de la biblioth`eque :

– Dans le cas de l’op´eration Acquire, la condition CD 1 est bId 6∈ bookKey, car elle correspond `a un producteur de bId dans le processus du type d’entit´e book .

– La condition CD 2 pour l’op´eration Discard est bId ∈ bookKey, car Dis-card est un consommateur de bId dans le type d’entit´e book .

– La condition CD 8 de l’op´eration Transfer est plus complexe `a d´eterminer, car il s’agit `a la fois d’un producteur et d’un consommateur de prˆets :

bId ∈ bookKey ∧ mId ∈ memberKey ∧ bId ∈ dom(loan)

– La condition CD 10 de l’op´eration Take est la suivante : bId ∈ bookKey ∧ mId ∈ memberKey ∧

bId 6∈ dom(loan) ∧ (bId , mId ) ∈ reservation

Cet exemple est int´eressant, car Take est `a la fois un producteur de prˆet (d’o`u la condition bId 6∈ dom(loan)) et un consommateur de r´eservation (d’o`u la condition (bId , mId ) ∈ reservation).

Les autres conditions se trouvent dans l’annexeC.