Développer du code de qualité, tel est un défi majeur que doivent relever les entreprises alors que le logiciel est devenu critique dans toutes les activités économiques

Traditionnellement organisé en deux activités séparées, le développement, d’un côté, et les tests, de l’autre, ont tendance à se rapprocher, voire même à s’interpénétrer. Cette prise en compte plus tôt dans le développement des tests est un facteur d’amélioration importante de la qualité du logiciel. Faut-il rappeler les évaluations du NIST ? Plus un bug est détecté tardivement, plus son traitement sera coûteux. Le schéma ci-dessous donne des indications qui vont de 1 à 30 de la phase de conception à la diffusion du logiciel.  C’est la démarche retenue par Coverity avec sa plate-forme de développement de code statique [1] Coverity Development Testing Platform pour les langages C, C++, C# and Java.

Coverity1

Coverity2

Mais la qualité du logiciel n’est pas une notion absolue car elle a un coût : il serait évidemment contreproductif d’en faire plus que ce que cela coûterait. Il faut viser le bon compromis consistant à viser le niveau nécessaire au bon fonctionnement de l’application ou celui attendu par le client (interne ou externe).

Alors que le logiciel prend une place de plus en plus critique dans la conduite des affaires des entreprises, les développeurs doivent faire face à une complexité croissance des programmes à concevoir dans des délais qui se raccourcissent sans cesse. Par ailleurs, certains secteurs comme l’automobile ou l’informatique embarquée imposent en plus de respecter des normes spécifiques. Dans certaines activités ou situations, disposer d’une application avant les concurrents peut devenir un avantage concurrentiel.

C’est la problématique qui a conduit la société Coverity a se créée il y a dix ans.  Aujourd’hui, elle compte aujourd’hui quelque 1100 clients parmi lesquels on peut citer des éditeurs de logiciels comme Adobe ou SAP ou des entreprises aussi différentes que la NASA, la société d’assurances Aviva ou la société financière DirectEdge et depuis quelques mois Bull qui utilise la plate-forme Coverity pour tester le stack de logiciels utilisé dans le domaine du calcul haute performance.

Bull HPC fait le choix de l’Open Source

Bull a pris le virage du calcul à haute performance il y a une dizaine d’années pour en devenir aujourd’hui un des spécialistes mondiaux avec un positionnement de fournisseur global (matériel, logiciel et services) pour des domaines d’applications très divers. Côté logiciel, elle a fait le choix de l’open source, une option qui permet d’atteindre un objectif plus rapidement mais qui, contrairement à ce qu’on pense, n’est pas gratuit et a des implications au niveau du développement. Le stack logiciel HPC fourni par Bull représente 10 millions de lignes de codes, 9 millions qui proviennent de l’extérieur et 1 million développées en interne.

Coverity3

Ces volumes considérables obligent de faire des choix sur les parties à tester car il est matériellement impossible de tester la totalité du code. Bull utilise la plate-forme Coverity depuis quelques mois et  a concentré ses efforts sur les composants jugés les plus critiques, entre 20 et 30 % de l’ensemble.  « Il est encore trop tôt pour mesurer le ROI sur investissement, explique Eric Monchalin, Directeur de la R&D Extreme Computing, mais la plate-forme fait plutôt bien le travail pour découvrir les défauts. L’outil est à la fois facile à utiliser, ce qui est essentiel sinon ce serait compliqué de le faire accepter par les développeurs, et à administrer ». Parmi les bonnes surprises avec l’outil, l’outil traite efficacement les problèmes de gestion mémoire (fuite de mémoire, erreur double free, réutilisation de la mémoire libérée).

Au-delà de la dimension technique, l’introduction technique d’une plateforme de test nécessite une approche prudente en termes d’organisation et de management. Une plate-forme de tests doit être présentée comme un outil qui permettra d’améliorer le code et donc le produit fini et non pour démasquer les défauts et pointer du doigt leurs auteurs c’est-à-dire les développeurs.



[1] Le test statique s’effectue au vu du code source par opposition au test dynamique qui s’effectue avec l’exécution du code binaire