• Aucun résultat trouvé

7.4 Mod`ele d’ex´ecution des politiques d’adaptation

7.4.5 Interactions entre composants adaptatifs

Le dernier point qui nous reste `a voir concerne les interactions entre composants adaptatifs au sein d’une mˆeme application. Lorsqu’un ´ev´enement – exog`ene ou endog`ene – se produit au sein d’une appli- cation, le syst`eme safran doit en notifier tous les composants dont au moins un politique d’adaptation est concern´ee par cet ´ev´enement. L’ordre dans lequel les diff´erents composants sont notifi´es d´etermine l’ordre d’ex´ecution de leurs r´eactions.

L’un des concepts fondamentaux de la programmation par composants est l’encapsulation forte, sous la forme de composants « boˆıte noire » : lorsqu’un composite C utilise un sous-composant C0

, il n’a pas `

a connaˆıtre les d´etails d’impl´ementation de ce dernier, seulement son interface fonctionelle. Consid´erant que l’aspect d’adaptation, repr´esent´e dans safran par les politiques r´eactives, fait partie int´egrante de l’impl´ementation d’un composant adaptatif, nous choisissons de donner la priorit´e dans l’ordre d’ex´ecution aux composants les plus imbriqu´es, l’ordre de traitement de composants au mˆeme niveau d’imbrication ´etant ind´etermin´e. Ainsi, chaque composant adaptatif a la possibilit´e de s’adapter lui-mˆeme (boˆıte noire) avant que les composites qui l’utilisent puissent interf´erer avec son fonctionnement (dont l’adaptation fait partie int´egrante).

Le crit`ere d’isolation des reconfigurations (li´e `a la modularit´e des politiques d’adaptation) nous impose que deux reconfigurations qui se chevauchent ne peuvent pas s’ex´ecuter en mˆeme temps, et doivent donc ˆetre s´erialis´ees. Deux reconfigurations R1 et R2 se chevauchent si : elles modifient certains ´el´ements

(composants, connexions ou attributs) en commun, ou R1 modifie des ´el´ements inspect´es par R2, ou R2

modifie des ´el´ements inspect´es par R1. Dans tous ces cas, l’ex´ecution en parall`ele des deux reconfigurations

risque de rendre visibles `a R1les ´etats interm´ediaires potentiellement inconsistants r´esultant de l’ex´ecution

partielle de R2 (et inversement).

Nous devons donc d´etecter avant l’ex´ecution d’une reconfiguration R2 si son ex´ecution risque de

chevaucher une reconfiguration R1 d´ej`a en cours d’ex´ecution. Si c’est le cas, R2doit ˆetre mise en attente

et ex´ecut´ee uniquement une fois R1 termin´ee. Malheureusement, il n’est pas possible de d´eterminer

pr´ecis´ement l’ensemble des ´el´ements affect´es par une reconfiguration sans l’ex´ecuter (ou au moins la simuler). Nous pouvons cependant utiliser un crit`ere d’isolation plus fort mais plus facile `a garantir. En particulier le cas extrˆeme (qui correspond `a l’utilisation d’un verrou d’exclusion global) est de n’autoriser qu’une seule reconfiguration `a la fois pour toute l’application. C’est le choix effectu´e par l’impl´ementation actuelle, pour des raisons de simplicit´e. D’autres pistes correspondant `a l’utilisation de verrous plus fins sont `a l’´etude pour les versions futures de l’impl´ementation.

7.5

Conclusion

Dans ce chapitre, nous avons d´ecrit le langage d´edi´e safran permettant de programmer des politiques d’adaptation r´eactives destin´ees `a ˆetre associ´ees (tiss´ees) `a des composants Fractal. Pour cela, nous avons utilis´e les diff´erentes contributions d´ecrites dans les chapitres pr´ec´edents, ainsi qu’un langage pour la sp´ecification et la d´etection d’´ev´enements.

Nous avons d´ecrit la dynamique des politiques d’ex´ecution en partant du cas simple d’une seule politique attach´ee `a un seul composant. Nous avons ensuite montr´e comment ce cas particulier pouvait ˆetre ´etendu `a un ensemble dynamique de politiques sur un unique composant puis `a une application compl`ete, en accord avec les principes de conception des applications adaptatives en g´en´eral et de safran en particulier. Pour r´esumer, lorsqu’un ´ev´enement « int´eressant » (i.e. succeptible de d´eclencher une adaptation) se produit, safran le diffuse `a chacun des composants adaptatifs concern´es, en commen¸cant par les plus imbriqu´es. Pour chacun de ces composants, les r`egles de leurs politiques d’adaptation que l’´ev´enement active sont alors ex´ecut´ees, en isolant dans des transactions de reconfiguration les actions issues de diff´erentes politiques, et en traitant les politiques dans leur ordre d’attachement.

Il en r´esulte un syst`eme complet et coh´erent permettant de d´evelopper des politiques d’adaptation s´epar´ement des composants m´etier, aussi bien sur le plan spatial que temporel. Associ´ees (tiss´ees) dyna- miquement aux composants Fractal d’une application, les politiques d’adaptation safran pemettent de rendre ces composants adaptatifs.

Chapitre 8

D´eveloppement d’applications

adaptatives avec SAFRAN

Sommaire

8.1 Introduction . . . 147 8.2 Mod`ele et outils de d´eveloppement . . . 148 8.2.1 Programmation de composants adaptatifs . . . 148 8.2.2 Configuration et initialisation du syst`eme . . . 149 8.2.3 Contrˆole `a l’ex´ecution . . . 150 8.3 M´ethodologie et crit`eres d’´evaluation . . . 151 8.4 Exemple 1 : lecteur de courrier ´electronique . . . 153 8.4.1 Pr´esentation de l’application . . . 153 8.4.2 Envoi de courriers en mode d´econnect´e . . . 153 8.4.3 Mode de notification adapt´e au contexte d’utilisation . . . 156 8.4.4 Evaluation´ . . . 159 8.5 Exemple 2 : serveur web . . . 159 8.5.1 Pr´esentation de l’application . . . 159 8.5.2 Am´elioration des performances par ajout d’un cache adaptable . . . 160 8.5.3 Adaptation dynamique du nombre de threads . . . 163 8.5.4 Evaluation´ . . . 166 8.6 Conclusion . . . 166

8.1

Introduction

Ce chapitre pr´esente l’utilisation concr`ete de safran pour le d´eveloppement d’applications adapta- tives, et l’illustre `a travers quelques exemples qui nous servent ensuite `a ´evaluer notre syst`eme.

Nous commen¸cons par d´ecrire le mod`ele de d´eveloppement d’applications adaptatives et les outils fournis aux programmeurs par safran pour supporter ce d´eveloppement. Nous pr´esentons ensuite ra- pidement notre m´ethodologie et nos crit`eres d’´evaluation, avant de montrer quelques exemples concrets d’applications adaptatives d´evelopp´ees avec safran. Enfin, nous concluons en ´evaluant l’apport de sa- fransur ces applications, validant ainsi nos travaux.