Méthodes et outils pour la conception de systèmes logiciels auto-adaptatifs

Avec l'avenement des systemes mobiles, la plupart des systemes logiciels doivent s'adapter a un environnement fluctuant en ressources materielles et logicielles. Ce besoin d'adaptabilite survient a la fois dans des systemes a large echelle tels que les systemes paire-a-paire deployes sur Internet et dans des systemes de taille plus modeste, voire dans des systemes embarques, telephonie mobile, GPS, etc. Ces systemes, dits « auto-adaptatifs », doivent donc observer les fluctuations de leur environnement dans le but d'offrir un service de qualite le plus longtemps possible. « Observation, decision, action » est alors naturellement le credo des systemes auto-adaptatifs : observer l'environnement pour decider des modifications a apporter a la configuration ou a l'architecture. Le conception et le developpement de tels systemes fait converger plusieurs branches de l'informatique actuelle : le genie logiciel, l'intelligence artificielle, et les systemes distribues. Les systemes distribues et les systemes sensibles traitent tout d'abord de problemes lies a l'observation de l'environnement. L'intelligence artificielle et les systemes de decision permettent ensuite de raisonner sur des donnees pour automatiser la prise de decision. Enfin, le genie logiciel et plus precisement les architectures a base de composants ont apporte un support technique permettant de modifier « a chaud » l'architecture d'un systeme logiciel en cours d'execution. Pourtant, le developpement et la conception de ces systemes restent pour le moins difficile a cause d'un manque d'outils et de techniques dedies. Si la plupart des plates-formes d'execution recentes supportant le deploiement de systemes a base de composant permettent effectivement d'adapter dynamiquement un systeme, les mecanismes mis en œuvre restent tres rudimentaires et empechent l'architecte de concevoir, en intention, le comportement lie a l'auto-adaptation. L'auto-adaptation reste donc une tâche annexe et ne fait pas encore l'objet des bonnes pratiques issues du genie logiciel. C'est pourquoi la contribution de cette these est de fournir a l'architecte des methodes et des outils lui permettant d'exprimer, au bon niveau d'abstraction, l'auto-adaptation d'un systeme logiciel. Nous proposons de modeliser l'auto-adaptation sous la forme de regles qualifiant l'environnement et le systeme a l'aide d'un langage naturel contraint. Ces regles, par ailleurs composables, sont interpretees a l'aide d'un moteur de logique floue, soit lors de la conception via un moteur de simulation, soit dans le systeme reel a l'aide d'un moteur d'interpretation. La simulation des regles lors de la conception permet de valider, a priori et a moindre cout, des systemes dont le test en situation reelle est excessivement complexe et couteux. Ces differents outils ont ete integres dans un outil nomme TanGraM permettant de concevoir et de simuler des systemes auto-adaptatifs et une extension de la plate-forme d'execution Fractal a ete developpee pour supporter l'integration de regles d'adaptation floues dans un systeme reel. Cet outil a ete utilise pour concevoir un serveur HTTP susceptible d'adapter son architecture et sa configuration en fonction du nombre et de la dispersion des requetes qu'il recoit. Deploye ensuite sur la plate-forme Fractal, le systeme montre la pertinence d'une validation a priori lors de la conception de systemes complexes. L'expression de l'adaptation sous la forme de regles de haut niveau n'est cependant que le premier pas vers des systemes pleinement adaptatifs. La prise en compte des objectifs de qualite sous-jacents a l'adaptation, tels que la minimisation du temps de reponse par exemple, offre une perspective interessante pour controler et simplifier encore la conception de systemes auto-adaptatifs.