Obtenez les dernières informations de mise à jour critique pour la vulnérabilité Log4j. Découvrez comment résoudre le problème avec les conseils de Parasoft. En savoir plus >>

X
BLOG

Décomposition des directives de codage AUTOSAR C ++ 14 pour AUTOSAR adaptatif

Décomposition des directives de codage AUTOSAR C ++ 14 pour AUTOSAR adaptatif Temps de lecture : 8 minutes

Les directives AUTOSAR C ++ 14 sont une mise à jour pour MISRA C ++ 2008, fournissant des directives de codage pour le C ++ moderne tel que défini par ISO / CEI 14882: 2014.

AUTOSAR adaptatif

L'industrie automobile a subi des changements radicaux au cours de la dernière décennie. Les nouvelles fonctionnalités qui ont été introduites dans les voitures modernes les ont fondamentalement transformées en centres de calcul. Cela se reflète dans le développement des plates-formes utilisées pour la construction du logiciel automobile, en particulier AUTOSAR. L'approche «classique» qui supposait une configuration statique au moment de la compilation, aucune allocation de mémoire dynamique et la prédominance du langage C n'est plus suffisante. Les nouvelles fonctionnalités nécessitent beaucoup de code avancé, tel que:

  • Conduite automatisée
  • Communication V2X (communication véhicule à véhicule et véhicule à infrastructure)
  • Mises à jour en continu en direct
  • Multimédia haute définition
  • Informatique IA, reconnaissance d'image

Ces nouvelles fonctionnalités nécessitent également des changements de paradigmes suffisants pour l'approche classique. Pour relever ces défis et améliorer le développement automobile, le consortium AUTOSAR, qui comprend la plupart des principaux constructeurs automobiles au monde, a publié la nouvelle édition de la norme AUTOSAR en mars 2017, appelée Adaptive AUTOSAR.

La publication de la nouvelle norme n'invalide pas la plate-forme classique, elle restera toujours le choix principal pour les unités de contrôle sans besoin de connectivité, avec des exigences matérielles limitées et des fonctionnalités en temps réel difficiles.

Adaptive AUTOSAR définit une plate-forme pour le développement d'unités de contrôle automobile qui fournissent des fonctions sophistiquées telles que des systèmes avancés d'aide à la conduite, la diffusion multimédia en continu ou des mises à jour logicielles via Internet. La plate-forme contient la spécification des interfaces qui définissent les services et les API. Certaines des nouveautés introduites dans Adaptive AUTOSAR sont:

  • Approche orientée objet
  • Langage de programmation C ++
  • Architecture orientée services
  • Système d'exploitation POSIX
  • Modifications de la configuration de l'ECU pendant l'exécution du système
  • Déploiement et mises à jour en direct

C ne suffit pas

Adaptive AUTOSAR était une réponse à la complexité croissante des exigences des voitures modernes et aux nouveaux défis que le paradigme du «monde connecté» imposait aux systèmes automobiles. Le langage C, qui était autrefois le choix principal des développeurs automobiles, est devenu un bloqueur, ou du moins le ralentissement. La complexité des systèmes a forcé le passage du langage C au C ++, qui offre un meilleur support pour structurer les grands systèmes distribués, et fournit de meilleurs mécanismes pour l'encapsulation des données.

Adaptive AUTOSAR repose sur le standard de langage C ++ 14. Le choix de la version standard de la langue a été une sélection entre «pas trop vieux» et «pas trop nouveau». D'une part, nous avons C ++ 98 et C ++ 03 qui sont encore largement utilisés dans l'industrie automobile, mais ils sont obsolètes et ne correspondent pas aux modèles de développement modernes. Par contre, nous avons le C ++ 17, standard qui est encore très récent. L'argument pour laisser derrière le C ++ 98 et le C ++ 03 était:

  • Évolution / améliorations substantielles du langage C ++
  • Disponibilité de meilleurs compilateurs
  • Disponibilité de meilleurs outils de test et d'analyse

