Webinaire en vedette : Tests d'API améliorés par l'IA : une approche de test sans code | Voir le séminaire

Conformité des logiciels ISO 26262 dans l'industrie automobile

Analyse statique

De nombreuses tâches de qualité spécifiées dans la norme ISO 26262, notamment l'analyse des flux de données et de contrôle et l'analyse sémantique, sont prises en charge par des outils avancés modernes tels que Parasoft C/C++test. En outre, les outils d'analyse statique incluent des mesures et prennent en charge la révision du code par les pairs avec des fonctionnalités qui facilitent les tests unitaires et la détection des erreurs d'exécution.

Le rôle de l'analyse statique dans la vérification des logiciels selon la norme ISO 26262

Les méthodes de vérification telles que l'analyse statique offrent aux équipes un moyen pratique d'exposer, de prévenir et de corriger les erreurs dans les systèmes logiciels automobiles. La véritable puissance des outils d'analyse statique avancés vient de la capacité d'analyser le code, en fonction des normes de conformité du codage de l'industrie telles que MISRA C / C ++, CERT C/C++et AUTOSAR C ++ 14.

L'analyse signale les violations des règles et directives du code, ainsi que la complexité du code et les mesures de qualité. Ces données peuvent être contrôlées à la source à des fins d'historique et d'audit, mais il est tout aussi important d'utiliser un système de suivi et de gestion des défauts pour fournir des vues analytiques et une hiérarchisation significatives dans le but de résoudre les problèmes les plus risqués jusqu'aux plus faibles.

ISO 26262 Partie 6, 9.4.2:2018 - Méthodes de vérification des unités logicielles
ISO 26262 Partie 6, 9.4.2:2018
Les sections spécifiques de la norme ISO 26262, partie 6 : Développement de produits : niveau logiciel traitées par les outils d'analyse statique sont décrites ci-dessous.

Visites et inspections

Méthodes informelles utilisées pour vérifier la conception et la mise en œuvre. Les outils d'analyse statique automatisent une grande partie des aspects fastidieux de l'inspection du code, tels que la conformité aux normes de codage, tout en signalant les erreurs et les éventuelles faiblesses du logiciel.

Analyse du flux de contrôle

Une technique d'analyse de code statique permettant de déterminer le flux de contrôle d'un programme. Les outils d'analyse statique avancés modernes, tels que Parasoft C/C++test, utilisent une analyse sophistiquée du contrôle et du flux de données pour détecter les défauts complexes et les vulnérabilités de sécurité.

Analyse du flux de données

Technique de collecte d'informations sur l'ensemble possible de valeurs calculées à différents moments d'un programme informatique. L'analyse des flux de données est un aspect essentiel des outils d'analyse statique avancés qui permet de détecter des erreurs complexes telles que des vulnérabilités de données corrompues.

Analyse de code statique

Le terme général est utilisé pour décrire l'analyse de code effectuée sans exécution réelle de code. Cela inclut les termes utilisés ci-dessus.

Le rôle des outils d'analyse statique dans l'appui aux principes de conception de la norme ISO 26262 pour la conception et la mise en œuvre d'unités logicielles

Les normes de codage incarnent les meilleures pratiques acquises au fil des années d'expérience et visent à renforcer le code en évitant les mauvaises pratiques qui entraînent une qualité et une sécurité inadéquates tout en promouvant les bonnes pratiques qui créent un code plus résilient. Dans le cas des normes automobiles, elles se basent sur les meilleures pratiques ainsi que sur des conseils pour prévenir les types de défaillances logicielles qui ont été observées au fil des ans.

Les normes de codage définissent généralement un sous-ensemble d'un langage de programmation considéré comme plus sûr et plus sécurisé à utiliser. L'objectif est d'éviter les comportements imprévisibles en limitant les fonctionnalités de langage risquées qui les rendent possibles.

La seule façon pratique, objective et durable de faire respecter les normes de codage est d'utiliser des outils d'analyse de code statique, capables d'analyser automatiquement d'énormes quantités de code source à la fois. Ces outils s'intègrent dans les builds de logiciels dans un pipeline CI/CD et sont disponibles directement dans l'IDE d'un développeur. Et ils fournissent des rapports indiquant la conformité du logiciel analysé à la norme sélectionnée.

Les sections suivantes couvrent les normes industrielles importantes dans l’industrie des logiciels automobiles et la manière dont l’automatisation, les outils et les processus peuvent être exploités pour faciliter la conformité.

Différents types d'analyse de code statique

