La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Le Model Checker SPIN Présentation Algorithmes sous-jacents

Présentations similaires


Présentation au sujet: "Le Model Checker SPIN Présentation Algorithmes sous-jacents"— Transcription de la présentation:

1 Le Model Checker SPIN Présentation Algorithmes sous-jacents
Batnini Heikel - Ciabrini Damien Présentation Algorithmes sous-jacents Exemple : dining philosophers Comparaison avec d’autres outils

2 Model Checking S’intéresse à l’évolution du comportement d’un système au cours du temps. Technique pour s’assurer qu’une propriété est valide dans un modèle de système. détection d’erreurs et validation : safety, liveness, … vérification de propriétés de logique temporelle : LTL, CTL, CTL*, … Le Model Checker Spin

3 Fondements théoriques de SPIN
Théorie des automates. Logique temporelle linéaire. Interactions entre processus asynchrones. Premier model-checker efficace : preuves de correction de protocoles LLC, TCP/IP, ARP, Bus, process scheduling … Le Model Checker Spin

4 Principe d’utilisation
Langage pour spécifier le comportement : PROMELA (PROcess MEta LAnguage) Notation pour exprimer la correction : LTL (Linear Temporal Logic) Méthodologie pour établir la consistence du système. Le Model Checker Spin

5 Description de la méthode
Parser PROMELA Parser LTL et traducteur 1. 2. 3. Détection erreurs syntaxiques Simulation interactive Générateur de vérificateur Model checker (code C ANSI) contre- exemple Vérificateur « à la volée » Le Model Checker Spin

6 Vérification de modèles
Détection de sources d’erreurs : code non exécutable (deadcode), source d’interblocage (deadlocks), cycle de non progression (livelocks), réceptions non specifiées de messages. Preuve de la correction : preuve d’invariants (correctness claims), contraintes LTL (never claims). Le Model Checker Spin

7 Mise en œuvre Processus  Automates de Büchi
Construction de l’espace des états P1 P2 Pn Processus BA1 BA2 BAn Traduction en automate Automates S Système global Produit synchrone G Produit asynchrone Espace des États négation ¬F BAF Automate de Büchi Formule LTL F Le Model Checker Spin

8 Algorithmes(1/2) Formules LTL  Automate de Büchi
Détection de cycles acceptants Nested Depth-First Search Le Model Checker Spin

9 Algorithmes (2/2) Explosion des états Complexité en mémoire
Optimisation Partial Order Reduction Gestion de la mémoire State Compression Bit-State Hashing Le Model Checker Spin

10 Exemple: Dîner des philosophes
N fourchettes et N philosophes processus PHILO(numéro) répéter Penser // sans fourchette Manger // avec la fourchette à sa gauche et celle à sa droite jusqu’à faux Le Model Checker Spin

11 Solution avec interblocage
proctype fork(byte i) { byte count=1; do ::(count==1) -> mutex[i]!Prendre;count--; ::(count==0) -> mutex[i]?Reposer;count++; od } proctype philo(byte i) { do ::mutex[i]?Prendre; mutex[(i+1)%N]?Prendre; printf("MSC: MANGE\n"); mutex[i]!Reposer; mutex[(i+1)%N]!Reposer; od } Le Model Checker Spin

12 Solution avec interblocage
Le Model Checker Spin

13 Solution avec interblocage
pan: invalid endstate (at depth 38) pan: wrote pan_in.trail (Spin Version October 2001) Warning: Search not completed + Partial Order Reduction + Compression Full statespace search for: never-claim (not selected) assertion violations - (disabled by -A flag) cycle checks (disabled by -DSAFETY) invalid endstates + State-vector 52 byte, depth reached 39, errors: 1 31 states, stored 6 states, matched 37 transitions (= stored+matched) 5 atomic steps hash conflicts: 0 (resolved) Le Model Checker Spin

14 Solution sans interblocage
proctype fork(byte i) { byte count=1; do ::(count==1) -> mutex[i]!Prendre;count--; ::(count==0) -> mutex[i]?Reposer;count++; od } proctype philo(byte i) { do ::mutex[GLOBAL]?Prendre; mutex[i]?Prendre; mutex[(i+1)%N]?Prendre; mutex[GLOBAL]!Reposer; printf("MSC: MANGE\n"); mutex[i]!Reposer; mutex[(i+1)%N]!Reposer; od } Le Model Checker Spin

15 Solution sans interblocage
proctype fork(byte i) { byte count=1; do ::(count==1) -> proctype philo(byte i) { do ::mutex[GLOBAL]?Prendre; mutex[i]?Prendre; mutex[(i+1)%N]?Prendre; mutex[GLOBAL]!Reposer; printf("MSC: MANGE\n"); mutex[i]!Reposer; mutex[(i+1)%N]!Reposer; (Spin Version October 2001) + Partial Order Reduction + Compression Full statespace search for: never-claim (not selected) assertion violations - (disabled by -A flag) cycle checks (disabled by -DSAFETY) invalid endstates + State-vector 60 byte, depth reached 219, errors: 0 402 states, stored 221 states, matched 623 transitions (= stored+matched) 6 atomic steps hash conflicts: 0 (resolved) Le Model Checker Spin

16 Autres outils Explicit State Model Checking
Langage de modélisation Model Checking Exploration de l’espace d’états abstraction Bandera PathFinder SLAM ... adaptation Langage de programmation Systematic Testing Exploration de l’espace d’états VeriSoft Autres outils : Symbolic Model Checking modèles de plus de 1020 états SMV Le Model Checker Spin

17 Références G.J.Holtzman. The Spin Model Checker
G.J.Holtzman, D.Peled, M.Yannakakis. On Nested Depth-First Search G.J.Holtzman. An analysis of bit-state hashing R.Gerth. Concise Promela Reference J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, and J. Hwang. Symbolic model checking: 1020 states and beyond. G.J.Holtzman, R.Gerth , D.Peled, M.Y.Vardi, P.Wolper. Simple On-the-Fly Automatic Verification of Linear Temporal Logic. Le Model Checker Spin


Télécharger ppt "Le Model Checker SPIN Présentation Algorithmes sous-jacents"

Présentations similaires


Annonces Google