L'une des principales raisons de ne pas opter pour C ++ 17 était que les nouvelles fonctionnalités introduites dans la norme peuvent entraîner des risques de sécurité pour les systèmes - la détection et la compréhension des vulnérabilités de sécurité nécessitent un certain temps. En outre, les compilateurs C ++ conformes à la norme C ++ 17 sont encore très récents et nécessitent plus de tests et une meilleure prise en charge pour une utilisation dans le développement critique pour la sécurité. Ainsi, le choix a été fait de s'appuyer sur la norme C ++ 14 comme une option intermédiaire raisonnable.

Qu'en est-il des directives de codage AUTOSAR?

La sortie de la plate-forme adaptative AUTOSAR a augmenté l'adoption du C ++ moderne dans les projets automobiles. Cela a rendu un problème spécifique beaucoup plus visible: alors que l'évolution du langage C ++ s'est accélérée ces dernières années, les normes de codage automobile semblaient prendre du retard. Au moment de la sortie de C ++ 11 et C ++ 14, la norme de codage automobile la plus populaire pour C ++, MISRA C ++ 2008, était déjà sérieusement obsolète et ne concernait que la version C ++ 03 du langage.

Avec chaque année, le problème grandissait et devenait de plus en plus lancinant. Les développeurs ont largement accepté les nouvelles fonctionnalités des dernières normes C ++ et ont commencé à les utiliser sans conseils appropriés ni bonnes pratiques. Cette situation était particulièrement problématique pour les équipes développant des systèmes critiques pour la sécurité qui sont requis par la norme ISO 26262 pour utiliser l'analyse statique avec un sous-ensemble approprié de directives de codage.

Pour résoudre ce problème, le consortium AUTOSAR a publié la documentation dédiée aux directives dans le cadre de la plate-forme adaptative AUTOSAR, intitulée «Directives pour l'utilisation du langage C ++ 14 dans les systèmes critiques et liés à la sécurité». S'appuyer sur MISRA C ++ 2008 non modifié serait simplement une infraction. La situation est illustrée par la chronologie ci-dessous:

1998 - La norme C ++ 98 est publiée

2003 - La norme C ++ 03 est publiée

2008 - MISRA C ++ 2008 (couvre C ++ 03)

2011 - La norme C ++ 11 est publiée

2014 - La norme C ++ 14 est publiée

2017 - AUTOSAR C ++ 14 (mars)

2017 - Sortie de la norme C ++ 17 (décembre)

Directives de codage AUTOSAR C ++ 14

Le document de directives AUTOSAR C ++ 14 est censé être une mise à jour pour MISRA C ++ 2008 et fournit des directives de codage pour le C ++ moderne tel que défini par ISO / CEI 14882: 2014. La principale application de cette norme de codage est l'industrie automobile, mais elle peut être utilisée dans d'autres industries où une programmation intégrée est requise.

La norme spécifie 342 règles:

  • 154 règles sont adoptées à partir de MISRA C ++ 2008 sans modifications (67%)
  • 131 règles sont basées sur les normes C ++ existantes
  • 57 règles sont basées sur la recherche ou d'autres documents ou ressources

La norme est bien documentée et offre une traçabilité aux autres normes C ++ existantes, telles que HIC ++ 4.0, JSF, SEI CERT C ++, C ++ Core Guidelines, et bien sûr à MISRA C ++ 2008.

AUTOSAR C ++ 14 suit l'approche de classification des règles de MISRA C ++ 2008. Les règles sont classées selon le niveau d'obligation:

  • Règles requises: obligatoire pour revendiquer la conformité à la norme
  • Consultatif règles: recommandé mais sans statut obligatoire

De plus, les règles sont également classées si elles sont appliquées automatiquement par des outils d'analyse statique:

  • Automatique: peut être entièrement pris en charge par des outils d'analyse statique
  • Partiellement automatisé: peut être pris en charge par des outils d'analyse statique mais peut nécessiter des pratiques supplémentaires telles que la révision du code
  • Non automatisé: ne peut pas être pris en charge avec les outils d'analyse statique.

Et enfin, les règles sont classées par objectif d'allocation: implémentation, vérification, toolchain et infrastructure. Les règles de la norme AUTOSAR C ++ 14 sont balisées avec les informations sur la classification, par exemple:

