Thèse soutenue

Aide au diagnostic de vérification formelle de systèmes

FR  |  
EN
Auteur / Autrice : Vincent Leildé
Direction : Philippe Dhaussy
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 14/11/2019
Etablissement(s) : Brest, École nationale supérieure de techniques avancées Bretagne
Ecole(s) doctorale(s) : École doctorale Mathématiques et sciences et technologies de l'information et de la communication (Rennes)
Partenaire(s) de recherche : Laboratoire : Laboratoire en sciences et techniques de l'information, de la communication et de la connaissance
Jury : Président / Présidente : Isabelle Borne
Examinateurs / Examinatrices : Vincent Ribaud, Éric Le Pors
Rapporteurs / Rapporteuses : Reda Bendraou, Frédéric Boniol

Résumé

FR  |  
EN

Le model checking est une technique de vérification formelle qui consiste à certifier que le comportement d’un système formel satisfait des propriétés formelles. Son principe est d’explorer l’ensemble des exécutions possibles du système pour découvrir des chemins d’exécution (traces) violant les propriétés. Si c’est le cas, l’ingénieur doit remonter aux causes qui ont produit la trace. L’objectif de la thèse est d’assister l’ingénieur lors de cette phase que l’on appelle diagnostic. Nous proposons un cadre combinant différents types de connaissances et activités cognitives, supporté par une méthode et une infrastructure. Nous illustrons l’approche sur la sécurisation d’un système SCADA. Quand le diagnosticien est vérificateur du modèle, il doit faire face à des traces de grande taille. Il réalise un diagnostic en mobilisant une multitude d’activités cognitives complexes. Pour les outiller, nous proposons une classification de ces activités selon la taxonomie de Bloom. Quand la cause réelle opère sur des connaissances autres que celles du model checking, ces moyens sont alors insuffisants. Quand le diagnosticien est le concepteur du modèle, il dispose ou non de connaissances de domaine permettant de le débloquer en lui offrant des nouveaux regards sur la trace. Pour y parvenir, il faut disposer du domaine et corréler les connaissances du domaine et du model checking pour réduire leur fossé sémantique. Nous proposons des structures pour capturer et réutiliser le domaine. D’un côté le problem case formule le problème que l’on cherche à résoudre et permet de préciser le diagnostic de la solution construite. D’un autre côté les sample, pattern et component cases capturent des éléments de solutions et permettent d’isoler le diagnostic. Quand le diagnosticien est l’architecte du système, il combine des éléments de problèmes et de solutions provenant à la foisde l’ingénierie du domaine et de l’application. Pour progresser de manière fluide dans la solution et enrichir les propriétés à vérifier, nous proposons une méthode de résolution de problème. Alimentée par la base de connaissances issue du domaine, celle-ci réalise des allers-retours entre l’espace du problème et l’espace de la solution, traçant problèmes et solutions choisies, et augmentant la vérification et le diagnostic grâce à de nouvelles propriétés. De manière transversale aux autres phases, le processus de vérification doit être organisé. Nous proposons une infrastructure permettant d’organiser, capitaliser et réutiliser les diverses connaissances (model checking, domaine, méthode). L'infrastructure est divisée en trois niveaux, le niveau physique regroupe les données brutes, le niveau connaissance regroupe des ontologies, et le niveau d’accès fournit des interactions supportées par les connaissances, dont les activités cognitives de diagnostic, organisées suivant la taxonomie de Bloom. Nous proposons un outil de simplification de traces par facettes reposant sur cette infrastructure.