Rejoignez notre webinaire du 19 septembre : Tests d'API améliorés par l'IA : une approche sans code pour les tests | Inscrivez-vous

Un guide pratique pour accélérer la conformité MISRA C 2023 avec l'automatisation des tests

Introduction

Les défis liés à la création d’applications logicielles embarquées continuent de croître. Les demandes d'intégration de compétences en matière de connectivité réseau, d'intelligence artificielle (IA) et d'autres améliorations de performances ont accru la complexité du code et, par conséquent, accru le risque de vulnérabilités et de risques pour la sécurité. Pour aider à atténuer ces défis, de nombreuses organisations se tournent vers les directives de codage de la Motor Industry Software Reliability Association (MISRA).

Lignes directrices MISRA C 2023 pour l'utilisation du langage C dans les systèmes critiques est une définition d'un sous-ensemble du langage C conçu pour minimiser les erreurs potentielles, les vulnérabilités de sécurité et les erreurs qui provoquent une défaillance du programme ou des erreurs graves. Bien qu'initialement créées pour les systèmes automobiles, ces lignes directrices ont été adoptées par de nombreuses autres industries pour des applications critiques en matière de sécurité. Dans tous les cas, la détermination de la conformité, de plus en plus requise dans les relations fournisseur/client, peut s'avérer complexe et prendre du temps si elle n'est pas automatisée.

Il existe de nombreux outils sur le marché qui signalent des erreurs indiquant quand le code enfreint une directive. Cependant, peu d’outils simplifient le processus de reporting et de documentation requis pour démontrer la conformité – sans parler de la mise en œuvre des directives dans votre processus de développement logiciel !

Testez les solutions de vérification et de validation comme celles de Parasoft atteindre la conformité MISRA plus rapide et à moindre coût. La solution rationalise l'ensemble du processus d'obtention, de documentation et de maintien de la conformité MISRA tout au long du cycle de vie du produit. Il rationalise également d'autres méthodes de tests automatisés telles que l'unité, la régression, l'intégration, le système, la couverture du code structurel, etc.

Code hérité et existant

La réutilisation du code est une réalité pour chaque projet. Cependant, la réutilisation du code existant dans un projet logiciel critique pour la sécurité et atteindre la conformité totale à la MISRA C 2023 est une tâche ardue.

Les principes originaux de MISRA ont été créés pour être appliqués lors du développement du code. Même la norme elle-même fournit un avertissement.

« …un projet qui vérifie la conformité à MISRA C à la fin de son cycle est susceptible de passer un temps considérable à recoder, réexaminer et re-tester. On s’attend donc à ce que le processus de développement logiciel nécessite l’application précoce des principes MISRA C. »

Étant donné que de nombreuses organisations doivent réutiliser leurs anciennes bases de code pour des raisons commerciales, le Conformité MISRA : 2020 Un document d’orientation a été créé en réponse à ces défis. Il y a une distinction claire entre le nouveau code natif développé dans le cadre d'un projet en cours et le code adopté développé en dehors du cadre du projet. Plongeons dans une approche pratique du code existant et de la conformité MISRA C.

Nuances de gris

Bien qu'il semble simple de comprendre à quel type de code vous avez affaire, la situation dans de nombreux cas n'est pas noire ou blanche. Par exemple, un prototype initial développé sans suivre les directives MISRA est produit, puis la direction se rend compte que la conformité est une exigence pour le marché visé.

En règle générale, la base de code existante n’a jamais été développée en tenant compte des directives de codage. Par conséquent, une base de code ne peut pas être automatiquement classée comme code adopté si des mises à jour sont nécessaires dans le cadre d’un nouveau projet ajoutant à la complexité de la situation.

Trop souvent, les analyses initiales d'une base de code volumineuse via un outil d'analyse statique avec toutes les règles MISRA C 2023 activées, y compris les dernières modifications de la norme, produisent des dizaines de milliers de violations. Après le choc initial, les équipes commencent à trouver des moyens créatifs de remédier aux violations. Il est important que les équipes de développement ne se laissent pas décourager. Il y a de la lumière au bout du tunnel.

