Vérification tout au long du cycle de vie du développement

Des outils Vector à chaque étape, de l'analyse statique à la certification

Les équipes de développement de logiciels embarqués travaillant selon les normes ISO 26262, DO-178C, CEI 61508 et CEI 62304 procèdent à des vérifications à chaque étape du développement. Le raisonnement économique est simple : les défauts détectés lors de l’analyse statique ne coûtent qu’une fraction de ceux détectés lors de l’intégration, et ces derniers ne coûtent qu’une fraction de ceux détectés en conditions réelles d’exploitation. L’analyse statique, les tests unitaires, les tests d’intégration, la mesure de couverture et les enregistrements de traçabilité interviennent chacun à une étape spécifique. Au moment où un projet arrive en phase d’audit, les preuves doivent déjà exister.

La vérification commence à la source

C'est avant le début des tests que la détection d'un défaut s'avère la plus rentable. L'analyse statique du code examine le code source sans l'exécuter, ce qui permet de détecter les violations des normes de codage, les erreurs de type, les déréférencements de pointeurs nuls et les failles de sécurité dès la rédaction du code. Intégrée au pipeline de compilation, elle fournit aux développeurs un retour d'information immédiat et empêche les défauts de s'accumuler tout au long du projet.

Tests unitaires : vérifier chaque composant

Une fois le code écrit, les tests unitaires permettent de vérifier que chaque fonction, module, classe ou composant se comporte correctement de manière isolée. Chaque cas de test est rédigé en fonction d’une exigence spécifique, exécuté automatiquement et évalué en termes de couverture structurelle, ce qui établit la traçabilité bidirectionnelle requise par les normes de sécurité.

VectorCAST automatise la création et la gestion des environnements de tests unitaires pour les langages C, C++ et Ada, prend en charge l’exécution aussi bien sur l’hôte que sur la cible, et génère les données de couverture ainsi que les enregistrements de traçabilité exigés par les normes de sécurité.

Tests d'intégration : vérification des interfaces

Une fois les unités individuelles vérifiées, les tests d'intégration permettent de s'assurer que les interfaces entre celles-ci fonctionnent correctement. C'est à ce stade que les hypothèses relatives aux limites des modules sont vérifiées, que le couplage entre les composants est mis à l'épreuve et que le comportement au niveau du système commence à se dessiner. La mesure de la couverture se poursuit à ce stade, souvent à l'aide de VectorCAST/QA pour instrumenter le logiciel intégré indépendamment du compilateur.

Couverture, traçabilité et preuves

Les outils Vector mesurent la couverture structurelle selon les niveaux prescrits par chaque norme, depuis la couverture des instructions et des branches aux niveaux d’intégrité les plus bas jusqu’aux indicateurs MC/DC pour les niveaux ASIL D et DO-178C niveau A. Chaque résultat de test est associé à l’exigence qu’il valide, et chaque rapport de couverture est généré dans le format utilisé par les autorités de certification pour leur examen.

Vérification continue

La vérification continue signifie que chaque commit est contrôlé, et pas seulement les builds signalés pour révision. PC-lint Plus effectue une analyse statique au moment même où le code est écrit. VectorCAST réexécute les tests concernés par chaque modification plutôt que de lancer la suite complète à chaque fois. Squore surveille l'effet cumulatif de ces exécutions, en appliquant des critères de qualité et en mettant en évidence les tendances avant qu'elles ne deviennent des risques pour la mise en production.

Des outils conçus pour cet environnement

Les outils de vérification de Vector sont conçus pour le développement de systèmes embarqués critiques pour la sécurité. Ils sont certifiés conformes aux normes qu’ils prennent en charge, s’intègrent à pratiquement tous les environnements de compilation et d’intégration continue, et génèrent des rapports dans les formats exigés par les auditeurs.