Projet Coq

previous up next contents
Précédent : Fondements scientifiques Remonter : Projet COQ, Spécifications et preuves Suivant : Logiciels



Grands domaines d'application

Preuves de protocoles

Les protocoles sont des programmes critiques

Les protocoles sont des programmes permettant la communication. Bien que leur taille soit souvent réduite, leur complexité est grande. En effet, ils sont amenés à fonctionner dans des milieux perturbés dont la modélisation précise n'est pas une tâche aisée. Au-dessus des protocoles sont construits de nombreux autres systèmes; leur bon fonctionnement est crucial et il est essentiel que ces protocoles soient correctement spécifiés- leur comportement est d'ailleurs souvent régi par une norme.

De plus en plus de services cherchent à utiliser les réseaux télématiques tels qu'Internet ou les téléphones mobiles. Il faut donc concevoir de nouveaux protocoles offrant de plus en plus de fonctionnalités. Le commerce électronique ou la téléphonie mobile soulèvent de nouvelles exigences de confidentialité des informations échangées.

Utilité des preuves formelles

Même si les méthodes formelles sont encore peu utilisées par les opérateurs, leur besoin se fait de plus en plus ressentir. En effet, une description des fonctionnalités du protocole et une justification de son bon fonctionnement sont nécessaires pour satisfaire aux exigences de la certification et obtenir ainsi l'autorisation d'utilisation ou bien la normalisation d'un protocole. De plus, les protocoles évoluent très vite, on ne peut donc juste se reposer sur la non-découverte d'erreurs lors de tests ou d'une utilisation massive pour valider complètement un protocole.

Prouver un protocole est une tâche difficile, cependant la preuve ne variera en général pas beaucoup entre deux protocoles d'une même famille, il sera donc plus économique de revérifier un protocole après une modification que de rejouer à partir de zéro un jeu de tests. De plus les preuves apportent une connaissance approfondie des algorithmes et peuvent souvent être une aide précieuse pour concevoir de nouvelles méthodes.

Mécanisation des preuves

Les preuves peuvent être faites de manière automatique lorsque les problèmes se ramènent à des modélisations finies de taille raisonnable. Cette contrainte nécessite souvent d'abstraire le problème réel. Les assistants à la démonstration tels que Coq permettent de formaliser un problème arbitrairement compliqué et de le résoudre en utilisant des étapes élémentaires correspondant au raisonnement mathématique usuel. Coq apparaît alors comme l'outil du spécialiste lui permettant de spécifier formellement un protocole et d'en justifier le bon fonctionnement. Outre l'assurance de la correction d'un protocole, Coq permettra de faire évoluer la preuve en même temps que le protocole et fournira les éléments nécessaires au processus de normalisation ou de certification. Coq est actuellement utilisé dans ce sens pour des preuves de protocoles de commerce électronique dans l'action VIP de Dyade et pour des preuves d'algorithmes intervenant dans les protocoles du réseau ATM au CNET.

Certification de compilateurs

Les outils utilisés pour faire des preuves reposent en général sur un traitement de notations de haut-niveau qui sont ensuite traduites vers un langage exécutable. C'est le cas par exemple de la vérification de systèmes réactifs où l'analyse est faite à partir de programmes écrits dans les langages synchrones qui sont ensuite traduits vers des automates.

Afin d'assurer la certification des programmes ainsi obtenus, il est nécessaire de justifier la correction du compilateur. Le formalisme de Coq se prête assez bien à ce genre de preuve du fait de la représentation possible des règles sémantiques par des définitions inductives et de la possibilité d'obtenir un compilateur exécutable certifié à partir d'une preuve de correction de la traduction.



previous up next contents Précédent : Fondements scientifiques Remonter : Projet COQ, Spécifications et preuves Suivant : Logiciels