• Aucun résultat trouvé

3 M ETAMODELE DE COMPOSANTS A SERVICES

3. M ETAMODELE DE COMPOSANTS A SERVICES Une spécification composite peut spécifier, par exemple, les composants pour lesquels la

3.2.3 I NSTANCE COMPOSITE

Une instance composite représente une application ou un sous-système au niveau configuration

dans la phase de développement et au niveau exécution dans la phase d exécution). Une instance composite est elle-même une instance qui instancie un composite (une implémentation composite), héritant ainsi des toutes ses caractéristiques et (par transitivité) de celles de sa spécification. En tant

que composite une instance composite contient un ensemble d instances primitives ou composites et

de liaisons entre elles. Parmi ces instances une instance est identifiée comme l instance principale de l instance composite mainInst qui implémente l implémentation principale du composite instancié

Figure 60. Instance composite

Au développement, une instance de composite représente une configuration particulière d un

composite une déclaration d instance composite Une telle déclaration peut spécifier les valeurs des propriétés définies par le composite et un ensemble de déclarations d instances et de liaisons entre

elles A l exécution elle représente l état d exécution actuel d un composite en termes d instances

Une instance composite est spécifie comme une instance primitive à laquelle on ajoute les caractéristiques propres à la configuration/exécution d un composite Elle est définie formellement de

la façon suivante :

Une instance composite est un 7-uplet CInst = <Inst, mInst, Insts, Bnd, CP, CCT, CPF>, où : Inst = <name, I, R, D, P, CT, PF> est l instance primitive de C)nst

m)nst est linstance principale de CInst, tel que

R(Inst) R(mInst) les ressources fournies par mInst sont au moins les ressources fournies de Inst, et ) m)nst m)mpl ) )nst l implémentation de m)nst est l implémentation principale de l implémentation de Inst

Insts est lensemble des instances contenues dans CInst

Bnd = {b1, b2 bn} est un ensemble de bindings entre instances contenues dans CInst, tel que chaque binding bi est un 2-uplet b = <Inst1, Inst2>, où

Inst1)nsts est l origine de la dépendance et )nst2Insts est la destination de la dépendance, tel que d D(Inst1), target(d) = S(Inst2) | target(d) R(Inst2) il existe une dépendance de Inst1 dont la destination (target) est la spécification de Inst2, ou une ressource fournie par Inst2

CP = ICP InstCP est l ensemble des propriétés contextuelles de CInst, où ICP est l ensemble des propriétés contextuelles de l implémentation de )nst et InstCP est l ensemble des propriétés contextuelles définies par CInst

CCT = ICCT InstCCT est l ensemble des contraintes contextuelles de CInst, où ICCT est l ensemble des contraintes contextuelles de l implémentation de )nst et InstCCT est l ensemble des contraintes contextuelles définies par CInst

CPF = ICPF InstCPF est l ensemble des préférences contextuelles de CInst, où ICPF est l ensemble des préférences contextuelles de l implémentation de )nst et InstCPF est l ensemble des préférences contextuelles définies par CInst

L instance CInst est conforme à l implémentation ) de Inst : CInst I, et donc elle est aussi conforme à la spécification S de I : CInst I CInst S

Notre mécanismes automatique de composition, exécuté avant ou durant la phase d exécution

assurent la conformité d une instance composite vis-à-vis de son composite et de sa spécification.

Toutefois toute déclaration d instance créée avant l exécution est vérifiée statiquement lors de sa phase de compilation packaging afin d assurer sa validité

3.2.4 P

ROPRIETES PREDEFINIES

Les types de composants composites possèdent un ensemble de propri étés contextuelles prédéfinies et configurables qui permettent de spécifier la façon de gérer leur contenu. Le Tableau 10 présente ces propriétés ainsi que leur sémantique64.

Ces propriétés peuvent être configurées à partir d une spécification composite (comme dans la description de la Figure 57). Une implémentation composite hérite des propriétés contextuelles

définies par sa spécification composite et peut en ajouter d autres Une instance composite hérite des

propriétés de son implémentation composite et transitivement de celles de sa spécification composite,

et peut en ajouter d autres seulement pour le contrôle d instances

Chacun des composants composites, étant un sous-type d un composant primitif possède aussi

les propriétés prédéfinies du type de composant primitif correspondant (définies dans le Tableau 9). Toutes ces propriétés sont généralement configurées lors de la création des composants.

Propriété Sémantique Im p m e n ta ti on c om p os it e S p é c if ic a ti on c om p os it e static

[true | false | Expression]

Cette propriété indique si la résolution du composant composite (ou des certains composants contenues dans le composant composite, et spécifiés par une expression) doit être effectuée avant l exécution.

La valeur par défaut de cette propriété est false.

resolution [open | closed | Expression]

Cette propriété indique si la résolution du composant composite (ou des certains composants contenues dans le composant composite, et spécifiés par une expression) considère des composants appartenant à d autres composants composites (open). Dans les cas contraire (closed), la résolution du composant composite considère et/ou crée des composants propres.

La valeur de cette propriété est par défaut open (comportement opportuniste). In s ta n c e c om p os it e visibility [blackbox | whitebox | Expression]

Cette propriété définit si tous les composants contenus dans les membres du composant composite (ou seulement des composants particuliers spécifiés par une expression sont visibles à l extérieur La valeur par défaut de cette propriété est whitebox.

Tableau 10. Propriétés contextuelles prédéfinies des composants à services composites

La Figure 61 présente le métamodèle qui factorise tous les concepts présentés dans le concept central de composant à services.

64 Le Tableau 11 présente les propriétés contextuelles prédéfinies gérées par la machine APAM, la plate-forme sur laquelle nous avons projeté notre métamodèle (cf. Chapitre 7 section 2.1).

3.M

ETAMODELE DE COMPOSANTS A SERVICES

Figure 61. Métamodèle de composant à services

Notre métamodèle peut être projeté sur plusieurs langages de programmation. Particulièrement,

nous l avons projeté sur le langage de programmation Java en spécialisant les concepts du modèle pour

ce langage. Par exemple, le nom de la classe Java a été ajouté comme attribut du concept

d implémentation Ce modèle de développement permet ainsi d implémenter un composant à services

simplement comme un POJO qui ne contient que la logique métier du composant : les primitives de

l approche à services dynamique publication, découverte, sélection, liaison) sont masquées. Les développeurs peuvent ainsi se concentrer seulement sur les descriptions des composants et sur

l implémentation de leur logique métier

Les différentes matérialisations de composant à services, primitifs et composites, sont des éléments de premier ordre qui peuvent être décrits de manière abstraite, développés/composés, et

configurés Ces éléments peuvent être packagés afin d être déployés exécutés et gérés par notre environnement d exécution : les différentes matérialisations sont toutes des instances qui coexistent

dans l environnement d exécution

Les concepts présents dans notre métamodèle ont une sémantique constante tout au long du cycle

de vie des composants à services Par conséquent en plus d être utilisé dans un but prescriptif notre

métamodèle est utilisé dans un but descriptif afin d obtenir un modèle homogène qui représente l état d exécution des composants à services65.

65 Les relations selectedSpec, selectedImpl, selectedInst permettent de capturer une partie de l information

descriptive du modèle (les spécifications, implémentations et instances sélectionnées lors du processus de résolution), à la différence des relations hasSpec, hasImpl et hasInstqui capturent une partie de l information