Telecom ParisTech INF722 – Thomas Robert page 1 Modélisation Formelle de comportements séquentiels Vérification de propriétés logiques Sureté de fonctionnement et Vérification formelle Implémentation vs exigences Comportement séquentiels et machine à états Formalisation logique des exigences
Telecom ParisTech INF722 – Thomas Robert page 2 Les moyens de la sûreté de fonctionnement Tolérance aux fautes → maitrise à l'exécution des conséquences d'une défaillance Evaluation → capacité à prédire / estimer les attributs du système Prévention → limiter le nombre de fautes pouvant être activées Elimination → Identification des fautes induites par le processus de conception et développement (la faute existe) Puis élimination si possible Petit Rappel
Telecom ParisTech INF722 – Thomas Robert page 3 Un exemple sur du code Implémentation de la factorielle en C int fact (int x) { if (x==0) {return 1} else {return x*fact(x-1))} } Fact(x), x>0 fonctionne et fact(-1) ? Quels sont a priori les modes de défaillance ? Quelle est la faute ? Peut on l' éliminer ? Idée : changer la condition et la structure du « if »
Telecom ParisTech INF722 – Thomas Robert page 4 Systématisation de l'élimination de fautes Moyens : vérification, validation et test d'applications La validation est le processus répondant à la question : le système réalisé répond bien aux exigences « utilisateur » ? La vérification est le processus répondant à la question : le système correspond il à sa conception ? Intégration dans un processus de développement (V). Chaque étape de conception fournit les entrées à un processus de vérification / validation Le succès de la validation finale dépend des validations intermédiaires
Telecom ParisTech INF722 – Thomas Robert page 5 Cycle en V
Telecom ParisTech INF722 – Thomas Robert page 6 Confrontation de l'implémentation et des exigences Modèle de l'implémentation == modèle de ce qui sera exécuté – Description de comment cela marche (état interne) – Description de ce que l'on peut/pourrait observer (relation entrée / sortie, ou identification du comportement à l'interface) Représentation des exigences == modèles de ce que l'on veut obtenir – Description de ce que l'on veut éviter, atteindre – Description de contraintes sur a précision des résultats... Représentation commune nécessaire de l'exécution du système
Telecom ParisTech INF722 – Thomas Robert page 7 Formalisation d'un programme
Telecom ParisTech INF722 – Thomas Robert page 8 Modélisation de comportements séquentiels Que peut on vouloir représenter pour caractériser l'exécution d'un programme : Le lien « entrée » - « sortie » L'évolution de l'état du système et la sémantique de l'état (impulsion ou valeur sur un intervalle) L'interface d'un programme, système avec son environnement Etat == variables
Telecom ParisTech INF722 – Thomas Robert page 9 Des variables pour représenter ce qui a une dynamique... Idée : utiliser des variables typées Un modèle : un ensemble des variables Un ensembles de règles pour savoir comment les variables évoluent Que modélise-t-on ? Une dynamique Une réaction Un enchaînement
Telecom ParisTech INF722 – Thomas Robert page 10 Les traces d'exécution et séquence d'états Une exécution séquentielle=une dynamique pas à pas Abstraction : transition d'état instantanée discontinue Lors d'un changement d'état de p à q, une transition permet de représenter le changement d'état instantané de l'état p à q Objectif : représenter un changement d'état de manière atomique (non décomposable) Les trois étapes clés de l'exécution d'une fonction : Lecture des paramètres Calcul Écriture du résultat Définition des préconditions D'invariant et post conditions
Telecom ParisTech INF722 – Thomas Robert page 11 Sémantique opérationnelle Sémantique de Hoare : définir pour les opérations d'un langage de programmation les « propriétés » que l'état ou les paramètres vérifient avant et après pour représenter l'impact de ces opérations sur l'état du système. Cas de l'évaluation de y=1/x Avant x différent de 0 notons xa cette valeur Après y différent de 0 et y*x est égal à 1. Représentation de la mémoire par un ensemble de variables => l'enchaînement de vecteurs contenant leurs valeurs définit une exécution.
Telecom ParisTech INF722 – Thomas Robert page 12 Exemple d'une somme de N nombres L'état du système : N variables contenant les nombre + 1 pour « accumuler les valeurs ». Somme de n1=1, n2=6, n3=-2 dans acc L'exécution d'un système peut être représentée comme une séquence de vecteurs de valeurs associées à un ensemble de variables (eg des entiers associés à n1, n2, n3, acc)...
Telecom ParisTech INF722 – Thomas Robert page 13 Problème de représentation compacte IMPOSSIBLE DE TOUTES LES ENUMERER But : se concentrer sur la dynamique de l'état du système et non sur comment on le fait évoluer Utiliser une représentation de graphe pour « factoriser » les chemins d'exécution abbbbbbbb, aabbbbbbbb, aaabbbbbbbb... a b Définition Structure de Kripke (S,I,R,L) : (état, départ, transition, et sémantique) c.a.d un automate tel que L associe à chaque état un vecteur de valeur R recense l'ensemble des transitions I identifie les points de départs de l'exécution Contrainte supplémentaire : tout état doit avoir un successeur
Telecom ParisTech INF722 – Thomas Robert page 14 Un exemple Donner la structure de Kripke associée au programme qui demande un mot de passe, autorise jusqu'à 2 erreurs avant de se 'bloquer'. Variables : (pour se simplifier la tâche le mot de passe est un nombre entre 1 et 4) Saisie contient la saisie courante du mot de passe, Nvl_essai est un booléen qui indique d'un nouveau mot de passe vient d'être saisie pour s'authentifier nb_essais mémorise le nombre de mot de passe déjà saisis, mem_mdp contient la valeur du mot de passe (ici 3). Quelles propositions atomiques définir ?
Telecom ParisTech INF722 – Thomas Robert page 15 Solution Définir des propositions AP = {Auth, deux_essai, un_essai, nvl_essai (NE)} Auth :: mem_mdp==saisie Deux_essais (DE) :: (Nb_essai==0) Un_essai (UE) :: (Nb_essai ==1) Structure :
Telecom ParisTech INF722 – Thomas Robert page 16 Représentation compacte d'ensembles de traces d'exécutions (2) Les problèmes : Définir complètement les valeurs de l'état est très fastidieux. On ne tire pas partie des « arcs » Nommage des transitions et contraintes partielles sur les états. Les transitions nommées == événements e Expression efficace de la relation t : s –e→ s' – Seule la fraction changeant de l'état est décrite – Utilisation de fonctions telles que t : x – e → f(s) pour tout s tel que.....
Telecom ParisTech INF722 – Thomas Robert page 17 Automates finis vision événement vs transitions Définition d'un automate fini : A= (Q0,Q,∑,∆,F) Q est un ensemble d’états, contenant e0, l’état dit initial, et un sous-ensemble F d’états dit finaux ∑ est l'ensemble des événements qui seront associés aux transitions de l'automates ∆ est l'ensemble des transitions franchissables dans l'automate, une transition est de la forme (q,e,p) avec q et p dans Q et e dans ∑. franchissement d'une transition Si l'automate est dans l'état q, alors toute transition de la forme (q,e,p) dans ∆ peut être franchie, l'état de l'automate devient alors q'. ettes) – T ⊆ Q A Q est l’ensemble
Telecom ParisTech INF722 – Thomas Robert page 18 Langage d'un automate fini étiqueté ∑={a,b,d} et Q = (s1,s2,s3) et L(s1)=p, L(s2)=. L(s3)=r. Le langage « reconnu » par un automate fini correspond à l'ensemble des traces permettant d'établir un chemin de transition de ses état initiaux vers ses états finaux Projection état ou événement (permet de masque l'un des deux. a
Telecom ParisTech INF722 – Thomas Robert page 19 La nécessité d'un langage d'expressions de « contraintes » sur l'exécution Comment exprimer des contraintes sur ces séquences d'exécutions Les solutions utilisables : Les langages dédiés – sorte de langage d'expressions très compacte et conçu exclusivement pour l'expression de ces contraintes Les logiques formelles Des observateurs....
Telecom ParisTech INF722 – Thomas Robert page 20 Introduction aux logiques Rappel sur les logiques propositionnelles Soit AP un ensemble de variable propositionnelle F : (F ∈ Exemple AP : b1, b2, b3 (booléens) (b1 b2) => (b3 Quand est ce vrai ? Logique du premier Ordre : Variables numériques, booléennes, …, fonctions et prédicats (fonction à valeur booléenne) => quantification ∀ ∃ => dès que l'on fait de l'arithmétique... on tombe sur un problème de décidabilité
Telecom ParisTech INF722 – Thomas Robert page 21 La logique du premier ordre Quantification == contraindre l'ensemble des valeurs d'une variable pour lesquelles il faut évaluer une formule ∀ ∃
Telecom ParisTech INF722 – Thomas Robert page 22 Représentation de la dynamique... Représentation explicite des pas d'exécution par une variable cas du distributeur de billet + logique du premier ordre « Si deux codes secrets faux saisis d'affilés, la carte est avalée immédiatement» Formalisation en logique du premier ordre: Saisie_code(c,t) : vrai lorsque le nouveau code c est saisi à l'instant t Valid_code(c) : vrai si c est un code Avale(t) : vrai si la carte est avalée à l'instant t ∀ t,c.[Saisie_code(c,t) (Valid_code(c))] ∃ t’>t,c'. ( ∀ t’’.t< t’’ t’ (Saisie_code(c',t’’) )) Saisie_code(c',t') (Valid_code(c)) ] Utilisation d’un paramètre modélisant le temps Trop lourd!
Telecom ParisTech INF722 – Thomas Robert page 23 Comment modéliser la dynamique.... Logique temporelle: Forme de logique spécialisée intégrant la notion de séquencement dans le temps opérateurs permettant d’exprimer des notions telles que « toujours », « tant que »,... permet d’énoncer des propriétés sur les exécutions d’un système Il y a plusieurs logiques temporelles : Logique du temps linéaire où à chaque instant on ne peut exprimer une contrainte que sur une poursuite de l'exécution. Logique temporelle du temps arborescent où l'on peut exprimer des contraintes sur plusieurs futurs à la fois.
Telecom ParisTech INF722 – Thomas Robert page 24 Définition : les formules de PLTL sont définies par la grammaire suivante : , ::= p | q |... | true | false | (formules atomiques) | | | | (connecteurs booléens) F | G | U | X Les formules de LTL sont obtenues en considérant des prédicats atomiques à la place des propositions atomiques, et en ajoutant les quantificateurs ∀ et ∃.
Telecom ParisTech INF722 – Thomas Robert page 25 Interprétation des opérateurs temporels Supposons que s= s0.s1.s sk est la trace d'exécution du système Gp: «p est toujours vérifiée dans le futur de l'exécution» pour tout j sj prouve p Permet de prouver Gp Fp : «p finit par être vrai dans le futur » il existe j, tel que sj prouve p Permet de prouver Fp Xp : «p est vrai au prochain pas d'exécution » s1 prouve p Permet de prouver Xp p U q : « p est vrai tant que q ne l'est pas au moins une fois » Il existe j, tel que pour tout k<j, sk ne prouve pas q mais sj prouve q, et sk prouve p et sj prouve q Permet de prouver que p U q
Telecom ParisTech INF722 – Thomas Robert page 26 Vérification d'un modèle Si l'on considère un modèle M reconnaissant un langage de séquence d'état (vecteur de variables) Alors une formule P est vérifiée sur M si et seulement si pour toute trace tr reconnue par M (L m ), alors tr Permet de prouver P. Exemple : P= F
Telecom ParisTech INF722 – Thomas Robert page 27 Références « Vérification de logiciels », P. Schnoebelen & allii,Vuibert, 1999.
Telecom ParisTech INF722 – Thomas Robert page 28 Exercices Cf fiche TD
Telecom ParisTech INF722 – Thomas Robert page 29 La logique avec branchement CTL Les formules de CTL sont définies par la grammaire suivante : Φ,Ψ ::= p | q |... | true | false (propositions atomiques) Φ∧Ψ | Φ∨Ψ | Φ⇒Ψ | ¬Φ | (connecteurs booléens) EFΦ | EGΦ | EΦUΨ | EXΦ | AFΦ | AGΦ | AΦUΨ | AXΦ (connecteurs temporels) E, A: quantifications sur toutes les exécutions possibles à partir de l’état courant Les formules sont interprétées sur des états de notre modèle, et non sur une exécution (« formule d’état » vs. « formule de chemin »)
Telecom ParisTech INF722 – Thomas Robert page 30 Sématique de E et A Tout d'abord, ces formules se prouvent sur des systèmes à transitions (ie structures de Kripke) Soit succ*(q) l'ensemble des successeurs d'un état q dans une structure de Kripke K E R: il existe un futur où R est prouvée dans K A R : tous les chemins de K prouvent R