• Aucun résultat trouvé

CHAPITRE 01 : LANGAGES DE DESCRIPTION D’ARCHITECTURE ET INGENIERIE DIRIGEE PAR

2. Fractal

Fractal [BRU02] est un modèle de composants développé par France Télécom R&D et l’INRIA. Contrairement à d’autres modèles comme les EJB ou CCM dont les composants sont plutôt de moyenne granularité et destinés aux applications de gestion tournées vers l’Internet, la granularité des composants Fractal est quelconque. Leurs caractéristiques font qu’ils conviennent aussi bien à des composants de bas niveau (par exemple un pool d’objets) que de haut niveau (par exemple une IHM complète). Le but de Fractal est de développer et gérer des systèmes complexes comme les systèmes distribués. Fractal est composé de deux modèles : un modèle abstrait et un modèle d’implantation.

Par analogie avec la biologie, un composant Fractal est une cellule avec un plasma entouré par une membrane. Le plasma peut contenir d’autres cellules. Une membrane contrôle et gère son plasma. En théorie, un composant peut appartenir à deux ou plusieurs plasmas différents. Chaque membrane définit un contexte de nommage et possède des interfaces internes et externes. Les cellules interagissent à l’aide de signaux échangés par les interfaces.

Page 39

Fractal fournit un langage de description d’architecture (ADL) dont la syntaxe XML permet de décrire des assemblages de composants. Julia [BRU02] est l’implantation de Fractal en Java.

2.1. Composants Fractal

Un composant Fractal est généralement composé de deux parties : une membrane qui possède des interfaces fonctionnelles et des interfaces permettant l’introspection et la configuration (dynamique) du composant, et un contenu qui est constitué d’un ensemble fini de sous-composants (cf. figure 1.3).

Figure 1.3. Représentation d’un composant Fractal [BRU02]

Le modèle Fractal fournit deux mécanismes permettant de définir l’architecture d’une application : l’imbrication (à l’aide des composants composites) et la liaison. La liaison est ce qui permet aux composants Fractal de communiquer. Fractal définit deux types de liaisons : primitive et composite. Les liaisons primitives sont établies entre une interface client et une interface serveur de deux composants résidant dans le même espace d’adressage. Par exemple, une liaison primitive dans le langage C (resp. Java) est implantée à l’aide d’un pointeur (resp. référence). Les liaisons composites sont des chemins de communication arbitrairement complexes entre deux interfaces de composants. Les liaisons composites sont constituées d’un ensemble de composants de liaison (e.g. stub, skeleton) reliés par des liaisons primitives.

2.2. Assemblage de composants

Le langage Fractal ADL permet de décrire, à l’aide d’une syntaxe XML, des assemblages de composants Fractal.

<definition name="AbstractClientServer" extends="RootType">

<component name="client" definition="ClientType"/> <!-- pas d'implémentation --> <component name="server" definition="ServerType"/> <!-- pas d'implémentation --> <binding client="this.m" server="client.m"/>

<binding client="client.s" server="server.s"/> </definition>

Page 40

Figure 1.5. Assemblage Fractal correspondant à l’ADL de la figure 1.4 [BRU02]

La figure 1.5 donne un exemple de définition réalisée à l’aide de Fractal ADL. Le composant décrit est un composite dont le nom est BasicClientServer. Ce composite possède une interface serveur, de nom m. Par ailleurs, le composite encapsule deux composants : Client et Server. La définition du composant Client est intégrée à celle du composant BasicClientServer : le composant a deux interfaces (m et s), il possède une partie de contrôle de type primitive. La définition du composant Server suit le même principe avec une interface serveur s. Enfin, la description ADL mentionne deux liaisons : entre les interfaces m du composite et du Client et entre les interfaces s du Client et du Server.

2.3. Evaluation

Fractal [COU06] propose différentes approches basées sur la séparation des préoccupations. L’aspect structurel est pris en compte dans Fractal ADL [COU07]; les assertions sont traitées dans ConFract [COL05] et enfin la dynamique est étudiée dans Vercors [BAR07] ou Fractal/SOFA [BUR08].

Fractal utilise un système de typage qui s’avère efficace pour trois raisons : tout d’abord, ce système vérifie statiquement la validité des interconnexions et leur conformité au typage des entrées et des sorties des composants. Deuxièmement, le typage impose des restrictions d’accès aux entités du système.

Une caractéristique originale du modèle Fractal est qu’il permet la construction des composants partagés. Un composant partagé est un composant qui est inclus dans plusieurs composites. L'imbrication est possible grâce à la notion de composant composite par laquelle on désigne un composant qui contient des sous-composants.

Le modèle Fractal fournit des avantages de réutilisation et tend à offrir une composition hiérarchique. La notion de configuration n’existe pas dans Fractal, l’architecture est définie comme un composant composite. Un autre inconvénient de ce modèle est le fait qu’il se limite à une définition implicite des connecteurs en ne considérant que les composants et leurs structures. Ainsi, ni les propriétés non- fonctionnelles ni la mise à jour dynamique des composants ne sont prises en compte dans Fractal.

Le tableau 1.2 résume les avantages et les inconvénients de l’ADL Fractal :

Avantage

• Modèle général, avec peu de restrictions ;

• Bonne séparation des aspects architecture et déploiement ;

• Vérifications statiques possibles (liaisons : invalides, manquantes, etc.) ; • Capacités d’administration : observation, contrôle, reconfiguration dynamique.

Page 41

• Ouvert et adaptable : Les services extra-fonctionnels peuvent être personnalisés. • prise en charge des propriétés non fonctionnelles au travers des contrôleurs, • modélisation des ressources à partir du concept de composant partagé.

Inconvénient

• L'architecture n'est pas très visible

• Non prise en compte de la vérification de la compatibilité entre composants lors de l’assemblage.

• Absence de la notion de connecteur

• Les propriétés non-fonctionnelles ne sont pas prises en compte, pas plus que la mise à jour dynamique des composants.

TABLE 1.2. AVANTAGES ET INCONVENIENTS DE FRACTAL