CppDepend
Gouvernement & secteur public — Étude de cas

Étude de cas : améliorer la maintenabilité et l’auditabilité des logiciels du secteur public avec CppDepend

L’agence exploitait plusieurs grandes plateformes logicielles sur mesure utilisées pour la logistique critique, le suivi de la chaîne d’approvisionnement et la coordination des interventions d’urgence. Les systèmes avaient évolué pendant…

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 : améliorer la maintenabilité et l’auditabilité des logiciels du secteur public avec CppDepend

Secteur : Gouvernement & secteur publicProfil client : agence gouvernementale nationale responsable de la logistique de défense et des systèmes d’infrastructureDomaine : plateformes logicielles internes pour la logistique, les achats et la gestion d’incidentsTaille de l’équipe : plus de 80 ingénieurs et sous-traitants répartis entre départements et prestatairesLangages : C++, C# et C pour les systèmes legacyPriorités clés : maintenabilité, support long terme, traçabilité, conformité aux audits, architecture modulaireNormes applicables : CERT C++, NIST SP 800-218 (SSDF), MISRA C (pour les systèmes de défense embarqués)

Le défi

L’agence exploitait plusieurs grandes plateformes logicielles sur mesure utilisées pour la logistique critique, le suivi de la chaîne d’approvisionnement et la coordination des interventions d’urgence. Les systèmes avaient évolué sur plus de 15 ans et mélangeaient services modernes et composants legacy fortement couplés.

Problèmes fondamentaux :

  • Codebase vieillissante : une grande partie du logiciel, en particulier dans les modules logistiques et de sécurité, était développée en C/C++ et avait accumulé une dette architecturale.
  • Incohérence des prestataires : différents sous-traitants contribuaient du code avec des normes variables, rendant l’application des politiques de codage internes quasi impossible.
  • Lacunes d’audit et de traçabilité : la conformité aux politiques internes et aux normes externes (NIST, FedRAMP) exigeait une traçabilité au niveau du code qui n’existait pas.
  • Risque de maintenabilité : les nouveaux développeurs passaient des semaines à comprendre les interdépendances des modules, et des régressions involontaires étaient fréquentes lors des mises à jour.
  • Pression sécuritaire : les systèmes publics exposés aux réseaux exigeaient le respect de pratiques de codage sécurisé comme CERT C++ — mais les violations n’étaient pas signalées automatiquement.

La solution : CppDepend

CppDepend a été choisi pour fournir une vue unifiée de la qualité du code, de la modularité et de la conformité aux règles sur l’ensemble du portefeuille logiciel. Il a aidé l’agence à :

  • Appliquer des règles de codage sécurisé alignées sur les directives CERT et NIST
  • Créer un référentiel qualité partagé pour les équipes internes et les sous-traitants
  • Analyser les systèmes legacy pour identifier les points chauds de dette technique et les priorités de refactoring
  • Générer la documentation d’audit et les rapports d’architecture requis lors des évaluations externes
  • Améliorer la maintenabilité en visualisant la structure et en appliquant les frontières de conception

La capacité de CppDepend à analyser du code legacy comme moderne, à définir des règles personnalisées et à supporter un déploiement hors ligne ou air-gapped en faisait la solution idéale pour les systèmes sensibles de l’agence.

Stratégie de mise en œuvre

Phase 1 – Audit des systèmes legacy (semaines 1–3)

  • Trois plateformes critiques analysées, totalisant ~2,1 millions de lignes
  • Identifié :
  • 1 700+ violations CERT
  • 80+ dépendances circulaires entre modules
  • 12 sous-systèmes avec une complexité cyclomatique au-delà des seuils acceptables

Phase 2 – Personnalisation des règles & alignement des prestataires (semaines 4–6)

  • Création d’un référentiel de règles en CQLinq basé sur :
  • Politiques de codage internes
  • Bonnes pratiques CERT C++ et MISRA C
  • Attentes de conception modulaire (ex. : pas de logique d’accès aux données dans la couche UI)
  • Templates CppDepend distribués aux prestataires tiers pour intégration dans leurs propres workflows

Phase 3 – Préparation aux audits & suivi du cycle de vie (semaines 7–10)

  • CppDepend utilisé pour générer diagrammes d’architecture et rapports de tendances pour les équipes conformité
  • Vues diff et historique activées pour montrer l’évolution du code sur des cycles de développement pluriannuels
  • Intégré dans les pipelines Azure DevOps utilisés pour les builds internes comme ceux soumis par les prestataires

Résultats après 10 semaines

MétriqueAvant CppDependAprès 10 semaines
Violations des règles CERT1,700+< 250
Violations d’architecture (critiques)80+11
Durée du cycle de revue sécurité6–8 jours2–3 jours
Préparation de la documentation d’audit4–5 jours< 1 jour
Temps d’intégration des nouveaux développeurs6 semaines3,5 semaines

Résultats & bénéfices

  • Meilleure collaboration avec les prestataires : une mesure standardisée et objective de la qualité du code a amélioré la transparence et la responsabilisation des sous-traitants.
  • Posture de sécurité améliorée : l’application des règles CERT et la visibilité sur les dépendances ont aidé à réduire les motifs exploitables et à durcir les systèmes exposés au réseau.
  • Audits plus rapides : les évaluateurs externes recevaient des rapports précis sur la structure, la qualité et les risques — renforçant la confiance et réduisant la charge de revue.
  • Modernisation durable : les équipes ont pu planifier et prioriser le refactoring avec des données réelles, plus par intuition.

Pourquoi CppDepend ?

CppDepend a permis à l’agence de gérer la complexité logicielle comme un actif stratégique. Avec un overhead minimal à l’exécution, elle a fourni une vision automatisée de la qualité de conception, de l’alignement sécuritaire et de la performance des sous-traitants — essentiel pour la pérennité à long terme des logiciels d’infrastructure nationale.

Sa capacité à s’adapter à de multiples équipes, à fonctionner hors ligne et à s’intégrer dans des environnements CI sécurisés le rendait unique pour les systèmes gouvernementaux.

Conclusion

En adoptant CppDepend, cette agence gouvernementale a repris le contrôle de systèmes legacy tentaculaires et posé les fondations de logiciels publics plus sûrs et plus maintenables. La plateforme est devenue un outil vital pour gérer les contributions des prestataires, suivre les risques et livrer des logiciels résilients au service d’opérations critiques.

← Retour à la présentation Gouvernement & secteur public

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.