• Aucun résultat trouvé

Composition de connecteurs : le connecteur complexe

2.2 Les connecteurs : une formalisation des interactions

2.2.3 Composition de connecteurs : le connecteur complexe

Un connecteur complexe (dit aussi composite) peut être obtenu par composition de connecteurs primitifs. Il existe des modèles de connecteurs qui autorisent l’intégration d’une entité logicielle dans l’architecture interne d’un connecteur. Cependant, dans notre cadre d’étude, les entités logicielles sont des boîtes noires. Leur intégration dans l’architecture interne d’un connecteur réduit la maîtrise de sa sémantique. Nous excluons donc cette catégorie de travaux de notre étude et considérons qu’un connecteur fournit une vision boîte blanche avec une maîtrise complète de son comportement. De nombreuses approches existent pour définir de tels mécanismes de composition. Nous détaillons deux catégories pour la composition de connecteurs : des modèles de composition hiérarchique et des mo- dèles de composition comportementale.

2.2.3.1 Composition hiérarchique

Un modèle de composition de connecteurs est considéré comme étant hiérarchique si la définition d’un connecteur complexe se fait en regroupant un ensemble de connecteurs de base sous un nouveau nom. Nous proposons d’étudier deux modèles représentatifs de ce type de composition.

Lopes et al. [LWF03] ont proposé une formalisation de la notion de connecteur complexe. Un connecteur simple est conforme au modèle défini dans la plupart des ADLs, c’est à dire, un ensemble de rôles et une partie glue. La contribution originale de leur travail est qu’un connecteur complexe encapsule un ensemble de connecteurs qui forme sa partie glue. Pour illustrer leur modèle, nous pré- sentons un exemple simple d’un connecteur C qui a deux rôles : expéditeur et récepteur. L’entité logicielle A expédie un message à une autre entité B via le connecteur C. Supposons que nous sou- haitions ajouter une compression au transfert de ce message. Lopes et al. proposent que le nouveau connecteur D se construise par une composition du connecteur C. D aurait deux rôles : compression et décompression. La partie glue de nouveau connecteur D sera formulée en utilisant celle du connecteur C. Ceci est illustré par la figure 2.8.

FIGURE2.8 – Composition de connecteurs par encapsulation de connecteurs primitifs

Un autre modèle de composition de connecteur a été défini dans [LUVW06]. Lau et al. proposent la composition de connecteurs dans un modèle hiérarchique. Les connecteurs composites sont des mécanismes complexes de connexion spécialement conçus pour faciliter la communication entre les

composants d’un système en regroupant plusieurs connecteurs de base et/ou complexes. Des connec- teurs basiques peuvent être encapsulés dans une nouvelle entité et être considérés comme un nouveau connecteur complexe (figure 2.9). L’interface du connecteur complexe est l’union des interfaces de ses constituants et son implémentation fait appel à l’implémentation de ses sous-connecteurs. Dans un tel modèle de composition hiérarchique, le connecteur complexe réduit les niveaux de complexité dans l’architecture du système de sorte que la composition est plus efficace. Lau et al proposent un catalogue de connecteurs complexes [LLUE07] tel que exclusive choice sequencer, simple merge sequencer, etc. Par exemple le connecteur complexe Observer de la figure 2.9 encapsule les deux connecteurs PipeetSequencer.

FIGURE2.9 – Connecteur complexe obtenu par un regroupement de connecteurs de base

La contribution de ce modèle de connecteur complexe est que le comportement du connecteur complexe reproduit les comportements de chacun de ses connecteurs internes en respectant leur niveau de hiérarchie. La figure 2.9.(a) montrent que dans le cas où le Pipe invoque l’entité logicielle Co f f eeMaker, il reçoit en retour des données et par la suite va les transmettre au connecteur SEQ. Ce dernier invoque toutes les entités logicielles de type Dispenser de sorte que chaque composant utilise une donnée de pipe. La figure 2.9.(b) reproduit ce comportement en utilisant un connecteur complexe Observer qui est de type Publish-Subscribe. Lorsque le Publisher est invoqué (Co f f eeMaker), les abonnés (Subscribers) doivent être notifiés et doivent s’exécuter les uns après les autres.

'

&

$

%

