Projet : LANDE

previous up next contents
Précédent : Composition de l'équipe Remonter : Conception et validation de logiciels Suivant : Fondements scientifiques


   
Présentation et objectifs généraux

 

 Le thème de recherche central du projet LANDE est la conception de méthodes et d'outils d'aide au développement et à la validation de logiciels. Ces méthodes possèdent deux caractéristiques majeures:

1.
Elles reposent sur des bases formelles (sémantique de langage, modèle de sécurité, etc.) permettant d'apporter des garanties quant à la correction des outils.
2.
Elles conduisent, autant que faire se peut, à des outils automatiques. Les utilisateurs visés sont en effet des programmeurs ou des valideurs qui ne possèdent pas forcément d'expertise particulière en matière de méthodes formelles ou de techniques de preuves.
Pour atteindre ces objectifs, nous distinguons deux types d'interventions: les traitements postérieurs à la phase de programmation («actions aval») et ceux qui la concernent ou la précèdent («actions amont»).

Actions «aval»

Les traitements «en aval» ou a posteriori concernent la validation de codes existants (vérification, test, débogage). Ce type d'actions s'applique à des logiciels dont on ne maîtrise pas forcément le développement. Nous concevons dans ce cadre des techniques d'aide à la validation de programmes qui reposent essentiellement sur des analyses de programmes (statiques ou dynamiques). Nous avons proposé notamment un cadre pour la vérification de propriétés de sécurité de programmes. Nous nous intéressons également à l'analyse dynamique qui sert de base pour des outils de maintenance dans le cadre de la programmation impérative ( COCA), de la programmation logique ( OPIUM), et des bases de données déductives. Nous considérons aussi l'analyse sémantique dans une perspective plus large en étudiant la construction systématique d'analyseurs reposant sur des sémantiques opérationnelles de langages. Nous avons proposé un format de sémantique naturelle et nous avons appliqué notre méthode à l'analyse de slicing. Il a été ainsi possible de dériver, par simple instanciation d'une définition générique, des analyses dynamiques et statiques pour un langage impératif, un langage fonctionnel et un langage de programmation logique. En nous appuyant sur des résultats récents concernant l'inférence de types d'intersection et de types polymorphes, nous avons également conçu un algorithme qui permet de déduire, pour chaque programme, une propriété principale à partir de laquelle toute autre propriété démontrable par l'analyse peut être déterminée. Un avantage de cet algorithme est qu'il traite des fragments de programmes aussi bien que des programmes entiers. Il s'agit donc d'une démarche qui, à plus long terme, peut mener à un cadre général pour l'analyse modulaire. Le test de logiciels représente un autre centre d'intérêt important du projet. Nous avons proposé une méthode de génération de suites de test qui a conduit à l'outil CASTING développé en collaboration avec la société AQL. Les suites de test engendrées dépendent de stratégies spécifiées par l'utilisateur, permettant ainsi d'atteindre la souplesse d'utilisation exigée pour un usage industriel. La première version de CASTING prend en entrée des spécification dans la syntaxe AMN de la méthode B . Nous travaillons actuellement à la transposition de ces idées au test structurel (de programmes C et C++) dans le cadre d'un projet industriel européen ( TWO).

Actions «amont»

Les actions «amont» sont utilisables dans le cas, idéal, où il est possible d'agir dans la phase de développement du logiciel. Le but visé est alors de fournir des moyens de construction qui faciliteront la phase ultérieure de validation du logiciel. Les actions de cette catégorie se traduisent notamment par des méthodes et des langages qui induisent une discipline de développement ou de programmation. Nous étudions dans ce cadre des langages de haut niveau comme les langages déclaratifs (logiques, fonctionnels) et les langages d'architectures de logiciels. Ces langages fournissent un pouvoir d'expression appréciable tout en offrant un niveau de description qui facilite le raisonnement formel (cf. module 3.5).

S'agissant des langages déclaratifs, les enjeux les plus importants concernent leur mise en oeuvre efficace et la conception d'environnements de programmation adéquats. Ces deux problèmes sont abordés dans le projet LANDE. En particulier, nous avons proposé un cadre formel pour décrire et comparer les techniques de compilation des langages fonctionnels. Cela nous a permis d'établir une taxonomie des mises en oeuvre de langages fonctionnels. Pour ce qui concerne les environnements de programmation, nous avons développé l'outil OPIUM, qui analyse les traces d'exécution de programmes générées par un traceur Prolog existant; nous concevons actuellement un traceur pour Mercury, un nouveau langage de programmation logique développé à l'université de Melbourne.

Une autre action importante dans la catégorie «amont» concerne les architectures de logiciels. L'objectif en la matière consiste à spécifier l'organisation globale de logiciels afin d'améliorer la maîtrise des gros systèmes (développement, analyse, test, maintenance, etc.). Une ambition majeure dans ce domaine est le passage à l'échelle de techniques comme l'analyse, le raffinement ou la vérification de programmes. Nous avons proposé une manière de spécifier des architectures en terme de graphes. Nos travaux actuels sur ce thème concernent la possibilité de traiter des vues multiples d'une architecture tout en assurant une forme de cohérence globale de la spécification.



 

previous up next contents
Précédent : Composition de l'équipe Remonter : Conception et validation de logiciels Suivant : Fondements scientifiques