Comment sélectionner le bon outil pour la conformité AUTOSAR C ++ à la prise en charge de la norme ISO 26262

Comment devenir conforme?

En 2016, le consortium MISRA a publié un document intitulé «MISRA Compliance: 2016 Achieving compliance with MISRA Coding Guidelines». Ce document a été très bien accueilli dans l'industrie, car il répondait à un besoin très important de définir le processus de mise en conformité, en précisant ce que signifie exactement être conforme.

AUTOSAR C ++ 14 ne fournit aucune directive similaire sur le processus de mise en conformité, du moins pas directement. Mais étant donné que les directives AUTOSAR C ++ sont basées sur MISRA C ++ 2008, il est raisonnable de se référer à la norme MISRA pour rechercher des conseils sur le processus de mise en conformité.

  • Produire une matrice de conformité qui indique comment chaque règle est appliquée
  • Produire une procédure de déviation
  • Formaliser les pratiques de travail au sein du système de management de la qualité

Remplir ces exigences signifie quelques formalités administratives supplémentaires. La première chose à faire est une définition de la matrice de conformité, qui est en fait une déclaration sur la façon dont nous allons appliquer chaque ligne directrice. Voir l'exemple ci-dessous:

La situation souhaitée est d'avoir un outil d'analyse statique qui couvre autant de lignes directrices que possible. Les règles qui ne peuvent pas être appliquées avec l'analyse statique nécessiteront très probablement des révisions manuelles, qui sont coûteuses.

En plus de la matrice de conformité, une procédure de gestion des écarts doit être établie. La procédure de dérogation formalise les étapes à suivre lorsque le développement doit s'écarter d'une directive spécifique. Comme le prescrit MISRA, on s'attend à ce que

«… La procédure sera basée sur l'obtention d'une approbation pour chaque écart ou classe d'écart.»

- MISRA

C'est une pièce très importante du puzzle - elle empêche d'abuser du concept de déviation par les développeurs qui dévient à volonté. En effet, nous aurons besoin d'une sorte de tickets formels stockés dans notre système qui documentent chaque écart dans le code source. Il en va de même pour la matrice de conformité et toutes les configurations et descriptions de processus supplémentaires créées pour assurer la conformité. MISRA C ++ 2008 est ici très clair et nécessite une «formalisation au sein du système qualité».

Enfin, si toutes les procédures décrites dans MISRA C ++ 2008 point 4.3 sont en place, nous pouvons revendiquer la conformité en démontrant ce qui suit:

  • Une matrice de conformité a été complétée qui montre comment la conformité a été appliquée
  • Tout le code C ++ du produit est conforme aux règles du document MISRA C ++ 2008 ou sujet à des écarts documentés
  • Une liste de toutes les instances des règles non suivies est maintenue et pour chaque instance il y a une déviation convenablement validée

Le document «MISRA Compliance: 2016» met à jour les orientations données dans MISRA C ++ 2008 pour l'établissement du processus de conformité. Certaines équipes peuvent préférer l'utiliser comme base pour le processus de conformité AUTOSAR C ++ 14, car il est plus récent et plus détaillé. Tout comme avec MISRA C ++ 2008, «MISRA Compliance: 2016» nécessite un processus formel de traitement des écarts et vous devez documenter les méthodes d'application pour chaque directive applicable. Ce document s'appelle le plan d'application des lignes directrices (GEP).

«MISRA Compliance: 2016» étend les exigences pour le processus de conformité et introduit de nouveaux concepts, comme le plan de recatégorisation des lignes directrices (GRP), qui documente de manière formelle toutes les modifications apportées aux catégories de règles, et le résumé de conformité aux lignes directrices (GCS ), qui est essentiellement un artefact final du processus de conformité qui présente le niveau de conformité atteint pour chaque ligne directrice.

«MISRA Compliance: 2016» utilise également des catégorisations de règles qui ont été introduites dans MISRA C 2012 et qui sont différentes de celles des normes MISRA C ++ 2008 et AUTOSAR C ++ 14. Ces différences ne semblent cependant pas fondamentales et l'adoption de «MISRA Compliance: 2016» comme base pour AUTOSAR C ++ 14 est certainement une option.

