Selon [CHE 05] il y a trois raisons majeures pour adapter une application. Chacune d’elles définit un type d’adaptations différent. Ces raisons de l’adaptation sont :
3.2.1 Adaptations réactives
Les adaptations réactives sont des adaptations dynamiques à court terme, réalisées en cours d’exécution. Leur objectif est d’accommoder les applications aux changements de leur environnement.
Il peut s’agir de changements dans le comportement de l’utilisateur d’une application, des modifications importantes des données manipulées, des variations des niveaux des ressources disponibles (p. ex. mémoire vive, connexion réseau, charge CPU, etc.) ou de l’apparition/disparition d’une ressource en cours d’exécution (p. ex. un volume de stockage sur une clé USB, une imprimante reliée à un réseau sans-fil, un noeud dans une grille de calculateurs, etc.) [CHE 05].
Ces changements caractérisent davantage les environnements très dynamiques tel que les environnements mobiles [VAR 00], [SAT 96], les grappes de PC (grilles de calculateurs) [BUI 04], et les périphériques de type Plug and Play. Etant donné que la prolifération de ce genre d’environnement remonte à une douzaine d’années seulement [SAT 96], [BAK 99], la recherche sur l’adaptation réactive est relativement récente.
3.2.2 Adaptations évolutives
Comme leur nom l’indique, les adaptations évolutives ont lieu suite à l’évolution des besoins des utilisateurs d’une application. Elles font partie du processus de génie logiciel qui vise à étendre les fonctionnalités d’une application, corriger ses erreurs ou augmenter sa performance [CHE 05]. Ce sont donc des adaptations à long terme qui prennent la forme de mises à jour logicielles. Les adaptations évolutives entrent généralement dans la catégorie des adaptations statiques réalisées avant l’exécution [CHE 05].
Cependant, dans le cas des systèmes critiques à haute disponibilité (p. ex. les systèmes de télécommunication et les systèmes bancaires), les mises à jour doivent être réalisées à chaud, ce qui fait qu’elles se comportent comme des adaptations dynamiques.
Contrairement à la recherche sur l’adaptation réactive, la recherche sur la mise à jour à chaud des applications est plus ancienne. Par exemple, l’un des travaux traitant le remplacement à la volée d’un module dans un système date de 1976 [FAB 76]. Ceci dit, les deux types d’adaptations ont des objectifs différents mais les mêmes techniques peuvent être utilisées pour les mettre en oeuvre.
3.2.3 Adaptations pour l’intégration
Le recours à l’adaptation peut être nécessaire dans la programmation par intégration (programmation par composition, appelée aussi macro programmation ou programmation dans le large) de modules (composants) logiciels existants. Dans ce cas, l’adaptation vise à rendre inter-opérables des modules qui ont des interfaces ou des protocoles d’interaction incompatibles, le plus souvent, car ils ont été implantés par des développeurs différents [CHE 05].
Ce type d’adaptation peut aussi avoir comme objectif le rajout de nouvelles interactions entre les composants ou l’intégration de services non fonctionnels (p. ex. sécurité, transactions) non anticipés [CHA 04].
L’adaptation pour l’intégration est généralement mise en oeuvre par des techniques statiques comme l’héritage dans les langages objets, les Wrappers, la super-imposition, et les interfaces actives. Plus d’informations sur ces techniques statiques sont citées dans [HEI 00].
Plus récemment, plusieurs techniques de composition dynamique ont vu le jour [CHE 05]. Elles sont basées sur la notion de types des composants et sur les langages d’interaction, etc. Dans l’ensemble, l’adaptation pour l’intégration peut être vue comme un cas particulier de l’adaptation évolutive.
Page suivante : 3.3 Localisation de l'adaptation (Où ?)
Retour au menu : UTILISATION DES SCRIPTS POUR LE DEVELOPPEMENT DES COMPOSANTS COM ADAPTABLES