Bonjour Thomas. Pourrais-tu nous expliquer brièvement ce quest un intergiciel, et plus particulièrement un intergiciel schizophrène ?
Un intergiciel, cest une bibliothèque qui offre aux développeurs dapplication un moyen de faire interagir des composants distants sans avoir à prendre en charge certains aspects délicats de la répartition. En particulier, un intergiciel permet la communication entre composants sans que les développeurs aient à utiliser eux-mêmes les fonctionnalités de communication de lenvironnement (par exemple les interfaces offertes par les réseaux).
Un intergiciel peut prendre en charge dautres aspects problématiques de la communication entre calculateurs, tels que lhétérogénéité. À partir dune description de haut niveau des données que doivent échanger deux composants, un intergiciel peut proposer une représentation commune de ces données, destinée à être communiquée entre calculateurs, et fournir les fonctions de conversion permettant de passer des représentations natives utilisées par les composants de lapplication à la représentation commune utilisée pour les échanges.
Enfin, un intergiciel peut offrir de nombreux services de haut niveau permettant de répondre à certains problèmes introduits spécifiquement par la répartition, tels que des services dannuaires de composants.
Les intergiciels offrent ces fonctionnalités aux applications par lintermédiaire dinterfaces de programmation, qui peuvent être définies de diverses façons. Chaque façon de présenter les fonctionnalités des intergiciels aux composants applicatifs définit une personnalité, cest-à -dire une vue de ces fonctionnalités présentée aux composants applicatifs.
De même, diverses conventions (ou protocoles) peuvent être utilisés par les intergiciels lorsquils communiquent à travers un réseau pour sinformer mutuellement des interactions demandées par les composants applicatifs. Chaque protocole susceptible dêtre utilisé constitue également une personnalité, cest-à -dire une vue des fonctionnalités dintergiciel, présentée cette fois aux autres intergiciels dune application répartie.
Un intergiciel schizophrène est un intergiciel dans lequel les personnalités applicatives et protocolaires sont découplées, afin doffrir aux applications la plus grande flexibilité pour intégrer des composants répartis dorigines diverses au sein dune même application. La séparation entre les personnalités applicatives et les personnalités protocolaires est le trait fondamental de larchitecture schizophrène.
Celle-ci permet également la coexistence de multiples personnalités applicatives et protocolaires au sein dun même intergiciel. Cette coexistence de multiples personnalités permet à un intergiciel schizophrène de jouer le rôle de passerelle entre des composants tiers incompatibles.
Par quel chemin es-tu venu à Ada et aux intergiciels ?
Lorsque jétais élève ingénieur à lENST, jai eu loccasion de participer à un projet déquipe sur les systèmes répartis en Ada 95. Mon premier contact avec Ada 95 ma forcé à me déshabituer de la concision de C, mais jai fini par apprécier les règles du langage qui ont pour objectif dinterdire les constructions “dangereuses†et à rendre explicite lintention du programmeur. Depuis cette époque (fin 1997), jai continué dutiliser Ada et den découvrir lexpressivité.
Jusquen 1999, lannexe des systèmes répartis constituait un espace clos vis-à -vis des normes existantes pour les systèmes répartis telles que CORBA ou SOAP. Je me suis attaché, sous la direction de Laurent Pautet, à la problématique de louverture des systèmes répartis Ada 95 vers le monde extérieur. Cette recherche a dabord donné lieu à un premier outil orienté sur la compilation et la génération de code, CIAO. Jai identifié un certain nombre de limitations de cette approches, qui mont conduit à prendre en compte la nécessité de linteropérabilité au sein même de lintergiciel (et non comme une surcouche générée sur un système existant). Cette démarche a abouti à la proposition de larchitecture dintergiciel schizophrène.
Combien de personnes au total ont travaillé sur PolyORB ?
PolyORB est le fruit dun travail déquipe. Au cours de son développement, chaque année, de nouveaux étudiants de lENST ont contribué à lenrichissement de ses fonctionnalités dans le cadre de projets, de mémoires de fin détudes ENST ou de stages du DEA Systèmes Informatiques Répartis (en cohabilitation entre lENST et luniversité Pierre-et-Marie-Curie).
Quelques utilisateurs extérieurs nous ont également soumis des modifications, que nous avons intégrées. Au total, la liste des contributeurs compte actuellement trente noms (et jespère que ce chiffre va rapidement augmenter, notamment grâce à cette entrevue !)
Le langage choisi a-t-il facilité lintégration de différents travaux ?
Le mécanisme des paquetages, en Ada, permet au programmeur de définir linterface exposée par un module de façon clairement isolée par rapport à la mise en oeuvre de ce module. Il favorise les bonnes pratiques de génie logiciel qui consistent à concevoir une interface en fonction dun besoin, dun service à rendre à un utilisateur, avant de décider comment ce service doit être réalisé.
Cette possibilité dabstraction a facilité le développement de PolyORB de plusieurs manières. Tout dabord, elle a permis la réutilisation de nombreuses bibliothèques existantes, telles que XML/Ada ou GNAT.Sockets, ainsi que lintégration de certaines fonctionnalités issues du projet AdaBroker. Comme le langage encourage un style de programmation modulaire et offre les constructions nécessaires à lexpression de ce style, il facilite le développement dapplications par assemblage de briques préexistantes.
La modularité et les constructions orientées objets (introduites par Ada 95) ont également permis lintégration dans PolyORB de nombreuses contributions réalisées par des développeurs travaillant chacun de façon autonome sur un aspect de lintergiciel. Ainsi, plusieurs étudiants de lENST ont pu travailler de front, seuls ou en équipe, sur différents aspects de PolyORB, en pouvant compter sur le fait que linterface de chaque module demeurait relativement stable, même lorsque sa mise en oeuvre évoluait rapidement.
As-tu été amené à modifier le compilateur GNAT pour linterfacer avec PolyORB ?
Lun des objectifs de PolyORB est de pouvoir être utilisé comme moteur de communication pour mettre en oeuvre lannexe des systèmes répartis dAda 95 (annexe E).
Cette annexe offre aux utilisateurs les moyens de spécifier que certaines unités composant une application Ada doivent être exécutées par des calculateurs différents, à charge pour le compilateur et lenvironnement dexécution de rendre leur localisation aussi transparente que possible.
Ainsi, les appels de sous-programmes situés sur un autre calculateur sont transformés en appels à distance, et transportés par une couche de communication. De même, les appels de méthodes portant sur des objets instanciés sur un autre calculateur doivent faire lobjet dune transmission.
La fourniture de cette annexe suppose la réalisation dune bibliothèque de communication, mais aussi une spécialisation du compilateur : tous les appels de sous-programmes ou de méthodes distants doivent être remplacés par des appels à la bibliothèque de communication.
Une mise en oeuvre de lannexe des systèmes répartis pour GNAT existait déjà : GLADE. Elle était basée sur une bibliothèque de communication ad hoc, Garlic, qui utilisait un protocole dédié. Jai pu réutiliser une partie des travaux effectués sur GLADE en modifiant la phase dexpansion de GNAT pour adapter le code généré à linterface offerte par la couche neutre de PolyORB, très différente des fonctionnalités exposées par Garlic.
Cette expérience ma permis de modifier le compilateur pour pouvoir produire des souches et des squelettes dont la structure soit adaptée à PolyORB au cours de mon travail de thèse. Rien de tout cela naurait été possible sans la possibilité daccéder aux sources de GNAT, de les comprendre et de travailler sur des versions modifiées. La disponibilité des composants de base sous forme de logiciel libre a donc en loccurrence été un atout majeur pour la recherche en systèmes. Cest entre autres pour cela que PolyORB est également, et demeurera, un logiciel libre.
PolyORB est-il seulement un projet de recherche universitaire ou a-t-il de lavenir en tant que produit industrialisé ?
PolyORB est maintenant un produit industriel supporté par ACT Europe. Plusieurs clients ont déjà fait état de leur intérêt pour le produit, et un premier contrat de support est dores et déjà en vigueur. Ce contrat a permis la correction dun certain nombre de problèmes existant dans les versions antérieures de PolyORB, ainsi que le développement daméliorations à lexécutif de répartition, notamment pour ce qui concerne les performances.
Cependant, PolyORB demeure également une plateforme de recherche et denseignement : une thèse de doctorat et plusieurs projets détudiants à lENST et au LIP6 sont en cours autour de PolyORB.
Maintenant que tu as obtenu ta thèse de doctorat, continues-tu à travailler en Ada ?
Bien sûr ! Tout dabord, je continue à travailler au développement et à la maintenance de PolyORB et de GNAT, qui sont majoritairement écrits en Ada. Jai également tendance à pencher pour Ada lorsque je dois choisir un langage pour un nouveau projet, chaque fois quil est nécessaire décrire du code sûr et pérenne. Enfin, même lorsque je suis amené à programmer en utilisant dautres langages, tels que C, jessaie de mettre en application autant que possible les bonnes pratiques issues dAda, telles que la séparation stricte entre spécification et mise en oeuvre dune unité. Avec gcc, en activant lensemble des avertissements et en les considérant tous comme des erreurs, on peut se rapprocher des vérifications de type offertes par tout compilateur Ada. Même quand jécris du C, je pense en Ada ! Cela ma déjà économisé dinnombrables heures de débogage.
Thomas, merci, et bonne continuation !
Merci à toi !
Liens :
PolyORB
ACT Europe
Page personnelle de Thomas Quinot
Thèse de Thomas Quinot