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 .