23.11.2014 Views

Méthodes pour la validation de modèles formels pour la ... - ISAE

Méthodes pour la validation de modèles formels pour la ... - ISAE

Méthodes pour la validation de modèles formels pour la ... - ISAE

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

52 Chapitre 2. Modélisation formelle <strong>de</strong> systèmes<br />

A<br />

A<br />

Choix ?<br />

A F M1<br />

(a)<br />

(b)<br />

Figure 2.12 – Principe <strong>de</strong> modélisation en Nu-SMV<br />

(a) Modèle nominal ; (b) Modèle nominal + dysfonctionnel<br />

tionnel. Pour ce<strong>la</strong> et comme se propose <strong>de</strong> le montrer <strong>la</strong> figure 2.12, on ajoute au modèle nominal<br />

d’un composant autant <strong>de</strong> variables que <strong>de</strong> mo<strong>de</strong>s <strong>de</strong> défail<strong>la</strong>nce (Ici A F M1 ). Une logique (correspondant<br />

à <strong>la</strong> boîte « Choix ? ») permet ensuite <strong>de</strong> « choisir » <strong>la</strong> sortie à appliquer selon qu’un<br />

mo<strong>de</strong> <strong>de</strong> défail<strong>la</strong>nce ait eu lieu ou non. Une chose intéressante à noter est alors que le même cadre<br />

<strong>de</strong> modélisation est utilisé <strong>pour</strong> le modèle nominal et le modèle dysfonctionnel.<br />

Sur ce type <strong>de</strong> modèle, les propriétés souhaitant être étudiées sont décrites en logique<br />

temporelle LTL ou CTL (LTL : Linear Temporal Logic ; CTL : Computation Tree Logic, i.e.<br />

logique temporelle respectivement linéaire ou arborescente). Sans décrire <strong>de</strong> telles logiques ici,<br />

les propriétés peuvent être vues comme <strong>de</strong>s expressions booléennes simples auxquelles on adjoint<br />

divers opérateurs temporels. Par exemple, en LTL, <strong>la</strong> formule Always (a&b) sera vraie si a&b<br />

est vraie <strong>pour</strong> tous les chemins. De telles propriétés sont en pratique utilisées <strong>pour</strong> vérifier que<br />

le modèle satisfait <strong>de</strong>s exigences fournies par une spécification. Des outils (<strong>de</strong> simu<strong>la</strong>tion et <strong>de</strong><br />

mo<strong>de</strong>l-checking) sont disponibles <strong>pour</strong> supporter ces vérifications. Il est également possible <strong>de</strong><br />

générer l’arbre <strong>de</strong> défail<strong>la</strong>nce correspondant à un évènement redouté.<br />

2.5.1.4 SCADE<br />

Le <strong>la</strong>ngage SCADE est une notation graphique formelle fondée sur le <strong>la</strong>ngage formel LUSTRE<br />

[31] initialement crée <strong>pour</strong> spécifier <strong>de</strong>s logiciels réactifs 5 (ou réflexes). C’est donc un <strong>la</strong>ngage<br />

formel, synchrone à flot <strong>de</strong> données. Il est supporté par un environnement muni d’un éditeur<br />

graphique, d’un moteur <strong>de</strong> simu<strong>la</strong>tion, d’un générateur <strong>de</strong> co<strong>de</strong> et d’un mo<strong>de</strong>l-checker permettant<br />

<strong>de</strong> vérifier, sur un modèle écrit en SCADE, <strong>de</strong>s propriétés.<br />

Dans [1] et comme <strong>pour</strong> Nu-SMV, <strong>la</strong> <strong>de</strong>scription d’un système et <strong>de</strong> son comportement<br />

peut être vu en <strong>de</strong>ux temps : une modélisation nominale et une dysfonctionnelle (le cadre <strong>de</strong><br />

modélisation est donc là aussi i<strong>de</strong>ntique <strong>pour</strong> le comportement nominal et celui dysfonctionnel).<br />

Les propriétés sont ici également à exprimer en <strong>la</strong>ngage SCADE : on peut ainsi observer directement<br />

sur le modèle SCADE si ces propriétés sont satisfaites ou non.<br />

Cette vérification <strong>de</strong> propriété permet également <strong>de</strong> générer un ensemble <strong>de</strong> coupes minimales.<br />

Pour ce<strong>la</strong>, il est nécessaire <strong>de</strong> définir un ou plusieurs observateurs directement sur le modèle<br />

sous forme <strong>de</strong> propriété. Pour mieux comprendre, aidons nous d’un exemple. Considérons un composant<br />

A quelconque dont <strong>la</strong> sortie S A prend ses valeurs dans {ok, <strong>de</strong>gra<strong>de</strong>, ko} et imaginons<br />

que l’on souhaite obtenir les séquences conduisant à obtenir S A = ko. Dans un tel cas, <strong>la</strong> première<br />

étape consiste à définir un observateur qui fournira <strong>la</strong> valeur vrai si S A ≠ ko (et donc faux si<br />

S A = ko). Ensuite, en <strong>de</strong>mandant au mo<strong>de</strong>l-checker si <strong>la</strong> propriété est vraie (si <strong>la</strong> sortie <strong>de</strong> l’observateur<br />

est vraie), celui ci va nous fournir un contre-exemple vio<strong>la</strong>nt <strong>la</strong> propriété (s’il en existe).<br />

5. Un système réactif est un système qui répond constamment aux sollicitations <strong>de</strong> son environnement en<br />

produisant <strong>de</strong>s actions sur celui-ci.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!