CppDepend
Aéronautique & Défense — Étude de cas

Étude de cas : application de la DO-178C et contrôle d’architecture dans le développement de logiciels aérospatiaux

Un leader des technologies aérospatiales développait un logiciel embarqué pour l’avionique de nouvelle génération. Le logiciel devait être conforme aux normes de sécurité DO-178C de niveau A — le plus haut niveau d’assurance…

Quelles normes CppDepend prend-il en charge nativement ? Les ensembles de règles intégrés couvrent MISRA C/MISRA C++, CWE, CERT C/CERT C++ et AUTOSAR C++14 — et aucune autre norme. Pour toute autre norme mentionnée sur cette page (ISO 26262, DO-178C, IEC 62304, IEC 61508, JSF++ AV, NIST SSDF, ASPICE…), la conformité est assurée par des règles CQLinq personnalisées rédigées pour votre projet, plus la validation d’architecture et les quality gates CI.

Étude de cas : application de la DO-178C et contrôle d’architecture dans le développement de logiciels aérospatiaux

Secteur : Aéronautique & DéfenseProfil client : équipementier aérospatial mondial (non divulgué)Domaine : logiciel avionique pour systèmes de contrôle de vol et de navigationTaille de l’équipe : plus de 100 ingénieurs répartis sur plusieurs sitesLangages : C et C++Normes clés : DO-178C, MISRA C/C++, JSF++ AV

Le défi

Un leader des technologies aérospatiales développait un logiciel embarqué pour l’avionique de nouvelle génération. Le logiciel devait être conforme aux normes de sécurité DO-178C de niveau A — le plus haut niveau d’assurance pour les systèmes embarqués aéronautiques — ainsi qu’à des directives de codage internes strictes et à des normes industrielles comme MISRA C et JSF++ AV.

Malgré une équipe hautement qualifiée et un processus de V&V rigoureux, ils faisaient face aux défis récurrents suivants :

  • Manque de visibilité architecturale : les équipes peinaient à valider les politiques de structuration en couches et à détecter les dépendances involontaires entre modules.
  • Charge de conformité manuelle : les revues de code pour des normes comme MISRA étaient longues et sujettes aux erreurs, en particulier dans les modules legacy.
  • Complexité des audits : la préparation des preuves pour les objectifs DO-178C (en particulier A-5, A-6, A-7) exigeait un travail manuel et manquait de traçabilité.
  • Cycle de vie logiciel long : les modifications apportées aux projets actuels devaient rester maintenables et sûres pendant au moins 15 à 20 ans.

Ils avaient besoin d’une solution évolutive et automatisée pour surveiller la cohérence architecturale, garantir le respect des normes de codage et rationaliser la documentation de certification.

La solution : CppDepend

CppDepend a été retenu après un pilote interne avec trois outils candidats. Les facteurs décisifs furent :

  • La capacité à personnaliser les règles avec CQLinq pour refléter JSF++ les interprétations AV et MISRA
  • Des graphes de dépendances visuels pour surveiller l’architecture entre équipes et dans le temps
  • Suivi de la maintenabilité à long terme (dette technique, churn du code, tendances des métriques)
  • Une intégration CI/CD permettant l’application des règles sans ralentir la productivité

CppDepend a été positionné comme le moteur d’analyse central de leur stratégie de vérification et validation (V&V), en particulier pour la couverture structurelle et l’application des règles de conception.

Mise en œuvre

Phase 1 – Pilote (4 semaines)

  • Analyse d’un sous-système avionique legacy (~400 k lignes) utilisé pour la stabilisation en vol
  • Détection de plus de 1 200 violations de règles (dont beaucoup dues à des chaînes d’inclusions cachées et à des appels inter-couches involontaires)
  • Création de diagrammes d’architecture de référence et de tableaux de bord

Phase 2 – Définition des politiques (6 semaines)

  • Définition d’environ 80 règles CQLinq personnalisées représentant l’architecture interne et les contraintes JSF++ AV
  • Création d’alertes pour les transtypages dangereux, l’utilisation de mémoire dynamique et les violations de couches
  • Adaptation des rapports à la structure documentaire DO-178C (SOI-2 / SOI-3)

Phase 3 – Intégration CI & montée en compétence des équipes (8 semaines)

  • CppDepend intégré dans le pipeline CI basé sur Jenkins
  • Tous les builds généraient des rapports de conformité et des métriques de dette technique
  • Les développeurs recevaient un retour en temps réel sur les violations de code dans les pull requests

Résultats après 3 mois

MétriqueAvant CppDependAprès 3 mois
Violations des règles d’architecture1,220+< 150
Temps moyen de complétion de la checklist V&V12–14 heures< 3 heures
Problèmes MISRA/JSF++ manqués en manuelCourantQuasi nul
Alertes de complexité structurelle8521
Temps de génération des rapports de traçabilité pour la certification5+ jours< 6 heures

Résultats & bénéfices

  • Support DO-178C : CppDepend a aidé à atteindre les objectifs A-5 (conception), A-6 (implémentation) et A-7 (normes de codage) en automatisant la vérification des normes de codage, de la complexité du flux de contrôle et de la structure architecturale.
  • Santé du code à long terme : en suivant en continu des métriques comme le churn, le couplage et la dette, l’équipe a pu mieux planifier les refactorings sans compromettre la certification.
  • Charge d’audit réduite : les rapports générés par CppDepend ont été utilisés directement dans la documentation SOI-2 et SOI-3, éliminant des jours de travail manuel.
  • Vélocité de développement améliorée : grâce aux quality gates, les développeurs pouvaient se concentrer sur les fonctionnalités pendant que la conformité était assurée en arrière-plan.

Pourquoi CppDepend ?

CppDepend s’est distingué non seulement par sa puissance d’analyse statique, mais aussi par son extensibilité et ses outils de visualisation. Dans un domaine critique où chaque modification exige documentation, traçabilité et justification, CppDepend est devenu partie intégrante du workflow d’ingénierie logicielle.

Conclusion

CppDepend a offert à cette équipe aérospatiale un moyen évolutif et automatisé d’appliquer les politiques d’architecture, de suivre la qualité du code dans le temps et de réduire la charge de certification. En décalant l’analyse de code vers l’amont — et en rendant la structure et les normes visibles à chaque étape — ils ont pu construire un logiciel avionique plus sûr, plus propre et plus facilement certifiable.

← Retour à la présentation Aéronautique & Défense

Découvrez ce que CppDepend révèle dans votre codebase

Lancez l’analyse sur vos propres projets : standards de codage, validation d’architecture, dette technique et quality gates — en quelques minutes.