• Aucun résultat trouvé

Mod´elisation des op´erations de reconfiguration

3.4 Illustration

3.4.2 Mod´elisation des op´erations de reconfiguration

En se basant sur la notation propos´ee pour d´ecrire le mod`ele dynamique, nous pr´esentons, dans cette section, la sp´ecification des diff´erentes op´erations de reconfiguration permettant de faire ´evoluer notre syst`eme PMS tout en tenant compte des propri´et´es d´ecrites dans le style architectural.

3.4.2.1 Insertion d’un service d’´ev´enement

Cette op´eration de reconfiguration permet d’ins´erer une instance de composant de type EventService. La mod´elisation de cette op´eration de reconfiguration, avec notre nouvelle notation, est donn´ee par la figure 3.11.

Le nom de l’op´eration de reconfiguration «ReconfigurationOperationName» est

Insert EventService(x)

Dans la partie «insert» nous pr´esentons l’instance de EventService `a ajouter dans le syst`eme. Dans cette op´eration nous n’avons rien `a supprimer, c’est pourquoi la partie«

re-quire & delete» est vide. En plus, pour l’insertion de cette instance de composant nous

n’avons besoin d’aucune instance de composant dans la partie«require & preserve». Pour ex´ecuter correctement l’insertion d’un EventService, il faut v´erifier la contrainte

«Guards»qui traduit que le nombre d’instance de type EventService doit ˆetre strictement inf´erieur `a 3.

« ReconfigurationOperationName » Insert_EventService(x)

« require & delete » « require & preserve » « insert »

x:EventService

« Guards »

context EventService::InsertEventService(x : EventService) : Boolean pre InsertES: EventService allInstancesĺsize < 3

pre InsertES: EventService.allInstancesĺsize < 3

FIG. 3.11 – Insertion d’un EventService

La figure 3.12 d´ecrit une configuration possible de l’architecture PMS apr`es l’ex´ecution de l’op´eration de reconfiguration Insert EventService.

z:Patient y:Nurse

x:EventService e:EventService

FIG. 3.12 – Une configuration possible apr`es l’insertion d’un EventService

3.4.2.2 Insertion d’un patient

Cette op´eration de reconfiguration permet d’ins´erer une instance de composant de type Patient et de la lier `a une instance de composant de type EventService. Pour ex´ecuter cette op´eration, il faut mettre une instance de type Patient dans la partie«insert». L’insertion d’un patient n´ecessite l’existence d’une instance de type Nurse connect´ee `a une instance de type EventService. Ces instances doivent ˆetre repr´esent´ees dans la partie«require &

preserve».

L’ex´ecution de cette op´eration est conditionn´ee par trois conditions pr´esent´ees dans la partie«Guards»: il faudrait d’abord qu’il y ait au moins une infirmi`ere appartenant `a ce

plus, il faudrait v´erifier que le service en question ne contient pas d´ej`a quinze patients :

x.patient → size < 15 et que le nombre de patient pour l’infirmi`ere en

ques-tion est strictement inf´erieur `a 3 : y.patient → size < 3 .

« ReconfigurationOperationName » Insert_Patient(x,y,z)

« require & delete » « require & preserve » « insert »

x:EventService

y:Nurse z:Patient

« Guards »

y:Nurse z:Patient

context Patient::InsertPatient(x : EventService, y : Nurse, z : Patient) : Boolean pre InsertP: x.nurseĺ size > 0 and x.patientĺ size < 15 and y.patientĺ size < 3

FIG. 3.13 – Insertion d’un Patient

La figure 3.14 d´ecrit une configuration possible de l’architecture PMS apr`es l’ex´ecution de l’op´eration de reconfiguration Insert Patient.

z:Patient y:Nurse

x:EventService

p:Patient

e:EventService

FIG. 3.14 – Une configuration possible apr`es l’insertion d’un Patient

3.4.2.3 Insertion d’une infirmi`ere

Cette op´eration de reconfiguration permet d’ins´erer une instance de composant de type Nurse et de la lier `a une instance de composant de type EventService quelconque (devant exister dans le syst`eme) comme pr´ecis´e dans la partie «Guards». Pour appliquer cette r`egle, on doit v´erifier que l’instance de composant EventService en question ne contient

« ReconfigurationOperationName » Insert_Nurse(x,y)

« require & delete » « require & preserve » « insert »

x:EventService

y:Nurse

« Guards »

context Nurse::InsertNurse(x : EventService, y : Nurse) : Boolean pre InsertN: EventService.allInstancesĺ size > 0 and x.nurseĺ size < 5

FIG. 3.15 – Insertion d’une Infirmi`ere

La figure 3.16 d´ecrit une configuration possible de l’architecture PMS apr`es l’ex´ecution de l’op´eration de reconfiguration Insert Nurse.

z:Patient y:Nurse

x:EventService

p:Patient n:Nurse

e:EventService

FIG. 3.16 – Une configuration possible apr`es l’insertion d’une Infirmi`ere

3.4.2.4 Transfert d’un patient

Un patient peut quitter un service vers un autre (sans pour autant ˆetre supprim´e du syst`eme). Cette op´eration de reconfiguration permet de transf´erer une instance de com-posant de type Patient vers une instance de comcom-posant de type EventService. Pour ce faire, nous supprimons une connexion repr´esent´ee dans la partie«require & delete» et nous ajoutons une nouvelle connexion dans la partie«insert».

Le transfert d’une instance de type Patient est ex´ecut´e seulement s’il y a une instance

Nurse dans le nouveau EventService ( y :Nurse ) dont le nombre d’instance de type

Patient en charge est strictement inf´erieur `a trois : y.patient → size < 3 .

En plus, il faut v´erifier que le nombre d’instance de type Patient connect´e au

nou-veau EventService est strictement inf´erieur `a 15 : w.patient → size < 15 . La

« ReconfigurationOperationName » Transfert_Patient(x,w,z,y)

« require & delete » « require & preserve » « insert »

z:patient

y:Nurse

E tS i

w:EventService

« Guards »

context Patient::TransfertPatient(x : EventService, w: EventService, z : Patient, y : Nurse) : Boolean pre TransfertP: w.patientĺ size < 15 and w.nurseĺ size > 0 and y.patientĺ size < 3

x:EventService

FIG. 3.17 – Transfert d’un Patient

3.4.2.5 Transfert d’une infirmi`ere

« ReconfigurationOperationName » Transfert_Nurse(y,x,w)

« require & delete » « require & preserve » « insert »

y:Nurse

x:EventService

« Guards »

context Nurse::TransfertNurse(x : EventService w: EventService y : Nurse) :

w:EventService

context Nurse::TransfertNurse(x : EventService, w: EventService, y : Nurse) : Boolean pre TransfertN: y.patientĺ size = 0 and w.nurseĺ size < 5

FIG. 3.18 – Transfert d’une Infirmi`ere

Une infirmi`ere peut quitter un service vers un autre (sans pour autant ˆetre supprim´ee du syst`eme). Comme le montre la figure 3.18, cette op´eration de reconfiguration

per-met de transf´erer une instance de composant de type Nurse vers une instance de compo-sant de type EventService seulement si elle n’a pas une instance Patient en occupation

y.patient → size = 0 et que la nouvelle instance de EventService contient

moins de cinq instances de type Nurse : w.nurse → size < 5 .