• Aucun résultat trouvé

granularité variable

5.2 Modèle du système d’adaptation et de réaction

5.2.3 Entité adaptative et réaction

Dans les paragraphes précédents, une entité adaptative peut changer de comportement “si on le lui dit”. La notion de décision de l’adaptation n’y est pas incluse et est donc laissée à la charge d’acteurs extérieurs comme le concepteur, l’administrateur ou l’application. Une des attentes de notre système est de pouvoir réagir à différents évènements comme, notamment, les variations observables dans l’environnement mobile. La décision d’adaptation doit donc pouvoir être prise à l’intérieur d’une entité. Cela nous amène à la définition d’une entité auto-adaptative.

Une entité auto-adaptative est l’unité logicielle pouvant décider de son changement de com-portement par l’application d’adaptations. Par définition, une entité auto-adaptative est une en-tité adaptative à laquelle est rajoutée la description des décisions d’adaptations que celle-ci peut prendre. La figure5.13présente la structure d’une entité auto-adaptative :

Service de détection et de notification Entité fonctionnelle Entité de réaction Entité auto−adaptative Entité d’adaptation Niveau fonctionnel Niveau méta

FIG. 5.13 – Structure d’une entité auto-adaptative

Au niveau fonctionnel, une entité auto-adaptative comporte toujours l’entité fonctionnelle qui effectue les traitements attendus de l’entité auto-adaptative. Au niveau méta, la description des possibilités d’adaptations est toujours à la charge de l’entité d’adaptation. La nouveauté réside au niveau méta dans l’entité de réaction qui matérialise la description des décisions possibles d’adaptations. Nous avons choisi de modéliser l’entité de réaction par une entité pour les mêmes raisons de dynamicité évoquées dans le paragraphe 5.2.2. L’entité de réaction est liée à l’entité fonctionnelle puisque l’entité fonctionnelle peut vouloir changer à tout moment les décisions à prendre. Elle est également liée à l’entité d’adaptation puisque, sans adaptations à appliquer, les décisions d’adaptations seraient sans objet. De manière à prendre ses décisions, l’entité de réaction interagit avec le service de détection et notification afin d’être informée des variations de l’environnement mobile.

Au sein de l’entité de réaction, les décisions d’adaptations sont maintenues dans une

stra-tégie d’adaptation. Celle-ci est conçue comme un automate dont les états représentent l’état

d’exécution courant de l’entité fonctionnelle et les transitions représentent les conditions sur les variations de l’environnement mobile et la décision de l’adaptation à appliquer dans ce cas. La figure5.14donne l’exemple d’une stratégie d’adaptation pour un service de transmission d’images compressées :

Entité fonctionnelle (In, Im, St) : Im = algorithme de compression GIF

Entité fonctionnelle (It, Im’, St’) : Im’ = algorithme de compression JPEG

St’ = taux de qualité de 75%

Entité fonctionnelle (It, Im’, St’’) : Im’ = algorithme de compression JPEG

St’’ = taux de qualité de 50% Bande passante > X Adaptation de l’implantation JPEG −> GIF Bande passante > Y Adaptation de l’état 50% −> 75% Bande passante < Y Adaptation de l’état 75% −> 50% Bande passante < X Adaptation de l’implantation GIF −> JPEG (taux de 75%)

FIG. 5.14 – Stratégie d’adaptation pour un service de transmission d’images compressées Dans cet exemple, si la bande passante se trouve être supérieure à une valeur X, l’implan-tation de l’entité fonctionnelle est un algorithme de compression au format GIF. Si la bande passante diminue mais est toujours supérieure à une valeur Y, une adaptation de changement d’implantation est appliquée permutant ainsi l’implantation de l’entité fonctionnelle vers un al-gorithme de type JPEG. Une adaptation de changement d’état3est également appliquée fixant le taux de qualité à 75%. Si la bande passante se trouve être inférieure à la valeur Y, une adap-tation de changement d’état est appliquée fixant le taux de qualité à 50%. Dans cette stratégie d’adaptation, les transitions inverses appliquent les adaptations inverses.

La figure5.15présente la structure d’une entité adaptative, et, notamment, la manière dont est implantée la stratégie d’adaptation.

L’entité de réaction est liée à l’entité fonctionnelle et à l’entité d’adaptation par des relations de composition entre les types AInteraction. Comme pour l’entité adaptative, cela signifie qu’il ne peut y avoir qu’une seule entité de réaction liée à l’entité fonctionnelle. La destruction d’une instance de l’entité fonctionnelle entraîne la destruction de l’instance d’entité de réaction liée. Mais, aussi, la destruction d’une instance de l’entité d’adaptation entraîne la destruction de l’instance d’entité de réaction liée.

La spécialisation de l’entité de réaction suit le patron de conception Adapter (point i de la figure 5.15) [Gamma et al. 1995]. Celui-ci permet l’interfaçage entre l’entité fonc-tionnelle et la stratégie d’adaptation de l’entité d’adaptation. La stratégie d’adaptation de

3L’adaptation de changement d’état n’est pas notée dans l’action à effectuer lors de la transition puisqu’elle est implicite du fait qu’une adaptation d’implantation implique une adaptation d’état.

AImplementation AInteraction AImplementation AInteraction EntityAdapter StrategyControler AdaptationStrategy Transition InitialState Adaptation Entité de réaction 1...* Entité d’adaptation 1...* Entité fonctionnelle (i)

FIG. 5.15 – Relations entre éléments de la structure d’une entité auto-adaptative

type AdaptationStrategy est composée d’un ensemble de transitions de type Transition. UneTransitionmaintient une dépendance directe avec l’Adaptationqu’elle doit appliquer. Nous avons ici fait le choix de maintenir des dépendances directes car l’entité de réaction ne peut in-trinsèquement pas être indépendante de l’entité d’adaptation. En effet, toutes modifications dans les adaptations possibles doivent se répercuter sur la stratégie d’adaptation. Par exemple, le retrait d’une adaptation référencée dans une transition conduit à l’invalidation de cette tran-sition.

Les méthodes4 d’accès à la stratégie d’adaptation (get|setAdaptationStrategy) ainsi que les méthodes4 d’accès, d’ajout et de retrait de transitions (get|add|removeTransition) sont conçues de la même manière que la méthode d’application de l’adaptation (dans le paragraphe 5.2.2.1). Le transit des appels suit le même chemin du niveau fonction-nel jusqu’au niveau méta, mais en passant par l’entité de réaction. Et cette fois-ci, c’est le type StrategyControler qui met à jour sa référence vers la stratégie d’adaptation et le typeAdaptationStrategyqui met à jour ses références vers les transitions.