Au fil du temps, nous avons collecté et identifié les meilleures pratiques et approches que les équipes de développement ont utilisées pour rendre le code conforme sans interférer avec la vitesse de développement en cours. Dans cet article, nous partageons quelques approches pratiques et équilibrées pour rendre les bases de code existantes conformes à MISRA.

Suivez les directives du cadre de conformité MISRA : 2020

MISRA C 2023 est un ensemble de directives de codage pour le langage de programmation C. L'objectif de la norme est d'augmenter la sécurité des logiciels en empêchant de manière préventive les programmeurs de commettre des erreurs de codage pouvant entraîner des échecs d'exécution et d'éventuels problèmes de sécurité en évitant les constructions de problèmes connus dans le langage C. Cependant, MISRA continue de publier des modifications à ses dernières directives de codage MISRA C 2023 afin d'atténuer le risque croissant de vulnérabilités de codage de cybersécurité.

Au fil des années, de nombreux développeurs de systèmes embarqués se plaignaient – ​​et se plaignent toujours – du fait que MISRA C était une norme trop stricte et que le coût d'écriture d'un code entièrement conforme était difficile à justifier.

En réalité, étant donné que MISRA C est appliqué dans des logiciels critiques pour la sûreté et la sécurité, la valeur de l'application de la norme à un projet dépend de facteurs tels que les suivants.

  • Risque de dysfonctionnement du système en raison d'une panne logicielle.
  • Risque d'exploitation du système en raison d'une vulnérabilité logicielle.
  • Coût d'une défaillance du système pour l'entreprise.
  • Outils de développement et plateforme cible.
  • Niveau d'expertise du développeur.

 

Graphique montrant une panne du système d’alerte rouge sur un écran d’ordinateur.

 

Les programmeurs doivent trouver un terrain d'entente pratique qui satisfait à l'esprit de la norme tout en revendiquant la conformité MISRA sans gaspiller d'efforts sur des activités sans valeur ajoutée. Dans le document MISRA Compliance: 2020, le Consortium MISRA fournit la réponse dont la communauté avait besoin, avec un cadre raisonnablement bien défini de ce que signifie réellement l'expression « conforme à MISRA ».

Pour revendiquer la conformité MISRA, il est nécessaire d'établir :

  • Utilisation d'un processus de développement logiciel discipliné.
  • Quelles sont exactement les lignes directrices qui sont appliquées.
  • L'efficacité des méthodes d'exécution.
  • L’étendue de tout écart par rapport aux lignes directrices.
  • L'état de tous les composants logiciels développés en dehors du projet.

Preuve de conformité : l'objectif final

Un problème clé auquel sont confrontés les développeurs de logiciels critiques pour la sécurité est de savoir comment démontrer et prouver la conformité à la fin du projet. Il existe une tendance à ajouter plus d'informations dans les rapports que nécessaire. Cela peut devenir une question controversée, entraînant une perte de temps et d'efforts si les critères d'évaluation sont basés sur les opinions subjectives des différentes parties prenantes.

Une approche recommandée pour améliorer l’évaluation de l’état de préparation à la conformité consiste à utiliser les modèles existants à la fois pour le rapport final de conformité et de qualification des outils. Si les informations ne sont pas requises par la norme, évitez de les ajouter. La combinaison d’informations supplémentaires n’est pas seulement une perte de temps, mais présente également un risque de retarder le processus d’audit. Avoir la documentation générée automatiquement, comme le fait Parasoft, est la solution ultime.

Le document MISRA Compliance : 2020 aide également les organisations à utiliser un langage commun articulant les exigences de conformité en définissant les artefacts suivants.

  • Résumé de la conformité aux lignes directrices
  • Plan d’application des lignes directrices
  • Rapport d'écarts
  • Plan de recatégorisation des lignes directrices

Les captures d'écran suivantes montrent des rapports générés automatiquement avec des liens vers d'autres enregistrements et/ou une expansion des informations sur la page.

