Grammaire informelle des expressions du langage mCaml

Tรฉlรฉcharger le fichier pdf d’un mรฉmoire de fin d’รฉtudes

Processus de certification (ou de qualification)

Le processus de certiVcation (ou de qualiVcation [44] [45], cโ€™est une question de vocabulaire qui varie selon le domaine et lโ€™objet concernรฉ) dโ€™un logiciel critique consiste en pratique ร  rassembler les responsables du projet et les reprรฉsentants des autoritรฉs de certiVcation pendant plusieurs jours aVn de passer en revue toute la documentation de lโ€™ensemble du processus, pour vรฉriVer que tout a bien รฉtรฉ respectรฉ.
Cela implique donc que lโ€™ensemble du processus de dรฉveloppement est directement impactรฉ par le processus de certiVcation, puisque sโ€™il ne lโ€™a pas pris en compte, le rรฉsultat ne peut pas passer la certiVcation. Kornecki et Zalewski [47] prรฉsentent un รฉtat de lโ€™art en 2009 du processus de certiVcation appliquรฉ aux diUรฉrents objets logiciels (e.g., gรฉnรฉrateur de code, outil de vรฉriVcation du code, logiciel critique embarquรฉ) intervenant dans le cadre dโ€™un dรฉveloppement de logiciels pour lโ€™avionique civile.
On remarque que lโ€™autoritรฉ de certiVcation ne lit pas le code du logiciel ou du moins pas exhaustivement.
Elle regarde surtout comment il a รฉtรฉ produit et comment il a รฉtรฉ vรฉriVรฉ. La vรฉriVcation de la traรงabilitรฉ entre le code et la conception dรฉtaillรฉe par lโ€™autoritรฉ pourra impliquer de prendre du code et vรฉriVer sa provenance, ainsi que dans lโ€™autre sens de prendre une exigence et vรฉriVer son implantation.
Cela ne veut pas dire que personne nโ€™a relu le code. Par exemple, si des rรจgles de codage (e.g., interdiction dโ€™allocation dynamique) interviennent dans le processus de dรฉveloppement, un document doit attester que ces rรจgles ont รฉtรฉ respectรฉes.

ร‰volution des coรปts

Selon Myers en 1979 [62], le temps passรฉ dans les activitรฉs de tests pour un logiciel รฉtait dโ€™environ
la moitiรฉ du temps total de son dรฉveloppement, pour un coรปt dรฉpassant un peu la moitiรฉ du coรปt total.
Environ trois dรฉcennies plus tard, Myers et al. ont conVrmรฉ ces chiUres ร  deux reprises, en 2004 [64] .

ร‰volution des techniques

Pourtant ces 30 derniรจres annรฉes, les techniques de tests ont รฉvoluรฉ, permettant ainsi la rรฉduction
des coรปts des tests. Cโ€™est le cas aussi pour ce qui concerne les environnements de dรฉveloppement de maniรจre gรฉnรฉrale.
Mais dans le mรชme temps, les logiciels sont devenus beaucoup plus complexes, ce qui explique en
bonne partie que les coรปts des activitรฉs de tests ont gardรฉ la mรชme proportion.
Dโ€™autre part, les auteurs de livres sur lโ€™activitรฉ de tests aXrment tous quโ€™il y a trรจs peu de formations
aux tests dans les รฉcoles et universitรฉs.

Outils pour la couverture de code