L’un des types d’analyse de code statique les plus courants est SAST ou test de sécurité des applications statiques. Ceci est également considéré comme une bonne pratique pour les tests de sécurité des applications, mais peut être appliqué ailleurs. Pour identifier toutes les classes d'erreur, il peut être nécessaire d'utiliser plusieurs normes de codage (MISRA, AUTOSAR, CERT, CWE).

En tant que tel, il est préférable de vous familiariser avec les différents types d'analyse de code statique et les erreurs qu'elles sont censées détecter.

Icône à l’intérieur d’un cercle bleu montrant une flèche blanche pointant vers le haut.

Performance

Ces tests identifient les erreurs qui réduiront les performances globales. Ils peuvent également être utilisés pour s'assurer que les développeurs restent à jour avec les meilleures pratiques actuelles.

Icône à l'intérieur d'un cercle bleu montrant un cadenas blanc.

Sécurité

L'analyse du code source lié à la sécurité est certainement un test critique. Elle détecte des risques de sécurité tels qu'une cryptographie faible, des problèmes de configuration et des erreurs d'injection de commandes spécifiques au framework.

Icône à l'intérieur d'un cercle bleu représentant un bouclier de sécurité entouré de blanc avec une coche au centre.

Fiabilité

Ces tests permettent d'éviter les problèmes de fonctionnalité. Aucun développeur ne souhaite avoir à faire face à un message d'urgence indiquant que le service ne répond pas à 4 heures du matin. Ce type d'analyse de code statique est utile pour détecter les fuites de mémoire ou les problèmes de threading.

Icône à l'intérieur d'un cercle bleu montrant un contour blanc d'une loupe.

Style

Ce type d'analyse statique encourage les équipes à adopter des styles de codage uniformes pour faciliter l'utilisation, la compréhension et la correction des bogues. Comme il identifie les violations de style, les développeurs n'ont pas à perdre de temps à les rechercher.

Quelles erreurs l'analyse de code statique peut-elle détecter ?

Chaque règle ou directive d'analyse statique aborde des problèmes différents. Certains problèmes qui affectent la fiabilité peuvent être des fuites de ressources pour C ou des exceptions de pointeur null en C++. La directive MISRA C:2023 4.12 existe pour empêcher l'utilisation de la mémoire dynamique qui peut entraîner des défaillances d'exécution hors stockage, ce qui n'est pas souhaitable.

La directive stipule : « Les identifiants « calloc », « malloc », « realloc », « aligned_alloc » et « free » ne doivent pas être utilisés et aucune macro portant l'un de ces noms ne doit être développée. »

Par conséquent, le code suivant produira une violation.

int* p1 = (int*)malloc(10); /* Violation */

libre(p1); /* Violation */

La solution recommandée consiste à préallouer un bloc de mémoire et à le gérer selon les besoins via votre équivalent défini de « malloc » et « free ». De même, en C++, la solution courante consiste à surcharger les opérateurs « new » et « delete ».

L'intention du logiciel, le langage et la plate-forme affectent tous les types d'erreurs que l'analyse de code statique peut détecter.

Écarts d'analyse de code statique

L'analyse de code statique identifie les erreurs en fonction d'ensembles de règles donnés. Cela signifie que si une ligne défie une règle, elle sera signalée. Bien entendu, comme dans la vie réelle, il existe des exceptions à ces règles selon les types de logiciels.

Dans des situations comme celles-ci, les développeurs autorisent des dérogations. Les règles peuvent s'adapter aux circonstances et autoriser des situations particulières. Une équipe peut décider si oui ou non cette dérogation est acceptable ou non. Cela est également documenté car cela enfreint les règles d'origine.

Comment choisir un outil d'analyse de code statique

La suite d'outils de Parasoft pour automatiser les tests logiciels fonctionne sur divers flux de travail et compositions d'équipe. En ce qui concerne l'analyse de code statique, cela est tout aussi vrai. Il accélère le cycle de développement, réduit les taux de défauts et assure une amélioration continue. L'identification de l'outil le mieux adapté à vos besoins commence simplement par le langage de base du code source. Solutions C et C++Parasoft fournit également solutions pour les tests Java avec Jtest ainsi que tester les langages C# et VB.NET avec dotTEST.

L'analyse de code statique peut être effectuée soit dans l'IDE (Eclipse, VS Code, Visual Studio) soit à l'aide de l'interface de ligne de commande pour les pipelines d'automatisation et d'intégration continue. Les résultats de l'analyse sont accessibles immédiatement dans l'IDE et à partir des rapports générés (HTML, PDF, XML) ainsi qu'agrégés pour un post-traitement, un reporting et des analyses ultérieurs à partir du tableau de bord de reporting et d'analyse primé Parasoft DTP.

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.