Rapport de conformité du centre de formation MISRA Le résumé du rapport de conformité aux directives de Parasoft est le principal enregistrement de la conformité globale du projet.

 

Plan d'application des lignes directrices du MISRA Learning Center Le plan d'application des lignes directrices de Parasoft montre comment chaque directive MISRA est vérifiée.

 

Rapport d'écart du centre d'apprentissage MISRA Le rapport de déviation de Parasoft documente tous les permis de déviation approuvés.

 

Plan de recatégorisation des lignes directrices du MISRA Learning Center Le plan de recatégorisation des lignes directrices de Parasoft indique comment les lignes directrices doivent être appliquées dans le cadre de la relation partie prenante/fournisseur.

Commencez par établir les objectifs finaux

Travailler avec les parties prenantes et établir le plan de recatégorisation des lignes directrices (GRP) au début du projet. Il est possible qu'il y ait plusieurs GRP.

Icône d'une étoile blanche à l'intérieur d'un cercle bleu

Un GRP pour le nouveau code en cours d'écriture pendant la durée de vie du projet afin de garantir un haut niveau de qualité du code.

Icône d'une étoile blanche à l'intérieur d'un cercle bleu

Un autre GPR pour l’utilisation du code existant qui contient un ensemble d’attentes différent car il a peut-être fait ses preuves sur le terrain depuis de nombreuses années.

Tenez également compte des éléments suivants.

  1. Pour chaque changement incrémentiel, existe-t-il une visibilité sur le nombre d’éléments de travail restants pour parvenir à une conformité totale ? Cela permet de planifier le travail en conséquence et de définir les bonnes attentes avec la direction.
  2. Les modèles de rapport de synthèse de conformité aux lignes directrices (GPS) ont-ils été examinés avec l'acquéreur au début du projet ? Étaient-ils acceptables et complets ?

Il existe des modèles pour ces documents que les fournisseurs d'outils d'analyse statique commerciaux, y compris Parasoft, fournissent pour aider les organisations à satisfaire au cadre de conformité MISRA 2020.

Adoptez une approche progressive : diviser pour régner

L'analyse initiale du code existant par un outil d'analyse statique a tendance à produire des milliers de violations, en particulier lors de l'utilisation d'un ensemble de règles par défaut. Il n'est pas pratique d'arrêter les nouveaux efforts de développement pour se concentrer sur la résolution de toutes ces violations identifiées. En fait, nous avons vu des cas où des régressions ont été introduites lorsque des modifications importantes ont été apportées à la base de code pour corriger les violations de l'analyse statique. Par conséquent, il est important d'établir un flux de travail pour corriger les violations au fil du temps sans perturber le processus de développement ni dégrader la qualité du logiciel.

Voici les principales recommandations pour utiliser les outils d’analyse statique pour la première fois dans un projet.

Baselining

Après l'analyse initiale du code, marquez toutes les violations initiales comme « à traiter plus tard » et définissez-les comme référence. À partir de ce moment-là, lors de la mise à jour du code existant et/ou du développement d’un nouveau code, maintenez une politique « aucune nouvelle violation autorisée ». Cette politique peut être appliquée par l'outil d'analyse statique, en appliquant un processus de révision de code ou un outil d'intégration continue (CI) comme GitHub, GitLab, Azure DevOps, Jenkins ou autres. Lorsque les développeurs disposent de quelques heures ou jours, ils peuvent résoudre les violations restantes marquées à partir de la ligne de base.

Les organisations peuvent prioriser cette approche en fonction des éléments suivants.

Icône d'une clé et d'un engrenage à l'intérieur d'un cercle bleu

Code actuel en cours de développement

Icône de recherche montrant une loupe à l'intérieur d'un cercle bleu

Résultats de la révision du code

Icône du graphique des axes et des y à l'intérieur d'un cercle bleu

S'appuyer sur des mesures, comme la gravité, pour suggérer la prochaine violation à résoudre

Ligne dans le sable

