Académique Documents
Professionnel Documents
Culture Documents
Francesco Belardinelli
Laboratoire IBISC
29 septembre 2017
Motivations
• Attentes de 11h.
• Jusqu’à 30 personnes auraient pu mourir.
Leçon apprise ?
Échecs de Logiciels
LASCAD (London Ambulance Service Computer-Aided Dispatch, 1992)
• Attentes de 11h.
• Jusqu’à 30 personnes auraient pu mourir.
Leçon apprise ?
• Le 8 Juin 2011, le LAS a essayé de mettre en place un nouveau système
CAD (coût £18m).
• Lors de sa mise en œuvre le système a développé des problèmes techniques.
• Finalement, il a été remplacé par stylo et papier jusqu’à quand on est
revenu à l’ancien système.
Échecs de Logiciels
Aéroport de Denver - système de livraison des colis (1993)
Peer reviewing :
• technique statique : inspection manuelle du code, pas d’exécution du
logiciel.
• réalisée par une équipe d’ingénieurs qui, de préférence, n’a pas été
impliquée dans le développement du logiciel sous analyse.
• on détecte entre 31% et 93% de défauts avec une médiane de 60%
environ.
• une quelque forme de peer review est utilisée dans presque 80% de tous les
projets de génie logiciel.
• Problème : les erreurs subtiles (défauts de simultanéité et dans
l’algorithme) sont difficiles à découvrir.
Techniques de Vérification du Logiciel
Testing :
• technique dynamique dans laquelle le logiciel est exécuté.
• de 30% au 50% du coût des projets des logiciels est consacré au testing.
• la comparaison entre la sortie réelle du logiciel et la sortie telle qu’elle est
documentée dans la spécification du système est généralement effectuée
par des ingénieurs.
• seulement une petite partie des exécutions du logiciel est analysée.
• plus de temps et d’efforts sont consacrés à la validation qu’au codage.
• densité de défauts acceptée : environ 1 défaut pour 1.000 lignes de code.
A la recherche des bugs
Figure : Source : Baier, Katoen ; Principles of Model Checking, MIT Press, 2008.
Déscription intuitive :
• les méthodes formelles sont les ”mathématiques appliquées à la
modélisation et à l’analyse des systèmes TIC”.
Les méthodes formelles ont un grand potentiel pour :
• obtenir aussitôt une intégration de la vérification dans le processus de
conception du logiciel.
• fournir des techniques de vérification plus efficaces (couverture plus élevée)
• réduire le temps de vérification
Utilisation des méthodes formelles.
• Fortement recommandées par CEI, FAA et NASA pour les logiciels
critiques.
Les méthodes formelles devraient faire partie de la formation de
chaque informaticien et ingénieur en logiciel, tout comme la
branche appropriée des mathématiques appliquées est une partie
nécessaire de la formation de tous les autres ingénieurs.
Méthodes déductives
• méthode : fournir une preuve formelle que P est vrai.
• outil : démonstrateur des théorèmes / assistant de preuve ou proof-checker
(Coq, Isabelle, Pandora)
• applicable si : le système est présenté sous forme d’une théorie
mathématique (par exemple, tableaux)
Model-checking
• méthode : contrôle systématique de P dans tous les états
• outil : model checker (Spin, NuSMV, UppAal, . . . )
• applicable si : le système génère un modèle fini de comportements
Procédure de base :
• prendre un modèle (simulation) ou une réalisation (testing)
• introduire certaines entrées (à savoir, des tests)
• observer la réaction et vérifier si c’est “désirable”
Inconvénients importants :
• le nombre de comportements possibles est très grand (voire infini)
• les comportements inexplorés peuvent contenir le bug fatal
À propos du testing . . .
“Le testing peut montrer la présence d’erreurs, pas leur
absence.”Dijkstra
Étapes de la Vérification Formelle
donnée ?
Qu’est-ce que c’est le Model Checking ?
• Déscription informelle :
Le model checking est une technique automatisée qui, compte tenu d’un
modèle à états finis d’un système et une propriété formelle, vérifie
systématiquement si cette propriété est vraie dans (un état donné de) le
modèle.
Le Model Checking en Bref
• Justification du jury
Pour leurs rôles dans le développement du model-checking dans
une technologie de vérification très efficace, largement adoptée
dans les industries des matériels informatiques et des logiciels.
Quels sont les modèles ?
Systèmes de transitions :
• états marqués avec des propositions simples.
• relation de transition entre les états.
• transitions marquées par des actions pour faciliter leur composition.
Expressivité
• les programmes sont des systèmes de transitions
• les programmes multi-thread sont des systèmes de transitions
• les processus communicants sont des systèmes de transitions
• les circuits sont des systèmes de transitions
• Quoi d’autre ?
Quelles sont les propriétés ?
Est-ce qu’il est toujours vrai que x est compris entre 0 and 200 ?
La Procédure du Model Checking
• Phase de modélisation
I modéliser le système à l’étude à l’aide du langage de description de modèle
• Phase d’exécution
I exécuter le model checker pour vérifier la validité de la propriété dans le
modèle
• Phase d’analyse
I propriété satisfaite ? ⇒ vérifier la propriété suivante (le cas échéant)
I propriété violée ? ⇒
• accent sur les applications basées sur les instruction de contrôle (moins sur
les données)
• le model checking est aussi “bon” que le modèle du système
• très puissant, en principe, mais difficile à maı̂triser et coûteux à utiliser à
l’échelle industrielle (étant donné la formation nécessaire).
• pour ces raisons utilisé maintenant principalement pour les systèmes
critiques.
• difficile à appliquer à des espaces d’états larges (state explosion problem).
• aucune garantie quant à l’exhaustivité des résultats
• impossible de vérifier des généralisations
Néanmoins :
• de plus en plus les systèmes informatiques sont essentiels à nos vies :
tendance croissante dans l’analyse et vérification des systèmes.
• le model-checking est une technique efficace pour révéler les erreurs
potentielles dans la conception des logiciels.
Exemples de Succès du Model Checking
• Systèmes de transport
I modèle de train contenant 10476 états
• Systèmes de Multi-agents