Editorial
Avec la croissance de l’internet et de l’informatique nomade, désormais accessibles au plus grand nombre, les réseaux (avec ou sans fil) et les systèmes répartis à grande échelle deviennent des supports privilégiés pour de nouvelles applications : commerce électronique, recherche d’information sur le web, exploitation de grandes bases de données réparties, mais aussi cartes à puce, assistants personnels... Les solutions proposées pour le développement d’applications réparties « classiques » ne sont plus nécessairement viables dans ce cadre. Le problème de l’échelle, en particulier, est fondamental : à grande échelle, l’hétérogénéité matérielle et logicielle est de mise, les risques de défaillances matérielles sont réels, les performances en communication sont amoindries, et les conditions d’exécution (services et ressources fournis par l’environnement) varient qualitativement et quantitativement. Par conséquent, les modèles de programmation et les environnements d’exécution répartie « classiques » doivent être adaptés.
Code et agents mobiles apparaissent dans ce contexte comme une solution prometteuse permettant la construction d’applications flexibles et dynamiquement adaptables aux contraintes de l’environnement d’exécution ou de l’application elle- même. La mobilité donne une dimension supplémentaire aux systèmes répartis : c’est une forme dynamique de répartition qui apparaît comme une propriété intrinsèque de l’application (mobilité réelle d’un composant physique) ou comme une solution informatique (mobilité logicielle virtuelle). On parle d’application mobile lorsqu’un de ses composants, matériel ou logiciel, se déplace sur un réseau en cours d’exécution.
La mobilité de code brise le lien statique entre le programme et la machine hôte du calcul, et offre un premier degré de décentralisation des activités et de flexibilité.
Elle permet l’adaptation de services distants, mais se heurte déjà aux problèmes d’hétérogénéité et de sécurité. Le paradigme des agents mobiles s’appuie sur la mobilité de code et prend en partie ses racines dans les domaines de la gestion de processus et de l’équilibrage de charge, dans l’intelligence artificielle distribuée ainsi que dans les modèles et les systèmes à objets concurrents. Un agent mobile est une entité logicielle capable de se déplacer dynamiquement d’une machine à une autre, et ce en transportant non seulement son code et ses données, mais également son état d’exécution. L’agent mobile peut prendre lui-même, de manière autonome, la décision de se déplacer ; la mobilité est ainsi contrôlée par l’application et non par le système d’exécution. Le but du déplacement est généralement d’accéder localement à des données ou à des ressources initialement distantes : le
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com
768 RSTI - TSI – 21/2002. Agents et codes mobiles
remplacement des interactions distantes par des interactions locales, et par conséquent la réduction du trafic sur le réseau, contribue à de meilleures performances. Un agent peut aussi se déplacer – ou être déplacé – afin de prévenir une panne ou pour suivre un composant matériel mobile. Ainsi, on peut attendre de ce paradigme qu’il offre un surcroît d’abstraction et d’expressivité dans la programmation d’applications réparties.
L’intérêt suscité par les techniques à base de code et agents mobiles est en partie lié à la popularité du langage Java : d’une part, les applets constituent une des formes les plus usitées de code mobile ; d’autre part, la technologie Java offre de nombreux avantages (machine virtuelle, sérialisation d’objet, invocation de méthodes à distance, politiques de sécurité) et supporte de nombreux travaux dans le domaine.
Au-delà, on ne saurait oublier que le paradigme du code mobile fait aussi l’objet de travaux sémantiques. Après les algèbres de processus statiques comme CCS ou CSP, toute une lignée de calculs de processus mobiles issus du pi-calcul est apparue dans les années 90. Certains d’entre eux, comme le join-calcul, possèdent de meilleures propriétés que CCS ou CSP pour la localité des décisions, et l’expérience montre qu’en les intégrant à un langage fonctionnel (ML), on obtient un langage de programmation avec code mobile particulièrement agréable et efficace. Pour compléter le point sur les recherches actuelles, qui fait l’objet de ce numéro thématique, nous encourageons le lecteur à consulter le site de JoCaml (http://pauillac.inria.fr/jocaml/). Parmi 13 articles soumis, 6 ont été sélectionnés pour constituer ce numéro.
Le premier article, de G. Bernard et L. Ismail, intitulé « Apport des agents mobiles à l’exécution répartie », présente de manière synthétique les principales approches pour la construction de plateformes dédiées au code et aux agents mobiles, en les comparant suivant différents critères : environnement d’exécution, type de migration, nature des communications, mécanismes de sécurité, mécanismes de désignation. Par ailleurs, il donne des indications expérimentales mesurant l’apport de la mobilité sur les performances d’une application répartie.
Dans l’article « Objets actifs mobiles et communicants », F. Baude, D. Caromel, F. Huet et J. Vayssière proposent un modèle à objets actifs pour la programmation d’applications à base d’agents mobiles, et son implantation sous forme d’une bibliothèque Java appelée ProActive. La mobilité s’intègre au modèle à objets actifs au moyen de techniques réflexives et deux mécanismes complémentaires transparents pour le programmeur, les communications asynchrones avec objet futur et l’attente de résultat par nécessité. Les avantages obtenus en termes d’expressivité et de flexibilité s’accompagnent de résultats de performance tout à fait encourageants.
L’article de B. Dillenseger, L. Hazard, A.-M. Tagant et H. Tran Viet, intitulé
« Les agents mobiles réactifs Mooréa », soulève un problème souvent ignoré, l’aptitude d’une plateforme à supporter un grand nombre d’agents, mais néanmoins
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com
Editorial 769
crucial pour des applications de commerce électronique ou pour la mise en œuvre de services de télécommunication. Les auteurs étudient les limites des modèles à base de fils d’exécution et proposent, en réponse, un modèle d’objet réactif synchrone étendu à une mobilité à la fois forte et transparente. Il en résulte une plateforme à agents mobiles, Mooréa, construite modulairement et conformément aux standards de l’Object Management Group (http://www.omg.org).
L’article « Un élément de gestion des réseaux actifs », de V. Galtier, traite de l’estimation et du contrôle des besoins d’une application active en ressource CPU dans un réseau hétérogène. Dans cette perspective, l’auteur développe un modèle d’estimation basé sur la construction de profils tirés de traces d’exécution. Ce modèle permet de définir une politique de placement ou de déplacement d’un agent mobile sur le nœud le plus approprié.
Dans l’article de G. Grimaud et S. Jean intitulé « Code mobile et carte à puce », la notion de code encarté apparaît comme une forme de code mobile sous deux aspects différents : d’une part, la carte est un vecteur de code mobile ; d’autre part, la carte est une plateforme pour l’exécution de code non résident. Les auteurs proposent un langage de programmation typé permettant d’assurer la sécurité- innocuité des codes chargés. La viabilité du système d’exploitation ouvert pour les cartes à microprocesseur est validée par différentes mesures concernant la taille du code, l’efficacité du mécanisme de chargement, et les performances du code chargé.
L’article « Adaptation d’une application multimédia par un code mobile », de D.
Hagimont et N. Layaida, décrit une expérience d’adaptation d’une application multimédia répartie au moyen d’agents mobiles programmés en Java. Afin de prendre en compte certaines limitations de la machine cliente et de la bande passante du réseau, un agent mobile est envoyé sur le site émetteur de la vidéo pour adapter les données transmises. La solution proposée est validée par des mesures significatives portant sur l’impact de l’adaptation sur le site client, le réseau, et le site proxy.
Nous remercions les auteurs qui ont répondu à notre appel à proposition d’articles, les membres du comité de lecture constitué pour ce numéro (1), le comité de rédaction de TSI et les différents relecteurs (2), pour l’ensemble de leurs contributions, ainsi que nos collègues du comité de programme de l’école d’Informatique des SYstèmes PArallèles et Répartis (ISYPAR, http://www.irit.fr/
MANIFS/ISYPAR/ISYPAR. html) de l’I.R.I.T., dont la 4e édition réunit en mars 2000 de nombreux acteurs de la communauté française « Code mobile », et qui fut en partie à l’origine de ce numéro. Bonne lecture à tous.
J.-P. Arcangeli (IRIT, Toulouse) G. Bernard (INT, Evry) A. Hameurlain (IRIT, Toulouse) J.-F. Monin (France Telecom R&D, Lannion)
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com
770 RSTI - TSI – 21/2002. Agents et codes mobiles
(1) COMITE DE LECTURE
G. Boudol (INRIA, Sophia-Antipolis), C. Bryce (CUI, Genève),
J.-M. Geib (LIFL, Lille),
K. Milsted (France Telecom R&D, Meylan), M. Riveill (I3S-ESSI, Nice),
J.-B. Stéfani (INRIA, Montbonnot).
(2) RELECTEURS NON MEMBRES DU COMITE DE REDACTION DE TSI R. André-Obrecht (IRIT, Toulouse),
I. Demeure (GET-ENST, Paris), A. Duda (LSR-IMAG, Grenoble), S. Fdida (LIP6, Paris), O.
Festor (LORIA, Nancy), C. Jard (IRISA, Rennes),
M. Lacoste (France Telecom R&D, Meylan), F. Migeon (IRIT, Toulouse),
F. Ouabdesselam (LSR-IMAG, Grenoble), T. Priol (IRISA, Rennes),
C. Queinnec (LIP6, Paris),
J.-L. Richier (LSR-IMAG, Grenoble), B. Rozoy (LRI, Orsay),
L. Seinturier (LIP6, Paris), K.-L.
Thai (LIP6, Paris),
B. Tourancheau (Sun Labs, Meylan).
Cet article des Editions Lavoisier est disponible en acces libre et gratuit sur tsi.revuesonline.com