Éviter les bugs logiciels potentiels avec MISRA C:2025
trait de séparation
Temps de lecture: 5 minutes
Qu'ils soient causés par accident ou par une erreur, les bugs sont un élément essentiel du développement logiciel pour systèmes embarqués. Et lorsque ces systèmes doivent être sûrs, sécurisés et fiables (par exemple, dans les secteurs de l'aérospatiale, de l'automobile, de la défense, de l'énergie, de l'industrie et de la médecine), les développeurs ont besoin d'outils pour s'assurer d'avoir couvert tous les aspects avant le déploiement du logiciel.
Le Shifting Left (voir Figure 1) est un principe fondamental de DevSecOps et des méthodologies de développement telles que l'intégration continue et le déploiement continu (CI/CD). Il suffit d'un instant pour coder un bug par erreur, mais sa découverte peut prendre des mois. Plus tôt les bugs sont identifiés (Shifting Left), moins leur identification et leur résolution sont coûteuses.
On peut dire que la meilleure façon de gérer les bugs est de ne pas les mettre dans votre code dès le départ.

Figure 1 : Détecter les bugs plus tôt dans le cycle de développement atténue les risques et conduit souvent à une résolution moins coûteuse. (Source)
Sécurité fonctionnelle tout au long du processus de développement
La plupart des tests logiciels sont dynamiques, c'est-à-dire qu'ils sont effectués pendant l'exécution du logiciel. L'analyse statique intervient en amont, lors de l'écriture du code. Elle permet d'identifier un certain nombre de bugs potentiels simplement grâce à la manière dont le code est écrit. Le langage C n'est pas imparfait. Il repose plutôt sur une philosophie de confiance envers le programmeur, alors que les développeurs peuvent être tentés de prendre des raccourcis qui constituent également des pratiques de codage risquées. Par exemple, une mauvaise utilisation des pointeurs peut entraîner des erreurs de mémoire susceptibles de provoquer des pannes système intermittentes. S'assurer que le code du programme respecte certaines règles lors de l'utilisation des pointeurs permet d'éviter les erreurs courantes et faciles à commettre.
Compte tenu de l'importance de la sécurité fonctionnelle, de nombreuses normes industrielles, telles que la norme ISO 26262, exigent des développeurs qu'ils utilisent l'analyse statique pour vérifier la fiabilité des logiciels. La norme MISRA C est une ligne directrice pour l'analyse statique, mentionnée dans de nombreuses normes et utilisée dans le monde entier.
Depuis plus de 25 ans, la norme MISRA C contribue à promouvoir la sûreté, la sécurité et la fiabilité des systèmes embarqués à forte intensité logicielle. Chaque directive (qu'il s'agisse de directives ou de règles) a été conçue pour aider les développeurs à éviter d'introduire des erreurs dans leur code. Après tout, vous n'avez pas à payer pour corriger un bug s'il n'est jamais détecté.
La norme MISRA C:2023 constitue une mise à jour majeure de la norme MISRA C:2012. Elle introduit des règles et directives spécifiques pour gérer les fonctionnalités multithreading et les types atomiques. Elle regroupe également les mises à jour précédentes en une norme unique et complète afin de faciliter la conformité.
La dernière mise à jour, MISRA C:2025, simplifie encore davantage le processus de développement de code robuste pour les systèmes critiques grâce à des modifications de politique substantielles, des améliorations et de nouvelles directives. MISRA C:2025 pose également les bases de la prise en charge de tous les ajouts à la norme C24 (également appelée C23), la dernière version de la norme C publiée en octobre 2024.
Compte tenu de l'importance de la sécurité fonctionnelle, de nombreuses normes industrielles, telles que la norme ISO 26262, exigent des développeurs qu'ils utilisent l'analyse statique pour vérifier la fiabilité des logiciels. La norme MISRA C est une ligne directrice pour l'analyse statique, mentionnée dans de nombreuses normes et utilisée dans le monde entier.
Depuis plus de 25 ans, la norme MISRA C contribue à promouvoir la sûreté, la sécurité et la fiabilité des systèmes embarqués à forte intensité logicielle. Chaque directive (qu'il s'agisse de directives ou de règles) a été conçue pour aider les développeurs à éviter d'introduire des erreurs dans leur code. Après tout, vous n'avez pas à payer pour corriger un bug s'il n'est jamais détecté.
La norme MISRA C:2023 constitue une mise à jour majeure de la norme MISRA C:2012. Elle introduit des règles et directives spécifiques pour gérer les fonctionnalités multithreading et les types atomiques. Elle regroupe également les mises à jour précédentes en une norme unique et complète afin de faciliter la conformité.
La dernière mise à jour, MISRA C:2025, simplifie encore davantage le processus de développement de code robuste pour les systèmes critiques grâce à des modifications de politique substantielles, des améliorations et de nouvelles directives. MISRA C:2025 pose également les bases de la prise en charge de tous les ajouts à la norme C24 (également appelée C23), la dernière version de la norme C publiée en octobre 2024.
Vérification continue
Plutôt que d'attendre une phase de test ultérieure pour vérifier le logiciel, l'intégration de fonctionnalités d'analyse statique comme MISRA C à l'environnement de développement peut aider les développeurs à éviter de nombreux pièges de codage dès le début du processus de conception. De plus, l'intégration de MISRA C tout au long du cycle de conception permet une CI/CD plus robuste grâce à la vérification continue, améliorant ainsi la clarté du code, facilitant des tests plus complets et simplifiant la maintenabilité à long terme. Après tout, avec l'ajout constant de nouveau code aux systèmes, la nécessité d'éviter l'introduction de nouveaux bugs est toujours présente.
Pour les systèmes complexes et les équipes de développement géographiquement dispersées, l'automatisation de l'analyse statique est essentielle. Quel que soit leur niveau d'expertise, les développeurs peuvent commettre des erreurs. L'analyse statique est un moyen simple et efficace d'aider les équipes de développement en détectant les bugs qu'elles auraient pu manquer.
Résultat : une mise sur le marché plus rapide avec un code de meilleure qualité, tout en améliorant la sécurité et la fiabilité du système.
Pour les systèmes complexes et les équipes de développement géographiquement dispersées, l'automatisation de l'analyse statique est essentielle. Quel que soit leur niveau d'expertise, les développeurs peuvent commettre des erreurs. L'analyse statique est un moyen simple et efficace d'aider les équipes de développement en détectant les bugs qu'elles auraient pu manquer.
Résultat : une mise sur le marché plus rapide avec un code de meilleure qualité, tout en améliorant la sécurité et la fiabilité du système.