• Aucun résultat trouvé

Du point de vue de la mise en œuvre, il est important de noter que la solution de reconfiguration pour le modèle OSGi a été développée à partir de rien. Ceci malgré le fait que,

comme nous l'avons expliqué, le principe de la solution, les algorithmes et les opérations de reconfiguration sont pratiquement identiques dans les deux expérimentations. Nous n'avons exploité de l'expérimentation sur le modèle JavaBeans que les idées. Nous pensons que ceci n'est pas suffisant, et qu'il est nécessaire de trouver une approche qui permet plus de réutilisation afin d'éviter de réimplanter à chaque fois la même chose.

Nous pensons que l'abstraction peut apporter une solution acceptable à ce problème de réutilisation. En arrivant à abstraire les éléments techniques et les concepts liés à chaque modèle, il devrait être possible de définir une approche qui favorise la réutilisation et qui peut être exploitée dans différents contextes.

Il est aussi nécessaire, pour atteindre un degré acceptable de généricité, que la solution à proposer soit séparée :

des applications à développer : le programmeur ne doit s'occuper que de la logique de son application. Il doit être dégagé de la responsabilité de reconfiguration. des modèles visés : pour pouvoir appliquer la solution à plusieurs modèles cibles, il faut qu'elle soit indépendante des particularités de ces modèles.

Il est à noter que les deux solutions décrites dans ce chapitre ne fournissent aucun support d'automatisation. Un acteur humain doit explicitement décider et lancer les opérations de reconfiguration. La solution proposée doit supporter, d'un coté, des formalismes pour décrire les stratégies qui permettent d'automatiser la reconfiguration, et d'un autre coté, les mécanismes nécessaires pour raisonner sur ces stratégies et prendre des décisions cohérentes.

Le chapitre suivant est justement dédié à présenter la solution que nous proposons pour supporter la reconfiguration dynamique, et qui tente de répondre à ces besoins.

C

CHAHAPPIITTRREE 55

Chapitre 5 :DDYYVVAA :: U

UNN NNOOYYAAUU

G

GEENNEERRIIQQUUEE PPOOUURR LLAA

R

REECCOONNFFIIGGUURRAATTIIOONN DDYYNNAAMMIIQQUUEE

P

PRRIINNCCIIPPEESS DDEE CCOONNCCEEPPTTIIOONN

PRÉAMBULE.

Ce chapitre décrit la solution de reconfiguration dynamique que nous avons développée dans le cadre de cette thèse. Cette solution constitue un aboutissement et une généralisation des différentes expérimentations que nous avons menées. Notre solution générale se présente sous forme d'une machine virtuelle, baptisée DYVA, qui prend en charge la reconfiguration dynamique. Les motivations derrière notre approche, l'architecture logique de notre machine et les concepts sur lesquels elle est basée, sont expliqués dans ce chapitre.

1

1 II

NNTTRROODDUUCCTTIIOONN

Nous avons expliqué dans le chapitre précédent, qu'après l'ensemble des expérimentations que nous avons menées, notre objectif était de développer une solution de reconfiguration dynamique plus générale. Ce chapitre explique les détails de cette solution. Pour pouvoir développer une solution suffisamment réutilisable et séparée des applications à reconfigurer, nous proposons le concept de machine virtuelle de reconfiguration dynamique. Son rôle est de prendre en charge la responsabilité de reconfiguration, et de permettre aux développeurs de se concentrer sur la logique applicative.

Dans la suite, nous expliquons d'abord les motivations de notre approche. Nous présentons ensuite un aperçu de DYVA [KB04], notre machine de reconfiguration, et nous décrivons les éléments qui constituent son architecture logique. Nous illustrons à travers un exemple d'application le modèle de composants abstrait, sur lequel DYVA est basé, et qui permet d'augmenter sa généricité. Nous discutons dans la section suivante la capacité d'auto-reconfiguration de DYVA et nous présentons les éléments qui permettent de la supporter. Ce chapitre présente aussi la vue externe de DYVA. Cette vue est utilisée pour personnaliser DYVA pour un modèle de composants particulier.

Avant de conclure ce chapitre, nous discutons la solution que nous avons développée pour le problème de transfert d'état, et nous mettons l'accent sur le processus à suivre pour personnaliser et exploiter DYVA.

2

2 MM

OOTTIIVVAATTIIOONNSS

Avant de présenter DYVA, nous discutons d’abord dans cette section quelques solutions pour créer des applications à base de composants dynamiquement reconfigurables. Ceci permet de situer notre approche et de montrer son intérêt.

En général, pour développer une application pouvant être reconfigurée dynamiquement, plusieurs visions peuvent être considérées :

La reconfiguration dynamique est prise en charge directement par l’application : le code qui assure la reconfiguration dynamique est intégré et confondu avec le code de l’application. Ceci correspond au principe des systèmes fermés que nous avons présentés auparavant. Pour développer une nouvelle application supportant la reconfiguration dynamique, il faut qu’elle intègre de la même manière le code de reconfiguration. Cette solution est très lourde et difficilement utilisable. Aussi, elle ne garantit pas la séparation et l'évolution du code applicatif, et n'assure pas non-plus la réutilisation du système de reconfiguration.

