Gagne de la cryptomonnaie GRATUITE en 5 clics et aide institut numérique à propager la connaissance universitaire >> CLIQUEZ ICI <<

INTRODUCTION

Non classé

Contexte de recherche

Les logiciels, et les systèmes informatiques en général, croissent en nombre et en complexité dans des domaines d’application divers. Cette complexité croissante est caractérisée par l’augmentation de la taille des logiciels, l’hétérogénéité des plateformes à tout niveau (systèmes d’exploitation, intergiciels et applications) et la multiplication des normes et des standards.

L’administration de ces systèmes est également de plus en plus complexe et nécessite de leur part des capacités d’évolution pour des opérations de maintenance, des besoins de mise à jour ou d’adaptation en fonction de leur contexte d’exécution. L’évolutivité [LEH 76] est une propriété essentielle qui caractérise la capacité d’un système à être modifié au cours de son cycle de vie.

Une évolution (ou modification) peut concerner la correction d’erreurs de conception (bugs) dans le système, l’ajout de nouvelles fonctionnalités, l’optimisation de fonctionnalités existantes ou encore l‟adaptation du système à son contexte d‟exécution. La maintenance adaptative est ainsi un bon exemple d’évolution particulière d’un système consistant à l‟adapter aux situations changeantes.

Deux types d‟adaptation sont à distinguer suivant l’état du cycle de vie du système considéré : les Adaptations statiques qui interviennent quand le système est arrêté et qui nécessitent la recompilation et le redémarrage du système, et les adaptations dynamiques réalisées dans un système en train de s’exécuter ; nous parlerons plus spécifiquement des adaptations dynamiques dans ce dernier cas. Les adaptations dynamiques [KRA 90], [MAG 96] sont un moyen pour faire évoluer les systèmes tout en préservant leur disponibilité.

Ce sont, en effet, des modifications effectuées pendant l’exécution d’un système qui ne nécessitent pas d’arrêt complet ou de recompilation du système modifié et permettent, donc, de préserver sa continuité de services. La capacité d’évolution est au coeur de la problématique des systèmes adaptatifs et de l’informatique autonomique. Les systèmes adaptatifs [KBC 02] évoluent automatiquement en fonction du contexte d’exécution : le changement de contexte entraîne typiquement une reconfiguration dynamique du système pour réaliser l’adaptation.

L’informatique autonomique [KBC 02] est une réponse à la complexité croissante de l’administration des systèmes logiciels en les dotant de la capacité de s’auto-administrer par l’intermédiaire d’une boucle de régulation similaire aux boucles de contrôle dans le domaine de l’automatique. La réaction à l’intérieur de la boucle repose sur l‟adaptation dynamique du système auto-administré.

Le composant [Szy 02] est un paradigme de programmation en génie logiciel, au même titre que l’objet, pour construire des systèmes logiciels. Un modèle de composant définit des standards de construction, de composition et d’interaction entre des briques logicielles appelées composants. Les systèmes à base de composants offrent de bonnes propriétés pour être adaptés dynamiquement, comme l’encapsulation forte (boîte noires ou grises), la modularité, et la séparation des préoccupations [HUL 95].

La maintenance de l‟application à composants comporte généralement des opérations d‟adaptation de composants. Celles-ci consistent à changer les valeurs des propriétés des composants ou à changer l‟architecture de l‟application en redéfinissant les connections entre les composants, ou consistent encore à remplacer un composant par un autre qui peut éventuellement fournir et requérir des contrats différents du composant remplacé. Parallèlement au besoin d’évolutivité des systèmes se pose le problème de leur fiabilité, plus particulièrement, suite à leurs évolutions.

La fiabilité [LAP 92] est un attribut de la sûreté de fonctionnement qui est la mesure de la délivrance d’un service correct pour un système donné. Autrement dit, un système n’est fiable que s’il est dans un état correct (ou cohérent) par rapport à une spécification. Dans le cas des architectures à composants, une spécification à considérer est celle du modèle de composants sous-jacent. Une condition nécessaire à la fiabilité de ce type de système est donc sa conformité au modèle de composants.

Une adaptation dynamique doit être une transformation valide de l’état d’un système pour qu’il reste cohérent. Une adaptation sera ainsi invalide (i.e. mènera à un système non fiable) si elle viole la spécification du modèle de composants considéré. Les langages de script offrent la capacité de faire évoluer le programme d‟application en cours de l‟exécution (programmation incrémentale).

De ce fait, le développement des composants avec les langages de script permet aux composants concernés dans l‟application d‟être évoluer fonctionnellement au fur et à mesure des évolutions du contexte, sans requérir de redéploiement.

Problématique

La maintenance de l‟application à composants comporte généralement des opérations de reconfiguration et d‟adaptation de composants. Ces opérations consiste à changer les valeurs des propriétés des composants ou à changer l‟architecture de l‟application, en redéfinissant les connections entre les composants, ou consiste en général à remplacer un composant par un autre qui peut, éventuellement, fournir et requérir des contrats différents du composant remplacé.

Généralement, l‟opération de remplacement de composant requière de déconnecter ce dernier, de transférer son état courant vers un nouveau composant, et puis, de connecter ce dernier aux autres composants de l‟application.

Généralement, l‟opération d‟adaptation requiert l‟arrêt de l‟application et oblige à reprendre le cycle de vie à partir de la phase d‟assemblage. Pour résoudre ce problème, le concept de l‟adaptation dynamique est apparu. Il consiste à introduire des modifications dans l‟application au cours de son exécution sans nécessairement arrêter totalement l‟application.