Pour mesurer la couverture de code, lโ€™utilisation dโ€™outils est devenue indispensable du fait de la taille et de la complexitรฉ des programmes dรฉveloppรฉs de nos jours. De nombreux outils existent pour les langages les plus utilisรฉs dans le monde des logiciels critiques, que sont le langage C [36] [65] et le sous-ensemble SPARK [2] du langage Ada.
Le travail menรฉ au cours de cette thรจse a รฉtรฉ prรฉcisรฉment de concevoir et rรฉaliser un outil permettant lโ€™utilisation dโ€™une autre sorte de langage, prรฉcisรฉment OCaml, dans le processus de dรฉveloppement dโ€™un logiciel critique pour lโ€™avionique civile. Ce travail prend son origine dans une collaboration avecย la sociรฉtรฉ Esterel Technologies que nous prรฉsentons briรจvement ร  la section suivante.
Dans cette section, on rรฉsume lโ€™expรฉrience de lโ€™entreprise Esterel Technologies avec OCaml utilisรฉ en tant que langage dโ€™implantation du gรฉnรฉrateur de code de SCADE, prรฉsentรฉe dans les articles [68][66][67].
Ce travail avait รฉtรฉ eUectuรฉ en partenariat avec les laboratoires PPS et LIP6.
Lโ€™entreprise Esterel Technologies dรฉveloppe et commercialise SCADE, un environnement de dรฉveloppement dโ€™applications critiques. Les applications sont dรฉveloppรฉes en langage Lustre puis traduites automatiquement en langage C. (Quelques rรฉfรฉrences sur le langage Lustre : [35] [34] [12].) La suite SCADE oUre la possibilitรฉ de programmer en langage graphique Scade (ร  la place dโ€™รฉcrire du code Lustre). Le processus de traduction du Scade vers C est rรฉalisรฉ par le gรฉnรฉrateur de code appelรฉ KCG11.
Pour passer ร  la version 6 de SCADE, Esterel Technologies a dรฉveloppรฉ en OCaml un prototype de KCG [30]. La sociรฉtรฉ a choisi de garder le mรชme langage dโ€™implantation pour passer du prototype ร  la nouvelle version de KCG. Le langage choisi pour dรฉvelopper le prototype (OCaml) facilite la traรงabilitรฉ entre la spรฉciVcation du gรฉnรฉrateur de code et son implantation. Cela tient au fait quโ€™un gรฉnรฉrateur de code est un programme de manipulation dโ€™arbres de syntaxe abstraite, et que les langages de la famille ML, dont fait partie OCaml, oUre des facilitรฉs pour ce genre de traitements (type somme, Vltrage par motifs).

Le langage mCaml

Notre langage est entiรจrement dรฉVni formellement mais pour allรฉger sa prรฉsentation, celle-ci est dรฉcoupรฉe en deux. Cette section prรฉsente une grammaire simpliVรฉe des expressions du langage et unit qui est utilisรฉe.

Le langage mCaml

donne la sรฉmantique opรฉrationnelle des dรฉVnitions globales et des expressions du langage. La sรฉmantique opรฉrationnelle nโ€™est dรฉVnie que pour les programmes acceptรฉs par le systรจme de types qui est dรฉVni en annexe (section A.2, page 161). En annexe, se trouve รฉgalement la grammaire formelle et complรจte du langage en section A.1 (page 157). Nous insistons sur la nรฉcessitรฉ de la prรฉsence dโ€™une dรฉVnition formelle, dโ€™autant plus que nous proposons un langage peu conventionnel notamment dans lโ€™optique de lโ€™utiliser dans un cadre de dรฉveloppement de logiciels critiques, comme pourraient le rappeler Halang et Zalewski [33].

Grammaire informelle des expressions du langage mCaml

Nous donnons ici une grammaire sous forme intuitive dans le but de permettre au lecteur de se faire rapidement une idรฉe du langage que nous dรฉVnissons.
La Vgure III.1 rรฉsume les expressions du langage mCaml, oรน x dรฉsigne une variable, c dรฉsigne une constante, e dรฉsigne une expression, f dรฉsigne un champ dโ€™enregistrement, C dรฉsigne un constructeur constant (i.e., valeur dโ€™un type รฉnumรฉrรฉ), C(e) est un constructeur ayant un argument (i.e., valeur dโ€™un type รฉnumรฉrรฉ associรฉe ร  une autre valeur) et p dรฉsigne un motif servant au Vltrage. Les mots-clefs du langage sont en gras.

Sรฉmantique opรฉrationnelle du langage mCaml

Cette section dรฉcrit comment un programme รฉcrit en mCaml sโ€™รฉvalue. Nous utilisons la sรฉmantique
opรฉrationnelle ร  grands pas. mCaml, ร  lโ€™instar dโ€™OCaml, utilise la convention dโ€™appels par valeurs, cโ€™est-ร -dire que lors dโ€™une application, lโ€™argument dโ€™une fonction est รฉvaluรฉ avant le corps de la fonction.
En OCaml, il nโ€™est pas spรฉciVรฉ lโ€™ordre dโ€™รฉvaluation des paramรจtres des fonctions. Ainsi, dans lโ€™รฉvaluation de lโ€™expression (foo (raise A) (raise B)), il est diXcile de savoir si cโ€™est lโ€™exception A ou lโ€™exception B qui sera levรฉe. Cette sรฉmantique laisse la libertรฉ au compilateur (ou ร  son concepteur) de dรฉcider qui รฉvaluer en premier pour des questions dโ€™optimisations. En mCaml, il nโ€™est pas question dโ€™optimisations du compilateur. La sรฉmantique de mCaml ne laisse aucun choix ouvert.

