AUTOSAR C++コーディングガイドラインを適用して効率的にISO 26262準拠に取り組むことを考えているなら、十分な情報を得たうえで静的解析ツールを選択できれば、いっそう効果的でしょう。この記事では、そのためのヒントをご紹介します。
C言語は、長年にわたって自動車業界の主流でしたが、自動車ソフトウェアアーキテクチャの複雑化に対処するにはもはや十分ではなく、オブジェクト指向設計が要求されるに従って、C++が選択されるようになるのは当然のなりゆきです。しかし、C++は複雑な言語であり、予測可能性、安全性、およびセキュリティを保証するには多大な努力が必要です。
自動車機能安全規格ISO 26262は、ソフトウェア開発およびV&Vプロセスに関して一定のガイダンスを提供しますが、言語レベルまでは詳しく説明していません。そこで、言語レベルのガイダンスとして、MISRA C/C++やAUTOSAR C++などのコーディング標準が注目されています。このブログでは、AUTOSAR C++ 14準拠チェッカーを搭載した静的解析ツールを使用してISO 26262に準拠する方法について説明します。
AUTOSAR C++を使用してISO 26262準拠を効率化する方法
ISO 26262のような機能安全規格への準拠は多大な労力を必要とし、プロジェクトの最初から総合的に取り組む必要があります。ソフトウェアコンポーネントの場合でも、準拠を達成するには、要件の収集、計画、実装を通して、特定のアクティビティを必要とします。これは、「後付け」できるものではありません。
ISO 26262には、規格への準拠を達成するために必要な一連の手法が規定されています。準拠を申請するには、適用されるすべての要件と手法が実施済みであるという証拠を提出しなければなりません。ただ、あらゆる場合にすべての手法が適用されるわけではありません。手法が適用されるかどうかは、規格で定義されているリスク分類であるAutomotive Safety Integrity Level(ASIL)に依存します(ASIL Aは最低、ASIL Dは最高レベルの自動車ハザードを表します)。これに応じて、手法は「強く推奨」、「推奨」、または「推奨も反対もしない」に分かれます。
標準への準拠を目指すうえでの典型的な課題は、推奨される手法をどうやって実装するべきかというものです。特定の手法または要件をどのように満たすかは、チームの経験に基づいて決定されることがよくあります。単純な状況では、手作業による工程とレビューで足りることもありますが、ほとんどの場合、チームは手法を自動化できるツールを探すことになります。
ISO 26262準拠に使用されるツールは、ツール認定と呼ばれる正式なプロセスを経て、意図された使用に対して承認されなければなりません。ソフトウェアツール認定の目的は、安全関連の項目または要素の開発で使用できるかという、ソフトウェアツールの適合性の証拠を提供することです。これは時間とリソースを消費する作業です。(Parasoft C/C++testを使用している場合、この作業は認定キットによってサポートされます。 認定プロセスが合理化されるほか、多くの状況でツールの認定に十分なTÜV SÜDによる認定が含まれています。)
AUTOSAR C++ Coding Standardの有用性
AUTOSAR C++などのコーディング標準に従うことは、ISO 26262の要件のいくつかを満たすに際して広く受け入れられている手法です。AUTOSAR C++ 14は、ISO 26262の原則と推奨事項をコーディングガイドラインにマッピングしたトレーサビリティ表を提供しています。マッピングは主にISO 26262 第6部のセクション8をカバーし、規格の手法と要件への準拠を達成するプロセスを非常に単純にします。
しかし、AUTOSAR C++ 14コーディングガイドラインだけでは、ソフトウェアコンポーネントのISO 26262準拠を達成するのに十分ではありません。「スタイルガイドの使用」を推奨する手法1gや「命名規則の使用」を推奨する手法1hなど、標準に含まれるいくつかの手法は、AUTOSARガイドラインを適用するだけではカバーできません。AUTOSAR C++ 14には、スタイルガイドや命名規則は含まれていないからです。ただし、これら2つの手法はどちらも、コードスタイルチェッカーを含む3000以上の静的解析チェッカーを搭載し、カスタム静的解析ルールを作成するためのモジュールも備えたParasoft C/C++テストでなら、簡単に実装できます。一般に、規格で規定されている静的分析では実装できない手法を実施するには、フォールトインジェクションテストなどの他のテスト手法が必要です。
AUTOSAR C++ 14準拠に必要な3つの機能
そこでもちろん、最も簡単に準拠を達成できる適切なツールを見つけるには、という話になります。コーディング標準への準拠プロセスをチーム開発ワークフローに取り入れるのは、容易なことではありません。そのため、過大なオーバーヘッドを課すことなく、また手作業の工程を増やすことなく、コンプライアンスを達成するのに役立つツールを選択することが非常に重要です。以下は、静的解析ソリューションを選択する際の重要な検討事項です。
1. コーディングガイドラインのカバー範囲
AUTOSAR C++ 14では、多数のガイドラインが定義されています。AUTOSARコーディング標準の最新版には、現時点で約400のガイドラインが含まれています。これらのガイドラインのうち350は、静的解析で適用可能です。これだけの数のガイドラインをサポートすることは静的解析ツールベンダーにとっても大きな課題であり、市場にあるすべての静的解析ツールが規格の準拠に十分な範囲をカバーしているとはかぎりません。(臆面もなく宣伝すると、Parasoft C/C++test はこの点で最も優れたソリューションであり、最も多くのAUTOSAR C++ガイドラインをカバーし、日々さらに多くを実装し続けています。)
2. データおよびフロー解析技術のサポート
AUTOSAR C++コーディング標準で定義されているガイドラインの複雑さのレベルはさまざまです。比較的単純な静的解析技術で実施できる単純なガイドラインもあれば、高度なデータおよび制御フロー解析によって対象ソースコード内のパスをシミュレートし、特定のガイドラインに違反していないかどうかを判断する必要があるガイドラインもあります。
たとえば、コード内のパスを評価して、コンテナのデータへのアクセスに使用されるインデックスが適切な範囲内にあるかどうかを正しく判断できる静的解析ツールを選択する必要があります。市場にある多くの商用ツールやほとんどのオープンソースツールは、非常に初歩的なフロー解析によってこの種の問題に対処しており、実際にはコード内の問題を見逃したり、膨大な数の誤検出を報告したりします。そのため、レビューに非常に時間がかかり、生産性を低下させます。静的解析ツールのベンチマークを検証する際には、特にフロー解析技術を必要とする複雑なガイドラインに注意して結果を比較することを強くお勧めします。
3. ツール認定のサポート
AUTOSAR C++は、静的解析ソリューションの使用を承認するためのツール認定を明示的に要求してはいませんが、ISO 26262ではツール認定が必要です。そのため、AUTOSAR C++を使用してISO 26262への準拠を達成することを計画している場合は、適切な認証と認定キットでエンドユーザーをサポートする静的解析ソリューションを選択するようお勧めします。
まとめ
AUTOSAR C++ 14などのコーディング標準はISO 26262への準拠を達成するのに役立ちます。ISO 26262規格で定義された手法と要件には、AUTOSARコーディングガイドラインに従うことによって満たすことができるものがいくつもあります。AUTOSAR C++ 14には、ISO 26262の要件とコーディングガイドラインのマッピングを示すトレーサビリティ表があります。AUTOSAR C++コーディングガイドラインを適用してISO 26262への準拠を効率的に達成しようとする場合、十分な情報を得たうえで静的解析ツールを選択すれば、いっそう効果的です。
(この記事は、開発元Parasoft社 Blog 「How to Select the Right Tool for AUTOSAR C++ Compliance in Support of ISO 26262」2019年6月25日の翻訳記事です。)
静的解析・単体テストツール C++test
C++testは、静的解析(コーディング規約チェック/フロー解析)、単体テスト、カバレッジの計測、実行時メモリエラー検出、 効率的な運用や規格順守を補助する機能などを搭載したC言語/C++言語対応のオールインワンテストツールです。
MISRA C/C++、CERT C/C++コーディングスタンダード、AUTOSAR C++14コーディングガイドラインなどで定められた規約に基づくコーディングの支援や、単体テストやアプリケーション実行時に自動的にカバレッジを計測するなど、さまざまな要件に対応し、ソフトウェアの品質向上とテスト工数の大幅削減をサポートします。
静的解析・単体テストツール C++testの詳細はこちら