MISRA準拠への道をよりスムーズに

(この記事は、開発元Parasoft社 Blog 「A Smoother Road to MISRA Compliance」2017年9月28日の翻訳記事です。)

これまでも、組み込みソフトウェアアプリケーションを構築するというタスクには課題が多くありましたが、IoTの登場により、 すべてのものがインターネットに接続されているかに見えるいま、システムの複雑さとセキュリティ脆弱性のリスクもますます高まっています。これらの課題を軽減するために、多くの人々がMISRAガイドラインに注目しています。

MISRA(Motor Industry Software Reliability Association)の「クリティカル システムでC言語を使用するためのガイドライン」(MISRA C 2012)は、潜在的なエラー、セキュリティ脆弱性、およびプログラムの失敗や深刻なエラーの原因となる誤りを最小限に抑えるように設計されたC言語のサブセット定義です。このガイドラインは、当初、自動車システム向けに策定されましたが、他の多くの業界でセーフティクリティカルなアプリケーションに採用されています。いずれにせよ、MISRAへの準拠の判定(ベンダーとクライアントの間ではますますMISRAへの準拠が要求されるケースが増えています)は複雑で時間がかかります。

コードがガイドラインに違反していることを示すエラーを報告するツールは市場に数多くありますが、準拠の証明に必要なレポートおよび文書化のプロセスを簡単にしてくれるツールは少なく、ましてやガイドラインをソフトウェア開発プロセスの一部として組み込むことを可能にするようなツールについては言うまでもありません。製品ライフサイクル全体を通じてMISRAへの準拠を達成、文書化、および維持するプロセス全体を合理化するため、ParasoftはC/C++言語用テストツールであるC/C++testとともに、自動化と支援を提供するレポートおよび分析プラットフォームであるDTPを開発しました。この記事では、これらのツールを活用してMISRAへの準拠を負担の少ないものにする方法を説明したいと思います。

平坦ではないコンプライアンスへの道をナビゲート

コンプライアンスは2つに1つの状態です―コードは規約に準拠しているか、していないかのどちらかです。そして、MISRAのガイドラインは、すべてのコードがガイドラインの定める指針およびルールに準拠することを期待しています。そのため、大規模で複雑なプロジェクトで完全な準拠を達成することは容易ではありません。このような課題に加えて、多くのベンダー/クライアント間では、文書によって準拠が証明されていることが要求されます。

MISRAコーディングガイドラインの実施手順をより明確にするために、MISRAは開発組織がコンプライアンスを達成し文書化するのを支援するコンプライアンスガイドラインを2016年に発行しました。自動化によってこのプロセスを簡素化するには、以下が必要です。

  • コンプライアンスが開発プロセスに確実に組み込まれるように、プロジェクト全体のステータスを高レベルでリアルタイムに表示する
  • MISRA準拠ガイドライン(例: MISRA コンプライアンス:2016 )を満たすレポートの自動作成により 、サポート文書を作成する負担を軽減する
  • 迅速かつ容易なワークフローにより、違反を調査し、改善措置の優先順位付けを行い、プロジェクトをコンプライアンスに確実に対応させるプロセスを合理化する

Parasoftはこれらのガイドラインを念頭に、C/C++testの展開をカスタマイズおよび拡張するレポート生成および分析プラットフォーム(DTP)を開発し、インテリジェントな分析機能を提供することで、ステークホルダーがテストカバレッジや変更によるリスクをより深く理解することを可能にしました。MISRA標準に関して、DTPは機能性、性能、安全性を検証しながら、準拠の達成、実施、文書化のプロセスを簡素化します。

MISRAコンプライアンスダッシュボード

プロジェクトのコンプライアンスの現在の状態は、コンプライアンスを測定するうえで、他のより詳細なメトリクスと同様に重要な指標です。DTPは、プロジェクトの即時評価を提供する包括的なMISRAコンプライアンスダッシュボードを提供します。この高度なビューは、マネージャーにとっても開発者にとっても重要なものです。マネージャーにはコンプライアンスを一目で把握できる容易にアクセス可能なビューを提供する一方、開発者にはコンプライアンスの達成に向けた出発点を提供し、作業の優先順位を決めるのに役立ちます。

図1:DTPのMISRAコンプライアンスダッシュボードの例

MISRAコンプライアンスパック

