Projet Pampa

Précédent : Composition de l'équipe
Remonter : Projet PAMPA, Modèles et outils
Suivant : Fondements
scientifiques
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.
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>>).
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 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.
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.
Précédent : Composition de l'équipe
Remonter : Projet PAMPA, Modèles et outils
Suivant : Fondements scientifiques