Skip to main content

MISRA準拠の自動化で安全性重視のC/C++ソフトウェアを開発

コメント
このブログは「Building Safety-Critical C and C++ Software With Automated MISRA Compliance」を翻訳・一部加筆したものです。

安全性が求められる開発環境では、あいまいで未定義の動作を招いたり、エラーを起こしやすい言語機能を使う余地はありません。

自動車、産業オートメーション、医療の分野では、システムの信頼性とユーザーの安全を守るため、C言語やC++のコードを標準化された安全なサブセットに厳密に従って書く必要があります。

Motor Industry Software Reliability Association(MISRA)のガイドラインは、主に次の目的のための基本的な枠組みとなっています。

  • 危険な言語構成の排除
  • ソフトウェア障害からの保護
  • 長い製品ライフサイクルを通じたコードベースの明確さの維持

MISRA準拠は運用上の大きな負担と見なされがちですが、自動化されたワークフローを確立すれば、継続的な安全性検証をスムーズに行えます。

準拠を達成するには、規格の改定への対応、開発パイプラインへの自動チェックの組み込み、監査に耐えるドキュメントの維持、業界固有の規制要件への対応が必要です。

規格、ルール構造、AIコードの理解

MISRAのガイドラインは、その必要性に応じて明確なカテゴリーに分類されています。

ルールは Mandatory(必須)、Required(要求)、Advisory(推奨)に分類されます。さらに、MISRAが準拠を求めなくなったガイドラインには Disapplied(適用除外)のラベルが付けられます。また、ガイドラインは決定可能か非決定可能かによっても区別されます。

MISRA Monday Webinar Series image

決定可能なルールは自動静的解析で評価できますが、非決定可能なルールには必ず手動レビューが必要です。設計意図やドキュメント作成の方法に関するルールなど、人の判断を必要とし、静的解析では検証できないルールも少数あります。

MISRAのドキュメントではこうしたルールが明示されており、各チームは自動チェックと並行してコードレビューのプロセスで対応します。ツールベンダーが「すべてのルールの100%」ではなく「自動的にテスト可能なルールの100%」をカバーすることを評価基準にしているのは、このためです。

静的解析ツールは、旧版だけに頼るのではなく、MISRA C:2025およびMISRA C++:2023を含む現行の規格をサポートしている必要があります。

MISRA C:2025には主要な改良が加えられており、ポインタの扱い、共用体へのアクセス、インクルードガード、暫定定義を対象とする4つの新ルールが追加されました。既存の13ルールも使いやすさの向上のために更新されています。また、この改定で単一出口ポイントのルールが正式に適用除外となりました。

影響範囲が最も大きい変更は、コードの来歴(provenance)に関するものです。MISRA C:2025では、AIが生成したコードも手書きのコードとまったく同じルールに準拠しなければならないことが明確化されました。

コーディングアシスタントを使用する場合、来歴は独立したカテゴリーではなくなります。Axivion MISRA Checkerは、コードの作成方法に関係なく、プロジェクト内のすべてのC/C++コードを解析し、実行のたびにコードベース全体で一貫して適用します。

監査に向けたルール逸脱の管理

逸脱は安全性が求められるシステムの開発における通常の作業であり、構造的な欠陥を示すものではありません。ハードウェアの制約、レガシーコード、コンパイラの制限などにより、特定のルールに対する例外が必要になることはよくあります。

監査人が確認するのは、すべての例外が適切に文書化され、正当化され、追跡されているかどうかです。

すべての逸脱には、対象となったルール、例外とする理由、安全性が維持されることを示すリスク評価、スコープ(グローバルまたはローカル)、そして権限を持つ担当者による正式な承認を記録する必要があります。

最終的なプロジェクトのドキュメントでは、例外ごとに次の4つの成果物を示す必要があります。

  1. 逸脱したルール
  2. 理由
  3. リスク評価
  4. 承認記録

これらの記録を手作業で管理すると、事務的な負担が大きくなります。

Axivionでは、逸脱をコード内にインラインで指定することも、外部の逸脱ファイルで一元管理することもできます。各逸脱は理由とともに記録され、追跡可能な状態が保たれます。また、生成されるコンプライアンスレポートに自動的に含まれるため、手作業の負担をかけずに完全な監査記録が得られます。

機能安全と規制要件への対応

MISRAガイドラインへの準拠は、特に機能安全が適用される組込み分野で広く求められています。規制の対象となる業界では、静的解析がソフトウェア認証の基盤となっています。

自動車(ISO 26262)

ISO 26262は、安全要求を自動車安全度水準(ASIL)のAからDまでに分類しています。準拠には、次を含む機能安全のライフサイクル全体の実行が必要です。

  • コーディング規約:MISRA C/C++をコーディング規約として採用する
  • 静的解析と動的解析:Axivionは、MISRA、CERT、CWEを1回の解析で網羅
  • コードと安全要求の間の双方向の要件トレーサビリティ
  • ASIL Dでの100%分岐カバレッジ
  • ツールの認定
  • レポートの自動生成

医療機器(IEC 62304)

ソフトウェアを潜在的な危害の深刻度に基づいてクラスA、B、Cに分類するIEC 62304への準拠は、米国FDAおよびEU MDRの要件とも整合しています。

MISRAガイドラインを採用することは、患者の安全を守るとともに、製品の長い運用期間を通じた保守性の確保にもつながります。

静的解析機能の選択

静的解析ツールの選定は、規格のカバレッジ、ワークフローの効率、認証にかかる負担によって決まります。低コストまたは部分的なカバレッジしか提供しないオプションでは、準拠のギャップを埋めるために手作業が必要になることが多く、結果としてプロジェクト全体のコストが増大します。

Axivion Suiteは、MISRA C:2025およびMISRA C++:2023を含む現行のすべての規格版について、自動的にテスト可能なMISRA C/C++ルールの100%をカバーしています。CI/CDパイプライン向けの差分解析機能を標準で備え、逸脱の追跡も管理できます。さらに、ASIL D、SIL 4、IEC 62304 Class Cまで、SGS-TÜV Saarの認証を取得しています。

Axivionの機能は、Axivion Static Code Analysisパッケージとしてスタンドアロンでライセンスすることも、より広範なAxivion Suiteの一部として統合することもできます。これにより、チームは機能安全準拠の自動化に向けた直接の道筋を得られます。

コメント

ブログを購読

Qt 6.12 を
今すぐ試そう!

最新リリースはこちらからダウンロードできます。 www.qt.io/download

Qt 6.12 LTS がリリースされました!アプリケーション開発者やデバイス開発者向けに、多くの新機能と改善が追加されています。 

採用情報 

現在、さまざまなポジションで採用を行っています。募集職種はこちら をご覧ください。また、Instagram をフォローして #QtPeople の働き方もぜひチェックしてください。