Le développement fixe une date – la ligne dans le sable. Après cette date, toutes les violations doivent être corrigées pour chaque unité de traduction (fichier source individuel) modifiée. Toutes les unités de traduction non modifiées relèvent automatiquement de la véritable définition de code adoptée dans le document de conformité MISRA.

Priorisation basée sur la gravité

Le développeur corrige toutes les constatations obligatoires pour le module qui lui est attribué. Au fil du temps, ils traitent toutes les violations requises lorsque le temps le permet, en fonction d'une priorité sélectionnée par le chef d'équipe. Parasoft utilise l'IA et l'apprentissage automatique pour apprendre de ce processus de priorisation et peut s'approprier cette tâche en fonction du comportement historique du monde réel.

Pour chacune des approches décrites ci-dessus, il est important que les responsables techniques et la direction surveillent en permanence l'avancement et l'état de conformité du projet via un tableau de bord centralisé. Par exemple, le centre de reporting de Parasoft fournit le tableau de bord d'état de conformité préconfiguré suivant.

Centre d'apprentissage MISRA Parasoft PAO Parasoft DTP – Tableau de bord de conformité des rapports et des analyses

Compétence et formation du personnel

Aujourd'hui, les équipes de développement utilisent les normes de codage comme méthode pour définir, gérer et utiliser un groupe de pratiques de codage, l'objectif principal étant la cohérence et la garantie d'une base de référence pour la qualité du code. L’objectif principal d’une règle de codage est de limiter l’utilisation du langage afin d’empêcher le développeur de faire des choses « fausses » et potentiellement dangereuses. Les développeurs peuvent éviter de nombreux défauts des logiciels en adoptant des restrictions judicieuses en matière d'utilisation du langage. Cela se traduit par une uniformité de style, ce qui est précieux en tant que discipline dans les projets logiciels.

L'aspect polyvalence du Langages C++ et C permet aux développeurs d'écrire du code qui peut être involontairement incorrect et éventuellement dangereux. Il lui est facile d'écrire du code qui respecte les exigences du standard du langage, mais cela peut néanmoins entraîner des comportements indésirables et des plantages de programmes. Il s'agit, par exemple, du code qui accède à la mémoire au-delà des paramètres d'un processus arithmétique ou d'un tableau qui entraîne des violations de mémoire ou de limites.

Il est évidemment important d'identifier ces problèmes potentiels. Mais l’objectif du MISRA est de prévenir les problèmes, pas seulement de les identifier. Un compilateur peut en détecter, mais utiliser un outil d’analyse dédié est plus efficace.

La norme MISRA souligne que le respect des règles de codage n’est qu’un élément du développement réussi d’un logiciel. Les développeurs doivent intégrer chaque projet de programmation dans un environnement d'ingénierie discipliné qui comprend des flux de travail de développement méthodiques et appliquer des outils de validation éprouvés en cours d'utilisation.

L'expertise et la formation du personnel de développement sont des facteurs clés souvent négligés par les éditeurs de logiciels et fréquemment identifiés par les auditeurs comme le problème numéro un lors de l'évaluation de l'état de préparation d'un produit.

Photo montrant une longue table de travail avec de jeunes professionnels collaborant et tapant sur des ordinateurs portables. Selon les directives de la MISRA, la compétence du personnel est un élément important de la conformité de la MISRA. Il est préférable d'organiser une formation au début du projet et d'enregistrer une date de formation avec tous les développeurs signant qu'ils ont reçu la formation. À la fin du projet, l'équipe de développement devrait être en mesure de prouver ce qui suit.

  • Le personnel qui approuve les écarts comprend et a été formé pour reconnaître les risques associés à la violation.
  • Le personnel a été formé pour configurer et utiliser correctement les outils d'analyse statique et de développement avant leur utilisation.

En pratique, la formation d’une équipe expérimentée est relativement courte. Quelques jours investis au début du projet évitent des semaines de retouche, des problèmes de qualité en cours de route et des délais de projet manqués.

Qualification des outils

