Comment une approche technique de la qualité des logiciels automobiles freine les défauts

Par Alan Zeichick

22 septembre 2016

3  min lire

By Alan Zeicick (Analyste principal chez Associés de Camden) et Arthur Hicken, Chef évangéliste chez Parasoft

Les voitures sont plus complexes que jamais, ce qui signifie un potentiel exponentiel de défauts logiciels. Comme nous en avons discuté dans "Défauts de génie logiciel automobile à la hausse, «Les voitures modernes regorgent de logiciels qui relient les fonctions essentielles à la sécurité, les fonctions de divertissement et les communications avancées sur une vaste chaîne d'approvisionnement. Dans ces conditions, un seul bogue ou un morceau de code mal conçu peut avoir des conséquences importantes. Et bien qu'aucun outil ou pratique ne soit une solution miracle, il existe des principes importants pour réduire le risque associé au développement de logiciels automobiles.

Tirez parti des concepts d'ingénierie pour éviter les défauts logiciels

Le meilleur moyen d'éliminer les défauts logiciels est de créer un environnement dans lequel ils ne peuvent pas être introduits, ainsi qu'un processus permettant d'identifier et de corriger facilement les défauts introduits par un fournisseur en amont. Cet objectif est atteint en adoptant des principes de développement matériel bien établis, tels que la répétabilité, l'application des meilleures pratiques connues et le recours aux normes.

Comme nous l'avons expliqué dans «Comment tirer parti des normes de développement de logiciels automobiles pour atténuer les risques, «Assurer la sécurité fonctionnelle dans les logiciels embarqués nécessite de suivre ces principes d'ingénierie lors de la conception et du codage:

  • La sécurité fonctionnelle doit être proactive
  • Les processus doivent être contrôlés, mesurés et reproductibles
  • Les défauts doivent être évités grâce à la mise en œuvre de normes

Mettre en œuvre des normes de développement avec une politique

Qu'il s'agisse de construire une autoroute à deux voies ou de coder un système de déploiement d'airbag, les normes sont des outils d'ingénierie essentiels. Dans l'espace automobile embarqué, les normes incluent ISO 26262-6: 2011, qui couvre la sécurité fonctionnelle des logiciels automobiles, et MISRA, une famille de normes de développement C et C ++ pour les systèmes électroniques de sécurité dans les voitures.

La mise en œuvre des normes commence par l'encapsulation de la conformité aux normes dans votre politique de développement. Comme expliqué dans «Tirer parti des normes de développement automobile pour atténuer les risques, partie 2, «Les politiques sont des déclarations exécutoires prescrivant dans un langage simple comment le logiciel doit être développé et pourquoi il doit être développé de cette manière. Par exemple, une stratégie peut indiquer:

  • Le logiciel doit être développé conformément à la norme ISO 26262
  • Le code ne sera pas accepté par les sous-traitants en aval qui ne fournissent pas une traçabilité adéquate prouvant le respect de la norme

Automatiser l'application de la politique de développement

Transformer des politiques en langage clair en déclarations exécutoires nécessite des outils capables d'appliquer en permanence des techniques de qualité logicielle fondées sur les normes de l'industrie et les meilleures pratiques dans tout le SDLC. Un mécanisme de collecte, de corrélation et de hiérarchisation des résultats est également nécessaire pour la visibilité des processus susceptibles d'injecter des risques dans l'application.

Si vous avez une stratégie qui exige que toutes les variables soient initialisées et que toute la mémoire soit explicitement allouée, alors vous avez besoin d'un outil qui ne permettra tout simplement pas d'archiver du code avec des variables non initialisées ou des références à de la mémoire non allouée. Si ce code se glisse dans le base de code, une politique doit garantir que les failles seront découvertes par une analyse statique ou une détection d'erreurs d'exécution.

De plus, s'il y a une équipe ou un programmeur qui commet continuellement ce genre d'erreurs, les mesures et l'analyse des métadonnées aideront la direction à comprendre comment ces erreurs se produisent, s'assurent qu'elles sont corrigées et offriront des conseils sur la façon d'améliorer la formation pour rendre ces erreurs moins probables. .

Imaginez ce scénario se déroulant à travers des centaines et des milliers de règles couvrant les meilleures pratiques pour le développement de logiciels embarqués. Si l'engagement est pris d'adhérer à ces normes, les outils peuvent garantir que le travail est effectué correctement.

Tester pour valider, pas pour déboguer

Les tests doivent être efficaces, déterministes et doivent être effectués pour des problèmes de mémoire complexes. Les tests doivent également avoir lieu tout au long du SDLC afin que les tests d'acceptation valident que l'application (ou l'ensemble des systèmes embarqués, comme une voiture complexe) répond à ses exigences fonctionnelles et de qualité et est prête à être publiée.

Malheureusement, de nombreuses organisations s'appuient sur des tests d'acceptation à un stade avancé pour déboguer leurs applications, ce qui augmente le coût et les risques du logiciel. L'objectif des tests est de vérifier que le code répond aux normes internes, réglementaires et industrielles, et non d'identifier les bogues. Les tests doivent réussir et les résultats doivent être documentés pour référence future (et pour satisfaire les régulateurs et les exigences de certification).

Nous ne pouvons pas être complaisants et pensons que la meilleure façon d'améliorer la qualité des logiciels automobiles embarqués est d'exécuter davantage de tests sur un produit final ou presque final. Nous devons concevoir et coder le logiciel correctement, la première fois, en utilisant une approche d'ingénierie avec des politiques visant à tirer parti et à appliquer les normes et les meilleures pratiques de l'industrie. C'est ainsi que nous relevons le défi de la qualité des logiciels automobiles.

« 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.

Par Alan Zeichick

Alan Zeichick est analyste principal chez Camden Associates; auparavant, Alan était rédacteur en chef du SD Times de BZ Media. Suivez-le @zeichick.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.