• Aucun résultat trouvé

4.2 Inter-Validation

5.1.1 Transformation de la partie graphique vers Z

Dans ce qui suit, nous introduisons les r`egles de transformation du style architectural et des op´erations de reconfiguration vers la notation Z.

5.1.1.1 Style architectural

La transformation du style architectural vers la notation Z cherche `a pr´eserver les types de composants, les types de connexions et les contraintes architecturales. Cette transformation, comme le montre la figure 5.2, ob´eit `a un ensemble de r`egles.

Compi Style_Name « ArchitecturalStyleName » R1 R3 sub_Compi:FCompi sub_Compj:FCompj sub_Compn:FCompn

[Compi, Compj, Compn]

R2 « ArchitecturalStyleFeature » Style_Name R5 R4 Compn Compj

dom CompiToCompj6sub_Compi\ran CompiToCompj6sub_Compj dom CompnToCompi6sub_Compn\ran CompnToCompi6sub_Compi dom CompnToCompj6sub_Compn\ran CompnToCompj6sub_Compj « Guards »

Contraintes OCL

CompiToCompj: CompiļCompj CompnToCompi: CompiļCompn CompnToCompj: CompjļCompn

Style Architectural

FIG. 5.2 – Transformation du style architectural vers la notation Z

¥R `egle1 : D ´efinition des types basiques de composants

Les types basiques de composants sont d´etermin´es `a partir des noms des types des com-posants figurant dans la partie«ArchitecturalStyleFeature».

[Compi,Compj, ...,Compn]

¥R `egle2 : D ´efinition du nom du sch ´emaZ

Cette r`egle g´en`ere le squelette du sch´ema Z. Le nom du sch´ema est d´etermin´e `a partir du nom du style donn´e par la partie«ArchitecturalStyleName».

Style Name

¥R `egle 3 : D ´efinition des ensembles de composants

Chaque type de composant pr´esent´e dans la partie«ArchitecturalStyleFeature »est

tra-duit en un ensemble fini F de composants. Le type de chaque ensemble de composant

g´en´er´e correspond `a un type basic d´etermin´e `a partir de la r`egle 1. Le nom de chaque ensemble de composant est pr´e-fix´e par “sub” suivi par le nom de type de composant. Ces ensembles sont d´eclar´es dans la partie d´eclarative du sch´ema Z.

Style Name

sub Compi:FCompi sub Compj:FCompj sub Compn:FCompn

¥R `egle 4 : D ´efinition des relations

Chaque connexion pr´esent´ee dans la partie«ArchitecturalStyleFeature»est transform´ee en une relation, CompiToCompj :CompiCompj, dans la partie d´eclarative du sch´ema

Z. La source de la relation, Compi, porte le nom du type de composant ayant l’interface

requise et la cible de la relation, Compj, porte le nom du type de composant ayant l’inter-face fournie. Le nom de la relation est la clause “To” suffix´ee par la source et pr´efix´ee par la cible.

Style Name

sub Compi:FCompi sub Compj:FCompj sub Compn:FCompn

CompiToCompj:CompiCompj CompnToCompi:CompnCompi CompnToCompj:CompnCompj

¥R `egle 5 : D ´efinition des contraintes sur les relations

Pour exprimer des contraintes sur les relations, le langage Z offre les deux fonctions dom(domaine) etran(image). Domrepr´esente l’ensemble de d´epart etran repr´esente l’ensemble d’arriv´ee. Le domaine d’une relationR: T ↔ U est l’ensemble de tous les ´el´ements dansTqui sont li´es au moins `a un ´el´ement dansU. L’image de la relationRest l’ensemble de tous les ´el´ements dansUli´es au moins `a un ´el´ement dansT[141].

