Méthodes formelles en génie logiciel
Les méthodes formelles appliquent la logique mathématique à la spécification, au développement et à la vérification des logiciels, permettant de prouver les propriétés d'un système plutôt que de simplement les tester.
Definition
Les méthodes formelles sont des techniques basées sur les mathématiques pour spécifier, développer et vérifier des systèmes logiciels, où les spécifications sont exprimées dans des langages formels et les propriétés sont établies par preuve ou par exploration exhaustive des états.
Scope
Ce sujet aborde les langages de spécification formelle tels que Z, B et TLA+ ; la sémantique axiomatique et la logique de Hoare pour le raisonnement sur la correction des programmes ; la vérification de modèles (model checking) pour la vérification des systèmes à états finis et concurrents ; la démonstration de théorèmes et les assistants de preuve ; ainsi que l'utilisation des méthodes formelles dans les logiciels critiques pour la sûreté et la sécurité.
Core questions
- Comment le comportement d'un logiciel peut-il être spécifié de manière non ambiguë dans un langage formel ?
- Comment la correction d'un programme est-elle prouvée par rapport à une spécification ?
- Comment la vérification de modèles (model checking) vérifie-t-elle de manière exhaustive les systèmes à états finis et concurrents ?
- Dans quels cas les coûts et les avantages des méthodes formelles justifient-ils leur utilisation ?
Key theories
- Logique de Hoare et sémantique axiomatique
- Hoare a introduit une logique de préconditions et de postconditions dans laquelle la correction des constructions de programme est exprimée par des axiomes et des règles d'inférence, fournissant une base pour prouver que les programmes respectent leurs spécifications.
- Vérification de modèles (Model checking)
- La vérification de modèles (model checking) explore automatiquement et exhaustivement les états atteignables d'un modèle à états finis pour vérifier les propriétés de logique temporelle, détectant les interblocages (deadlocks) et les violations que les tests manqueraient probablement.
Clinical relevance
Les méthodes formelles offrent la plus forte garantie de correction disponible et sont appliquées là où une défaillance est inacceptable — avionique, signalisation ferroviaire, protocoles de sécurité et matériel informatique — bien que leur coût les limite principalement aux composants critiques plutôt qu'à des systèmes entiers de grande taille.
Evidence & guidelines
Des études sur les pratiques industrielles documentent l'application réussie des méthodes formelles dans les domaines critiques pour la sûreté, et des normes telles que DO-178C et les Critères Communs reconnaissent les techniques formelles aux niveaux d'assurance les plus élevés.
History
La vérification de programmes a été fondée par Floyd et Hoare à la fin des années 1960, la vérification de modèles (model checking) a été développée par Clarke, Emerson et Sifakis au début des années 1980 (leur valant un prix Turing), et les outils et assistants de preuve ont depuis lors introduit la vérification formelle dans l'usage industriel pour les systèmes critiques.
Debates
- Évolutivité et coût des méthodes formelles
- Un débat persistant porte sur la question de savoir si les méthodes formelles s'adaptent économiquement aux logiciels industriels de grande taille ; les avancées en automatisation et les méthodes formelles légères ont élargi leur applicabilité, mais la vérification complète de grands systèmes reste coûteuse.
Key figures
- C. A. R. Hoare
- Edsger Dijkstra
- Edmund Clarke
- Leslie Lamport
Related topics
Seminal works
- hoare1969
- clarke1999
- woodcock2009
Frequently asked questions
- Les méthodes formelles remplacent-elles les tests ?
- Généralement non. Les méthodes formelles offrent de solides garanties concernant un modèle ou une spécification, mais les hypothèses, l'environnement et les aspects non modélisés nécessitent toujours des tests ; en pratique, les deux sont complémentaires, les méthodes formelles se concentrant sur les propriétés les plus critiques.
- Pourquoi les méthodes formelles ne sont-elles pas utilisées partout ?
- Elles exigent une expertise spécialisée et un effort difficiles à justifier pour la plupart des logiciels, où les tests offrent une confiance adéquate à moindre coût ; les méthodes formelles sont concentrées là où les conséquences d'une défaillance sont suffisamment graves pour justifier l'investissement.