• Aucun résultat trouvé

Besoins en adaptation logicielle

Variable et imprévisible ? C’est le cas des systèmes de communication mobiles et nomades tels que les téléphones portables ou les PDA. Le communication avec de tels dispositifs utilise des technologies sans fil qui sont sujets à des variations de performance imprévisibles. L’informatique ambiante, dans lequel une variété de dispositifs peut être connectés temporairement ou de manière permanente au système, font aussi partie de cette catégorie. En plus de faciliter la mise en œuvre d’applications en informatique ambiante, nous devons simplifier leur adaptation à l’espace ambiant. En effet, les dispositifs et les objets de l’environnement réel convergent pour ne plus faire qu’un. On ne voit plus les dispositifs comme des entités particulières mais comme des objets de la vie de tous les jours. Les contraintes subies par les dispositifs sont les mêmes que celles subies par les objets réels. L’application informatique ambiante doit alors s’adapter aux variations permanentes de l’espace ambiant et de l’environnement physique.

3.2.1 L’adaptation et l’IAm

Ces systèmes informatiques ambiants évoluent dans un environnement dynamique constellé de nom-breux dispositifs. Leur gestion complexifie l’application et il est nécessaire de trouver un juste milieu entre l’adaptation et les fonctions métier. De nombreux intergiciels sont apparus en informatique ambiante afin d’adapter les applications logicielles aux changements opérés dans l’environnement physique et plus particulièrement sur l’infrastructure de dispositifs pour répondre au problème de

la conception d’applications qui s’adaptent [155, 156, 157, 57]. L’étude de l’adaptation des sys-tèmes informatiques n’est cependant pas un phénomène nouveau. Il existe tant dans le domaine des interactions humain-machine [158] que dans le domaine de l’informatique autonome [159]. Histori-quement, l’Intelligence Artificielle (IA), dont l’objectif est de construire des machines intelligentes, semble être la première à s’intéresser à l’automatisation de l’adaptation. En ingénierie logicielle, nous avons beaucoup travaillé sur l’identification des paramètres de personnalisation des applica-tions logicielles.

Les travaux de recherche en adaptation logicielle peuvent être classés en deux catégories : ceux sur les interactions entre l’humain et la machine (qui n’entrent pas dans notre cas d’étude) et ceux qui considèrent les interactions avec l’environnement au sens général (notre domaine d’étude). Interactions humain-machine. Au niveau interaction humain-machine, les travaux comme ceux de Browne [160] sur le dialogue intelligent adaptatif et les objectifs de l’adaptation qui la mo-tivent et ceux de Dieterich [161] sur les niveaux d’adaptation, en définissent les concepts principaux en déterminant les acteurs de l’adaptation. Le niveau d’adaptation est résolument le concept fondamental de l’adaptation logicielle. Il permet de classer les travaux accomplis dans le domaine et d’étudier leur complémentarité. Cependant, bien que certaines notions soient assez générales, ces travaux demeurent orientés vers une adaptation des systèmes à l’utilisateur, ignorant, de manière justifiée, leur adaptation à l’infrastructure de dispositifs.

Machine et espace ambiant. Au niveau interaction généralisée entre la machine et son espace am-biant, les travaux sur l’unification de l’adaptation et l’interface [162, 163, 158] résument les princi-paux concepts dans le domaine de l’adaptation généralisée des systèmes informatiques. Ces travaux posent les fondements conceptuels généraux de l’adaptation logicielle. De ces concepts peuvent être dégagés les problèmes de l’adaptation.

3.2.2 De l’adaptabilité à l’adaptativité

Selon les propriétés utilisées pour spécifier un système adaptatif, le niveau t’adaptations d’un système change. Nous proposons de construire une classification des machines adaptatives en fonc-tion de ces propriétés. Thevenin [158] réalise une liste des systèmes adaptatifs en foncfonc-tion de leur capacité d’adaptation. Il définit cinq catégories de systèmes adaptatifs (sans compter les systèmes dits câblés) : adaptable, adaptatif, autorégulateur, automédiateur et automodificateur. Nous ne nous intéressons pas aux cas des deux derniers types de systèmes (automédiateur et automodifica-teur), car ils ne concernent pas nos travaux.