Spรฉcification de la couverture des expressions pour mCaml

Dans cette section, nous dรฉVnissons formellement le critรจre de couverture structurelle de code simple pour le langage mCaml.
Le principe est le suivant : une expression atomique (constantes et variables) est couverte si elle est รฉvaluรฉe ; pour toutes les autres expressions, qui comportent toutes une ou plusieurs sous-expressions, il faut pour รชtre couverte que chacune des sous-expressions soit couverte, et quโ€™en plus, sauf impossibilitรฉ totale, elle soit รฉvaluรฉe en une valeur. Un exemple dโ€™impossibilitรฉ totale dโ€™รฉvaluation en une valeur : (raise e). En eUet, (raise e) ne peut, par dรฉVnition, sโ€™รฉvaluer en une valeur.
Intuitivement, nous souhaitons que le taux de couverture soit de 100% pour un programme qui sโ€™รฉvalue sans problรจme et dont on ne peut pas amรฉliorer la couverture en ajoutant des tests ou en modiVant des branchements conditionnels.

Rรจgles formelles de couverture des expressions pour mCaml

On รฉtablit la couverture de code ร  partir dโ€™un ensemble dโ€™arbres dโ€™รฉvaluation notรฉ TR et obtenu ร  partir dโ€™un ensemble de jeux de tests. Un arbre dโ€™รฉvaluation rรฉsulte de lโ€™รฉvaluation dโ€™un programme dโ€™aprรจs sa sรฉmantique opรฉrationnelle, ร  partir dโ€™un jeu de tests, comme dรฉVni plus haut.
Le prรฉdicat C est dรฉVni ci-aprรจs inductivement. Il prend une expression en argument et aXrme sa couverture. Les expressions non-couvertes ne satisfont donc pas les rรจgles.
Une constante est couverte si, et seulement si, elle apparaรฎt dans une feuille dโ€™un des arbres dโ€™รฉvaluation.
Ici, ยซ une constante ยป dรฉsigne prรฉcisรฉment une constante apparaissant ร  un endroit prรฉcis dans le
code du programme. Par exemple, si la constante 42 apparaรฎt plusieurs fois dans un programme, chacune de ses occurrences aura sa propre mesure de couverture. CC ? 9T 2 TR ย (E;M` c ;v M) 2 T TR ` C(c).

Critรจres de couverture pour les expressions boolรฉennes

Cette section porte sur les critรจres de couverture conditionnelle classiquement rencontrรฉs dans la littรฉrature. Nous gravirons une รฉchelle de complexitรฉ en partant dโ€™un critรจre simple, celui de la couverture des conditions, pour arriver au fameux critรจre MC/DC.
Les dรฉVnitions proposรฉes dans cette section ne portent pas particuliรจrement sur mCaml, mais plutรดt sur les langages de programmation en gรฉnรฉral. Ces dรฉVnitions serviront alors de base et lorsque ce sera nรฉcessaire, elles seront raXnรฉes. Dโ€™autre part, les notions de ยซ condition ยป et de ยซ dรฉcision ยป utilisรฉes dans cette section sont ยซ gรฉnรฉriques ยป, en ce sens que quelles que soient les variantes des dรฉVnitions utilisรฉes pour ces deux mots, les dรฉVnitions proposรฉes dans cette section ne devraient pas en รชtre impactรฉes.
On peut toutefois aXrmer que dans tous les cas, une condition et une dรฉcision sont des expressions boolรฉennes.
Les valeurs boolรฉennes ne sont pas les mรชmes dans tous les langages. En C, un mot (e.g., un entier, un Wottant, une adresse mรฉmoire) dont tous les bits sont ร  0 reprรฉsente faux, et tous les autres mots reprรฉsentent vrai. En Java, nous avons les valeurs primitives true et false, comme pour ML.
En mรชme temps, on peut dire que le type des boolรฉens est reprรฉsentรฉ et reprรฉsentable par deux ensembles de valeurs (qui sont souvent chacun des singletons mais pas toujours). Ici, on choisit eUectivement de ne considรฉrer que les deux valeurs true et false.

Couverture des conditions/dรฉcisions modifiรฉe (MC/DC)

Intuitivement, le critรจre MC/DC demande, en plus de C/DC, ร  ce que les conditions dโ€™une dรฉcision donnรฉe puissent chacune avoir un eUet sur la dรฉcision. Ce critรจre sert ร  donner une preuve que toutes les conditions servent. Les conditions qui ne satisfont pas ce critรจre sont suspectes ; le cas le plus simple oรน cela arrive est une dรฉcision oรน la mรชme condition apparaรฎt plusieurs fois dans une dรฉcision (e.g., (x && x)). Il faut alors soit justiVer la prรฉsence des conditions qui ne satisfont pas le critรจre ou bien mener une nouvelle campagne de tests.
Ce critรจre est sujet ร  de nombreuses interprรฉtations, certaines plus eXcaces que dโ€™autres pour la dรฉtection des erreurs, certaines plus coรปteuses que dโ€™autres. Les diUรฉrentes interprรฉtations seront souvent un compromis entre eXcacitรฉ et coรปt.
Hayhurst et al. proposent un tutoriel sur ce critรจre de couverture de code [38].
Les membres de CertiVcation Authorities Software Team (CAST) ont publiรฉ leur point de vue [13] sur lโ€™interprรฉtation de la notion de ยซ dรฉcision ยป.
Chilenski รฉtudie lโ€™eXcacitรฉ de trois interprรฉtations de ce critรจre dans [14].
Comme ce critรจre est complexe et important notamment pour les projets soumis aux obligations de la DO-178B, on va dรฉvelopper davantage les motivations.

Au plus ยซ 2n tests pour le critรจre MC/DC ยป

Quand on rattache des conditions ร  une dรฉcision, usuellement il sโ€™agit dโ€™utiliser des opรฉrateurs boolรฉens de conjonction et de disjonction, quโ€™ils soient sรฉquentiels ou non. On peut bien sรปr rencontrer dโ€™autres opรฉrateurs logiques tels que la disjonction exclusive par exemple.
Plus loin dans ce chapitre (sections IV.2.4, page 77 et IV.2.5, page 78), nous proposerons de rattacher les conditions ร  une dรฉcision selon des moyens plus gรฉnรฉraux que les opรฉrateurs logiques. Par exemple, on peut se poser la question de la diUรฉrence fondamentale entre un opรฉrateur logique de conjonction (&&) et la construction conditionnelle (if), puisque le premier peut รชtre remplacรฉ par le second : e1 && e2 ; if e1 then e2 else false.
Avec les opรฉrateurs logiques sรฉquentiels, certaines conditions sont inatteignables dans certaines conVgurations (e.g., (e1 && e2) oรน e1 sโ€™รฉvalue en false).
De maniรจre plus gรฉnรฉrale, si pour un ensemble de conditions dโ€™une dรฉcision, une seule condition peut รชtre รฉvaluรฉe (cโ€™est le minimum puisque sinon la dรฉcision ne prend pas de valeur) ร  la fois, le nombre de tests nรฉcessaires devient 2n pour une dรฉcision ร  n conditions. En eUet, pour que chaque condition soit รฉvaluรฉe aux deux valeurs boolรฉennes, dโ€™une part il faut deux tests par condition et dโ€™autre part chaque condition aUecte forcรฉment la dรฉcision indรฉpendamment des autres puisque les valeurs des autres ne sont pas calculรฉes.

Autres critรจres de couverture pour les expressions boolรฉennes

Les diUรฉrents critรจres de couverture de code prรฉsentรฉs prรฉcรฉdemment ne sont pas toujours ceux
qui sont utilisรฉs. Dโ€™autres critรจres de couverture de code peuvent รชtre proposรฉs.
Le critรจre MC/DC fait dรฉbat entre ceux qui lโ€™adoptent et ceux qui le rejettent, ainsi que ceux qui ne le comprennent pas. Et il nโ€™y a pas vraiment de consensus au sein de ceux qui lโ€™adoptent, puisquโ€™il en existe plusieurs versions.
Nรฉanmoins, nous pouvons voir le critรจre MC/DC comme un compromis permettant dโ€™une part de ne pas faire les tests exhaustifs (critรจre MCC), et dโ€™autre part de ne pas se contenter de faire le minimum de tests (par exemple deux tests, oรน toutes les conditions sont ร  true pour lโ€™un, et false pour lโ€™autre).
Yu et al. [89] proposent une comparaison de diUรฉrents critรจres de couverture de dรฉcisions. Xanthakis et al. [88] prรฉsentent et comparent diUรฉrents critรจres de couverture de conditions et dรฉcisions.

Couverture faible des conditions/dรฉcisions modifiรฉe (Weak MC/DC)

La couverture des conditions/dรฉcisions modiVรฉe aUaiblie consiste ร  autoriser une condition ร  apparaรฎtre plusieurs fois dans une dรฉcision tout en permettant la satisfaction du critรจre MC/DC. Ainsi, une condition apparaissant plusieurs fois dans une dรฉcision nโ€™est considรฉrรฉe quโ€™une seule fois.
Prenons par exemple un cas dรฉgรฉnรฉrรฉ : la dรฉcision (x && x) ne peut pas satisfaire le critรจre MC/DC puisquโ€™on ne pourra jamais faire varier la seconde branche du && tout en maintenant inchangรฉe la premiรจre branche. Le critรจre MC/DC faible ne demande pas de montrer lโ€™indรฉpendance de la seconde branche car x apparaรฎt ailleurs, endroit oรน son indรฉpendance par rapport aux autres conditions (si elles existaient) serait montrรฉe.
Dans le cas oรน plusieurs conditions sont apparemment les mรชmes mais produisent des eUets de bord, cela se complique. Par exemple dans e && e, e pourrait รชtre une lecture sur un Wux de donnรฉes.
Dans ce cas, la raison dโ€™utiliser un critรจre relรขchรฉ nโ€™est plus vraiment pertinent.

Couverture des conditions/dรฉcisions renforcรฉe (RC/DC)

RC/DC est un critรจre proposรฉ par Vilkomir et Bowen [83]. Ce critรจre se veut renforcer le critรจre MC/DC en ajoutant des contraintes de tests ยซ dans la mesure du possible ยป.
Voici comment ils formulent la dรฉVnition du critรจre RC/DC, avec en gras italique les parties qui diUรจrent de la dรฉVnition de MC/DC :ย  Avec MC/DC, si deux ensembles v1 et v2 de n conditions montrent lโ€™indรฉpendance de la condition i, alors (80 j < n; (j , i )v1[j] = v2[j]))^(v1[i] , v2[i]) et si d1 et d2 sont les dรฉcisions correspondant respectivement aux conditions v1 et v2, alors d1 , d2.
Pour RC/DC, dans la mesure du possible, on veut quโ€™il y ait une mesure supplรฉmentaire par rapport ร  MC/DC montrant quโ€™avec les ensembles v1 et v2 on obtient d1 = d2.

