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品質ゲートを組み合わせます。
事例紹介:航空宇宙ソフトウェア開発におけるDO-178Cの遵守とアーキテクチャ管理
業界:航空宇宙・防衛顧客プロフィール:グローバル航空宇宙請負企業(非公開)領域:飛行制御・航法システム向けアビオニクスソフトウェアチーム規模:分散拠点の100名以上のエンジニア言語:CおよびC++主要規格:DO-178C、MISRA C/C++、 JSF++ AV
課題
大手航空宇宙技術企業が次世代アビオニクス向け組み込みソフトウェアを開発していました。そのソフトウェアは、航空システムの最高保証レベルであるDO-178CレベルA安全規格に加え、厳格な社内コーディングガイドラインやMISRA C、 JSF++ AV.
高度なスキルを持つチームと厳格なV&Vプロセスにもかかわらず、次のような繰り返し発生する課題に直面していました:
- アーキテクチャの可視性不足:チームは設計レイヤリングポリシーの検証や、モジュール間の意図しない依存関係の検出に苦労していました。
- 手動コンプライアンスの負担:MISRAなどの規格のコードレビューは長時間を要し、特にレガシーモジュールでエラーが発生しやすい状況でした。
- 監査の複雑さ:DO-178Cの目的(特にA-5、A-6、A-7)のエビデンス準備には手作業が必要で、トレーサビリティも欠いていました。
- 長いソフトウェアライフサイクル:現在のプロジェクトでの変更は、少なくとも15〜20年間保守可能かつ安全でなければなりませんでした。
彼らは、アーキテクチャの一貫性を監視し、コーディング規格の遵守を確保し、認証ドキュメントを効率化する、スケーラブルで自動化されたソリューションを必要としていました。
ソリューション:CppDepend
CppDependは3つの候補ツールによる社内パイロットの後に選定されました。決定要因は次のとおりです:
- CQLinqを使用してルールをカスタマイズし、 JSF++ AVおよびMISRAの解釈に合わせる能力
- チーム横断・時系列でアーキテクチャを監視する視覚的依存関係グラフ
- 長期保守性追跡のサポート(技術的負債、コードチャーン、メトリクストレンド)
- 生産性を低下させずに適用を可能にするCI/CD統合
CppDependは、特に構造的カバレッジと設計ルール適用のために、検証・妥当性確認(V&V)戦略の中核分析エンジンとして位置づけられました。
導入
フェーズ1 – パイロット(4週間)
- 飛行安定化に使用されるレガシーアビオニクスサブシステム(約40万LOC)を分析
- 1,200件以上のルール違反を検出(多くは隠れたインクルードチェーンや意図しないレイヤー間呼び出しに起因)
- ベースラインのアーキテクチャ図とダッシュボードを作成
フェーズ2 – ポリシー定義(6週間)
- 社内アーキテクチャとJSF++ AV制約を表す約80のカスタムCQLinqルールを定義
- 安全でない型キャスト、動的メモリ使用、レイヤリング違反に対するアラートを作成
- レポートをDO-178Cドキュメント構造(SOI-2 / SOI-3)に合わせて調整
フェーズ3 – CI統合とチーム有効化(8週間)
- CppDependをJenkinsベースのCIパイプラインに統合
- すべてのビルドでコンプライアンスレポートと技術的負債メトリクスを生成
- 開発者はプルリクエスト内でコード違反に関するリアルタイムフィードバックを受け取りました
3か月後の結果
| 指標 | CppDepend導入前 | 3か月後 |
|---|
| アーキテクチャルール違反 | 1,220+ | < 150 |
| V&Vチェックリスト完了の平均時間 | 12〜14時間 | < 3時間 |
| 手動で見逃されたMISRA/JSF++の問題 | 頻繁 | ほぼゼロ |
| 構造的複雑性アラート | 85 | 21 |
| 認証トレースレポートの生成時間 | 5日以上 | < 6時間 |
成果とメリット
- DO-178Cサポート:CppDependはコーディング規格、制御フロー複雑性、アーキテクチャ構造の検証を自動化することで、目的A-5(設計)、A-6(実装)、A-7(コード規格)の達成を支援しました。
- 長期的なコードの健全性:コードチャーン、結合度、負債などのメトリクスを継続的に追跡することで、チームは認証を危険にさらすことなくリファクタリングをより適切に計画できました。
- 監査負担の軽減:CppDependが生成したレポートはSOI-2およびSOI-3ドキュメントで直接使用され、数日分の手作業が不要になりました。
- 開発速度の向上:品質ゲートにより、開発者はバックグラウンドでコンプライアンスを確保しながら機能開発に集中できました。
なぜCppDependか?
CppDependは静的解析力だけでなく、拡張性と可視化ツールでも際立っていました。すべての変更にドキュメント、トレーサビリティ、正当化が求められる安全性重視の領域で、CppDependはソフトウェアエンジニアリングワークフローに不可欠な存在となりました。
まとめ
CppDependはこの航空宇宙チームに、アーキテクチャポリシーを適用し、コード品質を時系列で追跡し、認証の負担を軽減するスケーラブルで自動化された手段を提供しました。コード解析をシフトレフトし、あらゆるステップで構造と規格を可視化することで、より安全でクリーン、かつ認証取得しやすいアビオニクスソフトウェアを構築できました。
← 航空宇宙・防衛の概要に戻る
CppDependがコードベースで何を明らかにするかをご覧ください
独自のプロジェクトで解析を実行:コーディング規格、アーキテクチャ検証、技術的負債、品質ゲート — 数分で。