Middleware et informatique mobile - Julien MATHEVET

Transcription

Middleware et informatique mobile - Julien MATHEVET
DEA RACOR
UTT
RB03
Middleware et informatique mobile
Alexandre BOISSY
Julien MATHEVET
Sommaire
INTRODUCTION
3
1.
4
LES TECHNOLOGIES SANS FIL ACTUELLEMENT DISPONIBLES
1.1.
1.2.
1.2.1.
1.2.2.
1.3.
1.3.1.
1.3.2.
1.4.
1.4.1.
1.4.2.
1.4.3.
2.
INTERET DES SANS FIL :
PRESENTATION TECHNIQUE
SUPPORTS PHYSIQUES DES RESEAUX SANS FIL
LIAISONS RADIO : TECHNOLOGIES DSSS ET FHSS
IES ARCHITECTURES
LE MODE CELLULE
LE MODE AD HOC
LES TECHNOLOGIES DE RESEAUX SANS-FIL
HIPERLAN 2
IEEE 802.11
LES AUTRES AXES DE RECHERCHES
PROBLEMATIQUE
4
5
5
6
7
7
7
8
8
9
9
10
2.1. DIFFERENCES PHYSIQUES :
2.2. LES SYSTEMES DISTRIBUES
2.2.1. LES SYSTEMES DISTRIBUES FIXES :
2.2.2. SYSTEMES MOBILES:
10
10
10
11
3.
13
LES BESOINS DES MIDDLEWARES :
3.1.1.
3.1.2.
4.
LES MIDDLEWARES POUR LES RESEAUX FIXES :
4.1.
4.2.
4.3.
5.
LES FIXES :
LES MOBILES :
13
14
14
LES MIDDLEWARES ORIENTES OBJETS ET COMPOSANTS :
LES MIDDLEWARES ORIENTES MESSAGES :
LES MIDDLEWARES ORIENTES TRANSACTIONS :
14
14
15
VERS DES MIDDLEWARES ADAPTES AUX MOBILES
15
5.1.
5.1.1.
5.1.2.
5.1.3.
5.2.
5.2.1.
5.2.2.
5.2.3.
5.2.4.
5.3.
5.4.
5.4.1.
5.4.2.
5.4.3.
REFLECTIVE MIDDLEWARE SOLUTIONS :
OPENCORBA :
NEXT GENERATION MIDDLEWARE :
GLOBE
TUPLE-SPACE BASED SYSTEMS
LIME
TSPACES
JAVASPACES
LIMITATIONS DES MIDDLEWARE A BASE D’ESPACE DE TUPLES
CONTEXT AWARE MIDDLEWARE
LES AUTRE SOLUTIONS INTERESSANTS
CODA ET ODYSSEY
BAYOU
JINI
15
15
15
16
16
16
17
17
17
18
19
19
19
20
CONCLUSION
21
BIBLIOGRAPHIE
22
Introduction
Les solutions sans fils, tel que les ordinateurs portables, les téléphones mobiles et autres PDA
sont de plus en plus performantes et compactes. L’offre dans ce domaine est florissante et l’on
peut prédire que le volume des ventes suivra car les appareils mobiles permettent aux
utilisateurs d’accéder à l’information à tout moment et en tout lieu bénéficiant d’un accès
réseau. Cependant les terminaux mobiles apportent un lot de nouvelles problématiques aux
développeurs d’applications et de services car les ressources dont disposent ces appareils sont
souvent bien plus restreintes que celles offertes par un poste fixe (mémoire, puissance de
calcul, bande passante, …).
Les middleware ont fait leurs preuves dans le domaine des postes fixes en offrant une couche
d’abstraction entre les architectures matérielles et les applications. Cette abstraction est à plus
forte raison nécessaire dans un contexte mobile où l’hétérogénéité des terminaux est encore
plus marquée. Mais les middlewares actuels sont-ils adaptés aux mobiles ? Sont-ils
adaptables ? Doit-on créer une nouvelle génération de middleware ? Si oui, quelles
caractéristiques indispensables doit-elle comporter ? Nous tenterons de répondre à toutes ces
questions au fil de ce document qui se veut la synthèse d’un ensemble d’articles sur le sujet.
Dans un premier temps, nous effectuerons un bref tour d’horizon des technologies sans fil
actuellement disponibles sur le marché puis nous verrons en détail quelles sont les
problématiques liées à la mobilité. Nous terminerons sur la présentation les différents types de
middlewares existants et comment certaines de leur fonctionnalités peuvent être appliquées
dans le cas de l’informatique mobile.
1. Les technologies sans fil actuellement disponibles
Les technologies sans fil, qui sont relativement récentes, sont devenues maintenant
performantes grâce aux avancées technologiques, notamment en électronique et en traitement
du signal. Les principales technologies sans fil, qui existent sur le marché actuellement sont :
•
•
Les WPAN (Wireless Personal Area Network) : Bluetooth (Ericson), HomeRF.
Les WLAN (Wireless Local Area Networks) : IEEE 802.11 (US) et Hiperlan
(Europe).
Les technologies cellulaires (GSM, GPRS, UMTS).
Les technologies Satellite (Vsat qui est bidirectionnel, mais aussi DVB pour la
diffusion Vidéo)
•
•
Au niveau des opérateurs, le premier réseau commercial analogique sans fil a vu le jour en
1982 à Chicago. En 1986, France Télécom lance Radiocom 2000 en France. Les premiers
réseaux GSM (numériques) apparaissent en France en 1992 et remportent aujourd’hui le
succès que nous connaissons. Que ce soit au niveau des opérateurs (GSM, GPRS, UMTS), au
niveau local (WLAN) ou au niveau domestique (WPAN), de nombreuses applications
intéressantes sont envisagées.
Les réseaux sans fil se développent très rapidement et devraient représenter un marché
énorme en ce début de XXIème siècle. Les prix jusque là inaccessible deviennent de plus en
plus abordables, les performances et les débits augmentent, les réseaux domestiques et la
population de travailleurs mobiles également. Le marché des réseaux sans fil est donc en plein
essor et certaines analyses estiment ce marché à 2 milliards de dollars pour 2002. Ericsson a
avancé le chiffre de 100 millions d’équipements électroniques dotés de la puce Bluetooth d’ici
à 2003. Les réseaux sans fil représentent donc un enjeu important, surtout au niveau financier
: ils permettent d’éviter d’investir dans un câblage coûteux et qui peut s’avérer rapidement
obsolète ou inutile en cas de déménagement de locaux.
1.1.
Intérêt des sans fil :
Les réseaux sans fil peuvent exister en extrémité d’un réseau filaire classique comme Internet
et doivent donc pouvoir communiquer avec des machines fixes d’un réseau filaire.
L’intérêt est d’assurer une connexion au réseau tout en permettant la mobilité de l’utilisateur.
On peut envisager que les terminaux supporterons l’ensemble des protocoles. Ils pourront
passer de l'
un à l'
autre sans rupture de la connexion en fonction de là où on se trouve : GPRS,
UMTS, WLAN, BlueTooth. Par exemple lorsque l'
on arrive dans un lieu public pour une
conférence, on passe sur un WLAN plus rapide que l'
UMTS. Demain, un WLAN permettra
de bénéficier du réseau à l'
intérieur du TGV. Le software gérera le choix du protocole à un
moment donné : plus de 80% de la R&D dans l'
Internet se fait sur le logiciel et non le
matériel, selon Gilles Kahn, directeur scientifique de l'
INRIA.
De plus, le câblage n’est plus nécessaire, ce qui représente un avantage certain dans de
nombreux cas :
-
Mise en place d’un réseau dans un bâtiment classé « monument historique »
-
Mise en place d’un réseau de courte durée (chantiers, expositions, locaux loués,
formations)
-
Confort d’utilisation : tous les participants d’une réunion sont automatiquement
interconnectés
-
Gain en coût pour la mise en place d’un réseau dans tout bâtiment non préalablement
câblé.
De nombreuses autres applications sont envisagées. Dans les hôpitaux, les transmissions sans
fil sont déjà utilisées pour accéder aux informations enregistrées sur chaque patient pendant
les visites. Des besoins similaires ont été mis en avant par le personnel des aéroports, des
chantiers de constructions et autres.
Selon les constructeurs, ces technologies devraient s'
étendre dans les prochaines années pour
équiper tous les objets de notre vie quotidienne : téléviseurs, chaînes hi-fi, réfrigérateurs,
voitures, etc. Les voitures ouvriront leurs portes à la seule approche de leur propriétaire ou
communiqueront directement avec la pompe de la station-service, le réfrigérateur fera luimême sa commande par Internet, les PDA se synchroniseront automatiquement avec les PC et
s’échangeront fichiers et e-mails. En arrivant chez vous, la porte d’entrée se déverrouillera
automatiquement, le système d’alarme se mettra en veille et les lumières s'
allumeront.
Le majeur problème est la compatibilité entre ces différents protocoles. Cela est du aux
différents organismes de normalisation et les différents constructeurs, qui tentent chacun
d’imposer leur technique. Les débits de transmission vont de 1 à 54 Mbps.
1.2.
Présentation technique
1.2.1.
Supports physiques des réseaux sans fil
Les liaisons infrarouges
Les liaisons infrarouges sont très
utilisées pour les communications
courtes distances où les éléments
sont en vue directe. Mais les
infrarouges sont très sensibles aux
perturbations. Si les faisceaux
sont directifs, le débit peut être
élevé mais rien ne doit passer
entre les deux éléments qui
communiquent. Les faisceaux
diffusants, eux supportent mieux
les interférences mais les portées
et les débits sont moins élevés.
L’association IrDA (Infrared Data
Association), créé en 1994, gère
les standards relatifs à la technologie infrarouge. La couche physique (Physical IrDA Sata
Signaling) définit typiquement les distances entre les éléments à 2 mètres. Des débits de 4
Mbps peuvent être atteints. Des versions courte distance permettent d’économiser l’énergie et
de dialoguer à 30 cm de distance, ce qui est suffisant dans le cas de périphériques de PC.
Comme pour tout protocole de communication, le niveau 2 est également défini avec l’IrDA
Link Access Protocol (IrLAP) qui gère les connexions entre équipements. L’IrDA Link
Management Protocol (IrLMP) gère le multiplexage des informations sur plusieurs canaux et
offre un certain nombre de services.
1.2.2.
Liaisons radio : Technologies DSSS et FHSS
Les réseaux sans fil utilisent les technologies DSSS et FHSS. La technologie DSSS envoie en
simultanée l’information sur plusieurs canaux parallèles, ce qui donne un taux d’erreur plus
faible (donc un débit plus élevé) et une immunité aux perturbations en bande étroite. La
technologie FHSS, elle, est basée sur le saut de fréquence, ce qui permet d’économiser de la
bande passante.
Mais il existe un cadre réglementaire des fréquences. Le choix des fréquences utilisées posent
un problème de compatibilité entre les différents pays. En effet, selon le pays, ces fréquences
peuvent être réservées pour des utilisations militaires ou des services de secours (SAMU,
pompiers) qui ne peuvent souffrir d’interférences.
Une norme a été élaborée au niveau européen pour des équipements fonctionnant dans la
bande de fréquences 2,4 GHz : l'
ETS 300 328. Cette norme d'
application volontaire (chaque
Etat peut décider ou non de la transposer, pour tout ou partie, dans son droit national)
constitue la base d'
une recommandation des administrations européennes des postes et
télécommunications (CEPT), tendant à harmoniser le régime d'
autorisation des équipements
concernés afin de favoriser leur développement en Europe.
En France, la bande de fréquences concernée (plus précisément la bande de fréquences 2446,5
MHz - 2483,5 MHz), est utilisée par le Ministère de la défense, qui a déployé récemment de
nouveaux équipements, ce qui ne permet pas d'
ouvrir la totalité de la bande de fréquences aux
équipements sans fils.
1.3.
Ies architectures
Les WLAN peuvent fonctionner de deux façon différentes : en mode cellule ou en mode adhoc.
1.3.1.
Le mode cellule
Le mode infrastructure fait appel a des
bornes de concentration appelées, Points
d’Accès, qui gèrent l’ensemble des
communications dans une même zone
géographique, comme dans les réseaux
GSM. Les bornes sont connectées entre
elles par une liaison ou un réseau filaire
ou hertzien.
Les terminaux peuvent se déplacer au
sein de la cellule et garder une liaison
directe avec le point d’accès, ou changer
de cellule, ce qui s’appelle le roaming.
1.3.2.
Le mode ad hoc
Un réseau Ad Hoc est un réseau où il n'
y a pas d'
infrastructure fixe. Le signal est transmis par
l'
intermédiaire des mobiles présents et routé dynamiquement.
L’étude des réseaux ad hoc constitue un axe de recherche important. Un réseau ad hoc est un
réseau sans fil auto-configurable. Lorsque deux machines mobiles ou plus se retrouvent dans
le même secteur géographique, elles doivent se reconnaître pour pouvoir s’échanger des
données. Le réseau doit se configurer automatiquement pour faire la liaison entre ces
machines. Chaque nœud du réseau peut potentiellement échanger des informations avec
chaque autre nœud.
Dans le mode de fonctionnement le plus simple, et généralement le seul implémenté dans les
protocoles actuels, on considère que les nœuds peuvent échanger des données uniquement
lorsqu’elles sont à portée de réception l’une par rapport à l’autre. Dans un mode de
fonctionnement idéal, lorsque deux machines ne peuvent se joindre directement, chaque nœud
du réseau peut servir de routeur. Les réseaux ad-hoc posent alors implicitement des problèmes
de routage entre les machines :
Dans un premier temps, la machine B est dans le rayon de diffusion de la machine A. La
machine A et la machine B veulent échanger des informations. La machine B est mobile. Il
faut, lorsque la machine B sort du rayon de diffusion de A, que la machine C serve de routeur
pour conserver la liaison entre A et B.
Le routage se fait donc directement entre les différents mobiles sans nécessiter un ensemble
de bases fixes. Lorsque l'
on veut envoyer des paquets d'
un point à un autre, on "inonde" de
proche en proche les différents mobiles jusqu'
à identifier une route, puis on utilise le chemin
ainsi crée pour "router" les données de proche en proche (en fait on définit une route de la
destination à la source et on utilise la route inverse)
Bluetooth ne peut pas facilement devenir un réseau Ad-Hoc (sans base blueTooth) car il
utilise une technique de modulation par saut de fréquence (contrairement aux WLAN qui
utilisent l'
étalement de spectre) et une base centralisée à laquelle se relient tous les appareils
plutôt qu'
un routage interne
1.4.
Les technologies de réseaux sans-fil
Plusieurs produits sont déjà commercialisés mais ils sont incompatibles entre eux par un
manque de normalisation. Deux grandes orientations se détachent dans le domaine :
HiperLAN et IEEE 802.11.
1.4.1.
HiperLAN 2
Le nom est l’abréviation de High performance radio LAN 2. Il est soutenu par l’H2GF
(Hyperlan 2 Global Forum) fondé en 1999 par Bosch, Dell, Ericsson, Nokia, Telia et Texas
Instrument. Ils ont été rejoints un an après par d’autres industriels, tels Canon, Motorola ou
encore Samsung.
L’hyperLAN 2 accepte le mode cellule, et ad hoc (dans une version simple) avec une
communication radio. Les vitesses de transfert théoriques sont de 54 Mbps. Ceci grâce à la
modulation OFDM : Orthogonal Frequency Digital Multiplexing. Il est orienté connexion
entre les MT (terminaux mobiles) et l’AP (point d’accès). Les communications point à point
sont bidirectionnelles et les communications point à multipoint sont unidirectionnelles. Un
canal de broadcast permet de joindre tous les MT en même temps. Du fait que les
communications sont en mode connectés, la qualité de service est facilement implémentable.
Les canaux radio utilisés sont automatiquement choisis par le point d’accès en fonction des
interférences dans l’environnement et des fréquences utilisées par les autres cellules radio qui
l’entourent. Le MT reçoit ces données du point d’accès le mieux situé, c’est-à-dire dont le
signal radio est le plus intelligible. Le changement de cellule (roaming) se fait
automatiquement.
1.4.2.
IEEE 802.11
Ce standard de WLAN a été défini dans sa version 1 par le comité RES-10 du projet BRAN
(Broadband Radio Access Networks) de l’ETSI le 16 juillet 1998.
Les communications peuvent se faire soit de station à station, soit par une borne de
concentration. Une station ne peut par contre pas relayer les paquets vers une autre station
terminale. Les débits sont de 1 ou 2 Mbps selon qu’on utilise le codage FHSS (Frequency
Hopping Spread Spectrum) qui utilise un saut de fréquence ou le codage DSSS (Direct
Sequence Sequence Spread Spectrum) qui code de façon continue. L’utilisation de
l’infrarouge est également possible.
La technique d’accès est plus compliquée, il s’agit du CSMA/CA (Collision Avoidance).
Pour éviter les collisions, plusieurs temporisateurs propres à chaque station sont attribués ce
qui limite la probabilité d’avoir deux stations émettant simultanément.
1.4.3.
Les autres axes de recherches
Il y a les petits groupes comme SWAP ou WAP, qui ont connu un échec en france. Cela
changera peut-être avec l’arrivée de l’UMTS.
Pour Internet, Mobile IP a été développé pour permettre de délivrer les paquets pendant que le
mobile n’est pas sur sa base. La prochaine génération du protocole IP (IPv6) offrira un
meilleur support pour délivrer de façon transparente les paquets vers un mobile qui n’est pas
sur son propre réseau. Ces efforts ont été faits notamment pour répondre aux besoins des
réseaux ad hoc dont la topologie est très dynamique ce qui rend inutilisables les stratégies de
routages classiques comme le vecteur de distance ou l’état de la ligne. Les services multi-casts
reçoivent aussi beaucoup d’attention.
2. Problématique
2.1.
Différences physiques :
Pour comprendre les différences entre fixes et mobiles, nous avons utilisé trois concepts de
distinction. : le type d’appareil, la connectivité réseau et le contexte d’exécution.
Concernant le type d’appareil, on en recense deux : fixe ou mobile. Les appareils fixes vont
du PC aux Calculateurs. Ils disposent d’importantes capacités de mémoire et de puissance de
calcul contrairement aux mobiles, qui sont en plus limités par la faible autonomie de leurs
batteries et la taille de leurs écrans. De plus, les appareils mobiles de part la diversité et la
grande vitesse d’évolution de leurs caractéristiques renforcent la problématique de
l’hétérogénéité des terminaux.
Les appareils fixes bénéficient souvent d’une connectivité réseau permanente avec un débit
moyen élevé et un niveau de fiabilité important. Les déconnexions sont rares et durent
généralement peu longtemps. Dans un contexte mobile, ces déconnexions sont non seulement
fréquentes mais elles sont surtout imprévisibles. De plus, la qualité de service offerte par les
différentes technologies sans fil est très variable. Ainsi, Les Wave LAN fournissent une
bande passante raisonnable à condition que le mobile soit à une centaine de mètre de la station
de base (serveur) et que la zone couverte soit peu chargée. La bande passante est partagée
entre les émetteurs (mobiles). Par contre, le GSM a une large couverture mais il fournit une
faible bande passante avec un débit maximum théorique de 9,6 Kbps contre 10 Mbs pour
WLAN.
2.2.
Les systèmes distribués
Nous venons de voir les problèmes liés au terminal, mais que ce passe-t-il au niveau de leurs
réseaux. Nous allons donc présenter les grandes fonctionnalités qu’offre un système fixe. Puis
les comparer aux deux grands types d’infrastructure.
2.2.1.
Les systèmes distribués fixes :
Ces systèmes ont un ensemble de postes fixes, Il sont donc connectés continuellement au
réseau avec une large bande passante et des liens stables. On peut considérer que leur
environnement est statique.
Les fonctionnalités qu’ils permettent d’assurer sont:
•
Echelonnage. C’est la capacité à s’adapter à la charge du réseau. Cette charge peut être
mesurée avec le nombre maximum d’utilisateurs concurrents, le nombre de transaction
exécuté dans un temps donné, le volume de donnée, etc.
•
Ouverture. C’est la possibilité d’étendre et de modifier facilement le système tout en
préservant les précédents investissements.
•
Hétérogénéité : les composants peuvent être écrits dans plusieurs langage, s’exécuter
sur plusieurs Os et sur différent support physique.
•
Tolérance aux fautes. C’est la capacité à résoudre les erreurs sans arrêter l’exécution
de l’ensemble du système.
•
Partage des ressources (matérielles et logicielles). Il est effectué avec un contrôle
d’accès pour l’ensemble des utilisateurs.
2.2.2.
Systèmes Mobiles:
Les ondes radios sont très sensibles aux différentes perturbations, ce qui entraîne des liens de
qualité variable et complexifie l’échelonnage. Pour les réseaux de cellules, on peut se reposer
sur une infrastructure fixe chargée de connecter tous les mobiles présents dans sa zone. La
gestion de la qualité de service se fait en fonction du nombre de personnes connectées. Pour
les réseaux ad-hoc, ces problèmes sont résolus par les techniques d’accès au canal (cf.
présentation technique) qui prennent en compte la qualité des transmissions.
La communication est asymétrique car le rayon (la puissance) d’émission peut varier d’un
mobile à l’autre. Ce phénomène est renforcé par les problèmes de batterie (l’émission d’un
signal à une forte consommation d’énergie).
Il existe différents systèmes pour les mobiles, comme nous l’avons vu (GSM, WLAN, etc), ce
qui pose des problèmes d’hétérogénéité. En effet, si un mobile quitte une cellule (il n’est plus
à la portée d’un émetteur) et qu’il ne trouve pas une cellule du même type de réseau, il ne plus
se connecter. La solution actuelle est de fournir plusieurs types de connexion au mobile et de
choisir la plus appropriée à l’environnement. Mais cette solution est peu utilisée car on doit
connaître à l’avance les différents types de réseau que l’on va traverser. De plus on
augmenterait la taille du mobile.
La tolérance aux fautes est limitée par l’environnement (nombre important de déconnexions
possibles et la faible qualité des liens) et une faible implémentation de détection de collision.
En effet, dans Ethernet, la détection des collisions se fait par l’écoute du support lorsque la
station transmet. Ce type de fonctionnement n’est pas possible dans un environnement sans
fils pour 2 raisons :
-
Implémenter un mécanisme de détection de collision demanderait l’implémentation
d’une liaison radio full duplex.
-
Toutes les stations ne s’entendent pas forcement entre elles car chaque station à une
portée d’écoute limitée, et le fait que la station voulant transmettre teste si le support
est libre, ne veut pas forcément dire que le support est libre autour du récepteur.
Ainsi, le problème revient à savoir s’il existe des interférences dans la zone du récepteur.
C’est le problème de la « station cachée ».
Exemple : La station A veut transmettre des données à la
station B. Si la station C écoute le support, elle n’entend pas
A car il est hors de portée de C : elle peut conclure faussement
qu’aucune transmission n’est en cours dans son entourage. Si
C commence à transmettre, les interférences avec les trames de A auront lieu dans l’entourage
de B.
Le partage des ressources constitue aussi un problème étant donné que l’on peut se connecter
partout. La sécurité est un point important à ne pas négliger, surtout pour les réseaux sans fil.
En effet, ils offrent de nouvelles failles aux pirates. De part la nature immatérielle du support
physique, l’écoute clandestine sur un réseau sans fil est facile. Il faut donc protéger l’accès
aux ressources sans fil et aux informations qui circulent dans les trames.
Les systèmes mobiles sont généralement équipés de processeurs moins puissants que les
machines fixes, et ne peuvent se permettre d’effectuer de longs calculs demandés par les
systèmes de cryptographie. Les systèmes sans fil sont sensibles à deux attaques principales
supplémentaires par rapport aux réseaux classiques. Ces attaques portent atteinte à la
disponibilité du réseau et des nœuds :
-
Le blocage radio : pour rendre le réseau inutilisable, le pirate peut bloquer les
fréquences radio utilisées par le système.
-
Epuisement de la batterie : l’attaquant peut interagir avec le nœud dans le seul but de
lui faire consommer de la batterie. Les applications doivent donc restreindre leur accès
pour éviter ce genre d’attaque.
3. Les besoins des middlewares :
La mobilité nécessite de développer de nouveaux algorithmes et de nouveaux middlewares
pour fournir les fonctionnalités des systèmes distribués dans un environnement mobile.
Ils permettent notamment aux développeurs de développer une architecture logicielle tout en
gardant un haut niveau d’abstraction vis à vis des couches matérielles. Les couches protocoles
réseaux (1-4) sont donc cachées pour le programmeur, ils n’ont plus à s’en soucier. Ainsi Il
évite les problèmes dus à la distribution et au réseau. Cela permet aussi d’augmenter la
rapidité de réalisation des applications, de la maintenances, de l’ajout de nouvelles
fonctionnalités et de nouveaux matériels.
En considérant les problèmes induits par les mobiles peut on continuer à ignorer les couches
inférieures ? Nous allons essayer de le découvrir.
Pour comprendre les différences que cela impliquent, nous allons classifier les middlewares,
et les comparer. Nous restreindrons notre études à la mobilité physique, qui est déjà un vaste
problème.
Pour classifier les middlewares, nous retiendrons les critères suivants :
•
la charge induite par le middleware :
o Lourde : elle nécessitera beaucoup de puissance de calcul et de mémoire.
o Légère : le middleware pourra s’exécuter sur des terminaux disposant de peu
de ressources.
•
le paradigme de communication :
o Synchrone : Cela suppose que les entités ne pourront communiquer entre elles
que si elles sont simultanément connectées au réseau.
o Asynchrone : Dans ce cas, il faudra mettre en place des mécanismes de
synchronisation pour assurer la consistance des données.
• la représentation du contexte :
Le contexte inclut les ressources internes et externes (bande passante, qualité de la
connexion, la localisation) et conditionnement la performance de l’application.
o Transparence : Les middlewares classiques prennent des décisions à la place
de l’application.
o Conscient. Dans un contexte mobile, il peut être intéressant de faire remonter
une partie des informations des couches basses jusqu’à l’application pour
signaler toute modification du contexte d’exécution pour que l’application
puisse s’y adapter.
3.1.1.
Les fixes :
Les postes fixes disposant de meilleure ressources, ils peuvent supporter des traitements plus
lourds. Cela permet d’obtenir un confort important au niveau de l’application au prix d’un
surcoût de charge. En effet, la tolérance aux fautes et la sécurité sont des opérations
gourmandes en ressources.
La communication est synchrone car les liens sont permanents, stables et disposent d’une
large bande passante.
Le contexte est quasi statique, le middleware peut donc fournir aux applications une
représentation transparente. Cela lui permet d’avoir l’ensemble des connaissances et des
besoins, grâce auxquels il peut appliquer des stratégies ou politiques pour fournir la meilleure
qualité de service. Les applications n’ont pas besoins de se soucier des problèmes dus à
l’environnement, comme la tolérance aux fautes, la sécurité, etc.
3.1.2.
Les mobiles :
Les mobiles disposent de ressources peu performantes (faible mémoire, lenteur du processeur,
limitation de la batterie), Ils ne peuvent donc pas exécuter des services qui induisent une
lourde charge. Il faut trouver l’équilibre entre une charge faible et la nécessité d’avoir des
fonctionnalités de bases (ex : la tolérance aux fautes).
Les mobiles se connectent au réseau pour une courte durée (volontaire ou non), on ne peut
donc pas envisager des communications synchrones. Il est probable qu’un mobile demande un
service et se déconnecte. Lors de sa reconnexion, il demandera les résultats de sa précédente
requête. Il peut être intéressant de faire la différence entre déconnexion intentionnelle et non
intentionnelle. Dans le premier cas, on peut s’assurer que le système conserve sa consistance
avant la déconnexion.
Le contexte mobile étant très dynamique, le middleware doit interagir avec l’application pour
l’informer et lui permettre de s’adapter à ces modifications. Le but des middleware en
environnement mobile est de cacher les détails du contexte non pertinents pour alléger le
système mais il doit conserver la possibilité d’informer l’application sur les fluctuations de la
qualité de service.
4. Les middlewares pour les réseaux fixes :
4.1.
Les middlewares orientés objets et composants :
Les objets distribués peuvent communiquer entre eux et appeler une méthode d’un serveur
d’objet qui réside sur un autre poste. Ce type de middleware s’est développé à partir des
Remote Procédure Call. Les produits de cette catégorie comprennent les implémentations de
CORBA, Microsoft COM, Java/RMI et Entreprise Java Beans. En dépit de leurs grands
succès, ils ne peuvent pas être appliqués aux environnements mobiles en raison de la charge
minimale qu’ils induisent (tous les mécanismes visant à rendre transparentes les couches
inférieures). En effet, celle ci dépasse déjà les capacités des appareils mobiles de faible
puissance.
4.2.
Les middlewares orientés messages :
Les composants communiquent à l’aide de messages : Un client envoie un message contenant
la requête pour un service avec ses paramètres à un serveur, qui répond avec un message
contenant le résultat. Ce type de middleware supporte donc les communications asynchrones
mais il nécessite de nombreuses ressources, notamment en mémoire pour pouvoir stocker la
liste des messages qu’il doit exécuter. De plus, aucune forme de conscience (awareness) n’est
supportée : les messages sont gérés de façon transparente pour les applications. Sun’s Java
Message Queue et IBM’s MQSeries font parties de cette catégorie.
4.3.
Les middlewares orientés transactions :
Ils sont principalement utilisés dans les applications de base de données. Ils supportent les
transactions sur un système distribué : un client regroupe plusieurs opérations dans une
transaction et le middleware l’envoie au serveur. Ils permettent des communications
asynchrones et synchrones tout en garantissant une atomicité des transactions (seulement si le
serveur implémente un protocole de validation à deux phases. IBM CICS et BEA’s Tuxedo
appartiennent à cette catégorie, qui ne peut pas être non plus utilisée pour les mobiles.
5. Vers des middlewares adaptés aux mobiles
Il s’agit ici de présenter des plates-formes qui n’ont pas nécessairement été conçues dans
l’optique de la mobilité mais qui comportent certaines fonctionnalités permettant d ‘envisager
ce type d’application.
Les solutions développées actuellement peuvent être regroupées en trois catégories à savoir
les Reflective middleware solutions permettant de construire des middlewares légers et
reconfigurables donc adaptatifs, les tuple-space based systems proposant un espace de
stockage virtuel partagé pour gérer des communications asynchrones ; les Context-aware
middleware qui fournissent aux applications des informations sur les modifications du
contexte d’exécution.
5.1.
Réflective middleware solutions :
Les réflectives middlewares, utilisent le principe de réflexion pour s’auto modifier et donc
s’adapter au mieux à la situation rencontrée. Les middlewares classiques décident seuls du
comportement à adopter sans consulter l’application. Avec la réflexion, c’est l’application
qui, en fonction de ses besoins, commande au middleware de modifier son comportement.
5.1.1.
OpenCorba :
OpenCorba [Ledoux 1999] permet aux utilisateurs d’adapter la représentation et les
politiques d’exécution de l’application dynamiquement. Il fait la distinction entre ce que fait
un objet et comment il le fait. Le protocole permet de changer de classe ou de meta-classe
dynamiquement, sans regénérer du code.
En dépit de sa flexibilité, des résultats expérimentaux ont montré l’impact négatif de cette
approche sur l’efficacité. En effet, le standard CORBA est bien trop lourd pour tourner sur des
mobiles. Les performances risquent d’être pires en utilisant OpenCorba.
5.1.2.
Next generation middleware :
Dans Next generation middleware [Blair et al. 1999], chaque interface (un objet peu en avoir
plusieurs) a un ensemble de meta-espaces, qui sont structurés en trois modèles :
encapsulation, environnement et composition. L’encapsulation fournit un ensemble de
méthodes et d’attributs pour cette interface. La composition permet d’accéder aux éléments
constitutifs de l’objet. Le problème d’intégrité est minimisé car chaque interface a son metaespace qui est structuré. Cette configuration permet d’adapter et d’ajouter facilement des
services.
Cependant les expérimentations qui ont été effectuées sont basées sur le modèle CORBA, qui
n’est pas adapté aux environnements mobiles.
5.1.3.
Globe
Globe [Van Steen et al. 1999 ; Bakker et al. 1999] est une plate-forme middleware spécialisée
dans la conception d’applications distribuées à grande échelle. Pour cela, Globe utilise des
mécanismes de réplication de l’information couplés au principe de réflexion.
Alors que la plupart des middleware prennent seuls les décisions concernant les données à
répliquer et les moyens de le faire, Globe laisse la possibilité au développeur de définir cela.
Globe introduit la notion d’objets distribués et partagés (Distributed Shared Object). Il s’agit
d’objets conceptuels répartis et partagés entre plusieurs machines qui disposent de
représentants locaux des objets (proxies et réplicats). Les représentants coopèrent pour mettre
à disposition une image consistante de chaque objet. Cette approche apporte une certaine
flexibilité au système tout en respectant les mécanismes de réplication et de répartition.
On notera que la structure des représentants locaux sépare la partie du code chargée de la
réplication de celle chargée de la communication. De cette façon, le programmeur peut
développer son propre protocole de réplication indépendamment de l’aspect communication.
Les algorithmes de réplications les plus courants sont fournis en standard par la plate-forme.
Le principe de réplication commandé par l’application est intéressant car il répond à un des
besoins émis par la mobilité. Mais la plate-forme Globe en elle même est conçue pour
fonctionner sur des postes fixes ayant une connexion permanente, elle n’est donc pas adaptée
au monde mobile.
5.2.
Tuple-space based systems
Les middlewares à base d’espace de tuples se prêtent bien aux applications mobiles car ils
permettent d’implanter des mécanismes de communications asynchrones. Avec ce type de
système, l’émetteur et le récepteur n’ont pas besoin d’être connectés simultanément au réseau
pour échanger des données.
Un tuple peut être considéré comme un vecteur de données typées. L’espace de tuple est un
conteneur permettant la mise en partage des tuples et la gestion des accès concurrents.
Tout ceci reste théorique et certaines questions fondamentales restent en suspend comme la
persistance des données ou encore la présentation des données aux clients mobiles et surtout
le problème de la résolution des conflits dans le cadre de la synchronisation des données.
5.2.1.
Lime
Lime [Picco et al. 1999] propose une adaptation du Linda tuple space [Gelernter 1985]. Il
s’agit de décomposer l’espace de tuples en sous espaces associés à une unité mobile. Ainsi
chaque unité détient une partie de l’information qu’elle partage pour la durée de sa connexion
au réseau (notion de partage éphémère ou transient sharing).
Pour mettre en partage l’information, chaque unité dispose d’une interface d’espace de tuple
(interface tuple space, ITS). Cette interface contient les tuples que l’unité souhaite partager.
Lorsque l’unité est connectée au réseau, le contenu de l’ITS est recalculée de manière à
fusionner les tuples mis à disposition par l’ensemble des unités accessibles. A la connexion
d’une nouvelle unité, les ITS sont recalculées pour prendre en compte l’apport informationnel
des nouveaux tuples, on parle d’engagement. Par un processus inverse, la déconnexion d’une
unité entraîne le désengagement de son espace de tuple au sein de l’espace global. Ainsi, la
disponibilité de l’information est mise à jour dynamiquement et de manière transparente pour
l’application ce qui peut être vu comme un avantage.
Cependant cet avantage est à relativiser si l’on cherche à implanter un certain degré de
conscience au niveau applicatif (notion de context awareness cf. 5.3), en particulier si l’on
voulait par exemple implanter une politique de contrôle d’accès à l’espace de tuple global.
Lime tente d’apporter une réponse à cela en permettant d’effectuer différentes projections de
l’espace partagé et par conséquent de présenter à l’application une partie restreinte de l’espace
global.
Concernant l’implantation du « context awareness », Lime introduit la notion de LimeSystem
qui assure le partage des informations relatives au système (utiles à la définition d’un contexte
comme par exemple le type de composants mobiles présents sur le réseau et les relations
existantes entre ces composants) dans un espace de tuples dédié dont l’accès est en lecture
seule. Enfin, il est possible de définir des réactions sur l’espace de tuples. Il s’agit de
procédures déclenchées par certaines modifications dans la configuration du système.
Bien que cela offre une certaine réactivité, aucun mécanisme ne permet pour le moment à
Lime d’adapter son comportement aux modifications du contexte.
5.2.2.
Tspaces
Tspaces [Wyckoff et al 1998] se présente comme l’alliance entre espaces de tuples et
technologies issues des bases de données. Les espaces de tuples apportent un moyen de
communication flexible pour le partage de l’information. Le recours aux technologies issues
des bases de données garantit la cohérence du système(mécanismes transactionnels) et offre
des possibilités de requêtage évoluées.
Tspaces est basé sur une architecture clients/serveurs. Les serveurs peuvent gérer plusieurs
espaces de tuples mais chaque espace de tuples est géré de manière centralisée par un seul
serveur ce qui élimine la notion de tolérance aux fautes. De plus l’adoption de ce type
d ‘architecture limite Tspaces aux applications nomades puisque les serveurs doivent disposer
de ressources importantes et donc être fixes.
Tspaces est programmé en Java ce qui est un atout en terme de portabilité mais rajoute une
couche supplémentaire pénalisante en terme de performance et de charge.
5.2.3.
JavaSpaces
Javaspaces [Waldo 1998] repose sur les mêmes principes que Tspaces avec en particulier
l’apport des mécanismes transactionnels permettant de garantir l’intégrité de l’espace de
tuples. Mais Javaspaces se différencie en ne considérant plus les tuples comme de simples
vecteurs mais comme de vrais objets Java ce qui permet de leur associer des méthodes et par
conséquent d’en étendre les capacités.
Au même titre que Tspaces, Javaspaces repose sur une architecture client légers mobiles
/serveurs fixes ce qui induit les mêmes limitations que celles énoncées précédemment.
5.2.4.
Limitations des middleware à base d’espace de tuples
Comme nous l’avons montré, le concept d’espace de tuples permet d’implanter efficacement
le mode de communication asynchrone mais il souffre de nombreuses limitations.
Tout d’abord, les tuples sont des structures plates et par conséquent difficilement
organisables. Cela induit de piètres performances lors de l’accès aux données, notamment
lorsque le volume d’informations atteint un certain niveau.
Ensuite, les primitives read, write et take offertes par les systèmes à base d’espace de tuples
sont trop basiques pour permettre l’intégration du « context awareness » c’est à dire la
possibilité pour l’application d’influencer le comportement du middleware en fonction des
modifications du contexte d’exécution. Cela nécessiterait l’adoption de paradigmes
d’interaction beaucoup plus complexes qui s’appuient sur une structuration des données bien
plus évoluée que celle offerte par les tuples.
Un autre point noir de ces systèmes réside dans la gestion de la synchronisation des données.
Les déconnexions sont fréquentes dans le cadre d’applications mobiles, il est donc nécessaire
de fournir des mécanismes de « réconciliation » qui permettent de résoudre les conflits de
tuples répliqués et modifiés par plusieurs entités lorsque celle ci se reconnectent au réseau.
5.3.
Context aware middleware
Ce type de middleware permet aux applications de s’adapter aux modifications du contexte
d’exécution et/ou à l’hétérogénéité des entités avec lesquelles elles interagissent.
La notion de contexte d’exécution correspond à un ensemble de données relatives à :
•
•
•
•
La localisation.
Les caractéristiques de l’appareil (puissance, mémoire, état de la batterie, …)
L’environnement physique (Bande passante disponible, bruit sur la ligne,…)
L’activité de l’utilisateur (faible/forte mobilité, veille, …)
Dans l’état actuel des choses, seul le critère de localisation a donné lieu à une réalisation dans
le monde des middleware mais la prise en compte des autres indicateurs s’avère cruciale dans
un contexte mobile.
La prise en compte de la localisation au niveau applicatif permet en autre d’adapter le service
en fonction de la situation géographique de l’utilisateur. Cela peut aller de l’aide à la
navigation jusqu’à la publicité ciblée en fonction du lieu dans lequel on se trouve. La
problématique dans ce domaine consiste à gérer de manière transparente les différents
capteurs de position (GPS en extérieur, infrarouge ou radio en intérieur). A ce niveau, le
middleware apporte la transparence en proposant une interface commune aux différents
systèmes. C’est le cas du middleware Nexus [Fritsch et al. 2000].
Nexus apporte une couche d’abstraction pour l’exploitation de différents types de système de
positionnement et possède aussi la faculté de s’adapter à des appareils n’ayant pas les mêmes
ressources matérielles (puissance, mémoire,…).
En fait la problématique du context awareness se résume à une question de compromis entre
le volume d’information qu’il est possible de collecter et la charge supplémentaire induite par
la collecte et le traitement de ces données. En effet, ces deux opérations impliquent l’ajout de
capteurs et de code au sein des terminaux augmentant d’autant leur coût et leur consommation
en ressources (batterie, processeur, mémoire, …).
5.4.
Les autre solutions intéressants
Nous allons présenter dans cette partie des solutions qui n’appartiennent à aucune des trois
catégories précédentes mais qui répondent à certains problèmes posés par l’informatique
mobile comme la gestion des déconnexions ou la découverte dynamique de nouveaux
services.
Ainsi des systèmes comme Coda et Odyssey, Bayou et Xmiddle ont pour but de maximiser la
disponibilité des données en permettant aux utilisateurs d’accéder à des réplicats. Les
différences entre ces solutions se situent dans la façon de détecter et résoudre les conflits
engendrés par l’utilisation de ces réplicats.
5.4.1.
Coda et Odyssey
Coda [Satyanarayanan et al. 1990] est à la base un système de fichier distribué spécialisé dans
le déploiement d’applications à grande échelle. Il repose principalement sur la réplication des
serveurs et un mode déconnecté. La réplication implique la redondance dans le stockage de
l’information. Le mode déconnecté met en jeu un système de caches temporaires.
Dans l’architecture Coda, il existe une distinction entre les serveurs, peu nombreux, qui sont
fiables et synchronisés et les nombreux clients, aux comportements aléatoires, qui peuvent
être coupés du réseau pendant une longue période. Par conséquent Coda repose sur un cœur
de serveurs fixes et se prête dans le meilleur des cas aux applications nomades (pas ad-hoc).
Les déconnexions sont considérées comme des phénomènes rares sous Coda. Lors des
déconnexions, les clients accèdent uniquement aux données qu’ils avaient précédemment mis
en cache. A la reconnexion, les modifications apportées sont propagées au groupe de serveurs
gérant le réplicat affecté. La déconnexion est donc perçue comme un état transitoire qui doit
être transparent pour le client. Cela pose néanmoins un problème dans la mesure ou le client
ne dispose d’aucun moyen de définir quelles sont les informations qui doivent être répliquées
localement (gâchis de bande passante et de mémoire au niveau du client).
Odyssey est le successeur de Coda, il apporte des fonctionnalités permettant la prise en
compte du contexte d’exécution. Grâce au modèle collaboratif d’adaptation qu’il propose,
Coda permet aux applications de définir des seuils de disponibilité sur les ressources qui leur
sont les plus utiles. Ainsi, le middleware sera capable de réagir en fonction de la qualité de
l’accès aux données.
5.4.2.
Bayou
Le système de stockage bayou [Demers et al. 1994 ; Terry et al. 1995] se donne pour objectif
la résolution des conflits résultant de l’activité concurrente sur les appareil ayant un accès
réseau de faible qualité. Avec Bayou, chaque application peut lire et écrire les réplicats de
données sans qu’une synchronisation permanente ne soit nécessaire. Chaque terminal reçoit
des mises à jour de la part des autres.
La spécificité de Bayou est qu’il collabore avec les applications qu’il supporte. En fait, il
appartient aux développeurs de décrire les situations de conflits ainsi que les procédures de
résolution associées. Le middleware implémente le code pour concrétiser ces traitements.
La détection des conflits se base sur le contrôle des dépendances. Sur chaque opération
d’écriture, un serveur est consulté pour savoir si la donnée à modifier est à jour. Si ce n’est
pas le cas, l’autorisation de modifier la donnée est refusée et la procédure de résolution de
conflit est déclenchée.
La consistance du système est assurée grâce à la synchronisation des opérations d’écriture au
niveau du cœur de serveurs (les opérations d’écriture sont toutes effectuées dans le même
ordre) et au déterminisme des opérations de détection et résolution de conflits (les conflits
sont résolus de la même manière sur tous les serveurs).
En raison de son architecture basée sur un cœur de serveurs fixes bayou impose les mêmes
limites que Coda et Odyssey.
5.4.3.
Jini
Dans un contexte mobile, il est possible qu’un service disponible à la dernière connexion, ne
le soit plus à la reconnexion ; de même un nouveau service peut devenir disponible en cours
d’exécution d’une application.
Jini [Arnold et al. 1999] se propose de répondre à ce problème en définissant un service
comme une entité qui peut être utilisée par une personne, un programme ou un autre service.
Les membres du système Jini se regroupent pour partager l’accès aux services. Un service de
base permet la recherche d’autres services à partir de leur description fonctionnelle (primitive
discovery) et la mise en relation avec les services trouvés (primitive join). En fait, il s’agit
d’un service de type pages jaunes.
Encore une fois cette solution repose sur une infrastructure fixe et ne se prête donc pas aux
applications ad-hoc.
Conclusion
Après ce tour d’horizon, nous pouvons conclure qu’à l’heure actuelle, aucun middleware ne
réunit toutes les caractéristiques requises par les applications mobiles. Le middleware idéal
pour l’informatique mobile doit être suffisamment léger pour fonctionner sur des terminaux
bénéficiant de peu de ressources, supporter des modes de communication asynchrone et doit
pouvoir prévenir l’application des changements opérés sur le contexte d’exécution
(fluctuation de la qualité de service sur le réseau, faible niveau de batterie, …).
Il faut donc s’appuyer sur les solutions existantes et les fusionner pour développer un nouveau
middleware.
Le « contexte awareness » est une des propriété qui apparaît comme essentielle au
développement de la mobilité. Les travaux la concernant sont en cours et des questions
fondamentales restent sans réponse. Comment représenter les informations relatives au
contexte et comment les présenter à l’application (au développeur)? Une solution serait
d’utiliser des méta données. Dans cette optique, le langage XML apporte le niveau de
structuration nécessaire à ce type d’application.
Concernant l’interaction entre middleware et application, on pourrait s’appuyer sur le
principe de réflexion et implanter un certain nombre de comportements prédéfinis au niveau
du middleware. Il appartiendrait à l’application de modifier le comportement du middleware
en fonction des informations que ce dernier lui transmet.
Au niveau des structures de données partagées, on pourrait se pencher sur l’utilisation du
paradigme de communication peer to peer. L’information est répartie sur l’ensemble des
terminaux avec des mécanismes de réplication, l’accès aux informations s’effectue par le biais
de requêtes se propageant de proche en proche. Cette approche décentralisée pourrait convenir
aux applications ad-hoc sous réserve que le réseau dispose en permanence d’une masse
critique de terminaux connectés ou que le degré de réplication soit important.
L’aspect sécurité revêt une importance capitale dans les applications mobiles. La facilité
d’accès au médium physique (l’air) rend le recours à la cryptographie quasi obligatoire pour
préserver le caractère privé des informations circulant sur le réseau. Néanmoins ces
mécanismes sont coûteux en terme de bande passante et de puissance calcul.
Autre point important, on note une différence importante des capacités entre les terminaux
mobile si bien qu’il serait intéressant de disposer de composants modulaires pour
l’élaboration de middlewares « à la carte » suivant le terminal cible. On pourrait coder les
même fonctionnalités avec différents niveaux de détail et donc de légèreté pour trouver le
meilleur compromis entre intelligence du système et charge induite pour chaque type
d’appareil.
Bibliographie
Arnold, K., O'
Sullivan, B., Scheifler, R. W., Waldo, J., and Wollrath, A. 1999.
The Jini[tm] Speci_cation. Addison-Wesley.
Baker, S. 1997. Corba Distributed Objects : Using Orbix. Addison-Wesley.
Blair, G., Coulson, G., Robin, P., and Papathomas, M. 1998. An Architecture for
Next Generation Middleware. In Proceedings of Middleware '
98 (Sept. 1998), pp. 191{206.
Springer Verlag.
Bray, J. and Sturman, C. F. 2000. Bluetooth: Connect Without Cables. Prentice Hall.
Capra, L., Emmerich, W., and Mascolo, C. 2001a. Middleware for Mobile Computing:
Awareness vs. Transparency (Position Summary). In Proceedings of the 8th Workshop on
Hot Topics in Operating Systems (HotOS-VIII) (Schloss Elmau, Germany, May 2001), pp.
142.
Capra, L., Emmerich, W., and Mascolo, C. 2001b. Re ective Middleware Solutions for
Context-Aware Applications. In Proceedings of REFLECTION 2001. The Third International Conference on Metalevel Architectures and Separation of Crosscutting Concerns
(Kyoto, Japan, Sept. 2001). To appear.
CellPoint, Inc. 2000. The CellPoint System. http://www.cellpt.com/thetechnology2.htm.
Demers, A., Petersen, K., Spreitzer, M., Terry, D., Theimer, M., and welch, B. 1994.
The Bayou Architecture: Support for Data Sharing among Mobile Users. In Proceedings of
the IEEE Workshop on Mobile Computing Systems and Applications (Santa Cruz, California, Dec. 1994), pp. 2{7.
Dey, A., Futakawa, M., Salber, D., and Abowd, G. 1999. The Conference Assistant:
Combining Context-Awareness with Wearable Computing. In Proc. of the 3 rd International
Symposium on wearable Computers (ISWC '
99) (San Fran_sco, California, Oct. 1999), pp.
21{28. IEEE Computer Society Press.
Eliassen, F., Andersen, A., Blair, G. S., Costa, F., Coulson, G., Goebel, V., Hansen,
O., Kristensen, T., Plagemann, T., Rafaelsen, H. O., Saikoski, K. B., and Yu,
W. 1999. Next Generation Middleware: Requirements, Architecture and Prototypes.
In Proceedings of the 7 th IEEE Workshop on Future Trends in Distributed Computing
Systems (Dec. 1999), pp. 60{65. IEEE Computer Society Press.
Emmerich, W. 2000a. Engineering Distributed Objects. John Wiley & Sons.
Emmerich, W. 2000b. Software Engineering and Middleware: A Roadmap. In The Future
of Software Engineering - 22 nd Int. Conf. on Software Engineering (ICSE2000) (May
2000), pp. 117{129. ACM Press.
Fritsch, D., Klinec, D., and Volz, S. 2000. NEXUS Positioning and Data Management Concepts for Location Aware Applications. In Proceedings of the 2nd International
Symposium on Telegeoprocessing (Nice-Sophia-Antipolis, France, 2000), pp. 171{184.
Gelernter, D. 1985. Generative Communication in Linda. ACM Transactions on Programming Languages and Systems 7, 1, 80{112.
Held, G. 2000. Data Over Wireless Networks: Bluetooth, WAP, and Wireless Lans.
McGraw-Hill.
Ledoux, T. 1999. OpenCorba: a Re ective Open Broker. In Re ection'
99 , Volume 1616 of
LNCS (Saint-Malo, France, 1999), pp. 197{214. Springer.
Long, S., Kooper, R., Abowd, G., and Atkenson, C. 1996. Rapid prototyping of mobile
context-aware applications: the Cyberguide case study. In Proceedings of the Second Annual International Conference on Mobile Computing and Networking (White Plains, NY,
Nov. 1996), pp. 97{107. ACM Press.
Picco, G., Murphy, A., and Roman, G.-C. 1999. Lime: Linda meets Mobility. In Proc.
21 st Int. Conf. on Software Engineering (ICSE-99) (May 1999), pp. 368{377. ACM Press.
Roman, G.-C., Murphy, A. L., and Picco, G. P. 2000. Software Engineering for Mobility: A Roadmap. In The Future of Software Engineering - 22 nd Int. Conf. on Software
Engineering (ICSE2000) (May 2000), pp. 243{258. ACM Press.
Satyanarayanan, M., Kistler, J., Kumar, P., Okasaki, M., Siegel, E., and Steere, D.
1990. Coda: A Highly Available File System for a Distributed Workstation Environment.
IEEE Transactions on Computers 39, 4 (April), 447{459.
Terry, D., Theimer, M., Petersen, K., Demers, A., Spreitzer, M., and Hauser, C. 1995.
Managing Update Con icts in Bayou, a Weakly Connected Replicated Storage System. In
Proceedings of the 15th ACM Symposium on Operating Systems Principles (SOSP-15)
(Cooper Mountain, Colorado, Aug. 1995), pp. 172{183.
van Steen, M., Hauck, F., Homburg, P., and Tanenbaum, A. 1999. Globe: a Wide-Area
Distributed System. IEEE Concurrency 7, 1 (March), 70{78.
Waldo, J. 1998. Javaspaces speci_cation 1.0. Technical report (March), Sun Microsystems.
Wyckoff, P., McLaughry, S. W., Lehman, T. J., and Ford, D. A. 1998. T Spaces. IBM
Systems Journal 37, 3, 454{474.
Yokote, Y. 1992. The Apertos reflective operating system: The concept and its implementation. In Proceedings of OOPSLA'
92 (1992), pp. 414{434. ACM Press.