Actuellement, la plupart des modèles de composants qui existent ne sont pas adaptable, ce qui nécessite d‟arrêter les applications basées sur ces modèles pour les adapter et les mettre à jour. Après avoir identifié ce manque et ce problème, nous nous sommes plus particulièrement intéressés au modèle de composant COM, en ayant comme objectif de rendre celui-ci adaptable en utilisant les langages de script. Ce modèle, et avec toutes ces évolutions (OLE, COM, DCOM, COM+), n‟est pas conçu pour supporter l‟adaptation dynamique.

Un des points délicats de l‟adaptation dynamique est le transfert de l‟état d‟un composant à un autre quand l‟état est constitué d‟objets difficilement transférables, tels qu‟un socket ou bien la pile d‟exécution d‟un thread. De plus, l‟opération d‟adaptation doit répondre à plusieurs contraintes comme la sécurité, la fiabilité, la complétude et la reprise sur erreur (recovery) qui représente la possibilité de retour en arrière ou de compenser dans le cas où l‟adaptation ne peut se terminer avec succès.

Motivations

Le principal facteur qui nous a motivé à chercher une solution à la problématique est l‟adaptation dynamique, qui est un moyen pour faire évoluer les systèmes tout en préservant leur disponibilité. Les adaptations dynamiques sont, en effet, des modifications effectuées pendant l’exécution d’un système qui ne nécessitent pas d’arrêt complet ou de recompilation du système modifié et permettent, donc, de préserver sa continuité de services.

Ceci est très important pour les applications qui réalisent des tâches critiques, telles que les applications de télécommunication et les applications bancaires. Le second facteur qui nous a motivés à chercher une solution à la problématique est les langages de script [OUS 98], [PRE 00]. Ils offrent depuis longtemps la capacité de faire évoluer le programme d‟application en cours de l‟exécution [BAR 00].

Grâce aux langages de script, les composants concernés dans l‟application peuvent, ainsi, évoluer fonctionnellement au fur et à mesure des évolutions du contexte sans requérir de redéploiement. Aussi, la concision et la simplicité d‟écriture des programmes développés rendent ces langages de script attractifs aux yeux des développeurs débutants.

La propriété qui nous intéresse dans ce mémoire est que plusieurs de ces langages sont dynamiques et qu‟ils autorisent une programmation incrémentale au cours de l‟exécution du programme développé. Nous développons et exécutons notre programme simultanément, sans passer par le cycle traditionnel itératif développement-déploiement-exécution.

Dans le contexte de l‟adaptation dynamique, la programmation incrémentale apportée par les langages de script présente un intérêt majeur : l‟état de l‟application en cours d‟exécution est relativement résistant aux changements et aux évolutions du code (fonctionnel ou non-fonctionnel) de l‟application. Elle soulage, ainsi, le concepteur de l‟utilisation de mécanismes souvent ad hoc pour le transfert d‟état et pour le redémarrage des composants dont le comportement (code fonctionnel) a été modifié.

Objectifs

L’objectif principal de notre travail est d‟utiliser les langages de script dans la programmation orientée composants, particulièrement, le modèle de composants COM ; et ainsi, d‟essayer d‟utiliser les composants scriptés obtenus pour le support d‟architectures dynamiques. L‟intérêt est de pouvoir modifier les règles régissant l‟architecture courante d‟une application sans être obliger de redémarrer celle-ci.

Notre objectif consiste, donc, à étendre le modèle COM afin de faciliter le développement d’applications à base de composants et qui seront adaptables pendant leurs exécutions par une entité externe (un composant ou une application ou un humain) ou par le composant lui même.

L‟idée principale est qu‟il n’est pas nécessaire de redéployer le composant pour le mettre à jour par une entité externe. Notons que, dans le modèle COM, aucun travail n‟a été lancé pour résoudre le problème de l‟adaptabilité.

Contenu du mémoire

Ce document se décompose en cinq chapitres dont trois chapitres d’état de l’art, un chapitre de présentation de la proposition, et un dernier chapitre de description de l‟implémentation. La présente partie sert d’introduction au document, en présentant le contexte de recherche et les motivations du sujet du mémoire, la problématique et son analyse, et enfin nos objectifs en réponse à la problématique posée.

L’état de l’art est partagé en trois chapitres suivant les concepts clés du sujet : les modèles de composants (chapitre 1), le modèle de composant COM (chapitre 2) et l‟adaptabilité (chapitre 3). Dans chacun des trois chapitres, nous présentons les principaux concepts référencés.

Le quatrième chapitre décrit notre modèle de composants adaptable, appelé ScriptCOM et son mécanisme de maintien de la cohérence des applications sujettes à des adaptations dynamiques. Dans le chapitre 5, nous exposons une implantation prototype de notre modèle de composants en commençant par une argumentation du choix de la technologie et du langage de développement utilisé.

Ensuite, nous présentons une expérimentation de cette implantation prototype avec une application adaptable. Il s’agit d’une application de gestion financière d‟un magasin de vente et de maintenance de matériels informatiques.

L’objectif étant d’illustrer l’utilisation de ScriptCOM et de valider nos propositions ; ainsi que de montrer l’intérêt de ScriptCOM pour accélérer et faciliter le développement d‟applications adaptables. En fin, nous établissons les limites du travail réalisé et nous proposons les perspectives pour des travaux futurs.

Page suivante : CHAPITRE 1 LES MODELES DE COMPOSANT : CONCEPTS ET PRINCIPES DE BASE

Retour au menu : UTILISATION DES SCRIPTS POUR LE DEVELOPPEMENT DES COMPOSANTS COM ADAPTABLES