TER Minfo : Outils d`aide à la vérification formelle : ANNEXE

Transcription

TER Minfo : Outils d`aide à la vérification formelle : ANNEXE
TER Minfo :
Outils d'aide à la vérification formelle :
ANNEXE
BENOIT Pascal
BENGUIGUI Michael
ESPENEL Celine
FRANCHI Jean Christophe
PARTIE I Installation de l'environnement :
Pour installerlle logiciel il est nécessaire d'installer, un peu à la façcon de java, le GTK runtime.
Voici une procédure décrivant les étapes d'installation.
Installation sous Windows
Une méthode simple d'installation de gtkmm, basée sur l'utilisation de paquets précompilés, est
documentée ici. Elle est prévue pour être effectuée dans le cadre de Dev-C++, qu'il faudra donc
installer préalablement. Ces consignes d'installation font l'hypothèse que Dev-C++ est installé dans
son répertoire par défaut, soit C:\Dev-Cpp.
La documentation de gtkmm, qui a inspiré celle-ci, décrit cette procédure d'installation de manière
plus détaillée.
Installation de GTK
Il est tout d'abord nécessaire d'installer GTK. Une version en deux paquets est disponible sous forme
précompilée sur la page de téléchargement de dropline.net.
Téléchargez tout d'abord le paquet "Runtime" et exécutez-le. Laissez l'installation se faire dans le
répertoire par défaut proposé : une installation dans C:\Dev-Cpp écraserait Dev-C++ !
Téléchargez ensuite le paquet "Development Environment", qui devra par contre être installé dans
C:\Dev-Cpp.
Installation de gtkmm
Il est alors possible d'installer libsigc++ et gtkmm. tous deux se trouvent dans un même paquet
précompilé, disponible sur la page win32_ports. Téléchargez la version "Developpers" du paquet
(premier lien), et assurez-vous encore une fois que l'installation se fasse dans C:\Dev-Cpp (ce n'est
pas l'emplacement par défaut).
Vous pouvez finalement tester votre installation en exécutant la démo gtkmm, qui se trouve dans
Démarrer / gtkmm /gtkmm demo ou dans C:\Dev-Cpp\demo\gtkmm-demo.
N.B : La procédure ci dessus est pour MSWindows car il nous a été demandé de décelopper sous
windows.
N.B2: la procédure ci dessus présente en plus de l 'installation du runtime GTK, l'installation des
libraires pour permettre de developper en GTK sur votre machine.
PARITE II Description du logiciel :
Le sujet portait sur la création d'un nouveau langage afin de facilier la représentation des
spécifications de propriétés pour le model checking, pour ce faire il nous a été demandé de créer une
nouvelle représentation pour les propriétés axées sur l'ergonomie pour l'utilisateur ce qui impliquait
que le nouveau langage devait être graphique.
La deuxième partie du sujet était de créer un logiciel permettant d'utiliser cette nouvelle
représentation et surtout de l'interfacer avec un outlis de model checking.
Le model checker que nous avons choisi est NuSMV qui est aujourd'hui le plus courement utilisé, on
peut le trouver à l'adresse suivante : http://nusmv.irst.itc.it/ .
NuSMV comme on l'a déjà vu utilise la logique temporelle afin de spécifier les différentes propriétés.
Le logiciel que nous avons réalisé essaye donc de répondre à ce cahier des charges, il est décomposé
en plusieurs onglets pour une lisibilité accrue.
Pour le developper il nous a été demandé de réaliser un éxécutable compatble Windows, mais aussi
été d'utiliser les libraires graphiques GTK pour la partie graphique. Pour la partie graphique nous
avons utilisé gtkmm qui est une interface C++ à GTK car intialement en C (voir installation).
II.1Screenshots et analyse de l'interace :
Dès lors que l'on lance le logiciel, on trouve une fenêtre ressemblant à cela :
Une barre de Menu situé en haut permettant de regler différents options
une deuxième barre de menu qui nous concerne plus directement puisqu'elle nous permet
d'ouvrir/fermer/executer des fichiers
– La troisième partie ou l'on décrit le modèle et on l'on peut éditer les propriétés sur celui ci
Une fois que l'on arrive dans l'interface graphique, on peut charger un fichier « parsable » par
NuSMV en utilisant par exemple leMenu Modele->Importer, on se retrouve alors avec un écran
ressemblant à cela :
–
–
L'onglet Modèle nous permet de définir l'automate que NuSMV va analyser, dans le cadre du TER, on
suppose que cet automate est déjà créé, ce qui nous interesse c'est l'expression des spécifications que
l'on peut trouver en cliquant dans l'onglet propriétés, on voit alors quelque chose ressemblant à cela :
Dans cet onglet, il est possible de créér des propriétés (sûreté, vivacité, ....) et de les rajouter au
modele afin que NuSMV Puisse les analyser.
Voyons un exemple de test que nous avons fourni avec l'application dans le répertoire racine de celle
ci :
Nous avon chargé le modele fourni en exemple et cliquer sur le bouton exécuter afin de voir ce qui est
donné en sortie dans l'onglet résultats :
La sortie du logiciel ressemble à peu de choses prés à cela :
– A gauche, on peut voir la liste des propriètés, ici propriété 1 et propriètè 2, et à droite on peut voir
leurs expression en logique temporelle. Les propriétés qui sont validées ont une tick box que l'on
va cocher si la propriété est validée ce qui est utile quand on en a un grand nombre à vérifier pas
comme sur l'exemple.
Voici donc les principales fonctions fournies par notre logiciel qui a consisté à créer une interface
graphique pour NuSMV.
II.2 Ce qui marche, ce quiu marche pas :
Comme nous l'avons vu, nous avons quelques bugs au niveau de la viqualisation de notre
représentation, certaines fonction et boutns qui y sont associés ne sont donc pas utilisables.
Cependant el plus important reste quand même qu'l est possible, en texte, d'éditer le fichier passé en
entrée a NuSMV afin de modifier/ajouter/supprimer des propriétés.
Mais il est aussi possible de bénéficier de l'affichage plus intuitifdes résultats que NusMV fournit.
Notons que NuSMV est un tuilitaire tournant sous Dos, l'interface graphique qui est ici fournie est
donc grandement apprécibale
PARTIE II Notre representation :
La deuxième partie de developpement de l'application doit permettre de mettre à l'épreuve la nouvelle
représentation graphique que nous avons explicité dans le rapport.
Nous essayons donc ici d'ajouter des propriétés au modèle initialement fourni, voilà à quoi cela
ressemble :
La partie gauche indique le nom des propriétés et à droite la représentaion graphique associé
conformément à ce qui est dit dans le rapport du TER.
Le principe est le suivant :
Lorsque l'on une expression en logique temporelle, par exemple : AG (aUb).
On dessine d'abord aUb et ensuite AG.
Ce que nous avons essayé de faire est de créer une boite pour répresenter aUb et ensuite d'y appliquer
AG. Cette méthode nous semblait particulièrement efficace puisqu'elle nous permet de calculer
aisément la taille de la boite à dessiner pour y représenter la formule. En effet cela nous paermettrait
en quelque sorte de faire « hériter récursivement » la taille de la boite fille et de la passer en paramètre
à celle exterieure que l'on doit créer, il suffit alors juste de supprimer le bouton et de le remplacer par
l'expression de la formule fille.
Voilà ce que cela nous donne dés lors que l'on essaye de créer un AG par exemple :
Nous ne sommes pas arrivés à corriger ce bug d'affichage ...ôÔ
II.3Organisation du logiciel :
II.4Liens
Voici la liste des deiffférents sites qui nous on aidés pour le developpement :
NuSMV : http://nusmv.irst.itc.it/
GTK+ : http://www.gtk.org/
Gtkmm : http://www.gtkmm.org/ et surtout sa doc : http://www.gtkmm.org/docs/gtkmm-2.4/docs/