![]()
Précédent : Composition de l'équipe
Remonter : Action Vasy-RA, Validation de Systèmes
Suivant : Grands domaines d'application
Créée au 1er janvier 1997, l'action VASY ``Recherche et Applications'' s'inscrit dans la problématique de la conception de systèmes sûrs par l'utilisation de méthodes formelles.
Plus précisément, nous nous intéressons à tout système (matériel, logiciel, télécommunications) faisant intervenir du parallélisme asynchrone, une modélisation du parallélisme basée sur la sémantique d'entrelacement (interleaving semantics) et bien adaptée à la description de systèmes répartis.
Pour la conception de systèmes sûrs, nous préconisons l'utilisation de techniques de description formelles, complétées par des outils informatiques adaptés, offrant des fonctionnalités de simulation, prototypage rapide, validation et vérification formelle.
Parmi les différentes approches existantes pour la vérification, nous concentrons nos efforts sur la vérification ``basée sur les modèles'' (model-checking) qui recouvre un grand nombre de techniques spécialisées (vérification énumérative, à la volée, symbolique...). Ces techniques, bien que moins générales que les approches par preuves (theorem proving), possèdent pourtant l'avantage de permettre une détection rapide et économique des erreurs de conception dans des systèmes complexes.
Nos travaux se situent au confluent de deux grandes approches en méthodes formelles : l'approche basée sur des modèles (très répandue en Amérique du Nord) et l'approche basée sur des langages (plus développée en Europe) :
Pour mener à bien la vérification de systèmes complexes (de taille ``industrielle''), il nous semble nécessaire de maiitriser simultanément la technologie des modèles et celle des langages.
Par vérification, on entend la comparaison d'un système avec ses propriétés, qui décrivent les services rendus par le système et son fonctionnement attendu, à un certain niveau d'abstraction.
Les techniques de vérification que nous mettons en oeuvre reposent en grande partie sur le modèle des systèmes de transitions étiquetées (ou, plus simplement, automates, ou encore graphes) composés d'un ensemble d'états, d'un état initial, et d'une relation de transition entre ces états. Ces techniques consistent à engendrer automatiquement, à partir de la description du système à vérifier, un graphe fini qui en modélise le comportement, puis à vérifier les propriétés sur le graphe grâce à une procédure de décision.
Selon le formalisme utilisé pour exprimer les propriétés, on distingue deux approches :
Concernant la vérification de propriétés comportementales, nous n'effectuons pas de recherches dans ce domaine, mais nous collaborons avec d'autres projets, notamment SPECTRE/VERIMAG et MEIJE, qui développent des outils basés sur les relations d'équivalence et de préordre.
Concernant la vérification de propriétés logiques, nos
travaux dans ce domaine portent sur l'extension du
-calcul arborescent par des variables
typées, afin de prendre en compte les données contenues dans
les états et les transitions du graphe. Cette extension (dont
nous avons mis en évidence l'utilité sur de nombreux
exemples, notamment industriels) permet d'exprimer des
propriétés qu'il n'est pas possible d'écrire en
-calcul standard comme, par exemple, le fait qu'une
variable donnée soit toujours croissante sur un chemin
d'exécution. Notre objectif est également de proposer et
d'implémenter des algorithmes d'évaluation efficaces pour
cette extension du
-calcul.
Bien que ces techniques soient efficaces et complètement
automatisables, leur principale limitation est leur complexité,
en général exponentielle par rapport à la taille du système. Ceci
explique le problème de l'explosion d'états qui survient
lorsque le nombre d'états du système à vérifier dépasse les
capacités en mémoire de la machine. C'est pourquoi nous
fournissons des technologies logicielles (voir
) permettant de
manipuler ces graphes de deux manières :
En ce qui concerne les langages, il nous semble essentiel de s'appuyer sur des langages possédant simultanément un caractère exécutable et une sémantique formelle, ceci pour plusieurs raisons :
C'est pourquoi nous nous intéressons au langage LOTOS, le seul langage de description de protocoles ayant le statut de norme internationale [5] et possédant les propriétés ci-dessus. Il s'agit d'un langage basé sur les concepts des algèbres de processus (notamment CCS [6] et CSP [4]) pour la description du contrôle et les types abstraits algébriques [2] pour la description des données. LOTOS autorise à la fois la description du parallélisme asynchrone (aspects liés à la répartition, la synchronisation et la communication entre tâches) et celle des structures de données complexes manipulées dans les protocoles et les systèmes distribués.
Toutefois, les besoins en méthodes formelles et vérification allant en augmentant, il est nécessaire de réfléchir à de nouveaux langages, plus simples, plus expressifs et mieux adaptés aux besoins industriels. Cette réflexion est également guidée par l'apparition de protocoles à contraintes temporelles fortes --protocoles utilisés dans les réseaux à haut débit-- pour lesquels il devient nécessaire de prendre en compte les aspects temporels de manière quantitative, et non plus seulement qualitative. Nous travaillons dans cette direction, notamment dans le cadre de la refonte de la norme LOTOS actuellement entreprise à l'ISO.
Dans la mesure du possible, nous essayons de valider nos propositions par le développement d'outils et l'application de ces outils à des études de cas complexes (notamment industrielles, dans le cadre de notre coopération avec le le GIE BULL-INRIA DYADE. Cette confrontation systématique avec les problèmes d'implémentation et d'expérimentation est un aspect essentiel de notre approche.