• Aucun résultat trouvé

Vérification symbolique de modèle

La vérification symbolique de modèle résout partiellement ce problème en enco-dant l’espace d’états de façon condensée, en utilisant par exemple les diagrammes de décision binaires Binary Decision Diagrams (BDDs)[BCM+92] ou leurs ex-tensions telles que les diagrammes de décisions multiplesMulti-valued Decision Diagrams (MDDs)[CLS00], les diagrammes de décisions de donnéesData

Deci-sion Diagrams (DDDs)[CEPA+02] ou encore les diagrammes de décisions d’en-sembles Hierarchical Set Decision Diagrams (SDDs) [CTM05]. Ces techniques ont été appliquées avec succès aux réseaux de Petri standard pour la vérification de systèmes matériels ou encore de logiciels simples tels que des protocoles qui n’utilisent pas de structures de données complexes.

Imaginons, que nous disposions de l’encodage symbolique d’un espace d’états et d’une fonction successeur appelée N qui à partir d’un espace d’états produit l’ensemble des successeurs. C’est-à-dire l’ensemble d’états atteignables à partir de l’espace d’états initial. Il suffit dès lors d’appliquer N jusqu’à ce que l’on ne découvre plus aucun nouvel état. Il convient naturellement de conserver les états produits à chaque application de N. Ce qui revient à calculer la fermeture transitive de la fonction N. Autrement dit, l’espace d’états d’un système à partir d’un espace d’états initialS0se calcule par :

(N+Id)(S0)

(N + Id) représentant le point fixe de la fonction (N + Id) c’est-à-dire lorsque (N+Id)n+1= (N+Id)npour un ensemble d’états donné,idreprésentant la fonction identité qui, à un espace d’états donné, retourne le même espace. La figure5décrit cette approche.

De part la structure partagée desDDs, cette procédure travaille sur plusieurs états à la fois, ce qui améliore significativement les performances par rapport à l’approche explicite. Bien que très efficace, cette technologie oblige le concep-teur à maîtriser les technologies sous-jacentes. De plus, pour être appliquées sur des formalismes de plus haut niveau tels que les réseaux de Petri colorés ou al-gébriques, ces techniques nécessitent la transformation du modèle de haut niveau en réseau de Petri place/transition. Cette opération, appelée dépliage [KLPA06], est souvent complexe et quelques fois impraticable. En effet le nombre de places et de transitions résultantes est polynomiale par rapport à la taille des domaines traités. De plus, ladite transformation appelle une limitation de tous les types de données. Si cette limitation s’avère fausse elle peut soit provoquer un surplus de calcul non négligeable si trop haute, soit invalider le résultat de l’analyse si trop basse. La transformation en réseau de Petri de bas niveau pose aussi problème lors de l’interprétation des résultats, en effet il faut les interpréter dans le contexte du formalisme de haut niveau.

Diagrammes de décisions

Les diagrammes de décisionsDDsétant au centre de cette thèse, nous rappelons ici quelques principes de base sur leur fonctionnement. LesDDssont une famille de structures de données dédiées à la représentation compacte de données. L’idée principale est de stocker des vecteurs d’assignements de façon partagée. Il en