Parasoftは、MISRAコンプライアンスダッシュボードに加えて、MISRAのコンプライアンス文書化要件に対応する完全なコンプライアンスパックを提供します。 MISRA Compliance Pack for DTPは、MISRA コンプライアンス:2016ガイドラインに従って自動化されたドキュメントを提供し、認証機関に準拠を証明するために必要な時間と労力を大幅に削減します。これには、以下のものが含まれています。

ガイドライン施行計画書

MISRAガイドライン施行計画書は、各MISRAガイドラインの検証方法を示します。ほとんどの場合、これは、MISRAの指針またはルールと、関連するコード解析ルールまたはDTP機能との間のリンクを示します。下の例を参照してください。

図2:DTPのMISRAガイドライン施行計画レポートの例

ガイドラインの再分類計画書

MISRAガイドラインの再分類計画書は、ベンダー/クライアント間で合意済みのガイドラインの重要度を伝達するために使用されます。このドキュメントは、各ガイドラインが現在のプロジェクトに対して具体的にどのように分類されるかを示します。必須および必要のガイドラインは、より低いレベルに格下げすることはできません。ただし、プロジェクトによっては、必要のガイドラインや推奨のガイドラインをより厳しい設定に格上げする場合があり、推奨ガイドラインは却下される(コンプライアンスに必要とはされない)場合があります。次の再分類計画書の例を参照してください。

図3:DTPのMISRA再分類計画レポートの例

逸脱報告書

MISRA逸脱報告書は、逸脱したガイドラインの違反に適切な根拠を付けて文書化します。検出されたルール違反をそのままにする場合は、必ず逸脱報告書に記録する必要があります。ほとんどの場合、これらはコード解析から報告される抑制されたエラーです。報告書の例を以下に示します。

図4:DTPのMISRA逸脱レポートの例

ガイドラインコンプライアンスサマリー

コンプライアンスサマリーは、コンプライアンス全体の主要な記録です。このレポートには、各ガイドラインのコンプライアンスの状態と関連する逸脱または再分類が記載されています。例を以下に示します。

図5:DTPのMISRAコンプライアンスレポートの例

コンプライアンスを軌道に乗せる

MISRA準拠を検証するためにソースコードを解析したとき、レポートされる違反の大部分は、静的解析ルール違反です。大規模なプロジェクトでは、最初に多くのエラーが報告されるため、迅速かつ効率的にエラーを管理することが重要になります。DTPの違反エクスプローラーは、報告されたエラーをナビゲート、評価、優先順位付け、割り当てし、修復するための重要なツールです。静的解析ルール違反が正しく検出されたものであるが正当な理由がある場合、無害であるとみなされるか、または違反の報告が妥当ではないと判断された場合、開発者はエラーを抑制し、逸脱を文書化できます。これらの逸脱は、プロジェクトの各レベル、ダッシュボードおよびコンプライアンス文書に報告されます。違反エクスプローラーの例を以下に示します。

図6:DTPの違反エクスプローラで調査されている違反例

施行、コンプライアンスおよびトレーサビリティ

要約すると、セーフティクリティカルなソフトウェアの開発に際して、MISRA標準は、セキュリティ脆弱性やプログラムの障害から保護するための包括的なガイドラインを提供します。しかし、これらのガイドラインを適用してコンプライアンスを実証することは非常に面倒であり、ソフトウェアを確実にスケジュールどおりデリバリーするために合理化は不可欠です。

ソフトウェアでこの作業を支援するには、次のような方法があります。

  • C/C++testを使用して、ソフトウェアのビルド後に毎回静的コード解析によってMISRAのガイドラインを検証し、日々のガイドライン適用を確実にする。
  • DTPのMISRA Compliance Packを使用して詳細な概要と詳細なレポートをすばやく作成し、コンプライアンスを効率的に証明する。
  • DTPを活用してプロジェクト要件とテストのトレーサビリティを確保する。トレーサビリティは、MISRAだけでなく他の安全規格においても重要な要件です。

最後にまとめると、ライフサイクルを通じてMISRAコンプライアンスをサポートすることは、継続的な施行とトレーサビリティにとって重要です。また、MISRAコンプライアンス:2016ガイドラインにあるとおり、文書作成の自動化は、このガイドラインに対処するための時間を節約し、不満を抑制するための鍵です。

Top