Le rapport de stage ou le pfe est un document dโ€™analyse, de synthรจse et dโ€™รฉvaluation de votre apprentissage, cโ€™est pour cela chatpfe.com propose le tรฉlรฉchargement des modรจles complet de projet de fin dโ€™รฉtude, rapport de stage, mรฉmoire, pfe, thรจse, pour connaรฎtre la mรฉthodologie ร  avoir et savoir comment construire les parties dโ€™un projet de fin dโ€™รฉtude.

Table des matiรจres

I Introductionย 
Objectifs de cette thรจse
Contributions de cette thรจse
Plan du manuscrit
II Dรฉveloppement de logiciels critiques et tests de couverture structurelleย 
II.1 Criticitรฉ et sรปretรฉ des applications logicielles
II.1.1 Dรฉveloppement dโ€™un logiciel critique
II.2 CertiVcations, tests et preuves formelles
II.2.1 Activitรฉs de tests
II.2.2 CertiVcats et preuves
II.3 Normes ou guides de dรฉveloppement de logiciels critiques
II.3.1 Lโ€™avionique civile en tant que domaine critique
II.3.2 Normes pour dโ€™autres domaines critiques
II.4 Cycle de vie dโ€™un logiciel et processus de dรฉveloppement
II.4.1 La vie dโ€™un logiciel
II.4.2 Agencement de la vie dโ€™un logiciel
II.4.3 Lโ€™importance du processus de dรฉveloppement pour un logiciel critique
II.5 Documentation et traรงabilitรฉ pour les logiciels critiques
II.6 Processus de certiVcation (ou de qualiVcation)
II.7 Activitรฉs de tests
II.8 ร‰volution des activitรฉs de tests
II.8.1 ร‰volution des coรปts
II.8.2 ร‰volution des techniques
II.9 Couverture de code
II.9.1 Objectifs
II.9.2 Outils pour la couverture de code
II.9.3 Un exemple de couverture de code
II.10 Conclusion du chapitre
III Le Langage mCaml et la couverture structurelle des expressionsย 
III.1 Le langage mCaml
III.1.1 Grammaire informelle des expressions du langage mCaml
III.1.2 Sรฉmantique opรฉrationnelle du langage mCaml
III.1.3 Arbre dโ€™รฉvaluation
III.2 SpรฉciVcation de la couverture des expressions pour mCaml
III.2.1 Rรจgles formelles de couverture des expressions pour mCaml
III.2.2 Taux de couverture
III.3 Conclusion du chapitre
IV Couverture des conditions et des dรฉcisions pour mCamlย 
IV.1 Critรจres de couverture pour les expressions boolรฉennes
IV.1.1 Couverture des conditions (CC)
IV.1.2 Couverture des dรฉcisions (DC)
IV.1.3 Couverture des conditions/dรฉcisions (C/DC)
IV.1.4 Couverture des conditions multiples (MCC)
IV.1.5 Couverture des conditions/dรฉcisions modiVรฉe (MC/DC)
IV.1.6 Autres critรจres de couverture pour les expressions boolรฉennes
IV.2 Conditions et dรฉcisions pour mCaml : quatre sรฉmantiques formelles
IV.2.1 Notations
IV.2.2 Sรฉmantique 1 : repรฉrage syntaxique aux branchements conditionnels
IV.2.3 Sรฉmantique 2 : sรฉmantique intermรฉdiaire, gรฉnรฉralisation aux opรฉrateurs boolรฉens
IV.2.4 Sรฉmantique 3 : une extension de la sรฉmantique 2, gรฉnรฉralisation aux applications ร  retour boolรฉen
IV.2.5 Sรฉmantique 4 : gรฉnรฉralisation aux expressions boolรฉennes
IV.3 Choix de la sรฉmantique
IV.4 Fonction de comptage des conditions dโ€™une expression
IV.5 Conclusion du chapitre
V Couverture de code structurelle intrusive pour mCaml 87
V.1 Instrumentation de code mCaml pour la couverture des expressions
V.1.1 Instrumentation la plus gรฉnรฉrale
V.1.2 Instrumentation simple
V.1.3 Instrumentation avancรฉe pour la couverture structurelle
V.1.4 Sรฉmantique opรฉrationnelle prรฉservรฉe
V.2 Instrumentation de code mCaml pour la mesure de satisfaction du critรจre MC/DC
V.3 Conclusion du chapitre
VI Couverture de code structurelle non-intrusive pour mCamlย 
VI.1 Instrumentation pour la couverture structurelle simple
VI.1.1 Informations de mise au point produites par ocamldebug
VI.1.2 Gรฉnรฉration des marques pour la couverture simple des expressions du langage mCaml
VI.2 Instrumentation pour les mesures des conditions et dรฉcisions
VI.2.1 Instrumentation de lโ€™environnement dโ€™exรฉcution pour la mesure MC/DC
VI.2.2 Production de rapports de couverture avec la mesure MC/DC
VI.3 Conservation de la sรฉmantique opรฉrationnelle
VI.4 Conclusion du chapitre
VII Comparaison entre les approches intrusive et non-intrusiveย 
VII.1 Comparaison sรฉmantique des deux techniques
VII.1.1 ร‰quivalence des rรฉsultats produits par les deux techniques en lโ€™absence de traitement particulier des appels terminaux
VII.1.2 Une diUรฉrence notable des deux approches : les appels terminaux
VII.2 Comparaison pratique des approches intrusive et non intrusive
VII.2.1 Du point de vue de lโ€™utilisateur
VII.2.2 Avantages et inconvรฉnients
VII.3 MLcov : couverture structurelle par instrumentation du code source
VII.3.1 Caractรฉristiques gรฉnรฉrales de lโ€™outil MLcov
VII.3.2 Sรฉmantique utilisรฉe par MLcov
VII.3.3 Un exemple de rapport de couverture avec MLcov
VII.4 Zamcov : couverture structurelle non intrusive
VII.4.1 Gรฉnรฉration des informations de couverture
VII.4.2 Illustration
VII.5 Conclusion du chapitre
VIII Conclusion et Perspectives
Bibliographie

Tรฉlรฉcharger le rapport complet

Tรฉlรฉcharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiรฉe. Les champs obligatoires sont indiquรฉs avec *