Prise en charge d'AUTOSAR C ++ 14 dans le test Parasoft C / C ++

Le seul moyen pratique de faire respecter une norme de codage comme AUTOSAR C ++ 14 est d'utiliser un outil d'analyse statique, comme Parasoft C / C ++test , un outil de qualité du code prenant en charge plusieurs technologies de test. Le test Parasoft C / C ++ prend en charge AUTOSAR C ++ mieux que tout autre outil de qualité de code. Les règles AUTOSAR C ++ 14 font partie du pack de conformité automobile de Parasoft, qui étend les fonctionnalités du test Parasoft C / C ++ pour les développeurs automobiles en particulier. En plus des règles d'analyse statique spécifiques à l'industrie telles que AUTOSAR C ++ 14, HIC ++ ou MISRA, le pack de conformité automobile de Parasoft apporte un système de reporting interactif sophistiqué qui est personnalisé selon les exigences imposées par AUTOSAR, HIC ++ et MISRA, et permet un flux de travail quotidien efficace pour l'équipe.

Le test Parasoft C / C ++ permet aux développeurs de vérifier la conformité de leur code sans quitter leurs IDE, et intègre le processus d'analyse dans le CI construit sur les serveurs. Avec le système de reporting spécifique à l'automobile de Parasoft, les membres de l'équipe peuvent surveiller en permanence leur processus de conformité en toute simplicité.

Lors du nettoyage des bases de code existantes, les équipes bénéficient de la possibilité de créer des politiques de conformité qui définissent ce qui garantit la cohérence de la pratique de test. Dans de tels cas, il est recommandé de commencer par le sous-ensemble des règles de la norme et d'augmenter progressivement le nombre de règles actives au fur et à mesure que le nettoyage du code progresse. Cette couche de rapport vous permet de surveiller en permanence la progression de votre base de code, de contrôler le processus de déviation et de prendre des décisions éclairées sur l'extension de l'ensemble de règles.

Essayez le test Parasoft C / C ++: une solution de test de développement unifiée C et C ++ pour les projets logiciels embarqués et critiques pour la sécurité.
Voir la Démo du Produit

Où allons-nous à partir d'ici?

L'industrie automobile évolue de manière dynamique. Parmi de nombreux autres changements, nous assistons à la transformation de la voiture en une expérience qui s'apparente davantage à l'utilisation d'un smartphone. Le concept d'achat d'une fonctionnalité spécifique d'une voiture sous la forme d'une application est une réalité. Longue route pour les vacances? Pourquoi ne pas acheter un régulateur de vitesse pendant 2 semaines?

Pour faire face à ces défis et potentiellement réduire le temps de développement, l'industrie automobile a besoin d'une innovation constante dans le domaine des plates-formes matérielles et logicielles utilisées dans les voitures modernes. Ces innovations doivent être soutenues par des normes appropriées, à différents niveaux, qui garantissent la sécurité fonctionnelle, la qualité et la sécurité. AUTOSAR C ++ 14 contribue certainement à ce processus.

Mais les normes elles-mêmes ne sont qu'un morceau de papier (si nous les imprimons) et leur mise en œuvre n'est tout simplement pas possible sans des outils qui automatisent les pratiques et les processus et permettent aux équipes de développement de logiciels automobiles de se concentrer sur la fourniture de fonctionnalités meilleures et plus avancées. Parasoft C / C ++test est la solution la plus complète pour le développement C / C ++ critique pour la sécurité, avec plus de prise en charge des normes de codage automobile (AUTOSAR C ++, CERT C / C ++, MISRA) que tout autre fournisseur d'outils, et un système de reporting dynamique, flexible et utile qui permet toute votre équipe pour réussir dans la conformité.

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

Écrit par

Mirosław Zielinski

Chef de produit pour les solutions de test embarquées de Parasoft, les spécialités de Miroslaw comprennent le C / C ++, les RTOS, l'analyse de code statique, les tests unitaires, la gestion de la qualité des logiciels pour les applications critiques pour la sécurité et la conformité des logiciels aux normes de sécurité.

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