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 PREDEFINIESLes 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 lé 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 SERVICESFigure 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