• Aucun résultat trouvé

Processus de Model-Checking

un formalisme pour représenter les propriétés à vérifier. Le premier, de type ma- chine à états, modélise le système par des états et des événements entre ces états (synchronisation, évolution interne, évènements liés à une entrée du système, etc). On peut évoquer parmi ces formalismes les plus utilisés pour la modélisation des STR : les automates temporisés ([4],[3]) et les réseaux de Petri temporels ([63]). Le second formalisme nécessaire pour exprimer les propriétés est la logique tempo- relle. Plusieurs logiques temporelles utilisées pour le Model-Checking (MC) seront présentées dans ce chapitre dans la section 2.4. Dans tous les cas, la propriété de- vant être vérifiée est exprimée comme une formule de logique pouvant être vérifiée ou non (true, false) sur un état donné du système. Plus précisément, le prin- cipe du model-checking consiste à vérifier l’ensemble des propriétés censé refléter le bon comportement d’un système sur l’ensemble des états accessibles et des chemins d’exécution du modèle de ce système. L’exhaustivité de la vérification garantie le bon fonctionnement du système dans tous les cas auxquels il pourra être exposé si, bien évidemment, le modèle du système est correct. Cependant, cette énumération exhaustive peut poser des problèmes en temps de traitement et surtout, en taille de l’espace mémoire nécessaire pour stocker les états et réaliser la vérification. C’est le phénomène d’explosion combinatoire.

Le model-checking est la méthode que nous avons choisie pour répondre à notre problème de modélisation et vérification des systèmes en agriculture de précision. Nous allons dans ce chapitre en expliquer les bases, point de départ pour la compré- hension de tous nos travaux. Le reste du chapitre est organisé comme suit : dans la section suivante, nous donnons une définition détaillée du model-checking et nous décrivons les différentes phases du processus qui permet de le mettre en œuvre. Nous employons dans les travaux présentés dans ce mémoire le formalisme des automates temporisés, nous le présentons en section 2.3. La section 2.4 propose une introduc- tion aux logiques temporelles. La section 2.5 décrit la vérification de propriété. La section 2.6 donne un aperçu des outils de MC. Enfin, la section 2.7 décrit la problé- matique d’analyse d’accessibilité à coût optimal. Cette section se termine par une description de l’outil memtime1 [19] qui permet de mesurer le temps et la mémoire

consommée au moment de la vérification.

2.2 Processus de Model-Checking

Au début des années 1980, Joseph Sifakis et Jean-Pierre Queille en France et, de manière indépendante, Edmund M. Clarke et E. Allen Emerson aux Etats-Unis ont proposé une méthode automatique de vérification formelle des systèmes : Le model- checking ([103],[45]). Cela leur a valu le prix Turing en 2007. Le model-checking ([2],[9]) permet d’assurer que le modèle d’un système est conforme à ses spécifica- tions. Celles-ci sont décrites sous forme de propriétés logiques temporelles. Les deux

champs d’applications classiques des techniques de model-checking sont la valida- tion des composants électroniques et la validation des protocoles de communication [9, 46, 55]. Les techniques de model-checking sont de plus utilisées dans des applica- tions industrielles ([44], [43]). Un ouvrage proposant une synthèse historique a été édité en 2008 ([66]).

Le processus de model-checking se base sur 3 phases :

1. La première est la phase de modélisation formelle du comportement du système via des machines à états. Elle sera décrite dans la section 2.3.

2. La deuxième est la phase de description de la spécification attendue du système via des propriétés, exprimées en langages logiques. Cette phase sera décrite dans la section 2.4.

3. La troisième est la phase de vérification. Elle consiste à déterminer si le modèle satisfait la propriété. Si la propriété n’est pas satisfaite alors un contre-exemple peut être fourni. Cette phase sera décrite dans la section 2.5.

Nous allons maintenant décrire chacune de ses phases.

2.3 Modélisation formelle

La modélisation formelle est la première phase du processus de vérification par model-checking. Elle consiste à modéliser le comportement du système via des ma- chines à états. Cette phase est particulièrement délicate car elle nécessite un sens aigu de modélisation et d’abstraction. Généralement, le système est décrit en langage naturel, ce qui nécessite une traduction en langage formel de cette description. Cela peut induire des erreurs ou nécessiter des hypothèses de la part du modélisateur si la description en langage naturel comporte des ambiguïtés. Le niveau d’abstraction choisi est un élément critique du processus de modélisation, car il doit refléter correc- tement le fonctionnement du système tout en garantissant la bonne compréhension du modélisateur mais aussi la faisabilité et la justesse du processus de vérification. Il est également possible d’avoir plusieurs niveaux d’abstraction d’un même système, en fonction de l’utilité du modèle et des propriétés à vérifier. Dans cette partie du processus de modélisation formelle, l’expertise du modélisateur sera déterminante pour construire un modèle à la fois correct et adapté au model-checking.

Dans la section suivante, nous présenterons les différents formalismes de modé- lisation.

2.3.1 Les différents formalismes pour le model-checking

Le model-checking se base sur une modélisation formelle du système à base de machines à états. Il fait donc appel à des formalismes qui représentent des états et des transitions entre états.