Chaque relation a un domaine et une image [141]. En se basant sur la troisi`eme et la qua-tri`eme r`egle, cette r`egle d´efinit, dans la partie pr´edicative du sch´ema Z, les propri´et´es d’in-variance sur l’ensemble de d´epart (domaine) et l’ensemble d’arriv´ee (image) de chaque relation. Chaque propri´et´e exprime l’inclusion du domaine, respectivement de l’image, de la relation dans le sous-ensemble correspondant d´ej`a d´efini dans la partie d´eclarative.

Style Name

sub Compi:FCompi sub Compj:FCompj sub Compn:FCompn

CompiToCompj:CompiCompj CompnToCompi:CompnCompi CompnToCompj:CompnCompj

dom CompiToCompjsub Compiran CompiToCompjsub Compj dom CompnToCompisub Compnran CompnToCompisub Compi dom CompnToCompjsub Compnran CompnToCompjsub Compj

Afin de mieux illustrer l’approche de transformation, nous revenons `a notre exemple et nous traduisons la partie graphique du style architectural du syst`eme PMS vers la notation

Z. L’application des r`egles de transformation de[R1]jusqu’`a[R5]donne le sch´ema Z suivant.

[EventService,Patient,Nurse] [R1]

PMS[R2]

sub EventService:FEventService [R3]

sub Patient:FPatient sub Nurse:FNurse

EventServiceToPatient:EventServicePatient [R4]

EventServiceToNurse:EventServiceNurse PatientToEventService:PatientEventService NurseToEventService:NurseEventService PatientToNurse:PatientNurse

NurseToPatient:NursePatient

dom EventServiceToPatientsub EventService [R5]

ran EventServiceToPatientsub Patient

dom EventServiceToNursesub EventService

ran EventServiceToNursesub Nurse

dom PatientToEventServicesub Patient

ran PatientToEventServicesub EventService

dom NurseToEventServicesub Nurse

ran NurseToEventServicesub EventService

dom PatientToNursesub Patient

ran PatientToNursesub Nurse

dom NurseToPatientsub Nurse

ran NurseToPatientsub Patient

FIG. 5.3 – Transformation du style architectural vers un sch´ema Z

5.1.1.2 Op´eration de reconfiguration

Nous d´ecrivons les ´etapes de transformation d’une op´eration de reconfiguration vers la notation Z. Cette transformation, comme le montre la figure 5.4, est bas´ee sur un ensemble de r`egles de [R6] jusqu’`a [R17] permettant de g´en´erer automatiquement un sch´ema d’op´eration Z.

OperationName

ǻStyle_Name

inst_Compi

« ReconfigurationOperationName »

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

R6 R7 R8 R9 inst Comp i?8sub Compi OperationName inst_Compi?: Ci inst_Compj?: Cj inst_Compn?: Cn inst_Compj inst_Comp n inst_Compi?8sub_Compi inst_Compj?8sub_Compj R11 R12 R13

(inst_Compi?, inst_Compn?) 8CompiToCompj sub_Compn’ = sub_Compn*{inst_Compn?}

R10

inst_Compn?‹sub_Compn

sub_Compj’ = sub_Compj\ {inst_compj?}

b C b C Opération de Reconfiguration « Guards » R13 R14 R15 R16 R17

CompnToCompi’ = CompnToCompi*{(inst_Compi?,inst_Compn?)}

sub_Compi’ = sub_Compi

CompiToCompj’ = CompiToCompj\ {(inst_Compi?,inst_Compj?)}

R17

FIG. 5.4 – Transformation d’une op´eration de reconfiguration vers un sch´ema d’op´eration Z

¥R `egle 6 : D ´efinition du nom de l’op ´eration de reconfiguration

Cette r`egle g´en`ere le squelette du sch´ema Z. Le nom du sch´ema est d´etermin´e `a partir de

«ReconfigurationOperationName».

ReconfigurationOperationName

¥R `egle 7 : D ´efinition du changement de l’ ´etat de l’architecture

Une architecture logicielle peut ´evoluer apr`es l’ex´ecution d’une op´eration de reconfigu-ration. Cette ´evolution est exprim´ee en Z par le caract`ere∆. Le changement de l’´etat de l’architecture est pr´esent´e alors, dans la partie d´eclarative du sch´ema d’op´eration Z, par ∆suivi par le nom du style donn´e par«ArchitecturalStyleName».

ReconfigurationOperationName

Style Name

¥R `egle 8 : D ´efinition des param `etres d’entr ´ee

Cette r`egle d´efinit les instances de composants pr´esent´ees dans la partie « Require & Delete», «Require & Preserve » et«Insert »en tant que param`etres d’entr´ee pour le sch´ema d’op´eration Z.

Chaque instance de composant est transform´ee, dans la partie d´eclarative du sch´ema d’op´eration Z, vers le nom de l’instance de composant suffix´e par “ ?”. Le type de chaque composant est le type abstrait associ´e au composant qui lui correspond.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn

¥R `egle 9 : D ´efinition des pr ´e-conditions sur l’appartenance des composants

Cette r`egle permet d’ajouter des pr´e-conditions exprimant l’appartenance des instances de composants de la partie « Require & Delete » et « Require & Preserve » `a l’en-semble des composants de l’architecture. Ces pr´e-conditions sont ajout´ees dans la par-tie pr´edicative du sch´ema d’op´eration Z sous la forme “inst Compsub Comp”. Avec inst Comp d´esigne une instance de composant et sub Comp d´esigne l’ensemble de type de composant.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj

¥R `egle 10 : D ´efinition des pr ´e-conditions sur la restriction des composants

Cette r`egle permet d’ajouter des pr´e-conditions exprimant la non appartenance des ins-tances de composants de la partie«Insert» `a l’ensemble des composants de l’architec-ture. Ces pr´e-conditions sont ajout´ees dans la partie pr´edicative du sch´ema d’op´eration Z sous la forme “inst Comp6∈sub Comp”.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

¥R `egle 11 : D ´efinition des pr ´e-conditions sur les relations

Cette r`egle permet de transformer les connexions existantes entre la partie «Require & Delete»et«Require & Preserve»vers des relations exprim´ees avec la notation Z. Ces relations sont repr´esent´ees en Z sous la forme suivante : “(inst Compi,inst Compj) ∈

CompiToCompj”. Avec (inst Compi,inst Compj) est la relation entre les composants