La limitation des approches proposées est que la définition du connecteur complexe doit être effectuée pendant la phase de conception du système. Cependant, nous avons déjà évoqué que dans notre approche nous allons procéder à la composition des connecteurs pour résoudre les problèmes d’interférences. Donc cette composition de- vra s’effectuer durant l’exécution du système sans l’arrêter. Nous avons besoin d’une approche de composition dynamique de connecteurs.

Les approches de composition dynamique de connecteurs sont axées sur la définition formelle du comportement des connecteurs de base. Nous présentons dans la sections suivante deux approches pour la composition comportementale.

2.2.3.2 Composition comportementale

La composition comportementale des connecteurs propose de combiner les comportements four- nis par chaque connecteur de base pour fournir un nouveau connecteur. Cette composition exige une description formelle du comportement des connecteurs de base. L’approche proposée sera alors forte- ment liée au modèle formel utilisé.

Spitznagel et Garlan [SG03] ont défini un cadre pour la composition de connecteurs. Dans ce modèle, un connecteur est défini par un six-uplet comprenant : son code, des bibliothèques de communication, des services d’infrastructure (système d’exploitation), des données (localisation des participants à la communication), des politiques (par exemple l’ordre d’appel) et un comportement formel. Dans ce modèle, les connecteurs sont composés en utilisant un ensemble de transforma- tions qui sont des opérateurs applicables à une ou plusieurs parties d’un connecteur. Spitznagel et Garlan ont démontré leur approche en combinant des connecteurs en utilisant un ensemble de transformations de base. Par exemple, ils proposent comme opérateur de transformation : Aggregate et Splice. Aggregate est un contrôleur qui active un seul connecteur à un instant donné. L’opérateur Splice permet quant à lui de combiner le code binaire de deux connecteurs c1 et c2dans un nouveau connecteur c3. Ce dernier possède une interface de c1et une autre de c2. La contribution principale de ce travail est la définition d’un ensemble d’opérateurs de transformation qui peuvent être utilisés pour composer des connecteurs primitifs et obtenir un connecteur complexe. Cette composition utilise la description du modèle comportemental des connecteurs. L’approche proposée est fortement liée à leur propre modèle de connecteur. Elle est difficilement exploitable pour l’appliquer à d’autres modèles. Cet obstacle peut être résolu en s’appuyant sur une représentation générique du modèle de connecteur. Une représentation générique du modèle de connecteur a été proposé dans [BSAR06]. La compo- sition dynamique des connecteurs primitifs pour la construction d’un connecteur complexe a été une contribution originale du modèle Reo [BSAR06]. Il propose un modèle formel pour la construction d’un connecteur complexe [SFBK+12]. Dans ce modèle, la composition de connecteurs primitifs est une composition des automates correspondant à leur comportement. La composition des connecteurs ne se limite pas au simple échange d’événements entre les automates de chacun d’entre eux mais plu- tôt permet la définition d’un nouvel automate qui inclut les contraintes de synchronisation exprimées par tous les automates des connecteurs à composer. Ce modèle propose donc la fusion comporte- mentale des connecteurs de base pour construire un nouveau connecteur complexe. Une contribution originale à ce modèle est l’introduction d’un mécanisme de reconfiguration des connecteurs. Ce mé- canisme repose sur un ensemble de règles de transformation de graphes [Tae00]. Un connecteur peut être ajouté ou bien supprimé pendant l’exécution de la même manière que les entités logicielles. Ceci est un critère très important car il permettra au connecteur de suivre la dynamique de l’environnement. Les règles de reconfiguration permettant la modification des connecteurs peuvent être contradictoires les unes par rapport aux autres. Pour cela un mécanisme pour détecter ces éventuels problèmes a été utilisé. Mais il manque la définition d’une solution aux problèmes identifiés.

'

&

$

%

La composition de connecteurs proposée par ce modèle présente plusieurs avantages : (1) La composition de connecteurs primitifs se fait à partir de leur modèle formel d’au- tomates, ceci permet de s’assurer de la validité du comportement du connecteur com- plexe, (2) L’utilisation d’une représentation abstraite du système à l’aide des graphes pour être indépendant de l’implémentation et (3) La composition des connecteurs est dynamique et pourra être modifiées en utilisant un ensemble de règles de transforma- tion de graphes.