メインコンテンツ

Polyspace で AUTOSAR コードのコンポーネント ベースの解析と統合解析のどちらかを選択する

Polyspace では AUTOSAR コードを検証する 2 種類の方法がサポートされています。コンポーネント ベースの解析と統合解析です。

定義

極めて簡潔に言えば、コンポーネント ベースの解析では AUTOSAR ソフトウェア コンポーネントの設計仕様が必要で、その仕様から必要なすべての情報を抽出します。一方、統合解析ではこの仕様は必要ありません。

  • "コンポーネント ベースの解析" の方法では、開発者の AUTOSAR 設計仕様を ARXML 形式で指定します。解析では、これらの仕様が読み取られ、ソフトウェア コンポーネントごとに個別の C コード モジュールが作成され、ランタイム エラーおよび設計仕様との不一致がないか各モジュールをチェックします。

    この方法の概要については、AUTOSAR 対応の Polyspace の利点を参照してください。コンポーネント ベースの解析を設定する方法の詳細については、AUTOSAR コードに対する Polyspace の実行を参照してください。

  • "統合解析" の方法では設計仕様は指定せず、関連するすべてのソース コードが含まれている 1 つのプロジェクトに対して Bug Finder または Code Prover を実行するだけです。解析を AUTOSAR 対応にするため、解析オプション 使用するライブラリ (-library) に値 [autosar] を使用します。

類似点と相違点

コンポーネント ベースの解析と統合解析はどちらも AUTOSAR 規格に準拠しています。さらに、コンポーネント ベースの解析では開発者の AUTOSAR プロジェクトの設計仕様も利用します。

類似点

どちらの形式の解析でも、AUTOSAR ランタイム環境または RTE 層の関数は正確なスタブに置き換えられます。スタブによるメリットは以下の通りです。

  • RTE 関数の実装をチェックしないため、"より高速かつ精度の高い解析" が可能です。RTE 関数の実装をチェックしない代わりに、解析では AUTOSAR 規格に基づいて RTE 関数をエミュレートします。(関数の使用法の検証に関数実装のチェックは不要です。チェックすると桁落ちを引き起こす可能性があります)。

  • AUTOSAR 規格違反を検出する、"関数の引数の実行時チェック" が可能です。

    たとえば、入力引数の規約定義によると、引数がポインターである場合、ポインターは初期化済みのバッファーを指さなければなりません。Polyspace では、特定の呼び出しの引数が、初期化されていない可能性があるバッファーを指しているかどうかをチェックできます。

    [AUTOSAR 仕様に非準拠] (統合解析) と [AUTOSAR のランタイム環境関数の無効な使用] (コンポーネント ベースの解析) の両方のチェックが、AUTOSAR 規格違反を検出します。

相違点

RTE 層に正確なスタブを使用することに加え、コンポーネント ベースの解析では開発者が指定する設計仕様の情報も使用します。その結果、コンポーネント ベースの解析では、統合解析にはない次の追加機能が提供されます。

  • ソフトウェア コンポーネント仕様に基づいた、モジュールへのコードの自動分割。

  • 各モジュール内の AUTOSAR ランナブル (エントリ ポイント) の自動特定、およびそれらのランナブルに対する実行時チェック。[AUTOSAR ランナブルの実装の無効な結果] も参照してください。

  • RTE 関数の引数が設計仕様のデータ制約に違反しているかどうかを判別するための追加チェック。このチェックは設計仕様からの具体的なデータ型に対する、より厳密なデータ制約を使用するので、AUTOSAR 規格に基づく実行時チェックよりも正確です。[AUTOSAR のランタイム環境関数の無効な使用] も参照してください。

コンポーネント ベースの解析と統合解析のどちらかを選択する

AUTOSAR 規格の仕様に準拠しているかの解析のみを実行し、自分の設計仕様とコードとの比較は行わない場合は、統合解析を実行できます。それ以外の場合は、コンポーネント ベースの解析を実行して、ソフトウェア コンポーネントの実装が設計仕様と一致しているようにします。

コンポーネント ベースの解析では統合解析よりも豊富な解析結果が得られますが、より詳細な設定が必要です。

  • コンポーネント ベースの解析は 3 段階で実行します。ARXML 解析、コード抽出、そして最後に静的なコード検証です。各段階のエラーは、さらに下流の問題に伝播する場合があります。エラーを回避するには、AUTOSAR プロジェクトに対する詳細な知識が必要になる場合があります。たとえば、コード ジェネレーターから残ったテンプレート ファイルなどのアーティファクトを除外しなければならない場合があります。

    コンポーネント ベースの解析をサポートするのは Code Prover だけです。

  • 統合解析は指定されたコードでのみ機能し、設定はよりシンプルです。AUTOSAR に準拠した解析を行うには、1 つの追加オプションを有効にした通常の解析のみを実行する必要があります。

    Bug Finder と Code Prover のどちらも、同じチェックを行う統合解析をサポートします。Bug Finder のほうが Code Prover よりも網羅的ではなく、チェックに対して表示される解析結果が少なくなる場合があります。

参考

トピック