inst Compi et inst Compj et CompiToCompj d´efinit l’ensemble des relations reliant les

composants de type Compi et Compj.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj

¥R `egle 12 : D ´efinition des post-conditions li ´ees `a l’insertion des composants

L’insertion d’un composant en Z est traduite par la r`egle suivante : “sub Comp =

sub Compinst Comp”. Avec sub Comp d´ecrit l’ensemble des composants r´esultants

apr`es l’ex´ecution de l’op´eration de reconfiguration. sub Comp repr´esente l’ensemble des composants avant l’ex´ecution de l’op´eration de reconfiguration et inst Comp d´esigne une instance de composant `a ins´erer dans le syst`eme.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj sub Comp

n=sub Compn∪ {inst Compn?}

¥R `egle 13 : D ´efinition des post-conditions li ´ees `a la suppression des composants

La suppression d’un composant en Z est traduite par la r`egle suivante : “sub Comp =

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj sub Comp

n=sub Compn∪ {inst Compn?}

sub Comp

j=sub Compj\ {inst Compj?}

¥R `egle 14 : D ´efinition des post-conditions li ´ees au non changement des compo-sants

Si un ensemble de composants, figurant dans l’architecture n’a subi aucun changement apr`es l’ex´ecution de l’op´eration de reconfiguration, alors ces composants seront exprim´es par la r`egle suivante : “sub Comp =sub Comp”.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj sub Comp

n=sub Compn∪ {inst Compn?}

sub Comp

j=sub Compj\ {inst Compj?}

sub Comp

i=sub Compi

¥R `egle 15 : D ´efinition des post-conditions li ´ees `a l’insertion des connexions

L’insertion d’une connexion en Z est traduite par la r`egle suivante : “CompiToComp

j =

CompiToCompj∪(inst Compi,inst Compj)”. Avec CompiToComp

j d´ecrit la relation qui

d´efinit l’ensemble des connexions reliant les composants de type Compi et Compj

et (inst Compi,inst Compj) d´ecrit la relation `a ins´erer entre l’instance du composant

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj sub Comp

n=sub Compn∪ {inst Compn?}

sub Comp

j=sub Compj\ {inst Compj?}

sub Comp

i=sub Compi CompnToComp

i =CompnToCompi∪ {(inst Compn?,inst Compi?)}

¥ R `egle 16 : D ´efinition des post-conditions relatives `a la suppression des connexions

La suppression d’une relation en Z est traduite par la r`egle suivante : “CompiToComp

j =

CompiToCompj\(inst Compi,inst Compj)”. Avec(inst Compi,inst Compj)d´ecrit la

re-lation `a supprimer suite `a une op´eration de suppression d’une connexion. inst Compi et

inst Compjrepr´esentent les instances des composants que nous d´esirons d´econnecter.

ReconfigurationOperationName

Style Name

inst Compi? :type Compi inst Compj? :type Compj inst Compn? :type Compn inst Compi?∈sub Compi inst Compj?∈sub Compj inst Compn?6∈sub Compn

(inst Compi?,inst Compj?)∈CompiToCompj sub Comp

n=sub Compn∪ {inst Compn?}

sub Comp

j=sub Compj\ {inst Compj?}

sub Comp

i=sub Compi CompnToComp

i =CompnToCompi∪ {(inst Compn?,inst Compi?)}

CompiToComp

j=CompiToCompj\ {(inst Compi?,inst Compj?)}

¥ R `egle 17 : D ´efinition des post-conditions relatives au non changement des connexions

Si une connexion, figurant dans l’architecture, n’a subi aucun changement au cours de l’op´eration de reconfiguration, alors nous exprimons ce cas par la r`egle suivante : “CompiToComp

j =CompiToCompj”. Ce cas n’est pas trait´e dans l’exemple pr´esent´e dans

Nous revenons `a l’exemple du PMS et nous traduisons la partie graphique de l’op´eration de reconfiguration Inser Patient vers la notation Z. L’application des r`egles de transfor-mation successivement de[R6]jusqu’`a[R17]donne le sch´ema d’op´eration Z pr´esent´e dans la figure 5.5 suivante.

Insert Patient[R6] PMS [R7] x? :EventService [R8] y? :Nurse z? :Patient x?∈sub EventService [R9] y?∈sub Nurse z?6∈sub Patient [R10] (x?,y?)∈EventServiceToNurse [R11] (y?,x?)∈NurseToEventService

sub Patient′=sub Patient∪ {z?} [R12]

sub EventService =sub EventService [R14]

sub Nurse′=sub Nurse

EventServiceToPatient =EventServiceToPatient∪ {(x?,z?)} [R15] PatientToEventService′=PatientToEventService∪ {(z?,x?)} NurseToPatient′=NurseToPatient∪ {(y?,z?)} PatientToNurse′=PatientToNurse∪ {(z?,y?)} NurseToEventService′=NurseToEventService [R17] EventServiceToNurse′=EventServiceToNurse

FIG. 5.5 – Transformation de l’op´eration Insert Patient vers un sch´ema d’op´eration Z