Nouvelles techniques de Model Checking pour la vérification de systèmes complexes
Résumé
Les tests et la simulation contribuent depuis longtemps à la validation de systèmes. Cependant, ces
techniques ne permettent d’explorer qu’une partie des comportements possibles. Elles diffèrent en cela
des techniques de vérification formelle, qui garantissent qu’une propriété est vérifiée par la totalité des
exécutions possibles du système.
Les deux principales techniques de vérification formelle sont la preuve et le model checking. Dans la
première un modèle du système à vérifier est vu comme un ensemble d’axiomes qui servent à prouver une
propriété. Cette technique n’est pas automatique ; des outils d’aide à la preuve existent mais demandent
une forte expertise. Le model checking, introduit il y a 20 ans, regroupe plusieurs techniques entièrement
automatiques dans lesquelles la propriété à vérifier est testée de façon exhaustive sur l’ensemble des
exécutions possibles du système.
Les différentes techniques de model checking diffèrent par leur façon de représenter ces ensembles
(infinis) d’exécutions. Citons le model checking dit symbolique, qui travaille de façon ensembliste sur les
configurations que peut prendre le système, et le model checking par l’approche automate [8], dans lequel
l’ensemble des exécutions du système ainsi que la propriété sont représentés par des automates. C’est à
cette dernière technique que nous nous intéressons ici.
Nous présenterons cette approche automate section 2, et expliquerons son principal inconvénient :
l’explosion de l’espace d’état [7], qui limite la taille de systèmes vérifiables. En dépit de cet obstacle, le
model checking est utilisé avec succès pour la vérification de circuits, aussi bien que pour la vérification de
programmes. L’objectif de cet article est de montrer deux nouvelles méthodes réduisant cet espace d’états
en exploitant ses symétries, afin de pouvoir traiter des systèmes plus importants. Ces techniques sont le
graphe quotient (section 3), et le produit synchronisé symbolique (section 4). Section 5 nous évaluons ces
deux méthodes sur un exemple conséquent à l’aide de nos outils.