Coverity teste le code d’un logiciel clé du LHC au Cern

L’Organisation européenne pour la Recherche nucléaire a choisi la solution de Coverity Static Analysis pour garantir l’intégrité des développements et du code de son logiciel ROOT, qui sert à stocker et analyser les données générées par les 4 détecteurs du grand collisionneur de hadrons LHC. La solution a permis d’identifier 4000 défauts, jusqu’alors restés cachés, dans les 3 millions de lignes de code C++ du projet. Coverity fait désormais parti des procédures de test de code des physiciens.

Le 14 mars dernier, les scientifiques du Cern (Organisation européenne pour la Recherche nucléaire (CERN) affirmaient être de plus en plus certains d’avoir mis la main sur un boson de Higgs lors de leur très spectaculaire découverte de juillet 2012.

"Les résultats préliminaires portant sur l’ensemble des données 2012 sont magnifiques, et pour moi il est clair que nous avons affaire à un boson de Higgs, même si nous sommes encore loin de savoir de quelle sorte de boson de Higgs il s'agit", avait alors déclaré Joe Incandela, porte-parole de CMS (l’une des quatre intersections où sont réalisées les collisions, au sein du Grand collisionneur de hadrons - LHC), cité par nos confrères de l’AFP.

Ces derniers résultats, qui portent sur l’analyse de quantité de données pharaonique - «deux fois et demie plus de données que ce qui était alors disponible» nous rappelle l’AFP - , auraient-ils pu être fiables et dignes de confiance sans avoir, au préalable, garanti l’intégrité du logiciel qui les sauvegarde ? Cette question explique pourquoi le le Cern a choisi de déployer la solution d’analyse statique de code de Coverity, un spécialiste du test de développement.

René Brun, physicien et membre honoraire du CERN[/caption] Le Cern et Coverity ont débuté leur collaboration autour du logiciel Open Source ROOT du centre. Un logiciel critique au coeur des expérimentations du Cern et clé dans la gestion des données générées par les 4 détecteurs du LHC - où sont réalisées les si précieuses collisions entre protons et qui ont donné naissance à cette «particule divine».

«Les informations produites par ces 4 détecteurs, Atlas, Alice, LHCB et CMS, sont distribuées dans le monde entier, et reconstruites sur plus de 150 000 machines. Les résultats sont stockés dans une douzaine de centres dans le monde. Les physiciens font ensuite l’analyse de données via le logiciel sur lequel a été testé Coverity : ROOT», explique René Brun, physicien et membre honorifique du Cern, à l’origine de ce projet.

Ce logiciel sauvegarde ces données et permet à 10 000 scientifiques, répartis dans le monde entier, d’analyser et de visualiser ces données. En une année, précise le Cern, les expériences menées par le Cern via le LHC génèrent plus de 100 pétaoctets (15 pétaoctets en 2010, 120 en 2012), sur lesquelles les physiciens viennent effectuer leurs propres développements. La qualité des développements effectués sur ROOT est donc clé dans les résultats des recherches, et l’idée est donc de limiter au maximum la présence de défaut dans le code. " Un bug dans ROOT peut avoir un impact négatif significatif sur les résultats des expériences du LHC et les analyses de données des physiciens. "

Plus 4000 bugs cachés

C’est là que Coverity entre en jeu, nous explique le scientifique. Si jusqu’alors, les équipes de développement du Cern avaient recours à différents outils pour tester le code, comme le test unitaire, des code checkers ou des runtime analysers, le taux de couverture ne dépassait pas les 60% du code, nous assure René Brun. Coverity, et sa suite Static Analysis, ont permis d’aller plus loin, en complétant des outils déjà en place. «Avec Coverity, on a pu faire ce que les systèmes d’analyse au niveau du runtime ne pouvaient pas faire : découvrir des problèmes sur une courte période de temps.»

Detect Trend for ROOT

La particularité de la solution de Coverity est en effet de se reposer sur des analyses très détaillées du code et de détecter, via différents scénarii, des défauts et des bugs, qui jusqu’alors restaient indétectables. Ainsi Coverity a permis d’identifier plus de 4000 défauts dans ROOT, soit un 1,4 défaut par 1000 lignes de code. «Impossible à croire pour un logiciel développé il y a 20 ans», ironise René Brun, qui ajoute ainsi que ces défauts ont été corrigés, très rapidement, en 6 semaines. La plupart de ces défauts étaient mineurs, mais certains auraient pu avoir des conséquences importantes sur l'analyse des résultats des expériences, note encore le scientifique.

Une acceptation motivée par la qualité du code

Cela a également contribué à faire accepter la solution par l’ensemble de la communauté de physiciens du Cern, souligne également René Brun. Cela a haussé le niveau de confiance dans le logiciel. Le gain ne se limite pas au seul temps économisé mais s'étend à la sécurité, ajoute-t-il. Surtout, cette capacité d'identifier des bugs bien cachés a permis de «sensibiliser les personnes à l’intégrité du logiciel et celles-ci regardent désormais les rapports d’analyse publiés par Coverity». L’interface Web, ainsi que ses tableaux de bord, ont également favorisé l’acceptation de la solution par les développeurs - ainsi que par les moins développeurs, note-t-il.

Les rapports permettent également de «scorer» les programmeurs et d’analyser leurs développements. Fort de cette découverte, le Cern a décidé de généraliser la solution de test de Coverity pour les développements effectués par les physiciens du centre. «Ainsi Coverity est exécuté une fois par jour pour les traitements les plus lourds. Mais l’enjeu était également de tester très tôt le code. Du coup, le Cern a programmé l’outil de Coverity afin d’effectuer un checking des entrées des physiciens en quasi-temps réel et de valider le code immédiatement. Aujourd’hui, Coverity teste 50 millions de lignes de code au Cern. L'article a été mis à jour le 28 mars 2013

Approfondir

Soyez le premier à commenter

M'envoyer une notification dès qu'un autre membre commente.

Merci de créer un identifiant pour pouvoir poster votre commentaire.

- ANNONCES GOOGLE

Close