3 D YNAMISME ET ADAPTATION
3. D YNAMISME ET ADAPTATION Un élément logiciel peut avoir une disponibilité semi-dynamique , qui est définie comme :
3.3 L OGIQUE D ADAPTATION
La logique d adaptation d une application définit i les informations à superviser afin de
détecter des situations d adaptation et ii les opérations dadaptationà effectuer face aux situations
détectées La logique d adaptation définit ainsi quand adapter et comment adapter. Elle peut être exprimée à travers différents types de politiques [64] :
des politiques d action qui dictent les actions à effecteur face à une situation prédéterminée afin d assurer le comportement souhaité d une application Typiquement les politiques d action sont exprimées sous forme de règles ECA Evénement Condition Action permettant ainsi de spécifier un ensemble d actions à effectuer quand un
événement a lieu et que certaines conditions sont remplies. La simplicité et la rapidité
d expression de ces politiques les rend très populaires surtout pour des applications dont les situations sont peu nombreuses et connues à l avance En effet ce type de
politiques est utilisé depuis longtemps dans les systèmes adaptatifs.
des politiques de but qui définissent un ensemble de situations ou des propriétés
désirables d une application : les buts. Les actions à effectuer pour satisfaire ces buts sont déterminées par le système. Ces politiques offrent ainsi une alternative lorsque les
politiques d action sont inadaptées à cause du grand nombre de situations possibles Les politiques de but sont bien adaptées aux systèmes qui raisonnent sur l architecture du
système.
des politiques de fonctions d utilité qui permettent de caractériser le degré de
satisfaction d une situation par rapport au but global de l application Une situation n est
plus considérée comme valide ou invalide : elle reçoit une valeur indiquant le degré de satisfaction, calculée en fonction dun ensemble de paramètres qui caractérisent la situation. En utilisant ce type de politiques, un système peut chercher à optimiser sa configuration : deux situations peuvent être comparées. Ces politiques, tout comme les politiques de buts, permettent de gérer des cas non prévus par le concepteur du système. Cependant, leur difficulté est d inférer les actions à effectuer pour atteindre une situation dont le degré de satisfaction serait meilleur.
3.3.1 R
ECONFIGURATION DYNAMIQUELa reconfiguration dynamique est le processus de modification de l architecture d une application durant son exécution La reconfiguration dynamique d une application est possible grâce à la représentation de son architecture d exécution, i.e., à son modèle descriptif.
Une reconfiguration dynamique peut être faite par des scripts de reconfiguration. Les
modifications peuvent être effectuées par un gestionnaire d adaptation voir la Figure 20) qui doit
manipuler la structure de l application tout en minimisant la durée de linterruption, et en assurant
l intégrité de l application i e un état cohérent avant et après la reconfiguration
Figure 20 Reconfiguration dynamique d une application
Les opérations de base sur les composants (types et instances) qui permettent de réaliser la reconfiguration dynamique des applications sont :
l ajout d un composant
le retrait dun composant
la création dune liaison entre composants
la destruction d une liaison entre composants
la mise à jour d un composant
3.D
YNAMISME ET ADAPTATIOND autres opérations sont nécessaires afin de garantir l intégrité des applications lors de la
reconfiguration des applications [27] :
la passivation d un composant
l activation d un composant
Une des approches les plus utilisées pour assurer l intégrité des applications est la quiescence, proposé par Kramer et Magee [65]. Ils proposent différents états (status) pour les composants d une
application. Un composant dans un état actif peut initier, accepter et traiter des transactions. Un composant dans un état passif continue à traiter les transactions en cours et peut initier des
transactions requises par d autres transactions en cours afin de permettre sa complétion. Cependant,
la passivation d un composant bloque toutes les nouvelles transactions entrantes du composant afin de permettre sa manipulation Un composant peut être manipulé une fois qu il est dans un état quiescent : il est passif et il ne traite plus des transactions. Un composant dans un état quiescent est dans un état cohérent car il ne contient pas de résultats de transactions incomplètes. Une fois une reconfiguration terminée, les composants passivés peuvent être réactivés.
Toutefois, la quiescence demande un contrôle total de l application afin de détecter les
transactions entrantes des composants. De plus, les transactions imbriquées sont très coûteuses en
termes de temps d interruption de l application : un grand nombre de composants doivent être
passivés D autres approches comme la tranquillité (tranquility) [66], ont été proposés pour assurer
l intégrité d une application toute en réduisant le temps d interruption lors de son adaptation.
Une opération de reconfiguration peut être décrite comme une séquence ou une combinaison de
patrons chacun définissant un ensemble d opérations de reconfiguration. Parmi ces patrons nous pouvons mentionner le remplacement, l interposition et la migration dynamiques.
Dans le remplacement dynamique, le but est de remplacer un composant par un autre composant compatible, sans arrêter l exécution de l application et en minimisant le temps d interruption du fonctionnement de l application Considérons l exemple présenté dans la Figure 21, où le composant C
doit être remplacé par le composant C.
Pour réaliser le remplacement dynamique d un composant l interposition peut être utilisée Elle
consiste à insérer un intercepteur devant un composant pendant l exécution d une application. Tous les appels à ce composant seront donc capturés par l intercepteur qui est lui-même lié au composant. Dans le cas du remplacement dynamique, un tel intercepteur est appelé médiateur. Une fois le
médiateur disponible le remplacement d un composant est effectué en deux phases (illustrées dans la Figure 21) :
la phase de blocage : les nouveaux appels au composant C sont bloqués par le médiateur, les appels en cours sont autorisés à se terminer. Lorsque le composant C est dans un état quiescent, la phase de transfert est démarrée.
la phase de transfert le médiateur réalise le transfert d état (si nécessaire) entre C et C. Ensuite, les liaisons vers C sont mises à jour (rebinding) afin de pointer sur C. Enfin, les appels bloqués sont repris en utilisant le composant C.
La migration dynamique d un composant C d un site S à un site S, utilise le patron de remplacement dynamique : C est remplacé pour une copie de lui-même placée sur le site S. La copie du composant est faite quand le composant C est dans un état quiescent.
La reconfiguration dynamique est donc primordiale pour l adaptation dynamique d une
application. Un dysfonctionnement du processus de reconfiguration peut avoir des effets indésirables
sur l application De ce fait assurer l intégrité de l application lors des reconfigurations dynamiques est
un défi majeur.
3.3.2 E
MPLACEMENTLa logique d adaptation quand et comment adapter d une application peut être implantée selon
différentes approches :
La logique d adaptation est mélangée avec la logique métier de l application L adaptation
(gestion du dynamisme, détection de situations, exécution de reconfigurations) est directement gérée
dans le code de l application Malgré la contradiction avec le principe de séparation des
préoccupations cette approche est la plus simple et l une des plus utilisées aujourd hui car l adaptation est définie et implémentée en même temps que le code fonctionnel L avantage de cette approche est que le code d adaptation est complétement spécifique et intégré à l application permettant une gestion
très spécialisée du dynamisme sans avoir besoin d une infrastructure spécifique Cependant la modification du comportement de l adaptation requiert la modification des éléments de l application
complexifiant ainsi sa maintenance. En outre, toutes les sources de dynamisme ne peuvent être gérées de cette façon. Ainsi, cette approche peut être utilisée pour des applications avec des besoins de performance importants et de dynamisme limité.
La logique d adaptation est fusionnée avec la logique métier de l application. Le code
d adaptation est séparé du code de l application respectant ainsi le principe de séparation de
préoccupations. Une approche couramment utilisée est la programmation par aspects (AOP34), qui
permet de séparer le code des aspects du code métier d une application L intégration des aspects est
réalisée à la compilation de l application Cette approche permet d avoir une meilleure maintenabilité de l application Cependant le code d adaptation reste spécifique aux composants de l application
La logique d adaptation est définie dans le conteneur de l application. Cette approche est utilisée dans les systèmes basés sur des modèles à composants. Cette approche respecte aussi le principe de séparation des préoccupations, et par conséquent l application n est pas impactée par les
modifications du code d adaptation Cependant le code d adaptation est généralement dépendant du
composant pour lequel il a été conçu le code d adaptation doit connaître le fonctionnement interne du composant pour savoir comment l adapter De ce fait le code d adaptation est spécifique au composant et généralement il n est pas réutilisable De plus la maintenance des deux parties n est pas aussi indépendante qu il y parait : un changement dans le code de l application peut impacter le code
d adaptation Bien que cette approche comporte de nombreux avantages elle reste aujourd hui peu utilisée car elle est généralement difficile à mettre en œuvre
La logique d adaptation est définie séparément de l application. Cette approche suit aussi le principe de séparation de préoccupations. Elle découple totalement la logique d adaptation de l application Cette approche se base sur les interfaces d administration des composants de l application préalablement définies, permettant ainsi de s abstraire de limplémentation des
composants de l application L avantage de cette approche est que le code d adaptation de l application est indépendant de toute contrainte liée à l application technologie, topologie, architecture), cependant elle requiert que les interfaces nécessaires à l adaptation soient définies au préalable
En outre la logique d adaptation peut être implantée de façon centralisée ou distribuée