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
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.