Un élément moins évident de la conformité MISRA, souvent laissé jusqu'à la fin du projet, est la qualification des outils de développement utilisés dans le produit et la preuve qu'ils sont adaptés à l'usage prévu selon la norme de sécurité pertinente. Si un outil nécessite une qualification, quel niveau de validation doit être effectué ?

La qualification des outils doit commencer par la sélection des outils, en garantissant que vous utilisez un outil de développement certifié par une organisation telle que le TÜV SÜD. Cela réduira considérablement les efforts en matière de qualification des outils.

Certificat du centre d'apprentissage MISRA
Test Parasoft C/C++ Certificat TÜV SÜD

Parasoft C / C ++test est certifié par TÜV SÜD pour la sécurité fonctionnelle conformément aux normes CEI 61508, ISO 26262 et CEI 62304 pour les applications cibles basées sur hôte et intégrées, ouvrant la voie à une qualification rationalisée de l'analyse statique, des tests unitaires et des exigences de couverture pour la sécurité. normes critiques.

Bien que dans de nombreux cas, la qualification des outils soit requise, la méthode utilisée pour effectuer la qualification des outils varie en fonction du risque associé au dysfonctionnement de l'outil et du niveau de criticité du logiciel. Parasoft fournit un kit de qualification et des certifications pour des normes de sécurité spécifiques et leurs exigences.

En l’absence de ce kit efficace, les équipes logicielles doivent prendre en compte les coûts de qualification des outils lors de l’évaluation des outils commerciaux, gratuits et open source. Certaines normes comme DO-178C fournissent des indications raisonnables sur les exigences de qualification des outils. Quelle que soit la méthode utilisée, l’objectif du processus de qualification de l’outil est d’affirmer que « l’outil est valide pour l’usage prévu » et de fournir une preuve et une justification de la manière dont l’équipe est parvenue à cette conclusion.

 

Réduisez l’effort manuel de qualification des outils

Traditionnellement, la qualification des outils impliquait une quantité importante de travail manuel, de tests et de documentation des outils de développement pour satisfaire à un audit de certification. Mais ce processus lourd en documentation nécessite une interprétation et une réalisation manuelles. En tant que tel, cela prend du temps et est sujet aux erreurs humaines.

Un moyen judicieux de réduire la charge de travail consiste à automatiser le processus avec des kits de qualification. Les kits de qualification guident l'utilisateur à travers un flux de travail intuitif pour réduire considérablement la quantité d'effort requis.

Par exemple, voici les avantages de l'utilisation des kits de qualification Parasoft.

Icône d'une flèche vers le bas

Réduisez automatiquement le champ de qualification aux seules parties de l’outil utilisé.

Icône de cercle avec flèche représentant l’automatisation.

Automatisez autant que possible les tests requis pour la qualification.

Icône de recherche montrant une loupe à l'intérieur d'un cercle bleu

Gérez tous les tests manuels avec autant d'éloquence que possible et intégrez les résultats aux tests automatisés.

Icône de deux documents à l'intérieur d'un cercle bleu

Générez automatiquement une documentation prête pour l'audit qui rend compte exactement de ce qui est qualifié, ni plus ni moins !

Résumé

Il n’existe pas de solution miracle permettant d’atteindre facilement la conformité MISRA dans les projets critiques pour la sécurité. Cependant, en introduisant le cadre MISRA Compliance 2020 et en utilisant une approche pratique et progressive avec un point final clairement défini à l'esprit, les équipes de développement de logiciels peuvent atteindre la conformité sans perturber de manière significative leur processus de développement. En fin de compte, il reste encore beaucoup de travail à accomplir pour assurer la conformité, mais l'automatisation contribue grandement à réduire les processus manuels fastidieux.

« MISRA », « MISRA C » et le logo triangulaire sont des marques déposées de The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Tous droits réservés.

Bannière bleu foncé avec l'image d'un homme parlant à une femme tenant une tablette à la main dans une salle de serveurs.
Image d'un homme et d'une femme avec une tablette à la main en train de discuter dans une salle de serveurs.

Améliorez vos tests logiciels avec les solutions Parasoft.