La reconfiguration dynamique est prise en charge par le modèle sous-jacent. Ceci peut être obtenu en intégrant les fonctions de reconfiguration à la plate-forme d'exécution associée au modèle. Toutes les applications basées sur ce modèle, et s'exécutant au-dessus de sa plate-forme bénéficient automatiquement de la reconfiguration dynamique. Dans ce cas, la reconfiguration peut être vue comme une propriété non fonctionnelle au même titre que les transactions, la sécurité et la persistance. En considérant, par exemple, un modèle de composants basé sur Java, on peut éventuellement intégrer les fonctions de reconfiguration dans la machine virtuelle associée au modèle de composant, si elle existe, dans la machine virtuelle de Java ou même dans le système d'exploitation.

L'inconvénient de la solution précédente est qu'il est nécessaire d'implanter la solution de reconfiguration pour chaque plate-forme d'exécution. Nous pensons qu'il est possible d'améliorer les capacités de réutilisation en considérant la reconfiguration dynamique à un niveau supérieur. En d'autres termes, les fonctions de reconfiguration doivent être supportées par un système dédié à cet effet, et intégrées aux applications développées ou aux plate-formes d'exécution associées aux modèles ciblés.

DYVA, notre machine de reconfiguration dynamique est justement basée sur cette troisième vision. Plusieurs questions peuvent être posées par rapport à la conception et à l'utilisation d'une telle machine :

Quelles sont les opérations de reconfiguration qu'il faut mettre en œuvre, et surtout comment les séparer des applications à reconfigurer ?

Quelles sont les exigences que doivent satisfaire les applications pour bénéficier de la reconfiguration dynamique ?

Quelles sont les mécanismes nécessaires pour pouvoir lier les opérations de reconfiguration à l'application ou aux éléments à reconfigurer ?

Les sections suivantes sont destinées, entre autres, à illustrer l'architecture de DYVA et à répondre à ces questions.

3

3 DDYYVVAA ::

UUNNEECCOONNCCEEPPTTIIOONNRREEFFLLEEXXIIVVEE

Nous avons expliqué dans les chapitres précédents les avantages de la réflexion pour la construction de systèmes adaptables. Pour bénéficier de ces avantages, et proposer une solution simple, nous avons basé DYVA sur une conception réflexive.

Connexion causale

Abstraction

Système de reconfiguration

Méta-niveau

Application Niveau de base Environnement d'exécution

Figure 52. Conception réflexive de DYVA

Comme l’indique la Figure 52, deux niveaux peuvent être identifiés :

Niveau de base : correspond aux applications à reconfigurer. Certains

paramètres appartenant à l'environnement d'exécution peuvent être pertinents pour la reconfiguration (espace disque, mémoire, bande passante, charge du processeur, etc.). Ces paramètres doivent également être considérés par le niveau de base.

Méta-niveau : il comporte d'un coté l'image abstraite de l'application, et d'un autre coté le système qui est responsable de réaliser la reconfiguration dynamique.

Selon le principe des systèmes réflexifs, ces deux niveaux sont causalement liés. Les modifications au niveau de l'application sont projetées sur son abstraction et vice-versa. Les sections suivantes expliquent en détails les éléments du méta-niveau, et montrent comment la connexion causale avec le niveau de base est matérialisée.

L'objectif de notre travail est de concevoir une machine virtuelle de reconfiguration dynamique. Cette machine, qualifiée de virtuelle, ne peut pas être exploitée en tant que telle. Elle doit être personnalisée pour un modèle de composants particulier pour qu'elle devienne effectivement opérationnelle. En prenant notre machine virtuelle DYVA comme point de départ, nous pouvons identifier plusieurs rôles d'exploitation :

Personnalisation de DYVA : conception d'une couche pour envelopper DYVA et le spécialiser pour opérer sur un modèle de composants particulier.

Installation de DYVA : réalisation du lien entre les applications à reconfigurer et la version personnalisée de DYVA. Ceci peut être fait explicitement par programmation, ou en utilisant des outils d'instrumentation.

Utilisation de DYVA : reconfiguration dynamique des applications à travers les services fournis par DYVA.

Nous rappelons que dans le contexte de cette thèse, nous sommes partis des considérations suivantes :

Une configuration est un ensemble d'instances de composants, potentiellement interconnectées.

Une reconfiguration est une opération qui a pour but de changer la configuration courante.

Une reconfiguration dynamique est une reconfiguration réalisée en exécution, et devant garantir l'intégrité de l'application à reconfigurer.

En analysant ces définitions, nous pouvons constater que notre système de reconfiguration adresse plus particulièrement la modification de l'aspect architectural des applications. Il gère les modifications à un méta-niveau. Ceci correspond à la logique employée dans les systèmes architecturalement réflexifs.

4

4 AA

RRCCHHIITTEECCTTUURREEIINNTTEERRNNEEDDEE

DYDYVVAA

Cette section présente l'architecture logique de DYVA. La Figure 53 illustre les différents éléments formant cette architecture.

Superviseur Gestionnaire de reconfiguration Politiques de reconfiguration Modèle abstrait Notification Modification Base de composants

Figure 53. Architecture de référence de DYVA

Comme nous l’avons expliqué précédemment, un modèle de composants abstrait est utilisé pour augmenter l'indépendance du système de reconfiguration vis-à-vis des modèles de composants ciblés. L'élément principal de l'architecture est le gestionnaire de reconfiguration. Il fournit les opérations de reconfiguration de base et opère sur le modèle abstrait. Pour supporter l'auto-reconfiguration, une capacité de supervision et de raisonnement est nécessaire. Le superviseur est l'élément qui joue ce rôle. Il s'appuie sur un ensemble de

politiques pour décider et lancer des opérations de reconfiguration. Ces différents éléments de l'architecture sont expliqués en détail dans les sous-sections suivantes.