TP 2-1 Le système de composants Fractal et son implémentation de

publicité
TP 2-1
Le système de composants Fractal et son implémentation de référence Julia.
1 Introduction
Les composants permettent la construction de logiciels à partir de l'assemblage d'entités
logicielles réutilisables. Le but est d'obtenir des entités logicielles composables, déployables
et configurables tout en conservant la performance et la légèreté des applications. Il existe de
nombreux modèles basés sur les composants tels que COM, EJB, CCM, .NET (destinés à des
domaines d'applications spécifiques). Le système de composants Fractal est quant à lui plus
universel.
2 Présentation
2.1 Le système de composants Fractal
Fractal est un modèle de composants extensible pour construire, déployer et administrer
des systèmes logiciels complexes (intergiciels, systèmes d'exploitation par exemple). Il
a été défini par l'INRIA et France Telecom R&D. Ce système de composants définit
donc un framework pour la construction d'applications à partir de composants en
permettant de créer des compositions.
Il existe une spécification de ce modèle de composants ainsi que de nombreuses
implémentations en différents langages (Java, C, C++, SmallTalk, langages .NET). A ce
modèle de composants est ajouté un langage de description d'architecture, Fractal ADL,
basé sur une syntaxe XML extensible.
Les principales caractéristiques de ce modèle de composants sont :
- les composants composites (composants contenant des sous-composants),
- les composants partagés (sous-composants de plusieurs composites),
- la capacité d'introspection,
- les capacités de configuration et reconfiguration.
Le modèle Fractal est extensible. Il permet la personnalisation des capacités de contrôle
des composants de l'application. Les fonctionnalités décrivant les capacités des
composants sont décrites au sein d'entités nommées contrôleurs.
On peut distinguer différents rôles avec le développement d'applications Fractal :
- les développeurs de composants applicatifs s'intéressent à la construction
d'applications et de systèmes à l'aide du modèle de composants Fractal. Ils utilisent
l'API Fractal et construisent les applications à l'aide du langage de description
d'architecture Fratal ADL.
- les développeurs de contrôleurs s'intéressent à la personnalisation du contrôle offerts
aux composants. Ils développent de nouveaux contrôles afin d'adapter les applications à
différents contextes d'exécution (par exemple avec des ressources plus ou moins
contraintes).
- les développeurs de plates-formes fournissent un environnement permettant
d'exécuter des applications et des systèmes écrits à l'aide de composants Fractal. Un
développeur de plate-forme fournit une implémentation des spécifications Fractal dans
un langage de programmation et des mécanismes pour personnaliser le contrôle.
Le développement avec le modèle Fractal permet l'écriture de composants et des
liaisons pour la communication entre composants.
2.2 Composant Fractal
Un composant Fractal est une entité d'exécution définie par une ou plusieurs interfaces.
Une interface implémente un type d'interface spécifiant ses fonctionnalités. Deux
catégories d'interfaces sont présentes :
- les interfaces décrivant les services fournis par le composant, appelées interfaces
serveurs,
- les interfaces décrivant les services requis par le composant, appelées interfaces
clients.
De plus, un composant Fractal est défini en deux parties :
- une partie possédant des interfaces fonctionnelles et des interfaces pour l'introspection
et la configuration, appelée membrane,
- l'autre constituée d'un ensemble fini de sous-composants, appelée contenu.
Les interfaces de la membrane d'un composant peuvent être internes (accessibles par ses
sous-composants) ou externes (accessibles depuis l'extérieur du composant).
Le modèle Fractal fournit deux moyens de spécifier l'architecture de l'application :
- l'imbrication de sous-composants au sein de composants composites,
- la liaison, permettant aux composants de communiquer, qui peut être soit primitive,
soit composite.
Lorsqu'un lien est établi entre une interface serveur d'un composant et une interface
client d'un second composant, il s'agit d'une liaison primitive. Une liaison composite est
quant à elle représentée par un chemin complexe entre deux interfaces et est composée
d'un ensemble de composants de liaisons reliés entre eux par des liaisons primitives.
La spécification Fractal définit un certain nombre de niveaux de contrôles pour la
définition d'un composant :
- la membrane du composant défini peut ne posséder aucun contrôleur (les capacités
d'introspection et d'intercession ne sont donc pas présentes),
- au second niveau de contrôle suivant, une interface Component est fournie et donne
accès aux interfaces clients et serveurs du composant,
- au niveau de contrôleur supérieur, le composant possède des interfaces réifiant sa
structure interne et permettant de contrôler son exécution.
Plusieurs types de contrôleurs sont définis dans la spécification du modèle Fractal :
- les contrôleurs d'attributs du composant,
- les contrôleurs de liaisons (gestion des liaisons primitives entre deux interfaces de
composants),
- les contrôleurs de contenu (gestion des sous-composants d'un composant composite),
- les contrôleurs de cycle de vie (gestion des phases comportementales d'un composant:
démarrer ou arrêter l'exécution d'un composant par exemple).
De plus, des contrôleurs spécifiques peuvent être implémentés pour étendre ou
spécialiser les capacités d'un composant.
2.3 Le langage de description d'architecture : Fractal ADL
2.4 Julia : l'implémentation de référence Java de Fractal
Julia est l'implémentation de référence du modèle de composants Fractal pour des
applications Java. Il s'agit d'un canevas logiciel pour programmer les membranes de
composants Fractal. Son but est de simplifier le développement d'applications Fractal à
travers la génération de classes de support. Un ensemble de contrôleurs est fourni, ainsi que
des mécanismes d'optimisation pour la configuration des composants (en allant de la
configuration entièrement statique et donc performante à la configuration dynamique et moins
performante).
Une application Fractal est conçue à partir d'un ensemble de classes qui implémentent la
logique applicative des composants, une ou plusieurs classes de coordination et une classe
primaire, nommée bootstrap (pour le démarrage de l'application).
Les classes de support sont nécessaires aux classes Java qui implémentent la logique
applicative pour se conformer au système de composants Fractal. Les classes de coordination,
quant à elle, interagissent avec l'API Fractal pour la création des types de composants, la
création et la configuration des instances de composants afin de construire l'application. Le
langage de description d'architecture Fractal ADL permet de simplifier l'écriture des classes
de coordination.
Avec Julia, un composant Fractal est donc défini à partir de plusieurs objets Java :
- les objets implémentant le contenu du composant, qui sont soit des sous-composants (si le
composant est un composite), soit des objets Java (si il s'agit d'un composant primitif),
- les objets implémentant les contrôles du composant,
- les objets référençant les interfaces du composant (lui permettant de posséder des références
vers d'autres composants).
Ces objets sont définis grâce à des fabriques de composants (factory en Anglais).
3 Installation et pré-requis
4 Programme exemple
4.1 Description
4.2 Manipulation
4.3 Résultats
5 Autres implémentations
6 Conclusion
Téléchargement