Qu'est-ce que la vérification de code ?

Une définition précise des équipes chargées des logiciels embarqués

La vérification du code consiste à s'assurer que le logiciel met correctement en œuvre la conception et les exigences prévues. Dans le cadre du développement de systèmes critiques pour la sécurité, ce processus s'étend sur l'ensemble du cycle de vie, chaque étape produisant des preuves documentées qui viennent étayer le dossier de conformité.

Vérification ou validation : la version courte

Ces deux termes sont souvent utilisés de manière interchangeable, mais ils portent sur des questions différentes.

  • La vérification pose les questions suivantes : avons-nous développé le logiciel correctement ? La mise en œuvre correspond-elle au cahier des charges ?
  • La validation pose les questions suivantes : avons-nous développé le bon logiciel ? Répond-il aux besoins réels des utilisateurs ?

La vérification du code se concentre sur la première question. Elle utilise l’analyse statique, les revues structurées et les tests dynamiques pour confirmer que l’implémentation reflète fidèlement ce qui a été conçu et spécifié.

En quoi consiste la vérification du code ?

Une stratégie de vérification complète associe généralement plusieurs activités complémentaires.

Analyse statique du code

Le code source est examiné sans être exécuté. Des outils tels que PC-lint Plus détectent les violations des normes de codage, les déréférencements de pointeurs nuls, les accès hors limites, les comportements indéfinis et des centaines d'autres types de défauts avant le début des tests. En savoir plus sur l'analyse statique

Tests unitaires

Les fonctions, modules, classes et composants individuels sont testés de manière isolée. Les développeurs vérifient le bon fonctionnement du code avec des entrées normales, dans des conditions limites et dans des cas d'erreur. Des outils tels que VectorCAST automatisent la création et l'exécution des tests, et mesurent dans quelle mesure ceux-ci couvrent l'ensemble du code. En savoir plus sur les tests unitaires

Mesure de la couverture de code

Les indicateurs de couverture, notamment « statement », « branch » et « MC/DC », démontrent que la suite de tests exploite suffisamment le code. Dans les secteurs réglementés, l'atteinte de niveaux de couverture spécifiques est une exigence obligatoire, et non un simple objectif. En savoir plus sur la couverture de code

Traçabilité des exigences

Chaque cas de test est associé à l'exigence qu'il vérifie. La traçabilité bidirectionnelle permet de démontrer que toutes les exigences ont été testées et qu'aucun test n'est sans objet. Il s'agit là d'un élément essentiel de tout audit de sécurité.

Pourquoi la vérification ne peut pas être une réflexion après coup

Les défauts détectés lors de la vérification du code coûtent nettement moins cher à corriger que ceux découverts lors de l’intégration, des tests système ou sur le terrain. Dans le domaine des logiciels embarqués, où les coûts liés aux rappels de produits et les conséquences en matière de sécurité peuvent être très lourds, la détection précoce des erreurs grâce à une vérification systématique est essentielle tant sur le plan économique qu’éthique.

Les normes industrielles, notamment les normes ISO 26262, DO-178C, CEI 61508 et CEI 62304, imposent toutes la mise en place d’activités de vérification documentées, accompagnées de preuves traçables. Les outils de Vector sont spécialement conçus pour répondre à ces exigences.