1. Introduction :
De ce fait, nous proposons dans ce papier, un modèle générique, qui n’est plus
complexe, orienté composant, qui permet de réaliser des applications multi
composant, extensible et adaptable aux différents environnements ainsi qu’aux
contextes, tout en passant par une reconfiguration automatique. Nous avons introduit
1
la notion du Contrôleur dans une couche, qui fait la sélection des composants à
assembler et maintenir l’état de l’application, et sans déterminer le rôle de chaque
composant, c’est-à-dire, sans construire déjà des composants liés et assemblés, ce
qui rend en fait, la tâche du développeur de l’application difficile.
De notre part, nous avons proposé un composant dit Composant Intelligent, dans
la couche Contrôleur, assurant le contrôle, la gestion du cycle de vie et qui connait
les différents composants, incluant les trois interfaces qui sont respectivement,
BindingCotroller, LifeCyleController et ContentController.
En effet, nous avons introduit une notion, qui s’appelle Conteneur, qui répond aux
besoins de réutilisation et de configuration de l’exécution de composants et qui gère
le cycle de vie des composants.
2. Modèle générique :
Nous avons proposé un modèle qui permet la configuration, la sélection des
composants appropriés, l’assemblage et l’adaptation automatiques d’applications à
base de composants logiciels. Chaque partie de ce modèle joue un rôle et réalise
une activité, afin de construire une application à base de composants qui satisfait
une fonctionnalité du système.
Tout cela, dans le but de générer un patron qui respecte tous les aspects d’un
système informatique et les contraintes qu’il peut confronter. Un modèle qui est
capable d’être projeté sur toutes les plates formes et indépendant de tout un langage
de programmation.
2
Contexte interne Contexte externe
Assemblage de composants
Contexte
(1)
Contrôleur
Conteneur
Modèle de Configuration de l’Application
3. Les Couches-Composites :
3
assemblage. Cette description sous forme : Types de composants, leurs ports ainsi
que la signature des interfaces décrites à l’aide du langage OMG Interface
Definition Language (OMG IDL 3.0). Le rôle principal de cette couche est de bien
présenter chaque composant qui va être assemblé pour réaliser la fonctionnalité
voulue et du coup de l’application.
Dans le langage IDL, il y a des éléments des composants à décrire qui fournissent
toutes les informations nécessaires (Nom, Type, Interface, Nom Composant,…)
pour l’utilisation de ce composant lors d’un appel, en vue de répondre à un besoin de
l’utilisateur. Et conformément à la démarche MDA (Model driven
architecture) [MDA], notre modèle à couche est un modèle indépendant
de toute plate-forme (PIM). Le concepteur peut adapter le modèle
spécifique (PSM) obtenu, en particulier en définissant ses choix
d'implantation.
Pour bien comprendre le rôle de cette couche dans notre modèle, nous proposons
un exemple d’un composant logiciel, qui remplit une fonctionnalité dans un système
informatique. On prend une simple application appelée ANNUAIRE [COR], comme
étant un répertoire gérant la liste des personnes, avec des propriétés comme : Nom,
information, Email, Téléphone. Dans cette application, on peut créer plusieurs
répertoires, chacun est désigné par un nom (libellé). On peut même utiliser un
répertoire via son interface : ajouter, supprimer, modifier, obtenir, lister des
personnes. Ce composant est décrit en langage Interface Definition Language
(OMG IDL 3.0), afin d’être programmé en un autre langage selon les besoins.
4
Fichier annuaire.idl
module annuaire {
};
interface Repertoire {
raises ExisteDeja ;
}; // fin interface
}; // fin module
5
3.1 Couche-Composite : Conteneur Logique
Entre autres, il encapsule les composants qui ont rôle à remplir pour répondre à un
service. Il est doté aussi d’un buffer qui lui permet de gérer tous les éléments
composants qui sont en mode connecté ou déconnecté ainsi qu’une cache mémoire
afin d’optimiser les performances d’exécution.
6
Cette couche est considérée la plus importante de ce modèle générique, pour une
application à multi composants. Il inclut un composants nommé : Composant de
Contrôle. En plus des interfaces connues dans un composant, ce dernier dispose
d’une liste des interfaces de contrôle incluant, entre autres, une interface dédiée à la
gestion du cycle de vie (LifecycleController -LC-), à la liaison entre instances
(BindingController -BC-) et au contrôle du contenu (ContentController -CC-) dans
le cas où le composant serait composite [HUM]. D’ailleurs, grâce à l’interface
BindingController que cette couche fait son rôle essentiel. De ce fait, cette interface
assure les liaisons entre les composants avec d’autres composants. On pourrait dire
c’est un composant intelligent. Il connaît la spécification de chaque composant
(Configuration), en terme de propriétés fonctionnelles et extra-fonctionnelles et il
dirige les décisions d’adaptation selon le contexte fourni qui reflète aussi bien les
informations sur les ressources matérielles (CPU disponible, bande passante, etc.)
En fait, « Le Contexte n’est pas simplement l’état d’un environnement prédéfini avec
un ensemble fixe de ressources d’interaction. Il fait partie d’un processus
d’interaction avec un environnement en perpétuel changement composé de
ressources reconfigurables, migrables, distribuées et multi-échelles » [COU].
7
seulement pour affecter les décisions d’adaptation mais aussi pour déclencher les
adaptations.
4. Synthèse :
User 9 3 Contexte
1-2
7-8
4-5-6
Contrôleur
Conteneur
MCA
8
1. L’utilisateur lance une requête en vue d’obtenir un service.
9
Conclusion et perspective :
Dans ce papier, nous avons introduit une approche, qui présente le modèle sous
forme de quatre couches, chaque partie de ce modèle accomplit une mission. Parmi
les fonctionnalités qu’il est censé à appliquer, faire l’assemblage approprié des
composants, adaptation dynamique avec l’environnement d’exécution et du contexte.
Le modèle proposé combine les avantages de l’approche du moteur MADCAR
[GRO] et le framework Fractal [HUM] et bien sûr le développement à base de
composants.
Dans les prochaines études, nous comptons porter plus de détails, sur la couche du
Contrôleur (Composant Intelligent), avec les différentes interfaces de ce composant,
en l’occurrence, BindingController, LifeCyleController et ContentController,
sachant que chacune de ces interfaces joue un rôle défini, pour accomplir sa
mission. Et sans oublier, la couche Conteneur, qui contribue énormément, dans ce
modèle, pour la réalisation d’une application multi composant. Actuellement, Cette
notion se trouve dans de nombreuses applications modèles à composants. Parmi
ces modèles, certains sont destinés à des domaines d’applications spécifiques, tels
que COM, EJB, CCM et .NET tandis que d’autres se veulent plus universels comme
Fractal [DAH]. Et Nous allons enfin aborder, l’aspect Contexte de ce modèle
générique, qui permet une adaptation dynamique avec les différentes contraintes.
10
Bibliographie :
[BRU] Bruneton E., Coupaye T., Stefani J.-B., The Fractal Composition
Framework Version 2.0-3, ObjectWeb Consortium, Juillet 2004.
11
12