pour la Couverture de Code Structurelle

Transcription

pour la Couverture de Code Structurelle
.Soutenance de thèse de doctorat présentée à l’Université Pierre et Marie Curie
Langages Applicatifs et Machines Abstraites
pour la Couverture de Code Structurelle
Philippe Wang
sous la direction d’Emmanuel Chailloux
Université Pierre et Marie Curie
École Doctorale Informatique, Télécommunications et Électronique de Paris
Jeudi 4 octobre 2012 à 14h00,
sur le campus Jussieu, salle 25-26-105
.
.
.
.
.
.
Résumé
Cette thèse présente une étude qui répond à un besoin industriel d’avoir des outils pour aider à la qualité et au
respect des processus de développement de logiciels critiques comme ceux du domaine de l’avionique civile. Il
s’agit de l’étude de la couverture de code structurelle pour un langage de la famille ML. Dans ce contexte, ML
apparaît comme un langage particulièrement riche en constructions de haut-niveau d’abstraction et expressif. Son
utilisation est un élément de progrès mais soulève des problèmes d’adaptation des pratiques du génie logiciel
classique pour les systèmes critiques. Notamment, la notion de couverture des conditions et des décisions ainsi
que les critères de couverture dérivés se complexifient rapidement. Nous donnons alors en première contribution
plusieurs sémantiques pour l’interprétation des définitions des conditions et des décisions pour un langage
d’expressions de haut-niveau que nous avons complètement formellement défini. Ensuite, nous donnons la
sémantique formelle pour une implantation pour la mesure de couverture par réécriture du code source, ce que
nous appelons l’instrumentation intrusive. Puis, nous étudions une technique qui ne réécrit pas le code, ce qui
permet d’avoir la possibilité d’utiliser le même binaire pour les tests et pour la production. Cette technique, que
nous appelons non intrusive, consiste à générer les informations de correspondance entre le code source et le
code machine, et éventuellement d’autres informations, pour que l’environnement d’exécution incluant une
machine virtuelle puisse enregistrer les traces nécessaires à l’élaboration des rapports de couverture. Enfin, nous
comparons ces deux approches, en terme de sémantique, d’utilisation et d’implantation.
2/4
Abstract
This thesis presents a study on structural code coverage for a language of the ML family, in response to an
industrial need in safety-critical software domain to develop tools. In this context, ML appears as a particularly
rich and high-level language with a high degree of expressiveness. Its use is a progress but also raises issues when
trying to use classical safety-critical software engineering processes. Notably, the two notions of conditions and
decisions as well as coverage criteria associated with them rapidly become very complex. So the first contribution
of this thesis is to give several formal semantics to the question of what conditions and decisions are when using a
language of the ML family, which is formally specified. Then, we present a formalised technique for structural code
coverage which rewrite the source code to produce traces at run-time. We name it the intrusive instrumentation.
We also formalise another technique which does not rewrite the source code, which allows to use the same
binary for both testing activities and distribution. This second technique is called non intrusive and consists in
generating at compile-time the information needed to match the machine code back to the source code, but also
other information for the execution environment to record the traces that we need to generate a coverage report.
Finally, we compare these two techniques both formally and practically, but also in terms of implementation.
3/4
Informations complémentaires
I
Lieu : campus Jussieu, 4 place Jussieu, 75005 Paris.
I
Ce document sera mis à jour prochainement pour fournir
plus de précisions.
Date de révision de ce document : 19 septembre 2012
4/4