Projet Pampa

previous up next contents
Précédent : Composition de l'équipe Remonter : Projet PAMPA, Modèles et outils Suivant : Fondements scientifiques



Présentation générale et objectifs

Le développement des réseaux d'ordinateurs permettant l'interconnexion de machines soit à l'échelle mondiale (les télécommunications) ou à l'échelle du laboratoire (réseaux de stations de travail) se poursuit. Aussi les questions posées par la construction du logiciel pour ces systèmes sont d'une grande actualité. Même si des progrès spectaculaires ont été accomplis dans les méthodes de génie logiciel, le caractère intrinsèquement parallèle et réparti des logiciels mis en oeuvre continue à poser des problèmes ardus de programmation. La question la plus sensible à nos yeux est celle de la maîtrise de la fiabilité du logiciel, c'est-à-dire le contrôle des conditions de son bon fonctionnement, sans brider toutefois les performances du parallélisme. La maîtrise du développement passe par le renforcement des activités de conception, validation et test.

Du point de vue de la conception, la tendance est au découplage des modèles de programmation et du modèle d'exécution. L'objectif est de permettre l'expression des problèmes en faisant abstraction des aspects compliqués du parallèlisme et de la distribution, comme la prise en compte d'une mémoire de communication éventuellement non bornée et les phénomènes non déterministes associés. Le problème de la construction d'un code réparti se trouve alors à la charge d'un compilateur (avec tous les problèmes d'optimisation à traiter pour obtenir un code efficace). L'autre possibilité est de construire des cadres de conception (``frameworks'') spécialisés pour tel ou tel type d'appplication.

Du point de vue de la validation, l'idée est de renforcer l'impact des méthodes formelles et des outils d'analyse pour permettre la mise au point des spécifications et la génération de tests pour les codes répartis.

L'approche du projet Pampa consiste à contribuer à l'élaboration de nouvelles technologies logicielles par l'étude de modèles formels des protocoles et l'invention d'outils informatiques associés. Nous privilégions la conception d'outils automatiques permettant d'aider aux tâches de conception, vérification, génération de code et test de programmes réels. Ces outils ont vocation à être diffusés dans le milieu académique et/ou industriel.

La mise au point des modèles et outils s'effectue dans le cadre d'applications réparties situées principalement dans le domaine du logiciel pour les télécommunications et dans celui du calcul réparti haute performance. Des réseaux de stations de travail servent de support expérimental.

Le fonds scientifique du projet est constitué des méthodes formelles en logiciel de télécommunication, des techniques du type "model-checking" fondées sur des parcours de systèmes de transitions, des méthodes de conception objet et des techniques de distribution de code.

L'activité scientifique du projet peut être structurée en quatre thèmes de recherche : - le génie du logiciel réparti et l'approche objet, - la génération automatique de code réparti, - la vérification et test des programmes répartis, - l'observation et diagnostic dans les systèmes répartis et les réseaux.

Le génie ``logiciel réparti'' et l'approche objet :

La question scientifique difficile dans ce thème est d'être capable de construire des architectures logicielles réutilisables, tout en prenant en compte les problèmes liés au parallélisme et à la répartition. Notre approche est l'identification de modèles spécifiques pour des domaines d'applications (exemple du modèle SPMD pour le calcul réparti ou de CORBA pour les objets télécoms), et la définition de cadres de conception, de réalisation et de validation adaptés à ces modèles (<<frameworks>>, <<design patterns>>).

La génération automatique de code réparti :

Il s'agit d'obtenir automatiquement un code réparti à partir de programmes exprimés dans un langage de plus haut niveau, masquant notamment les problèmes de non-déterminisme induits par la distribution en environnement asynchrone. Nous avons notamment développé un compilateur (PANDORE) qui sait traiter un langage séquentiel (style High Performance Fortran). Des recherches sont en cours pour étendre l'approche à des programmes réactifs et orientés objets (Java) en mélangeant le parallélisme de données et le parallélisme de contrôle.

La vérification et le test des programmes répartis :

La vérification consiste à s'assurer, qu'avant toute implantation, l'application se comportera correctement. Cette question revêt une importance particulière pour les programmes répartis, compte-tenu de la complexité des comportements qu'ils engendrent. Elle est essentielle pour les logiciels critiques. L'activité de vérification est complétée par le test de la conformité des implantations. Nous nous sommes concentrés sur les techniques par modèles (dites <<model-checking>>), et particulièrement sur les aspects algorithmiques (algorithmique à la volée). Nous avons étendu ces techniques pour être capable de générer automatiquement des séquences de test de conformité pendant la vérification des programmes. Cela a conduit à un outil original (appelé TGV), que nous valorisons auprés de la société Vérilog.

L'observation et le diagnostic dans les réseaux :

C'est l'aspect complémentaire du test : il s'agit d'évaluer le comportement d'un code réparti à partir des traces qu'il produit. Pour modéliser les phénomènes de causalité et de ``concurrence'', la théorie de l'ordre est notre outil mathématique de base. Nous avons plusieurs applications comme la détection au vol de propriétés, le test d'interopérabilité et le diagnostic de pannes dans les réseaux.



previous up next contents Précédent : Composition de l'équipe Remonter : Projet PAMPA, Modèles et outils Suivant : Fondements scientifiques