Action de Recherche Coopérative INRIA - 1999-2000
Samoa : Structure d'accueil pour
applications mobiles et configurables
Participants
-
Projet Sirac, INRIA Rhône-Alpes,
INPG, UJF (coordinateur)
-
Projet Solidor, IRISA/INRIA
-
LIFL (Laboratoire d'Informatique Fondamentale de Lille)
-
Société Gemplus (Laboratoire de recherche)
Motivations et objectifs
Les notions de mobilité et d'adaptation sont amenées
à jouer un rôle central dans la conception de nombreuses applications
nouvelles de l'informatique.
-
D'une part, les objets physiques portant une partie d'une application tendent
à devenir mobiles. Deux exemples représentatifs sont :
-
les cartes à puce utilisées dans diverses applications (santé,
transports, commerce, etc.),
-
les stations dites nomades (pouvant se déplacer géographiquement
et changer de point de connexion aux réseaux).
-
D'autre part, les applications sont amenées à être
modifiées dynamiquement pour répondre à une évolution
des besoins (modifications des fonctions) ou pour s'adapter à un
environnement lui-même variable ; le système sous-jacent peut
aussi être amené à reconfigurer les éléments
d'une application pour réagir à un changement de l'environnement
d'exécution, comme la défaillance d'un site ou la congestion
du réseau.
Mobilité et adaptation interagissent de manière étroite
:
-
Les adaptations ou reconfigurations d'une application peuvent faire appel
à la mobilité des éléments qui la composent
(migration ou téléchargement de code) ;
-
La mobilité nécessite souvent d'adapter le logiciel porté
par les éléments mobiles à des contextes variables
d'exécution.
L'action proposée vise à fournir des outils et services
pour la construction d'applications portées par des objets physiques
mobiles. Son objectif est triple :
-
explorer les apports des techniques et outils de programmation par composants
pour structurer les applications concernées par la mobilité,
-
identifier des services système génériques
pour contrôler la gestion de la mobilité, et plus particulièrement
pour reconfigurer l'application en vue de l'adapter à
son environnement d'exécution.
-
exploiter les résultats de ce travail sur des applications
innovantes.
|
Deux domaines d'application sont visés :
-
la réalisation d'une structure d'accueil pour des applications utilisant
la carte à puce (voir Annexe, exemple 1) ;
-
la gestion d'un environnement universel (indépendant de la localisation)
pour des utilisateurs nomades (voir Annexe, exemple 2).
Les équipes proposantes ont des compétences complémentaires
dans les domaines couverts par l'action. Sirac et Solidor travaillent sur
les "architectures logicielles" : Sirac a une expérience sur les
services systèmes et la reconfiguration d'applications, Solidor
sur l'adaptation nécessaire au maintien de la qualité de
service. Le LIFL a une expérience sur les infrastructures de système
pour objets répartis, en particulier dans le monde Corba. Gemplus
a une grande expérience dans les techniques liées aux cartes
à puce et dans leurs applications. Ces partenaires ont l'habitude
de travailler ensemble : Sirac et Solidor coopèrent dans un projet
esprit LTR sur les composants ; le LIFL et Gemplus mènent des travaux
en commun autour du logiciel et des applications de la carte à puce
; Sirac, le LIFL et Gemplus coopèrent pour la mise en place en 1998
et 1999 d'une École d'Été sur la construction d'applications
réparties.
Contenu scientifique
Caractérisation des applications mobiles
Le travail proposé vise les applications portées par des
objets
physiques mobiles (que nous appelons simplement "applications mobiles"
dans la suite). Une application mobile est constituée des éléments
suivants :
-
Un contexte de travail. Informations définissant le contexte
de l'application courante ou de l'utilisateur courant (par exemple, pour
une station nomade, l'environnement logiciel, les bibliothèques,
les fichiers ouverts, etc.). le contexte de travail est représenté
par des composants logiciels, directement liés à l'objet
physique mobile, et qui donc bougent avec lui.
-
Des fonctions téléchargeables. Entités
logicielles contenant du code fonctionnel réalisant des traitements
particuliers sur le site de résidence de l'application mobile (par
exemple, pour offrir une interface d'interaction particulière avec
l'utilisateur). Ces entités sont stockées dans des dépôts
de composants accessibles sur le réseau, qui sont téléchargés
à la demande.
-
Des services distants. Entités logicielles fournissant
des informations et des traitements utilisables depuis la structure d'accueil
(système de fichiers, base de données, moteur de recherche,
etc.).
Ces services sont localisés en général sur d'autres
sites que la structure d'accueil et peuvent aussi être vu comme des
composants fixes.
Ces différents composants sont assemblés et configurés
pour former une application en utilisant des outils de développement
appropriés. En cours d'exécution, la mobilité de l'application
requiert des opérations de reconfiguration pour reconstituer son
environnement global d'exécution et l'adapter à la nouvelle
configuration physique. Ces opérations peuvent être définies
par le concepteur de l'application, sous une forme algorithmique ou déclarative
(paramètres de configuration, contraintes de qualité de service,
etc.), ou bien être décidées par le système
en fonction de politiques de gestion de ressources qui lui sont propres.
Dans l'un ou l'autre cas, les opérations de reconfiguration sont
réalisées à l'aide de services ad hoc fournis par
l'environnement d'accueil.
Voie d'approche
Dans la description d'une application, la notion de composant désigne
une unité logicielle de construction. Le projet devra permettre
:
-
de donner à la notion de composant un contenu précis et concret,
permettant notamment de séparer a) la programmation des différentes
parties de l'application ; b) l'expression des propriétés
non-fonctionnelles qui leur sont associées. On devra en particulier
proposer un formalisme pour la description des composants (interfaces,
etc.) et de leurs relations avec d'autres composants. On réutilisera
ici l'expérience acquise par les partenaires sur les langages de
définition d'architecture (ADL).
-
de définir un schéma générique pour l'organisation
de la structure d'accueil : accès aux ressources locales de
la machine, support d'exécution des composants, liaison et communication
entre composants, liaison et communication avec les services distants,
fourniture de services assurant les propriétés non fonctionnelles,
gestion de la persistance et de l'adaptation de l'application.
-
de définir les services systèmes pour contrôler la
migration/mobilité d'une application et pour mettre en oeuvre les
opérations de reconfiguration qui sont engendrées par la
mobilité.
Pour répondre aux problèmes d'adaptation posés par
les applications mobiles, on propose de procéder comme suit :
-
Associer des propriétés non-fonctionnelles aux composants
(propriétés spécifiées dans un formalisme approprié).
Les propriétés dites 'non-fonctionnelles' comprennent notamment
celles relatives à la sécurité, à la tolérance
aux pannes, aux transactions, à la persistance, aux caractéristiques
de performances. L'expression de ces propriétés utilise des
annotations apportées à un langage de description d'architecture
(ADL). La définition de cet ADL étendu fait partie des tâches
de l'action.
-
Utiliser ces propriétés pour une adaptation mutuelle de l'environnement
d'exécution ( 'middleware') et des applications. La construction
d'un middleware pour une application donnée est jusqu'ici réalisée
statiquement. Or, dans le cas d'applications s'appuyant sur des composants
mobiles, les composants du middleware doivent, comme ceux de l'application,
pouvoir être adaptés en fonction de l'environnement d'exécution.
On peut donc envisager d'étudier une solution à la reconfiguration
dynamique du middleware du point de vue des propriétés non-fonctionnelles
fournies. Ce travail requiert notamment d'examiner les critères
de correction de la reconfiguration dynamique d'un middleware, puis de
concevoir et mettre en oeuvre les services de reconfiguration associés.
Les plate-formes considérées incluent les environnements
d'accueil pour la carte à puce, les environnements CORBA, les environnements
à base de composants Java (e.g. Enterprise Java Beans).
Actions proposées
Les actions proposées seront organisées sous deux formes,
qui correspondent à deux étapes du projet.
-
Un travail en commun entre les partenaires, en vue de définir
un ensemble de concepts et d'outils applicables au problème considéré.
-
définition d'un langage commun de description d'architecture,
-
expression de propriétés non-fonctionnelles,
-
génération de code pour l'adaptation dynamique,
-
spécification de la structure d'accueil pour composants mobiles
et configurables : définition d'un schéma commun d'architecture
et identification des services systèmes qui s'intègrent dans
cette structure d'accueil.
-
Des expérimentations spécifiques menées par
chacun des partenaires sur des applications particulières. Ces expérimentations
utilisent les outils élaborés en commun.
Travail commun
Le travail en commun portera sur les points suivants.
Langage de description d'applications mobiles à base de composants
L'objectif est de définir un langage de description d' architecture
prenant en compte les aspects dynamiques (ce que ne font pas les ADL actuels).
Le langage ainsi défini ("Mobile Application Description Language
- MADL") doit permettre de décrire une application mobile. Il devra
donc permettre de définir précisement les composants (mobiles
et reconfigurables) de l'application.
Définitions de propriétés
Les propriétés dites non-fonctionnelles comprennent essentiellement
:
configuration physique : placement et/ou regroupement de composants sur
un site donné.
sécurité : contrôle d'accès (protection) au
composant, communication chiffrée entre certains composants, etc.
tolérance aux pannes : réplication d'un composant et politique
de mise en cohérence des copies multiples.
transactions : on peut voir cette propriété comme un cas
particulier de la propriété de tolérance aux pannes.
Elle est mentionnée ici par analogie avec des systèmes à
composant existants qui permettent l'expression d'un comportement transactionnel
dans un composant (par exemple les EJB).
persistance : sauvegarde de l'état d'un composant en des points
de contrôle spécifiés par l'utilisateur ou décidés
par le système.
performance : cette propriété fait référence
à des aspects quantitatifs de qualité de service, tels que
la garantie d'un temps d'exécution d'un composant (ou d'un groupe
de composant), d'une bande passante dans la communication entre composants,
ou de la synchronisation entre flots de communication entre composants
(pour des flots multimédia par exemple).
-
Représentation de la structure d'une application mobile
Une fois la description de l'application effectuée et ses propriétés
définies, une description intermédiaire (pivot) de l'application
doit être engendrée. Ce pivot contient l'ensemble des informations
permettant de reconstituer et de reconfigurer localement l'application.
Ces informations décrivent les caractéristiques statiques
de l'application décrites, mais aussi les caractéristiques
dynamiques de l'application telles que des paramètres de configuration
et des informations liées au passé et à l'utilisateur
(contexte dans lequel l'application doit reprendre par rapport à
sa précédente exécution avec le même utilisateur,
préférences, abonnements, paiements, droits de l'utilisateur,
etc.).
-
Architecture de l'environnement d'exécution pour applications
mobiles
L'exécution de l'application prend place dans une structure
d'accueil sous le contrôle de la description pivot de l'application.
Les informations pivot sont utilisées pour piloter la structure
d'accueil via l'accès à des services de contrôle. Ce
pilotage permet de mettre en place et de reconfigurer l'application sur
la structure d'accueil. L'installation de l'application met en oeuvre les
opérations suivantes :
-
Découverte des composants téléchargeables et des services
distants de l'application. Cette opération peut s'effectuer en utilisant
des services d'intermédiation permettant de retrouver et de localiser
les composants et les services à partir d'information de désignation
symbolique. Ici, des mécanismes de cache peuvent aussi être
impliqués.
-
Téléchargement et installation des composants téléchargeables
sur la structure d'accueil.
-
Etablissement de liaisons des composants vers des services distants et
réciproquement.
-
Reconfiguration de l'application en fonction de caractéristiques
dynamiques : contexte, données liées à l'utilisateur,
capacités matérielles et systèmes de la structure
d'accueil.
La structure d'accueil peut s'exécuter sur une machine mobile (ordinateur
portable, PDA, GSM, etc). Cela implique que la structure d'accueil observe
le comportement de l'application mobile et reconfigure dynamiquement les
liaisons entre composants afin d'assurer la continuité de l'application
et la qualité de service désirée.
Expérimentations spécifiques
les résultats de l'étude précédente sont utilisés
pour mettre en oeuvre des expérimentations complémentaires
portant sur les domaines applicatifs suivants.
-
Carte à puce
1) Description de l'application.
L'expérience sera menée autour d'une
application de la carte à puce, décrite en Annexe (exemple
1).
2) Méthodes mises en oeuvre.
Autour de la carte à puce, nous travaillerons
dans un premier temps sur un "framework" générique
permettant à une carte d'envoyer des ordres vers son site d'accueil
(aujourd'hui les cartes sont toujours esclaves dans un mode client-serveur).
On travaillera ensuite sur la traduction de la description intermédiaire
(pivot) de l'application sous la forme d'un programme stocké dans
la carte. Ce programme carte pilotera / contrôlera les services offerts
par la structure d'accueil via le framework générique.
L'étape suivante consistera à définir les caractéristiques
/ fonctionnalités des services d'intermédiation utilisés
par la structure d'accueil. Pour la recherche de services fixes, nous évaluerons
la pertinence (ou non) d'utiliser le service "Trader" standardisé
par l'OMG/ISO. En ce qui concerne le téléchargement de composants,
il n'existe pas pour l'instant de solution adéquate : il faudra
donc définir notre propre service.
-
Environnement "universel" pour stations nomades
1) Description de l'application.
L'expérience sera menée autour d'une
application d'environnement universel pour stations nomades, décrite
en Annexe (exemple 2).
2) Méthodes mises en oeuvre.
On s'attachera à définir les services
d'intermédiation utilisés par la structure d'accueil pour
permettre à une station nomade de reconstituer son environnement
de travail. Nous comptons explorer deux voies : l'adjonction d'agents fixes
ou mobiles en vue d'étendre ou de spécialiser les fonctions
d'applications ou de serveurs existants ; les modèles d'exécution
multipartie généralisant l'appel de procédure à
distance à un ensemble d'entités coopérantes (retour
à un autre que l'appelant, appel multiples, réplications
des données et des traitements, etc.).
Ces services seront prototypés dans un environnement
Java.
| |
Michel RIVEILL
Laboratoire I3S
Polytech - Nice - Sophia
930 Route des Colles
BP 145
F-06903 Sophia Antipolis CEDEX
Email :
riveill at unice.fr
Généralité
Ressources en lignes
Une partie de mon
agenda
Des
liens
dernière mise à jour
le 24 août 2006
|