Institut numerique

3.4 Sujets de l’adaptation (Quoi ?)

Selon [CHE 05], les sujets de l’adaptation sont des concepts de programmation qu’il faut adapter. Ils sont donc définis par l’approche de programmation de l’application ou de l’infrastructure logicielle à adapter. Des exemples de ces concepts sont les modules, les objets, les composants, les connecteurs, les agents, les processus, etc.

Comme à la base l’adaptation est une opération de modification, il est plus facile de la mettre en oeuvre si l’approche de programmation suivie est modulaire car il est plus aisé d’isoler les sujets de l’adaptation et de contrôler ainsi l’étendue des modifications qu’ils subissent. C’est notamment la raison pour laquelle la majorité des chercheurs intéressés par l’adaptabilité aborde ce problème sous l’angle de l’approche composants logiciels qui est actuellement l’approche la plus modulaire.

3.4.1 Types d’adaptation dynamique des systèmes à base de composants

Plusieurs types d‟adaptation des applications à base des composants peuvent être identifiés. Certaines adaptations affectent l‟architecture de conception d‟autre affectent l‟architecture de déploiement de l‟application.

3.4.1.1 Adapter l’architecture conceptuelle de l’application

Ajouter un nouveau composant. Par exemple, ajouter un composant dans une application pour l‟étendre avec un nouveau service. Cette adaptation implique l‟adaptation des interconnexions entre les composants. Ce type d‟adaptation peut être classé en deux catégories [CHE 05]:

 Instancier le nouveau composant à ajouter à partir d‟un type déjà chargé par l‟application.

 Créer le nouveau composant à partir d‟un nouveau type.

Quand il est ajouté à une application en cours d‟exécution, en général, un composant doit prendre en compte l‟état de l‟application, il doit donc récupérer l‟état à partir duquel il doit démarrer et se personnaliser en fonction de cet état.

Supprimer un composant existant. Le composant supprimé ne doit pas affecter l‟exécution des autres composants. Il doit être aussi dans un état stable avant qu‟il soit supprimé [CHE 05]. Par exemple, si un composant est en cours d‟écrire des données dans un fichier, il ne doit par être supprimé avant la terminaison de sa tâche. Un autre défi concerne les données et les messages échangés entre le composant en question et les autres composants, ces données ou messages ne doivent pas être perdus. Modifier les interconnexions entre composants.

Par exemple, quand un nouveau composant est ajouté, il doit être connecté aux composants existants. En général, lorsque deux composants sont connectés, les types de leurs ports connectés doivent être compatibles. Dans une application répartie, la connexion entre deux composants spécifie le type de communication entre les deux et dépend de la localisation des deux composants [CHE 05].

En d‟autres termes, la communication entre deux composants dans le même espace d‟exécution est différente de la communication entre deux composants dans deux espaces d‟exécution différents sur la même machine. Elle est également différente de la communication entre deux composants s‟exécutant sur deux machines différentes. L‟adaptation des interconnexions doit préserver les messages et les données en transit.

3.4.1.2 Adapter l’implémentation d’un composant

Ce type d‟adaptation est généralement considéré comme une adaptation perfective, adaptative ou corrective [CHE 05]. Dans le premier cas, l‟adaptation est motivée par des raisons de performance, par exemple, on décide de remplacer un composant de stockage utilisant un vecteur par un autre composant utilisant une table de hachage. Un autre exemple peut être un administrateur d‟une application qui souhaite expérimenter plusieurs algorithmes implémentant la même fonctionnalité, il doit pouvoir passer d‟une implémentation à une autre sans arrêter l‟application.

Du point de vue adaptatif, on peut donner l‟exemple d‟un utilisateur qui change d‟imprimante ou d‟un autre matériel, le pilote de ce matériel doit changer. La vision correctionnelle de l‟adaptation est simplement la modification de l‟implémentation pour résoudre des bugs ou des problèmes constatés dans l‟implémentation courante.

3.4.1.3 Adapter l’interface d’un composant

Ceci signifie la modification de la liste des services fournis par le composant. Ceci peut être réalisé en ajoutant/supprimant une interface à/de la liste des interfaces fournies par le composant.

 Ajouter une interface : l‟objectif est d‟étendre les fonctionnalités du composant. Les fonctionnalités exposées à travers les autres interfaces restent inchangées.

 Supprimer une interface : lorsqu‟un composant expose une interface, il doit l‟implémenter. Si le service en question n‟est pas et ne sera pas utilisé, il est important pour des raisons de performance de supprimer cette interface et par conséquent son implémentation.

3.4.1.4 Adapter l’architecture de déploiement de l’application

Ceci correspond à la migration d‟un composant d‟un site à un autre pour la répartition des charges par exemple [CHE 05]. Ce type d‟adaptation n‟affecte pas la structure de l‟application, cependant, la communication entre le composant déplacé et les autres composants doit être adaptée selon la nouvelle localisation du composant. L‟état interne du composant doit être sauvegardé et réinjecté dans le composant dans sa nouvelle localisation. Les messages reçus et non encore traités doivent être pris en compte [CHE 05].

Page suivante : 3.5 Moments de l'adaptation (Quand ?)

Retour au menu : UTILISATION DES SCRIPTS POUR LE DEVELOPPEMENT DES COMPOSANTS COM ADAPTABLES