Un système adaptable est un système qui est personnalisable sur intervention explicite de l’utilisateur. Un système adaptatif sait reconnaître la situation et est capable de modifier son comportement selon les déclencheurs qui sont mis en œuvre. Un système autorégulateur recon-naît la situation et utilise une fonction de boucle de commande pour effectuer son choix de réaction. Nous avons constitué une liste des challenges de l’adaptation logicielle :

1. Intervention de l’utilisateur : comment l’utilisateur doit-il interagir avec le système ? 2. Adaptabilité : quels sont les mécanismes à mettre en place pour modifier le logiciel ?

3. Reconnaissance de situations : quels sont les indices à collecter pour que l’application puisse reconnaître des situations et s’adapter en conséquence ?

4. Boucle de rétroaction : comment faire en sorte que la machine puisse avoir un retour sur les actions qu’elle effectue sur son contexte et puisse ajuster son comportement ?

L’intervention de l’utilisateur pose le problème de quand, comment et où il doit intervenir. Celui de l’adaptabilité est le problème de comment le logiciel doit être construit pour qu’il soit adaptable. Celui de la reconnaissance de situations est de construire un modèle capable de conduire une reconfiguration pour des situations données. Enfin, celui de la boucle de commande concerne la logique capable d’ajuster les propriétés du système en fonction de l’environnement. Les systèmes sont regroupés dans le tableau 3.1.

Type de système adaptatif In terv en tion utilisateur Logiciel adaptable Prise en compte de situations Boucle de commande 1 2 3 4 Adaptable • • Adaptatif • • • Autorégulateur • • •

Tableau 3.1 – Classification de Thevenin : les catégories des systèmes adaptatifs

Un système autoadaptatif – manquant dans la classification de Thevenin – est un système adaptatif qui ne nécessite pas d’intervention directe de l’utilisateur. Le problème de la spécification de l’adaptation logicielle est une préoccupation commune aux systèmes au moins autoadaptatifs. Toutefois, nous pouvons noter que les deux points que sont la détermination des acteurs et la motivation des objectifs demeurent des branches importantes de recherche dans le domaine de l’informatique ambiante. En conclusion, deux points nous intéressent particulièrement. Il s’agit de déterminer des mécanismes pour gérer l’adaptation intégrée au logiciel, des mécanismes de prise en compte des différentes situations et des mécanismes de prise de décision des adaptations à effectuer. Nous nous intéressons aux problématiques de l’adaptation du logiciel et de la prise en compte de situations non prévues à l’avance. Ceci nous amène à traiter un problème récurant : celui du conflit structurel. Nous décomposons l’adaptation en deux parties : l’adaptativité, partie décisionnelle, et l’adaptabilité, partie effectrice (Fig. 3.3).

Déf. 1: Adaptativité. L’adaptativité d’un système est la manière dont le système s’adapte. Elle est constituée de stratégies qui permettent de déclencher des modifications du système en fonction de stimuli.

Déf. 2: Adaptabilité. L’adaptabilité d’un système constitue les mécanismes logiciels qui per-mettent de réaliser les modifications du système. Ce sont ces mécanismes qui perper-mettent de mo-difier le comportement du système tout en préservant des propriétés du système. Les stratégies d’adaptativité contrôlent les mécanismes d’adaptabilité.

Les deux disciplines (interactions humain-machine et informatique autonome) se rejoignent sur ce problème. Si l’IA visait l’adaptativité des systèmes, l’ingénierie logicielle traitait essentiellement de leur adaptabilité. Pour être plus précis, nous distinguons également l’adaptation de l’évolution logicielle. En effet, contrairement à l’évolution logicielle qui suppose en général l’accès au code des composants et à la personnalisation qui suppose un certain nombre de possibilités de modification prévues à l’avance, l’objectif de l’adaptation logicielle [164] est de réaliser des modifications de façon non intrusive (pas de modification directe de code qui est non accessible), de manière systématique (pas ou peu d’intervention humaine) et de manière dynamique (la structure de l’adaptateur n’est pas définie à priori et l’adaptation se fait au cours de l’exécution).

Dans un système informatique ambiant, l’adaptation logicielle est réactive et infra-structurelle. Des stratégies sont alors nécessaires pour effectuer les modifications, c’est ce que nous appelons le modèle d’adaptativité. Un tel modèle s’appuie sur un modèle de composant sous-jacent adaptable.