CppDepend
政府・公共部門 — 事例紹介

事例紹介:CppDependによる公共部門ソフトウェアの保守性と監査可能性の向上

同機関は、ミッションクリティカルな物流、サプライチェーン追跡、緊急対応調整に使用される複数の大規模カスタムソフトウェアプラットフォームを運用していました。これらのシステムは…

CppDependが標準でサポートする規格は? 組み込みルールセットの対象 MISRA C/MISRA C++, CWE, CERT C/CERT C++ および AUTOSAR C++14 — 他の規格は対象外です。このページで言及されているその他の規格(ISO 26262、DO-178C、IEC 62304、IEC 61508、JSF++ AV、NIST SSDF、ASPICE…)への準拠は、次によって実施されます カスタムCQLinqルール プロジェクト用に作成され、さらにアーキテクチャ検証とCI品質ゲートを組み合わせます。

事例紹介:CppDependによる公共部門ソフトウェアの保守性と監査可能性の向上

業界:政府・公共部門顧客プロフィール:防衛物流およびインフラシステムを担当する国家政府機関領域:物流、調達、インシデント管理を支援する社内ソフトウェアプラットフォームチーム規模:さまざまな部門やベンダーで働く80名以上のエンジニアおよび請負業者言語:レガシーシステム向けC++、C#、C主な優先事項:保守性、長期サポート、トレーサビリティ、監査コンプライアンス、モジュラーアーキテクチャ適用規格:CERT C++、 NIST SP 800-218 (SSDF)、MISRA C(組み込み防衛システム向け)

課題

同機関は、ミッションクリティカルな物流、サプライチェーン追跡、緊急対応調整に使用される複数の大規模カスタムソフトウェアプラットフォームを運用していました。これらのシステムは15年以上にわたり進化しており、モダンなサービスと密結合したレガシーコンポーネントが混在していました。

中核となる問題:

  • 老朽化したコードベース:特に物流およびセキュリティモジュールのソフトウェアの多くはC/C++で開発され、アーキテクチャの負債が蓄積していました。
  • ベンダーの不整合:さまざまな請負業者が異なる標準でコードを提供し、社内コーディングポリシーの適用がほぼ不可能でした。
  • 監査とトレーサビリティのギャップ:社内ポリシーおよび外部標準(NIST、FedRAMPなど)への準拠には、利用できないコードレベルのトレーサビリティが必要でした。
  • 保守性リスク:新しい開発者はモジュール間の相互依存関係の理解に数週間を費やし、更新時に意図しないリグレッションが頻発していました。
  • セキュリティの圧力:ネットワークに公開される公共システムはCERT C++のようなセキュアコーディングプラクティスへの準拠を要求しましたが、違反は自動的にフラグ付けされていませんでした。

ソリューション:CppDepend

CppDependは、ソフトウェアポートフォリオ全体でコード品質、モジュール性、ルール準拠の統一されたビューを提供するために選ばれました。機関を次のように支援しました:

  • CERTおよびNISTガイドラインに沿ったセキュアコーディングルールを適用
  • 社内チームと請負業者チームのための共通コード品質フレームワークを作成
  • レガシーシステムを分析し、技術的負債のホットスポットとリファクタリングの優先順位を特定
  • 外部評価時に必要な監査ドキュメントとアーキテクチャレポートを生成
  • 構造の可視化と設計境界の適用による保守性の向上

レガシーコードとモダンコードの両方を解析し、カスタムルールを定義し、オフラインまたはエアギャップ環境へのデプロイをサポートするCppDependの能力は、機関の機密システムに理想的でした。

導入戦略

フェーズ1 – レガシーシステム監査(1〜3週目)

  • 合計約210万LOCの3つのミッションクリティカルなプラットフォームを分析
  • 特定:
  • 1,700件以上のCERT違反
  • モジュール間の80以上の循環依存
  • 許容閾値を超える循環的複雑度を持つ12のサブシステム

フェーズ2 – ルールのカスタマイズとベンダー整合(4〜6週目)

  • 次に基づくCQLinqのルールブックを作成:
  • 社内コーディングポリシー
  • CERT C++およびMISRA Cのベストプラクティス
  • モジュラー設計の期待(例:UIレイヤーにデータアクセスロジックを置かない)
  • サードパーティベンダーにCppDependテンプレートを配布し、各自のワークフローに統合

フェーズ3 – 監査準備とライフサイクル追跡(7〜10週目)

  • CppDependを使用してコンプライアンスチーム向けのアーキテクチャ図とトレンドレポートを生成
  • 差分および履歴ビューを有効化し、複数年の開発サイクルでのコードの進化を表示
  • 社内およびベンダー提出ビルドの両方に使用されるAzure DevOpsパイプラインに統合

10週間後の結果

指標CppDepend導入前10週間後
CERTルール違反1,700+< 250
アーキテクチャ違反(重大)80+11
セキュリティレビューのサイクル時間6〜8日2〜3日
監査用ドキュメント準備4〜5日< 1日
新規開発者のオンボーディング時間6週間3.5週間

成果とメリット

  • ベンダーとのコラボレーション改善:コード品質を測定する標準化された客観的な方法により、請負業者との透明性と説明責任が向上しました。
  • セキュリティ体制の改善:CERTルールの適用と依存関係の洞察により、悪用可能なパターンが減少し、ネットワークにさらされるシステムが強化されました。
  • より迅速な監査:外部レビュアーは構造、品質、リスクに関する正確なレポートを受け取り、信頼性が高まりレビューの負担が軽減されました。
  • 持続可能な近代化:チームは推測ではなく実データでリファクタリングを計画・優先順位付けできるようになりました。

なぜCppDependか?

CppDependにより、機関はソフトウェアの複雑さを戦略的資産として管理できるようになりました。最小限のランタイムオーバーヘッドで、設計品質、セキュリティ整合、請負業者のパフォーマンスに関する自動化された洞察を提供し、国家インフラソフトウェアの長期的な持続可能性に不可欠です。

複数チームへのスケール、オフライン動作、セキュアなCI環境への統合能力により、政府システムに独自に適していました。

まとめ

CppDependを採用することで、この政府機関は蔓延するレガシーシステムの制御を取り戻し、より安全で保守しやすい公共部門ソフトウェアの基盤を築きました。このプラットフォームは、ベンダーの貢献管理、リスク追跡、ミッションクリティカルな運用を支える回復力のあるソフトウェア提供のための重要なツールとなりました。

← 政府・公共部門の概要に戻る

CppDependがコードベースで何を明らかにするかをご覧ください

独自のプロジェクトで解析を実行:コーディング規格、アーキテクチャ検証、技術的負債、品質ゲート — 数分で。