Team oasis

Members
Overall Objectives
Scientific Foundations
Application Domains
Software
New Results
Contracts and Grants with Industry
Other Grants and Activities
Dissemination
Bibliography
Inria / Raweb 2002
Project: oasis

Project : oasis

Section: Scientific Foundations


Keywords : sémantique , environnements , méthodes formelles et preuves , analyses de programmes , fiabilité du logiciel , sécurité .

Spécifications, environnements, analyses et transformations

Depuis les débuts de l'informatisation des tâches, l'utilisateur (du plus novice au plus expert) a toujours eu besoin d'aide pour mettre au point ses programmes, manipuler une banque de données, construire un circuit imprimé ou encore concevoir un plan d'architecte. L'existence des termes comme CAO (Conception Assistée par Ordinateur), EAO (Enseignement Assisté par Ordinateur), PAO (Publication Assistée par Ordinateur), ou dans un domaine plus proche, CASE (Computer-Aided Software Engineering), montre bien l'état des besoins.

Les domaines d'utilisation d'outils d'aide sont nombreux et variés : les interfaces homme-machine, la programmation, les aspects distribution et configuration de systèmes, les environnements de développement de preuves, la gestion de librairies, la simulation et l'évaluation de performance, etc.

Nous sommes donc convaincus de l'utilité d'environnements de développement dans lesquels le programmeur sera guidé, dans la mise au point de ses applications, par des outils interactifs, graphiques, utilisant la sémantique du langage. A ce titre, Java Card est un bon exemple par la taille réduite des applications, et permet d'envisager le traitement de problèmes insolubles dans le cas plus général d'applications contenant des millions de lignes de code.

Nous nous appuyons sur la Sémantique Naturelle (formalisme issu de la sémantique opérationnelle structurelle et de la déduction naturelle). Une spécification est un ensemble de règles d'inférence qui décrivent comment déduire une conclusion à partir de prémisses. Les règles décrivent le comportement des constructeurs du langage manipulé. L'approche structurelle de la méthode apparaît dans la forme des séquents, qui ont généralement un sujet, terme d'une syntaxe abstraite. Nous avons étudié plusieurs classes de langages de programmation, en nous spécialisant sur les langages à objets (Eiffel, Java) .

Ces environnements gagnent à être associés à des outils d'analyses statiques et de transformations qui assurent une certaine aide à la programmation et à l'optimisation de programmes .

Enfin le contexte applicatif (Internet, commerce électronique, cartes à puce et sécurité) nous pousse à nous intéresser à des outils de vérification qui seront particulièrement utiles aux programmeurs pour garantir qu'une politique de sécurité est respectée (identification, intégrité, confidentialité), par exemple, que tel programme gardera des données intègres en cas de retrait inopiné de la carte.

Nous nous intéressons au cas où nous pouvons, par des techniques d'analyse statique et d'interprétation abstraite, extraire un modèle fini d'une application. Nous utiliserons alors des outils de vérification génériques , issus des travaux du projet MEIJE et que nous adapterons aux problèmes de preuve de propriétés de sécurité, ou aux problèmes de comportement d'applications distribuées sur des réseaux.

Notre travail sur les transformations de programmes comme outils de généricité nous a amené à comparer différentes techniques de transformations issues de divers styles de programmation : fonctionnelle pour la technique de déforestation et la programmation polytypique, à objets pour les visitor patterns ou les tree traversals et enfin les grammaires attribuées .


previous
next