Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté

Au cours de la dernière décennie, le logiciel embarqué est passé de quelques centaines de milliers de lignes à plus de 100 millions dans un véhicule typique. Le passage aux processeurs 32 bits et à la mémoire abondante a débloqué des fonctionnalités sans précédent, mais a aussi amplifié le risque de bogues subtils qui menacent la sûreté et la sécurité.

Pour garder une longueur d'avance, les développeurs doivent adopter une approche systématique qui empêche les erreurs avant qu'elles n'entrent dans la base de code. Deux catégories principales d'erreurs méritent une attention particulière :

La mise en œuvre d'une norme de codage rigoureuse, telle que MISRA C/C++, couplée à des tests pilotés par les exigences, offre une puissante « once de prévention ». Cette stratégie réduit le temps de débogage, resserre les délais et protège finalement votre retour sur investissement.

Pourquoi la prévention est importante

Les erreurs humaines sont inévitables – les ingénieurs se précipitent, négligent des détails ou interprètent mal des flux de données complexes. Mais lorsque le logiciel grandit en taille et en interconnectivité, ces simples dérapages peuvent se transformer en défaillances critiques. Une norme de codage disciplinée aide à détecter et éliminer nombre de ces pièges avant qu'ils n'apparaissent.

Dans l'écosystème C/C++, environ 80 % des défauts proviennent de l'utilisation incorrecte de seulement 20 % du langage. En interdisant ou en limitant les constructions problématiques, une norme améliore considérablement la qualité du code.

Considérez le comportement indéfini qui survient lorsqu'un entier signé est décalé vers la droite. Selon le compilateur, le résultat peut différer, entraînant un comportement incohérent du programme. De même, une fonction qui lit un tampon circulaire peut retourner des valeurs dans un ordre inattendu sur certains compilateurs. Ces nuances sont illustrées dans les figures ci-dessous.

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 1. Comportement dépendant du compilateur dans les constructions C/C++. Source : LDRA

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 2. Comportement non spécifié dans un exemple de tampon circulaire. Source : LDRA

Tirer parti de MISRA C/C++

MISRA, publié pour la première fois en 1998 pour l'industrie automobile, reste la référence pour le codage C/C++ embarqué. Il spécifie :

En 2016, MISRA s'est étendu pour adresser le code critique pour la sécurité, ajoutant 14 nouvelles directives. Par exemple, la directive 4.14 interdit explicitement les constructions pouvant mener à un comportement indéfini, renforçant ainsi la posture de sécurité.

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 3. Directives MISRA sur le comportement indéfini et non spécifié. Source : LDRA

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 4. Rôle de la directive 4.14 dans la prévention du comportement indéfini. Source : LDRA

Du code à l'application : le rôle des exigences et des tests

Même un code parfait peut échouer s'il ne remplit pas son objectif. La traçabilité des exigences et les tests unitaires sont essentiels pour vérifier que le logiciel se comporte comme conçu.

La traçabilité bidirectionnelle relie chaque fonction à son exigence de bas niveau et remonte aux objectifs au niveau système. Cette correspondance révèle tôt les fonctionnalités manquantes ou superflues.

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 5. Traçabilité bidirectionnelle de la fonction à l'exigence système. Source : LDRA

Une fois les exigences de bas niveau définies, les cas de test émergent naturellement. L'exécution de ces tests – idéalement avec des outils de test unitaire automatisés – confirme que le code remplit son contrat.

Maîtriser le code embarqué : habitudes éprouvées pour réduire les erreurs et renforcer la sûreté
Figure 9. Résultats de tests unitaires automatisés. Source : LDRA

Adopter de nouvelles habitudes de codage

Le développement embarqué moderne exige une approche holistique :

Ces pratiques livrent un code plus propre, plus maintenable, simplifient l'ajout de fonctionnalités et réduisent les coûts de maintenance à long terme – des avantages qui résonnent dans les domaines critiques pour la sûreté comme dans les autres.

Adopter ces habitudes n'est pas optionnel si vous visez un avantage concurrentiel. La différence entre une base de code qui nécessite une lutte constante contre les incendies et une qui évolue en douceur tient souvent à un processus discipliné.

Article original provenant de EDN.

Embarqué

  1. Chaînes de caractères : une vulnérabilité cachée dans les logiciels embarqués
  2. SOAFEE : une architecture cloud-native pour plateformes automobiles logicielles
  3. Pixus lance des faceplates 6U OpenVPX robustes avec intégrité structurelle renforcée
  4. GE Digital dévoile un logiciel de gestion prédictive d'actifs, faisant passer la maintenance du réactif au proactif
  5. Maîtriser la formation GMAO : Engager les équipes et booster la rétention
  6. Sécuriser l'open source dans l'IoT : atténuer les risques logiciels
  7. Trois étapes éprouvées pour sécuriser votre chaîne d'approvisionnement logicielle
  8. Saelig dévoile l'Impact-D 100AL : PC embarqué puissant, compact, durée de vie 15 ans et E/S riches
  9. Exploiter le DevOps pour surmonter les défis du logiciel embarqué