• Aucun résultat trouvé

Processus de vérification d’un outil élémentaire formel

4.4 Processus de vérification

4.4.2 Processus de vérification d’un outil élémentaire formel

4.4.2.1 Vérification de la spécification

La spécification de l’outil élémentaire est écrite en langage naturel pour tout type de développement. Par conséquent, elle est la cible du processus de vérifi- cation décrit dans la section4.4.1.1. Nous décrivons, dans la suite, le processus de vérification des spécifications formelles. Les activités de ce processus sont résumées dans la figure4.5.

Objectif Activité Procédure

La spécification formelle Relecture de spécification Relecture est conforme à la formelle

spécification textuelle Exécution de la spécification Exécution de code extrait par Coq La spécification formelle Vérification de preuves Vérifieur de

est correcte preuves de Coq

La spécification formelle Vérification de conformité Vérification de syntaxe est vérifiable aux standards et type par Coq La spécification formelle

est conforme aux standards

La spécification formelle Analyse de traçabilité Relecture est traçable avec la

spécification textuelle

Fig. 4.5 – Processus de vérification des spécifications formelles

Relecture des spécifications formelles Les exigences textuelles sont trans- crites en langage formel Gallina de l’atelier Coq. Il s’agit donc de vérifier, par relecture, que la spécification formelle est correcte par rapport à la spécification décrite en langage naturel ;

Exécution de la spécification L’extracteur de Coq est utilisé pour produire une spécification exécutable. Cette dernière est un programme qui doit se comporter exactement comme la spécification. Il est possible de vérifier la correspondance avec la spécification textuelle en exécutant des procé- dures de tests telles qu’elles sont décrites dans la section 4.4.1.4. L’exé- cution comprend la spécification des entrées/sorties (en format textuel) ainsi que l’adaptateur OCaml qui manipule ces fichiers en lecture/écri- ture ;

Vérification de preuves Le vérifieur de preuves Coq assure la correction de la spécification dont les preuves contenues dans cette dernière ;

Conformité aux standards Cette vérification est automatiquement effectuée

par le vérifieur de Coq. Cela consiste à vérifier la correction de la syn- taxe, le type des spécifications, la totalité et la terminaison des fonctions ;

Analyse de traçabilité Toutes les spécifications textuelles doivent être cou- vertes par la spécification formelle, c’est-à-dire, qu’elles ont été prises en compte et exprimées formellement. Les exigences ne faisant pas réfé- rence à des exigences textuelles doivent être justifiées. La traçabilité entre les spécifications textuelle et formelle est réalisée par l’outil TRAMWAY.

4.4.2.2 Vérification de la conception des adaptateurs Java et OCaml

Les adaptateurs Java et OCaml sont écrits en langage de programmation clas- sique (respectivement Java et OCaml). Le processus de vérification de leur conception suit, par conséquent, le même principe que celui présenté dans la section 4.4.1.2. Les tests s’appuieront sur les fichiers Xml échangés entre les différents outils élémentaires du générateur de code.

4.4.2.3 Vérification de la description formelle de la conception

Les enjeux de vérification de la description formelle de la conception sont les mêmes que pour la conception classique. En revanche, les activités de vérifica- tion sont réalisées par des procédures différentes. La figure4.6récapitule ces activités.

Cela consiste, dans un premier temps, à relire la description formelle de la conception afin de vérifier la conformité avec l’architecture de l’outil élé- mentaire. La conception formelle est écrite sous la forme de propriétés et de fonctions (plus de détails sont fournis dans la section5.4).

Les algorithmes développés dans la conception sont prouvés corrects en Coq. La vérification des scripts de preuves assure donc que les algorithmes développés sont corrects, que les propriétés de la spécification formelle sont garanties et que les propriétés de l’architecture sont vérifiées.

De plus, le standard d’implantation est assuré par Coq qui vérifie la syntaxe et le type des descriptions de la conception. Quant à l’analyse de traçabilité, elle est directe du moment que la spécification et la conception formelles sont écrites dans le même langage Gallina. Cependant, certaines propriétés requises dans la conception ne font référence à aucune exigence de la spécification for- melle. L’impact de ces propriétés sur les sorties de l’outil est donc analysé afin de maintenir la conformité avec les exigences des utilisateurs.

Objectif Activité Procédure

La description formelle de la Vérification par preuves Coq conception est conforme

à la spécification formelle La description formelle de la conception est correcte Les algorithmes sont corrects

L’architecture et la spécification Relecture de la description Relecture formelle sont compatibles de la conception

L’architecture est consistante La description formelle de la conception est vérifiable

La description formelle de la Conformité aux standards Analyseur Coq conception et les standards (syntaxe, type) sont conformes

La description formelle de la Traçabilité directe conception est traçable vis-à-vis

de la spécification formelle

Fig. 4.6 – Processus de vérification de la conception formelle

4.4.2.4 Vérification de l’implantation

L’objectif de cette phase est de vérifier le code source OCaml généré auto- matiquement depuis la spécification en Coq. Il s’agit d’accomplir les activités suivantes :

Relecture de code source : Cette activité consiste à relire le code source de l’outil élémentaire développé en Coq ainsi que son code extrait. Il s’agit, ici, de vérifier, par relecture, que le code implémente les exigences qui sont sous la forme de description formelle de la conception. De plus, il est pris en compte que le développement en Coq assure une similitude structurelle avec OCaml ;

Vérification de conformité aux standards : Il s’agit de vérifier automatique- ment la conformité du code OCaml aux standards. Ces activités sont récapitulées dans la figure4.7.

Objectif Activité Procédure

Le code source correspond Relecture de code source Relecture aux exigences

Le code source est consistent

Le code source est vérifiable Vérification de conformité Vérifieur aux standards de code Le code source est Vérification de conformité Vérifieur conforme aux standards aux standards de code

Relecture de code source Relecture

Fig. 4.7 – Processus de vérification de l’implantation

4.4.2.5 Vérification du code exécutable

Elle consiste à vérifier les résultats de l’exécutable Jar généré à la sortie de l’outil élémentaire ainsi que le code exécutable obtenu depuis le code OCaml

extrait (code binaire obtenu depuis OCaml). Cette phase permet de s’assurer que le code exécutable est conforme à la spécification formelle et à la des- cription formelle de la conception de l’outil élémentaire. Les activités de cette vérification (tests de l’outil élémentaire, relecture des tests ainsi qu’analyse de traçabilité) sont similaires au processus décrit dans la section4.4.1.4.