Véri cation Formelle
Transcription
Véri cation Formelle
Ministère de l'Enseignement Supéieur et de la Recherche Scientique Université des Sciences et de la Technologie Houari Boumediene Département Informatique Support de Cours Vérication Formelle Master : RSD 2009 - 2010 Table des matières Introduction générale 3 1 Les Réseaux de Petri 6 1.1 Formalisation du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Sensibilisation d'une transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Tir d'une transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Matrices d'incidence avant et arrière . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Le vecteur caractéristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.6 Equation fondamentale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.7 Graphe des marquages accessibles . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.8 Arbre de couverture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.9 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.9.1 Bornitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.9.2 Vivacité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.9.3 Etat de blocage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.9.4 Etat d'accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.10 Extensions des réseaux de Petri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.10.1 Réseaux de Petri avec arc inhibiteurs . . . . . . . . . . . . . . . . . . . . . 11 1.10.2 Regle de franchissement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.10.3 Réseaux de Petri colorés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.10.4 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.11 Puissance d'expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 Introduction générale Grâce au progrès technologiques réalisés ces dernières decénnies, les systèmes informatiques contrôlent de plus en plus de tâches dans notre entourage, de l'instrument médical au système de contrôle du trac aérien. Il est évident que les systèmes, qu'ils soient matériels ou logiciels qui assurent ces tâches doivent être ables et sûres. Ces systèmes sont souvent composés de plusieurs éléments pouvant s'exécuter en parallèle et communiquer entre eux. leurs comportements sont dénis par leurs interactions avec les évènements internes ou externes et leur devenir dans le temps. Dans cette classe de systèmes, on peut aussi citer les protocoles de communication, les systèmes embarqués, les circuits logiques synchrones, les systèmes de production, etc... Une caractéristique importante de ces systèmes est leur propension à avoir un très grand nombre de comportements possibles. Cela est dû essentiellement à l'exécution concurrente et aux multiples interactions des diérents éléments qui les composent, ce qui rend leur conception, leur réalisation et leur mise en ÷uvre extrêmement dicile. Cette diculté est accrue par le rôle souvent critique de ce type de systèmes (processus de contrôle en avionique, centrales nucléaires, etc..), nous parlons alors de systèmes complexes. La délivrance sur le marche d'un logiciel suppose donc une phase coûteuse de tests. Mais si ces tests révèlent une bonne part des erreurs, ils ne constituent en rien une garantie. La complexité croissante des applications informatiques a malheureusement pour corollaire l'existence de comportements anormaux aux conséquences parfois irréparable. Rappel de centaines de milliers de Pentium Intel en 1996 Destruction de la première fusée Ariane 1999 etc... L'erreur est donc souvent interdite. (Aéronautique, contrôle d'une centrale nucléaire, télé-paiement par carte à puce ). Les logiciels concernés sont dit critiques La vérication de logiciels ou de manières générale de systèmes critiques est un domaine de recherche en plain essor. Ces logiciels n'ont pas pour but de calculer un résultat mais très souvent assurer le contrôle d'un processus qui communique avec son environnement par l'intermédiaire de capteurs, signaux, claviers, etc. Ils doivent donc en assurer un fonctionnement permanent. On les appelle systèmes réactifs. Une autre caractéristique est que leur comportement global dépend de l'interaction de plusieurs sous systèmes évoluant en parallèle, ce sont des systèmes distribués. Enn, le paramètre temps intervient parfois de manière explicite, on parle alors de systèmes 3 temps réel. Pour avoir Introduction générale des systèmes (hard et soft) ables et sûrs ils doivent nécessairement être validé Les principales méthodes de validation des systèmes sont la simulation, les tests, vérication formelle basée sur les méthodes déductives et le méthodes basées sur le model-checking. Les phases de vérication et de validation permettent de contrôler que le système satisfait les propriétés attendues. Il en résulte que tout problème lié au comportement qualitatif (Sûreté, équité, absence de blocage, etc...), comme au comportement quantitatif (perte de messages, vitesse moyenne de transmission, etc...) est détecté et corrigé très tôt dans le cycle de développement. Pour prévenir ainsi d'éventuels dysfonctionnements, une pléthore de techniques ont été développées. Parmi celles-ci, les tests et la simulation sont les plus connus et probablement les plus largement utilisés (ref 20 ?). Dans les vérications basées sur les tests, le système à vérier est testé pour révéler d'éventuelles erreurs sur un ensemble de situations choisies. Faute de temps, il est souvent impossible de tester ce système pour toutes les situations possibles. L'ensemble des cas à tester doit être choisi avec une attention particulière pour couvrir le maximum de scénarios distincts possibles. Néanmoins, il est impossible de garantir que le produit sera exempte de toute erreur. Une autre technique utilisée pour assurer la validation de systèmes est la méthode formelle. Pour pouvoir être réalisée, la vérication impose une description formelle du système, ainsi qu'une spécication formelle des propriétés. De nombreux formalismes de spécication dédiés aux systèmes concurrents ont été proposés en littérature tels que les automates communicants, Systèmes de transition, algèbres de processus CCS, CSP, LOTOS, Estelle, Promela, etc... . Parmi les formalisme les plus utilisés, les réseaux de Petri occupent une place prépondérante et se trouvent être l'outil ayant été le plus largement étudié si l'on considère la diversité des techniques automatiques de vérication qui leurs sont associés [?]. Ils orent une structure très simple et forment toujours le support de nombreuses études théoriques des systèmes concurrents et de leurs propriétés. Parmi les méthodes de vérication formelle, nous pouvons distinguer les trois approches suivantes : Les vérications basées sur les preuves de théorèmes. Les vérications basées sur les équivalences. Les vérications basées sur le model-checking. D'autres classications sont évidemment proposées dans la littérature. La première approche, basée sur les preuves de théorèmes, a pour principe de poser un ensemble d'axiomes, souvent donnés par le concepteur, puis à prouver un ensemble d'assertions déterminant ainsi la conformité du système. Cette preuve est faite plus ou moins manuellement. 4 Introduction générale L'aide apportée par les outils tels que les démonstrateurs de théorèmes n'évite pas totalement la nécessité de l'intervention humaine. Ce type de vérication est rarement employé, il est utilisé essentiellement dans le domaine des spécications algébriques et logiques (ref Pnu 77 ?). La deuxième approche de vérication formelle consiste à vérier l'équivalence (le plus souvent par rapport à une relation de bisimulation) entre le modèle de description de l'implémentation et une spécication qui décrit ce que l'on attend de cette implémentation, les deux utilisant le même formalisme de description. Si les deux modèles sont équivalents cela prouve que l'implémentation est conforme à la conception. La dernière approche et la plus utilisée, est basées sur les modèles, permet une vérication simple et ecace et elle est complètement automatisables. La vérication basée sur les modèles ou Model-checking est surtout applicable pour les systèmes ayant un espace d'états ni. Les algorithmes de vérication dans cette méthode utilisent l'ensemble des états que le système peut atteindre pour prouver la satisfaction ou la non-satisfaction des propriétés. Cependant, le problème majeur de ce type de vérication est la taille souvent excessive de l'espace d'états. En eet, elle peut être exponentielle par rapport à la taille de la description du système. Une des causes principales de cette explosion combinatoire du nombre d'états et le fait que l'exploration est réalisée en prenant en compte tous les entrelacements possibles d'évènements concurrents. Pour pallier à ce problème de l'explosion combinatoire, diérentes solutions dont l'objectif et de réduire la taille de l'espace d'états, ont été proposées dans la litérature. Elles sont généralement basées sur : L'utilisation de structures de données particulières. l'exploitation de l'ordre partiel sur les occurrences des évènements. l'exploitation de symétries du système. L'exploitation de la modularité. Dans ce cours seront présentées les techniques de vérication et les modèles de spécication classiques utilisés pour l'analyse des systèmes. 5 Chapitre 1 Les Réseaux de Petri Le modèle de réseaux de Petri (RdP) a été crée en 1962 an de modéliser la composition et la communication entre les processus d'un système. L'interêt majeur de ce modèle provient de ce qu'il permet de représenter, et ce de manière relativement simple. Ainsi, à l'aide des réseaux de Petri on peut représenter les concepts de parallélisme, de synchronisation (rendezvous, précédence...), de partage de ressources, de communication, de causalité. Enn, il y a un autre aspect qui a donné de l'importance aux réseau de Petri, c'est l'existence d'une représentation graphique qui donne un aperçu intuitif des diérents composants et du fonctionnement du systèmes decrit. En terme de puissance d'expression, les RdP sont mieux que les automates par exemples. Ils permettent aussi la vérication de propriétés aussi bien structurelles que comportementales. Un grand nombre de propriétés peuvent être exprimées à l'aide des réseaux de Petri. On peut citer par exemple l'absence de blocage, la possibilité de reinitialiser le système, la disponibilité permanante des fonctionnalités du système. Pour la vérication de telles propriétés, on utilise des outils aussi variés que la théorie des graphes, la théorie des langages, l'algèbre linéaire... 1.1 Formalisation du modèle Les réseaux de Petri constituent un modèle formel. A ce titre il convient d'en donner la dénition de manière rigoureuse. Dénition Les Réseaux de Petri On appelle réseau de Petri le quadruplet N = (P, T, P re, P ost) où : P est un ensemble ni de places P = {p1 , p2 , . . . , pn } . T est un ensemble ni fr transitions T = {t1 , t2 , . . . , tm }, tel que T ∩ S = ∅. P re : T × P est la fonction de précondition ou incidence avant. P ost : T × P est la fonction de postcondition ou incidence arrière. 1 Les places sont représenté par un cercle et les transsition en général par un trait. Le réseau de Petri est représenté par un graphe avec deux types de sommets les transitions et les places 6 Les Réseaux de Petri Ces diérents sommets sont reliés entre eux par des arcs qui joignent des places aux transitionx (les préconditions) et des transitions aux places (les postconditions) il convient aussi qu'un arc possède un poids avec la valeur entière 1 ; de façon générale, le poids peut être supérieur à 1, mais dans ce cas le poids devra être explicitement indiqué sur l'arc. Dénition Le marquage On appelle marquage d'un réseau de Petri N = (P, T, P re, P ost) la fonction M : P −→ N. Le marquage peut être représenté par un vecteur M = (m(p1 ), M (p2 ), . . . , M (pn )). On appelle réseau marqué tout couple (N, M0 ) où N est un réseau de Petri et M0 un marquage appelé marquage initial. 2 Pour une place p M(p) représente la nombre de marques ou de jetons dans la place p, Le marquage est représenté par des points noirs à l'intérieur de la place. Une place contient n jetons cela signie par exemple la disponibilité de n ressources, n processus attendent d'entrer en section critique ... Exemple 1 Un réseau de Petri p1 t1 p2 t3 p3 p4 t2 1.2 Sensibilisation d'une transition Soit un réseau de Petri N , t une transition de N et M un marquage. La transition t est sibilisée ou franchissable ou tirable sen- pour le marquage M si et seulement si : ∀p ∈ P, M (p) > P re(t, p) (i.e.M > W (t, •) On note par M [ti que la transition t est sensibilisée par le marquage M. 1.3 Tir d'une transition Dans un réseau de Petri N toute transition sensibilisée par un marquage M (M [i) peut être tirée (franchie) et son tir conduit à un nouveau marquage M' déni, pour tout p, par : M 0 (p) = M (p) − P re(t, p) + P ost(t, p) 7 Les Réseaux de Petri Le franchissement de la transition t est noté : M [tiM 0 . Soit σ = t1 t2 . . . tp une séquence de transitions, si on a M0 [t1 iM1 , M1 [t2 iM1 , . . . , Mp−1 [tp iMp alors t1 t2 . . . tp est appelée Un Marquage est dit séquence de franchissement. marquage accessible On alorsnote par M0 [σiMp . s'il existe une séquence de franchissement σ tel que :M0 [σiM . L'ensemble des marquages accessibles à partir du marquage M0 est Noté M0 [i Dans l'exemple précédent, le marquage initial est M0 = (1, 0, 0, 1). La transition a est sensibilisée, les transitions b et c ne sont par franchissables. Le tir de la transition a consommera le jeton de p1 et produira un jeton qui sera déposé dans p2 . On obtient donc le marquage M 0 = (0, 1, 0, 1). 1.4 Matrices d'incidence avant et arrière La fonction P r peut être denie par une matrice n × m, appelée d'incidence avant, comme suit : P r(i, j) = P r(Pi , Tj ) La fonction P ost peut être denie par une matrice n × m, appelée d'incidence arrière, comme suit : P ost(i, j) = P ost(Pi , Tj ) La 1.5 C est alors dénie par C = P ost − P r Matrice d'incidence Le vecteur caractéristique Soit une séquence σ de franchissements réalisable à partir d'un marquage Mi , le vecteur caractéristique S est le vecteur de dimension n (n = nombre de transitions du RdP) dont la composante i correspond au nombre de franchissements de la transition Ti dans la séquence σ . Pour une séquence donnée, la connaissance du vecteur caractéristique et de la matrice d'incidence permet de déterminer l'évolution du marquage du RdP. 1.6 Equation fondamentale Pour un RdP marqué R = (N, M0 ), la connaissance de la vecteur caracléristique S matrice d'incidence C du d'une séquence de franchissement σ , réalisable à partir d'unmar- quage Mi de l'ensemble des marquages accessibles du RdP R, permet de déterminer le marquage atteignable Mj par l'équation Mj = mi + C.S 8 Les Réseaux de Petri Exemple 2 Matrices d'incidence Pour le réseau de Petri précedent : La matrice d'incidence avant P re est : t1 t2 t3 p1 p2 p 3 p4 1 0 0 1 0 0 0 1 p1 p2 p 3 p4 La matrice d'incidence arrière P ost : t1 t2 0 1 1 0 0 1 0 0 La matrice d'incidence C : t1 t2 p1 −1 1 p2 1 −1 p 1 3 0 p4 0 −1 0 1 1 0 t3 0 1 0 1 t3 0 0 −1 1 Pour la séquence de transition σ = t1 t2 t1 dont le vecteur caractéristique est S = (2, 1, 0) on aura : 1 −1 1 0 0 0 1 −1 0 2 1 M 0 = M0 + C × S = + × 1 = 0 0 1 1 −1 0 1 0 −1 1 0 1.7 Graphe des marquages accessibles Dénition Graphe des marquages Le graphe des marquages accessibles G(N, M0 ) est déni comme étant le graphe dont les sommets correspondent aux marquages accessibles à partir du marquage initial M0 , M0 [i. Si un marquage M permet de franchir un transition t tel que M [tiM 0 alors il y a un arc étiqueté par t reliant les deux sommets. Exemple 3 3 Graphe des marquages Pour le réseau de Petri précédent : 9 Les Réseaux de Petri 1, 0, 0, 1 t1 0, 1, 0, 1 t2 1, 0, 1, 0 t1 0, 1, 1, 0 t3 1.8 Arbre de couverture Soit N = (R, M0 ) un réseau de Petri marqué, l'arbre de couverture est construit de la manière suivante : 1. M0 correspond à la racine de l'arbre 2. On ajoute pour chaque transition franchissable les marquages successeurs. Si un de ces marquages est strictement supérieur à M0 , on met w pour chacune des composantes supérieures aux composantes correspondantes de M0 . 3. Pour chaque nouveau marquage Mi : (a) S'il existe sur le chemin de M0 à Mi (ce dernier exclu) un marquage Mj = Mi , alors Mi n'a pas de successeur. (b) S'il n'existe pas de marquage Mk = Mi sur le chemin de M0 à Mi , alors on prolonge l'arbre en ajoutant tous les successeurs de Mi . Pour chaque successeur Mk de Mi : (a) une composante w de M i reste une composante w de Mk ; (b) s'il existe un marquage Mj sur le chemin de M0 à Mk tel que Mk Mj , alors on met w pour chacune des composantes supérieures aux composantes de Mj . L'arbre de couverture est toujours ni. 1.9 Propriétés Etant donnés un réseau de Petri N = (P, T, P re, P ost et un marquage initial M0 , 1.9.1 Bornitude Il s'agit d'exprimer le fait que le nombre de marquages accessibles (le nombre d'états que peut prendre le système) est ni. Dénition 4 Dénition 5 Place bornée La place p ∈ P est bornée si et seulement si ∀M ∈ M0 [i, ∃k ∈ N tel que M (p) 6 k . Réseau borné Un réseau de Petri est borné pour un marquage initial M0 si toutes les places sont bornées pour M0 . Pour vérier si un réseau de Petri est borné on examine son arbre de couverture. Un réseau de Petri est borné pour un marquage initial M0 si et seulement si l'arbre de couverture ne contient aucune composante à w. 10 Les Réseaux de Petri 1.9.2 Vivacité La vérication de la vivacité correspond à vérier qu'à tout instant le système conserve la possibilité de reproduire toutes les actions. Dénition Transition vivante Une transition t ∈ T est vivante pour un marquage initial M0 si pour tout marquage accessible M ∈ M 0[i, il existe une séquence de franchissements σ qui contienne la transition t, à partir de M i. Autrement dit, quelle que soit l'évolution, il existera toujours une possibilité de franchir t. 6 La vérication qu'une transition est vivante consiste à vérier que celle-ci apparait dans toutes les composantes fortement connexes du graphe des marquages. Dénition Réseau vivant Un réseau de Petri est vivant si et seulement si ∀t ∈ T , t est vivante. 1.9.3 7 Etat de blocage Dénition Etat de blocage Un état M ∈ M [i est un état de blocage (état puits) si et seulement si aucune transition n'est franchissable. 1.9.4 8 Etat d'accueil Dénition Etat d'accueil Un réseau de Petri a un état d'accueil Ma pour un marquage initial M0 si pour tout marquage accessible M ∈ M0 [i, il existe une séquence de franchissement σ telle que M [σiM a. 9 La vérication qu'un état est un état d'accueil consiste à vérier que cet état appartient à la composante fortement connexe terminale et que celle-ci est unique dans le graphe des marquages accéssibles. Le réseau de Petri est dit 1.10 réinitialisable si le marquage initial M0 est un état d'accueil. Extensions des réseaux de Petri Les réseaux de Petri ne permettent pas l'expression de certaines propriétés, des extensions ont alors été introduites an de permettre une plus grande puissance d'expression, reduire la taille des modèles, etc ... 1.10.1 Réseaux de Petri avec arc inhibiteurs Les réseaux de Petri ordinaires ne permettent pas d'exprimer le test à zéro. C(est le but de l'introduction de l'arc inhibiteur. 11 Les Réseaux de Petri Dénition Réseaux de Petri à arcs inhibiteurs On appelle réseau de Petri à arcs inhibiteurs un réseau déni par N = (P, T, P re, P ost) où : P et T sont respectivement les ensembles nis de places et transitions. P re dénie de P × T −→ N ∪ {⊥}. P ost dénie de P × T −→ N . 1.10.2 10 Regle de franchissement Dénition Soit N un réseau de Petri à arcs inhibiteurs, soient M un marquage et t une transition. t est franchissable pour le marquage M si et seulement si ∀p ∈ P on a : M (p) > P re(p, t) si P re(p, t) ∈ N . M (p) = 0 si P re(p, t) =⊥. Exemple 4 11 Problème du producteur-consommateur Considérons le problème du producteur-consommateur où le producteur ne reprend que si le buer est vide. p1 p2 Buf f er produire consommer La transition produire ne pourra être tirée que si la place buf f er ne contient pas de jetons. 1.10.3 Réseaux de Petri colorés Les réseaux de Petri colorés ont été introduits an de permettre la modélisation de systèmes ayant des comportements symetriques avec des réseaux de taille réduite et sans perte d'informations. En eet, les jetons appartiennents à des domaines de couleurs qui permettent de les distingués. Ainsi, à chaque place est associé un domaine de couleur qui permet de dierencier les jetons que peut prendre cette place. et à chaque transition et aussi associé un domaine de couleur an de choisir les couleurs de franchissement. Les préconditions deviennent des applications qui associent à chaque couleur tirée les couleurs qui seront prélevées des places en entrée. Les postconditions deviennent des applications qui assoucient à chaque couleur tirées les couleurs qui seront déposés dans les places en sortie. Exemple 5 Partage de ressources Considérons le cas de partage en exclusion mutuelle de deux ressources par deux processeurs 12 Les Réseaux de Petri idle idle R2 wait wait R1 useR2 useR1 useR1 useR2 Ce réseau devient encore plus complexe avec n > 2 processus partageant m > 2 ressouces critiques. A l'aide des réseaux de Petri coloré ce modèle sera plus compact. 1.10.4 Notations Dénition Les multi-ensembles Soit A un ensemble ni non vide, un muti-ensemble µ sur A dans l'ensemble des entiers naturels P N . On note µ = x∈A µ(x).x, où µ(x) désigne le nombre d'occurences de x dans le multiensemble µ. 12 Bag(A) designe l'ensemble des multi-ensembles sur A. Exemple 6 A = {a, b, c, d, e}, M = {a, a, a, c, c, d} est alors un multi-ensemble de A tel que : µ(a) = 3, µ(b) = 0, µ(c) = 2, µ(d) = 1. et on le note M par M = 3a + 2c + d. Dénition Les réseaux de Petri colorés Un réseau de Petri coloré est 6-uplet : (P, T, P re, P ost, C, M0 ) où : P et T sont resp. les ensembles ni des places et transitions (P ∩ T = ∅, P ∪ T 6= ∅). C dénit pour chaque place et chaque transition son domaine de couleur. P re resp. P ost sont des fonctions linéaires de couleurs dénies de Bag(C(t)) dans Bag(C(p)). M0 est le marquage initial du réseau ; c'est un vecteur indexé par P et M0 (p) est un élément de Bag(C(p)). 13 Le réseau de Petri coloré équivalent (Partage de 02 ressources critiques par deux processus) : 13 Les Réseaux de Petri idle x t1 x wait x x R y t2 y (x, y) use (x, y) t3 Avec : Domaine(idle) = {P1 , P2 } Domaine(wait) = {P1 , P2 } Domaine(R) = {R1 , R2 } Domaine(use) = {P1 , P2 } × {R1 , R2 } Dénition franchissement d'une transition Une transition t est dite sensibilisée par rapport à une couleur c ∈ C(t) pour un marquage M si et seulement si pour toute place p ∈ P P re(t, p)(c) 6 M (p)(c). Le franchissement de t par rapport à la couleur c à partir du marquage M donne le nouveau marquage M 0 tel que : ∀p ∈ P, ∀c ∈ Cp , M 0 (p)(c) = M (p)(c) − P re(t, p)(c) + P ost(t, p)(c). 1.11 14 Puissance d'expression Les réseaux de Petri colorés ne sont pas plus puissant que les réseaux de Petri classiques. Ils permettent simplement un abréviation de ces derniers. L'opération de passage d'un réseau de Petri simple au réseau de Petri coloré est appelée opération de appelée dépliage. 14 pliage et l'opération inverse est