Cette page a été traduite automatiquement.
Merci de bien vouloir compléter un sondage de 1 minute concernant la qualité de cette traduction.
Workflow ISO 26262 pour les applications de conduite autonome avec MATLAB : directives et bonnes pratiques
Par Lars Rosqvist, MathWorks
L'utilisation de Simulink® et Stateflow® pour le développement de logiciels conformes à la norme ISO® 26262 est bien établi pour les calculateurs automobiles (ECU). Il existe une tendance croissante, en particulier dans les applications de conduite automatisée, à mettre en œuvre des designs software à l'aide de fonctions MATLAB® ainsi que de blocs Simulink et de diagrammes Stateflow. Cet article propose les meilleures pratiques pour utiliser un workflow centré sur MATLAB afin de vérifier la conformité aux normes logicielles ISO 26262 [1]. Ces bonnes pratiques complètent le workflow de référence ISO 26262 utilisant l’approche Model-Based Design illustré dans IEC Certification Kit.
Modèle de modélisation recommandé
Dans cet article, nous utilisons un modèle de développement logiciel dans lequel un modèle Simulink intègre un bloc fonctionnel MATLAB (Figure 1). Le modèle Simulink de couche supérieure contient tous les paramètres de configuration pour la génération de code. Le bloc MATLAB Function appelle des fonctions MATLAB externes.
Ce modèle de modélisation exploite tous les outils de vérification et de validation disponibles pour les modèles Simulink tout en permettant l'implémentation de fonctionnalités à l'aide du langage MATLAB [2]. Il exploite également des fonctionnalités étendues disponibles dans MATLAB. Par exemple, le développement ADAS est généralement mis en œuvre à l'aide de MATLAB, car des fonctionnalités mathématiques complexes peuvent être exprimées de manière concise et élégante.
Il existe d'autres façons d'utiliser MATLAB [3] dans un environnement de développement de produits critiques pour la sécurité, ce qui n'est pas mentionné dans cet article.
Workflow de référence MATLAB ISO 26262 : présentation
Comme mentionné précédemment, le workflow décrit dans cet article est basé sur le workflow de référence ISO 26262 dans le kit de certification IEC (Figure 2).
Le workflow basé sur MATLAB comprend des recommandations supplémentaires pour les activités de vérification et de validation suivantes :
- Rédaction des exigences et vérification de l'architecture
- Analyse de modèle statique
- Tests MIL et tests SIL ou PIL comparatifs
- Analyse statique de code
- Documentation
Rédaction des exigences et vérification de l'architecture
La norme ISO 26262 exige la preuve que toutes les exigences ont été mises en œuvre et testées. Dans le workflow de référence ISO 26262, les activités de vérification de l'architecture et de rédaction d'exigences mises en évidence dans la figure 3 fournissent cette preuve.
Lier les exigences au code MATLAB
À l'aide de Requirements Toolbox™, vous pouvez lier les exigences aux lignes de code dans les fonctions MATLAB de la même manière que vous liez les exigences aux blocs Simulink. La différence est que la vérification existante des exigences manquantes ne vérifie pas le code MATLAB externe. Il est recommandé d'implémenter une vérification Model Advisor qui recherche les conteneurs MATLAB non liés à une exigence. Un conteneur est généralement un fichier MATLAB externe ou une fonction MATLAB, selon la taille du fichier.
Analyse de modèle statique
Chaque composant du modèle de mise en œuvre doit être vérifié pour sa lisibilité, sa compréhensibilité et sa testabilité (Figure 4). Simulink Check™ est utilisé pour évaluer la conformité du modèle à la norme ISO 26262 et aux directives de haute intégrité de MathWorks.
Sous-ensemble de langage
La programmation dans MATLAB peut impliquer l'utilisation de fonctions de plusieurs boîtes à outils différentes. MATLAB étant un langage puissant doté d’un haut degré d’abstraction, vous pouvez développer des fonctionnalités complexes avec quelques lignes de code. Dans certains cas, une seule ligne de code MATLAB peut donner naissance à plusieurs lignes de code C, ce qui rend le code généré difficile à vérifier avec une couverture complète. Vous devez savoir que la fonctionnalité que vous implémentez est testable. La norme ISO 26262 stipule l'utilisation d'un sous-ensemble de langage (tableau 1 de la norme ISO 26262) en fonction du type de fonctions que vous utilisez.
Nous vous recommandons de suivre les étapes suivantes pour répondre aux exigences du sous-ensemble de langage :
- Évaluez les fonctions MATLAB utilisées pour vous assurer qu'aucune d'entre elles ne nécessite un effort de vérification élevé. Model Advisor peut être utilisé pour identifier l’utilisation de fonctions non recommandées en raison de la complexité du code.
- Remplacez les fonctions MATLAB non recommandées par des implémentations plus simples. Ces fonctions plus simples seront plus faciles à tracer et à tester.
Si les fonctions ne peuvent pas être remplacées, elles doivent être testées séparément.
- Vérifiez la fonction en effectuant des tests unitaires séparés avec une couverture élevée. Une fois la couverture atteinte, justifiez l’utilisation de ces fonctions en faisant référence aux tests unitaires externes.
Typage de données fort
La norme ISO 26262 exige que toutes les variables soient fortement typées. Model Advisor vérifie les modèles Simulink pour les blocs fortement typés, y compris l'interface avec le bloc MATLAB Function, mais il ne vérifie pas les fonctions MATLAB externes. Pour surmonter cet obstacle, écrivez une vérification pour vérifier que toutes les fonctions MATLAB sont fortement typées. Il est particulièrement important de vérifier le type et la dimension des données.
Tests MIL et tests SIL ou PIL comparatifs
Les tests comparatifs (d’équivalence) permettent de prouver que le code généré se comporte de la même manière que le modèle, comme le préconise la table 7 de la norme ISO 26262, intitulée Méthodes de vérification des unités logicielles. Pour le code objet, utilisez les tests de processor-in-the-loop (PIL) et pour le code C généré, utilisez le software-in-the-loop (SIL) (Figure 5). Les cas de test doivent être les mêmes que ceux utilisés dans les tests model-in-the-loop (MIL). Pour la vérification de l'unité, utilisez SIL. Pour les tests d'intégration, il est recommandé de les exécuter également sur le matériel cible afin de vérifier l'ensemble de la chaîne d'outils de développement.
Prévention des fonctionnalités non intentionnelles
Pour prouver qu'aucune fonctionnalité non intentionnelle n'a été ajoutée lors de la génération de code, mesurez la couverture des tests pendant les tests de modèle et de code. La couverture des tests est généralement réalisée à l'aide de tests consécutifs avec Simulink Coverage™. La couverture est utilisée, selon la norme ISO 26262, pour évaluer l'exhaustivité de la vérification et fournir la preuve que les objectifs des tests unitaires sont atteints.
Selon la norme ISO 26262, le code avec une couverture manquante doit être revu et justifié. Lors du développement à l'aide de blocs Simulink, les justifications peuvent être connectées au modèle, ce qui signifie que les justifications sont conservées entre les exécutions de vérification. Cette option n'est pas disponible pour les fonctions MATLAB externes. Pour justifier la couverture manquante pour une fonction MATLAB, ajoutez un filtre de couverture au code, puis connectez-le soit au harnais de test, soit au fichier de test dans Simulink Test™. Notre recommandation est de connecter le fichier de filtre de couverture au fichier de test (Figure 6).
Analyse statique de code
Comme indiqué dans la norme ISO 26262, les analyses statiques incluent des activités telles que la recherche dans le texte du code source ou dans le modèle de patterns correspondant à des défauts connus ou de conformité aux directives de modélisation ou de codage. Des analyses de code statique sont effectuées sur le code généré (Figure 7).
Conformité à la norme MISRA C
Pour évaluer la conformité à la norme MISRA® C pour le code généré à partir de MATLAB, utilisez un outil d'analyse de code statique tel que Polyspace Bug Finder™ pour détecter le code non conforme à MISRA C et étudier les résultats manuellement. Si le code non conforme provient d'une fonction MATLAB intégrée, vous avez deux options :
- Remplacer la fonction MATLAB intégrée par une fonction réécrite
- Rédiger une justification pour l’avertissement MISRA C
Notre recommandation est de remplacer la fonction, si possible. Pour vous assurer que la fonction remplacée n'est pas utilisée par d'autres développeurs, implémentez une vérification Model Advisor pour les fonctions non recommandées.
Documentation
Dans le dossier de sécurité final qui fournit la preuve de la conformité à la norme ISO 26262, vous devez documenter chaque étape du processus de vérification, des exigences à la vérification. La documentation doit inclure des descriptions du design des fonctionnalités. La figure 8 met en évidence certaines des activités qui doivent être incluses dans la description du design.
Description du design du système
Simulink Report Generator™ comprend un modèle de rapport de design système prédéfini. Ce modèle est généralement adéquat pour documenter un composant développé dans Simulink, mais pas pour documenter les fonctions MATLAB externes car elles ne sont pas incluses dans la description du design système par défaut. Nous vous recommandons donc de personnaliser le modèle pour inclure le code MATLAB externe.
Considérations relatives à la SOTIF
Dans des systèmes complexes tels que l'ADAS, une fonction peut se comporter comme prévu mais néanmoins provoquer un comportement dangereux. Conformément à la norme ISO 21448 relative à la sécurité de la fonctionnalité prévue (SOTIF), vous pouvez résoudre ce problème en intégrant des activités de vérification et de validation supplémentaires dans l’approche Model-Based Design. Nous vous recommandons d'ajouter des tests de conditions de fonctionnement randomisés pour étendre les tests et inclure des cas d'utilisation inconnus. Ces tests aléatoires doivent vérifier le comportement du modèle de mise en œuvre et du code objet intégré par rapport aux exigences du système.
Le kit de certification IEC inclut la prise en charge de SOTIF. En ce qui concerne la norme SOTIF, il n'y a pas de différences majeures entre les workflows Simulink et MATLAB. Le kit de certification IEC mis à jour comprend des informations sur l'utilisation d'Automated Driving Toolbox™ pour les tests système.
Résumé
Dans le développement de logiciels conformes à la norme ISO, les différences entre un développement entièrement basé sur Simulink et un workflow plus centré sur MATLAB ne sont pas grandes. La principale différence est la nécessité d’éviter l’utilisation de fonctions non recommandées. Il existe des contrôles spécifiques pour identifier ces fonctions MATLAB dans les contrôles ISO 26262 de Simulink Check, garantissant que l'implémentation de MATLAB génère du code adapté aux applications de haute intégrité. Les autres défis liés à l'utilisation d’un workflow centré sur MATLAB pour la norme ISO 26262 peuvent être résolus par des solutions de contournement simples telles que l'utilisation de filtres de justification ou la connexion des exigences à plusieurs niveaux du modèle.
[1] Les recommandations de cet article sont basées sur MATLAB R2024a. Si vous utilisez une autre version, contactez votre représentant MathWorks pour en savoir plus sur ses capacités d'utilisation de MATLAB et Simulink pour ISO 26262.
[2] Les développeurs choisissent parfois MATLAB plutôt que Simulink car ils pensent que Simulink ne prend pas en charge les différences et les fusions. Si vous travaillez dans Simulink, vous pouvez utiliser les outils intégrés pour gérer les différences et les fusions. Si votre équipe utilise un système de contrôle de version distribué comme Git, vous pouvez effectuer une fusion à trois en cas de conflit.
[3] Dans MATLAB R2023a, MATLAB Test™ a été publié. MATLAB Test fournit des outils pour développer, exécuter, mesurer et gérer des tests dynamiques du code MATLAB. Cela donne aux développeurs la possibilité de rester dans l'environnement MATLAB lors du développement de software à haute intégrité. MATLAB Test vous permet de répondre aux spécifications des applications réglementées et fait partie du kit de certification IEC.
Publié en 2024