N (S0) N (N ((S0))= N 2(S0) ... N d(S0) = N d+1(S0) = N *(S0) S0

(N + Id)*(S0)

Figure5 – Calcul de l’espace d’états de façon symbolique.

existe de multiples variantes, chacune pour un besoin particulier. Les plus anciens et les mieux connus sont les diagrammes de décisions binaires BDDs [Bry86].

Dans la suite nous noterons le vecteurs d’assignementsvar1 =val1, var2 =val2, . . . , varn = valn de la façon suivante : var1 Les DDs sont des graphes dirigés et acycliques dont chacun des noeuds re-présente une variable ou un domaine et dont chaque arc rere-présente une valeur (e.g.,BDD,DDD) ou un ensemble de valeurs (e.g.,SDDs). LesDDsont plusieurs propriétés intéressantes. Par exemple, leur taille (le nombre d’arcs et de noeuds du graphe) ne dépend par directement de la quantité de données stockée dans le graphe. Leur taille peut être exponentiellement plus petite que la taille des don-nées encodées. De plus, grâce à l’utilisation du patron de conception “poids mou-che” [Wik12a,Wik11] qui est intrinsèquement lié à la construction opérationnelle duDD, l’égalité entre deuxDDs(deux ensembles) est testée en temps constant.

Encodage d’un espace d’états

Un état peut être vu comme une séquence d’assignements de valeurs à des variables. Ainsi l’état initial du Thérac-25 selon le modèle 3 est composé de cinq variables : Class3=0 (noeud C3), Fmal=0 (noeud FM) et TPhase = 3 (noeud TP),

UpperCollimatorPosition=FIELD_LIGHT(noeudUP) etBeamMode=FIELD_LIGHT(noeudMB).

Cela se traduit par le diagramme de décision de la figure6a.

Le diagramme6bprésente l’espace d’états complet du système du Therac-25.

Comme les variablesTPhaseetFmaln’ont pas été modifiées elles sont partagées. La variableC3 prend quatre valeurs différentes. Sur le chemin du bas,FM prend deux valeurs alors qu’il n’y en a qu’une sur celui du haut. Ainsi, la figure 6b encode symboliquement douze (4*2+4) états différents. Par exemple : UP FIELD LIGHT

−−−−−−−−−−−−→

−→ 1 sont deux des séquences possibles. A noter

que la dernière node ( 1 ) est un terminateur qui a une signification similaire au terminateur 1 desBDDs.

UP {FIELD_LIGHT} BM {FIELD_LIGHT} TP {SetUpTest} FM {f alse} C3 {0} 1

(a)État initial du modèle du Therac-25

UP BM TP FM C3 1

FM

{FIELD_LIGHT} {FIELD_LIGHT} {SetUpTest} {true,f alse} {0,1,2,3}

{SetUpDone} {true}

(b)Espace d’états complet Therac-25 soit douze vecteurs

Figure6 – Encodage DD de l’espace d’états initial et complet du Therac-25

Encodage de la fonction de transition

Une fois l’espace d’états encodé, il faut pouvoir le manipuler pour pouvoir calculer les états successeurs. Il faut donc encoder la fonction successeurN citée précédemment. La manipulation diffère selon le type de diagramme de décisions.

Nous ne parlerons ici que du cas desDDDset de leurs successeurs. Sur ce type de DDs, la manipulation se fait à l’aide de fonctions appeléeshomomorphismes in-ductifsqui sont définis par l’utilisateur. Ces fonctions étant des homomorphismes par rapport à l’union il permettent de travailler chemin par chemin puisque siφest un homomorphisme eta,bsont desDDsalorsφ(a∪b)=φ(a)∪φ(b). A noter que l’union et la composition de deux homomorphismes sont des homomorphismes et que φ(0) = 0, 0 représentant le DD vide (i.e.,l’ensemble vide). Ils sont dits inductifs parce que définis inductivement pour chaque cas hvariable,valeuri et pour le cas du terminateur.

La sémantique du tir d’une transition d’un réseau de Petri se fait par compo-sition d’homomorphismes. L’homomorphisme simulant la pré-condition ne sélec-tionne que les chemins la satisfaisant (i.e.,ayant suffisamment de ressources) et dans le même temps change les valeurs duDDpour refléter la consommation de ressources. Puis dans un deuxième temps, les gardes s’il y en a sont vérifiés et enfin les ressources produites sont ajoutées auDD.

La première application de la transition SetUpTest consomme la valeur

SetUpTestdans la placeTP et la valeur zéro de la placeC3($c=0). Puis, elle produit la ressourceSetUpTestdansTPet la valeur1dansC3. Il faut deux homomorphismes inductifs :

• hVar,Valconsomme le multi-ensembleValdu contenu de la variableVar.

• h+Var,Valajoute le multi-ensembleValau contenu de la variableVar.

La transitionSetUpTestpeut être décomposée en quatre homomorphismes : φSetUpTest =h+C3,1◦h+TP,SetUpTest◦hTP,SetUpTest◦hC3,0

L’homomorphisme hTP,SetUpTest (resp. hC3,0 ) sélectionne les chemins où TP = SetUpTest (resp. C3 = 0) et h+C3,1 (resp. h+TP,SetUpTest) ajoute la valeur 1 (resp.

SetUpTest) au multiset de la variableC3 (resp.T P).

• h(e−→X dd)=

hest appliqué récursivement sur chaque couplehvariable,valeurien partant du terminateur et en préservant le couple si la variable est différente deVar. Dans le cas oùhtraite la variableVar: soitVarcontientValet dans ce casValest retirée du multi-ensemble soithrenvoie leDDvide (i.e.,0). Le résultat de l’application dehTP,SetUpTest◦hC3,0sur l’état initial de figure6aest visible sur la figure7a.

L’homomorphisme h+Var,Val quant à lui ajoute le multiset Val à la variable Var quoi qu’il en soit. C’est donc important de d’abord sélectionner les chemins (i.e.,qui satisfont la pré-condition) à modifier à l’aide dehVar,Val.

• h+(e−→X dd)=

L’application deh+Var,Val laisse leDDinchangé si la variable n’est pasVar, sinon il ajouteVal au multi-ensemble. Le résultat de l’application de la post-condition (h+C3,1 ◦ h+TP,SetUpTest) à la figure 7a est visible figure 7b. Finalement la figure 7c présente le résultat de l’union entre l’état initial et le nouvel état calculé par l’ap-plication deφSetUpTest.

Il est intéressant de souligner que les opérations s’appliquent sur des ensembles d’états. En effet tous les sous-graphes partagés sont automatiquement impactés par une modification en amont. De plus, la représentation canonique permet d’identi-fier chaqueDDde façon unique à l’aide d’une référence. Cela permet grâce à une technique appeléememoization[Wik12b] d’avoir un cache d’opérations particu-lièrement efficace. De ce fait, si une opération a déjà été effectuée pour une partie d’unDD, elle peut être tirée du cache et cela en temps constant évitant ainsi un parcours de graphe inutile.

UP BM TP FM C3 1

{FIELD_LIGHT} {FIELD_LIGHT} {} {f alse} {}

(a)Application de la pré-condition deSetUpTestsur la figure6a

UP BM TP FM C3 1

{FIELD_LIGHT} {FIELD_LIGHT} {SetUpTest} {f alse} {1}

(b)Application de la post-condition deSetUpTestsur la figure7a

UP BM TP FM C3 1

{FIELD_LIGHT} {FIELD_LIGHT} {SetUpTest} {true,f alse} {0,1}

(c)Application de l’union entre la figure6aet la figure7b

Figure7 – Différentes étapes du calcul de l’espace d’états du Therac-25

Ordonnancement des variables La figure8présente l’un des problèmes prin-cipaux lié au diagramme de décisions, à savoir l’ordre des variables. En effet, la figure8aprésente l’encodage de l’espace d’états du Therac-25 avec un ordre op-timal pour cette fonction c’est-à-dire qu’il prendra le moins de noeuds et d’arcs.

La figure 8bprésente le pire ordre possible et donc celui qui prendra le plus de place possible. Trouver un ordre optimal est un problème NP-Complet. Il existe cependant des heuristiques qui fonctionnent très bien dans certains cas. Trouver un ordre (ou une organisation) efficace des variables est le défi le plus important dans le cadre de la vérification de modèle symbolique en utilisant les diagrammes de décisions et cela quelle que soit leur nature.

UP BM TP FM C3 1

FM

{FIELD_LIGHT} {FIELD_LIGHT} {SetUpTest} {true,f alse} {0,1,2,3}

{SetUpDone} {true}

(a)En utilisant l’ordre optimal

TP UP BM C3 FM 1

UP BM C3 FM

{SetUpTest}

{SetUpDone} {FIELD_LIGHT}

{FIELD_LIGHT}

{FIELD_LIGHT}

{FIELD_LIGHT}

{0,1,2,3}

{0,1,2,3}

{true}

{true,f alse}

(b)En utilisant le pire ordre

Figure8 – Deux ordres de variables pour l’encodage de l’espace d’états

Optimisations de la vérification de modèle symbolique

Cette approche a été utilisée avec succès [CEPA+02] pour vérifier des modèles de réseaux Petri standard. Cependant, pour pouvoir vérifier des modèles de taille conséquente cela ne suffit pas toujours. Le défi majeur reste l’organisation des va-riables et la façon d’appliquer les transitions. Nous proposons d’utiliser et d’adap-ter les techniques suivantes aux réseaux de Petri algébriques.

Agglomération de variables Comme démontré par la figure 8, une mauvaise organisation des variables peut avoir un effet désastreux sur la taille duDDet donc sur les performances. La taille du graphe n’est pas le seul paramètre, en effet si deux variables dépendantes sont éloignées l’une de l’autre dans le graphe, le par-cours en sera plus lourd ce qui influera négativement sur les performances. Divers techniques ont été inventées pour parer à ce problème, comme par exemple, l’uti-lisation de matrices de Kronecker pour déterminer les interdépendances entre les variables par rapport aux transitions du réseau de Petri. Si deux variables sont très dépendantes il convient de les mettre proches l’une de l’autre dans le graphe. Ces agglomérats (i.e.,cluster) de variables (i.e.,les places du réseau) peuvent être cal-culés automatiquement en utilisant certaines heuristiques ou en utilisant des don-nées et des connaissances spécifiques au domaine modélisé. Comme il s’agit de partitionner des éléments du réseau de Petri on parle de groupement topologique.

La création desSDDs a permis d’apporter une dimension supplémentaire à l’or-donnancement des variables. Avec les SDDsil est possible d’embarquer un DD comme valeur ce qui permet d’organiser les variables sur plusieurs niveaux de hiérarchie.

Saturation Un problème très important dans le cas du calcul symbolique d’es-pace d’états à l’aide des diagrammes de décisions est l’effet de pic (i.e.,peak ef-fect). La taille du DD augmente significativement durant le calcul avant de se réduire à nouveau vers la fin du calcul. Ceci est dû à l’apparition d’états qui ne font pas partie de l’espace d’états final (structure intermédiaire entre pré et post condition). Divers algorithmes ont été créés pour palier à ce problème. Les deux plus connus sontChaining Loop[RCP96] et laSaturation[CLS00,CLS01]. Dans ce travail nous utiliserons la saturation qui est un ordre de magnitude plus efficace queChaining Loop. Toutes les transitions qui n’utilisent que les variables d’une partition sont appliquées jusqu’à l’obtention d’un point fixe, puis les transitions qui recouvrent plusieurs partitions sont appliquées jusqu’à l’obtention d’un nou-veau point fixe et ainsi de suite. Cette technique a été adaptée et améliorée pour lesSDDspar Thierry-Mieg et Hamez [HTMK08].

Anonymisation d’états Une autre technique permet de rendre les noeuds et donc les variables partiellement anonymes. Ainsi, si un sous-graphe du DD est fortement similaire modulo le nom des variables, les variables sont “anonymi-sées” afin de pouvoir partager le sous-graphe en question. Une fonction d’anony-misation permet de reconstituer le graphe original ajoutant par la même un autre niveau de symbolisme. Cette approche est basée sur l’observation faite qu’une partie de l’information est dupliquée et qu’il n’est pas nécessaire, pour identifier de façon unique une partie des éléments, de les nommer. Leur position au sein de la super structure qui les contient peut suffire. Cette technique est comparable aux approches d’optimisations par symétries [CEFJ96].

Contributions

Pour résumer, la vérification de réseaux de Petri algébriques appelle, entre autres, les défis suivants :

• L’encodage de la représentation symbolique des états et la sémantique de modèle de réseaux de Petri algébriques. Puisque nous souhaitons travailler au niveau du réseau non déplié, les opérations sur lesDDsont notablement plus complexes. Nous devons notamment gérer la notion de terme et de réécriture afin de donner une sémantique opérationnelle auxAADTs.

• Le dépliage pose des problèmes de performance et de correction de la véri-fication.

• Les optimisations telles que les agglomérats de variables, la saturation ou l’anonymisation ont été mises au point pour les réseaux de Petri standard et doivent de fait être adaptées aux réseaux de Petri algébriques.

Dans cette thèse, afin de partiellement régler les problèmes susmentionnés, nous proposons d’étendre les diagrammes de décisions d’ensemble à des struc-tures de termes afin de supporter les types de données complexes (listes, tableaux, ensemble, multi-ensemble). Cette extension est appeléediagrammes de décision de signature. Nous proposons également la notion de dépliage partieldu réseau qui évite à l’utilisateur de fixer toutes les bornes et de devoir donc tout déplier. En-fin nous proposons une extension de la notion d’agglomération et d’anonymisation aux réseaux de Petri de haut niveau en introduisant l’agglomération algébrique.

De plus, contrairement à d’autres approches, bien que l’utilisateur garde un fort contrôle sur la modélisation et sur l’optimisation de la vérification, ces deux no-tions sont clairement séparées. De plus, l’objectif à moyen terme est de faciliter l’optimisation de la vérification de modèle. Pour cela, nous proposons de dériver

automatiquement une partie des optimisations à partir de méta-données fournies par des formalismes plus riches tels que les réseaux algébriques hiérarchiques et modulaires.

Diagramme de décisions de signature : Σ DD

L’une des différences principales entre les réseaux de Petri standard et algébriques est le fait que ces derniers embarquent des termes comme inscriptions dans les places, les arcs et les gardes des transitions. Manipuler un modèle algébrique re-vient à générer des milliards de termes. Comme ces termes sont parties intégrantes des états, il devient dès lors nécessaire de proposer une représentation symbolique.

C’est ce que se propose de faire les ΣDDs qui sont une évolution des SDDs. A noter que nous proposons ici une formalisation alternative desSDDsappelée In-ductive Injective Partitioned Functions (IIPFs). En effet, la formulation usuelle n’est pas suffisamment typée pour pouvoir définir lesΣDDs. La figure 9montre un ΣDD qui encode trois termes. De la même façon qu’un autre type de dia-gramme de décisions, l’idée est de partager les parties communes. Donc si deux termes ne diffèrent que d’un opérande, le symbole de fonction (f dans l’exemple) et les autres opérandes peuvent être partagés (bdans l’exemple). Une description précise desΣDDsest donnée au chapitre5.

s t t 1

{f}

t {a,b,c} 1

t {b} 1

Figure9 – Exemple d’unΣDDqui encode trois termes

Pour conclure cette présentation informelle des ΣDDs, voyons comment ré-écrire l’ensemble de termes de la figure 9 en utilisant la règle de réécriture sui-vante ρ : f(x,b) → x avec x une variable de typet. Il n’est pas difficile de voir que les trois termes sont réécris en un seul, comme démontré dans la figure10.

L’idée de base est, qu’en utilisant ce type de structure de données, il devient pos-sible d’unifier plusieurs termes d’un seul coup. Grâce à cela et à la memoiza-tion [Wik12b, Mic68] qui peut être facilement implémentée pour les ΣDDs, les performances de réécriture de très larges ensembles sont très bonnes (voir les bancs d’essais présentés au chapitre7).