Projet Couverture : de nouveaux outils de développement open source

Cloud

Première initiative open source de couverture de code de ce niveau, le Projet Couverture vise à répondre aux exigences de certification des systèmes critiques.

Le Projet Couverture favorise les échanges, entre la communauté du logiciel libre et celle du logiciel critique, considérées comme traditionnellement « disjointes ». Il vise à définir des processus et des outils: « faciles dans leur utilisation et leur déploiement, indépendant des langages de programmation (ADA, C, C++), non intrusifs, adaptables aux environnements de test existants et conformes à la qualification DO-178B. »

Le Projet Couverture traite particulièrement de la couverture de code: « C’est une technique qui permet de savoir quelle partie du code d’une application a été exercée. Cela permet de mesurer la qualité d’une campagne de tests et, en particulier, de vérifier s’il n’y a pas des parties de l’application qui n’ont pas été vérifiées par les tests », précise Cyrille Comar, président d’AdaCore, l’un des partenaires du projet.

Il en souligne l’importance, en ajoutant : « C’est une activité obligatoire, dans le cadre d’une certification DO-178B. Plusieurs niveaux de couverture sont définis, en fonction de la criticité du code: couverture des instructions pour le niveau C, des instructions et des conditions pour le niveau B et, enfin, des instructions et de chaque élément des conditions complexes (MCDC) pour le niveau A, le plus critique ».

Ambition affichée : être l’un des meilleurs outils d’analyse de code

Le Projet Couverture se positionne donc en première ligne du développement des systèmes critiques. Comment définit-on un système critique ? « Dans notre contexte, répond M. Comar, également membre du Comité de certification DO-178C, il s’agit des systèmes dans lesquels un dysfonctionnement peut entraîner des conséquences catastrophiques, du type mort d’êtres humains. Par exemple: systèmes de contrôle de navigation d’avions ou de trains ». La mise au point des systèmes critiques nécessite d’analyser le « chemin d’exécution du programme ». Elle consiste, notamment, à extraire des informations du fonctionnement du « vrai code cible », à partir de la virtualisation ou de l’émulation du système final. D’emblée, le Projet Couverture ambitionne de s’inscrire au niveau des meilleurs outils d’analyse de code. A ce titre, il vise à fournir les outils de sécurité exigés, pour obtenir la certification d’application DO-178B, en vigueur dans le domaine de l’avionique.

Financé par la Direction Générale des Entreprises du Ministère de l’Industrie, la région Ile-de-France et le département de Paris, le Projet Couverture est une initiative conduite au sein du Pôle de Compétitivité System@tic. Sous la direction du président du groupe thématique Logiciel Libre, Roberto Di Cosmo, le développement du Projet Couverture doit être finalisé d’ici deux ans, soit en septembre 2010.

Il mobilise quatre partenaires: AdaCore, qui est son chef de file, Open Wide, Telecom Paris Tech et LIP6. « Nous allons mettre en place les idées de Couverture, en phase avec notre activité, et coordonner les efforts de généralisation avec les autres partenaires », indique le président d’AdaCore. Cette société fournit déjà des solutions logicielles en langage ADA, pour des applications où « la sécurité, la sûreté et la fiabilité sont des facteurs critiques », ainsi que l’environnement de développement GNAT Pro.

Prochain objectif : garantir l’évolution et le niveau de qualité d’une application

A terme, le Projet Couverture veut « aller au-delà du simple open source ». « La source d’une application, nous dit Cyrille Comar, n’est qu’une toute petite partie de ce qui est nécessaire, pour faire vivre une application dans le long terme ». « Nous pensons, ajoute-t-il, à tout ce qui permet de garantir son évolution et son niveau de qualité, ainsi qu’à tous les documents de conception et aux tests de qualification, qui peuvent être ‘ouverts’ comme les sources ».

De plus, s’enthousiasme M. Comar, « toutes ces techniques, qui participent à la sûreté de fonctionnement des programmes, devraient aussi être utilisées en contextes non critiques, pour le plus grand bénéfice des applications (tranquillité d’utilisation, coûts de maintenance, etc.). C’est un autre objectif du Projet Couverture ».