Get in Touch
  • If you’re interested in a Wind River product, simply answer a few questions and we’ll get in touch right away.
  • If you’d like to speak with someone immediately, call our number for sales inquiries below.

    Toll-free: 800-545-WIND (800-545-9463)

IEC61508のセーフティクリティカルなシステムでのSimicsやシミュレーションの利用:Andreas Buchwieserインタビュー


投稿者:Jakob Engblom, 2014/11/20

ウインドリバーのお客様の多くは、さまざまな形態でのセーフティクリティカルなシステムを利用しています。今日、世界にある重要システムの多くが、ウインドリバーのOS上で稼動しており、ウインドリバーのツールを使って開発されたものです。その結果ウインドリバーは、セーフティクリティカルなシステムの開発方法に関して、豊富な専門性を蓄積してきました。このブログ記事では、Andreas Buchwieserにインタビューしています。彼は、輸送、インダストリアルオートメーション、プロセス制御、オートモーティブ、さらにメディカルシステム用にウインドリバーのセーフティクリティカルなOSプラットフォームを利用しています。ここでは、各分野向けのシステム開発で、シミュレーションやSimicsを利用する方法について考えます。ただし、航空宇宙業界では、その要件、プロセス、規格は、ここで説明している内容とは異なります。また、以前のブログ記事に記載のとおり、航空宇宙分野でもSimicsが多く利用されています。

Jakob Engblom(JE):自己紹介をお願いします。

Andreas Buchwieser(AB):

Andreas Buchwieserです。プロダクトマネジメント担当ディレクターとして、インダストリアル、メディカル、オートモーティブ、輸送市場における、安全認証やポートフォリオを管理しています。2006年にウインドリバーに入社する前は、2003年から防衛および自動車業界の安全関連システムでのアーキテクチャコンサルタントとして働いていました。ウインドリバーでは、産業機器(IEC61508、IEC60880)、輸送システム(EN50128、IEC62279)、医療機器(IEC62304)を開発する、さまざまなプロジェクトに携わっています。また、ウインドリバーの代表として、TÜV Süd、TÜV Rheinland、TÜV Nord、Lloyds Register Railといった、認証機関との窓口も務めています。

JE:では、セーフティクリティカルなシステムの開発でシミュレーションを使うことについて、どうお考えですか?

AB:シミュレーション、モデリング、プロトタイピングは、セーフティクリティカルなシステムの開発に必要不可欠です。それらは検証プロセスを補強するために利用され、ソフトウェアアーキテクチャデザインの確認、目的機能のコンセプト(開ループ制御、開ループ制御、モニタリング)の取り込み、さらに実際の物理システムの動作のシミュレーションを行えます。

IEC61508、EN50128、ISO26262といった規格では、シミュレーション技法を強く推奨しています。これまで、さまざまな認証機関とシミュレーションについて話し合ってきましたが、認証システムでのシミュレーションの利用に多くの関心が集まっています。

私は、認証プロジェクトでSimicsが非常に役立つ領域は主に3つあると考えています。もちろん、それだけに限定されないと思いますが。1つ目は、診断ソフトウェアのテスト中に不具合挿入を利用することです。2つ目は、大きな問題やバグになる前に課題を検出するための、早期の要件の妥当性確認です。3つ目は、モジュールテスト中にカバレッジ指標を増やすことです。

JE:個人的に不具合挿入に興味があるので、まずそれについて話しましょう。不具合挿入や安全規格について、どうお考えですか?

AB:安全機器では、運用中の不具合をコントロールするための組込み型機能を実装する必要があります。それらの不具合の典型が、ランダムハードウェア故障です。この故障をコントロールするには、いわゆる「診断」手法を実装する必要があります。これらの診断は認証ソフトウェアの一部で、算出された安全度水準(Safety Integrity Level:SIL)に合わせて厳密に検証されなければなりません。実際、診断ソフトウェアの検証は、安全および認証プロジェクトの最も難しい部分なのです。このタイプのソフトウェアでは、ハードウェアの問題の診断、問題の検出、問題の深刻化の防止、システム全体の安全確保を行います。それをテストすることは、非常に困難です。

安全規格で強く推奨されている妥当性確認手法が、不具合挿入なのです。

JE:どのようにして、シミュレータを利用せずに、妥当性確認ソフトウェアをテストするのですか?

AB:それでは、どのようにして、制御された状態のハードウェアの故障をこちらが意図する形で発生させ、さらにそれを繰り返せると思いますか?現在では、デバッガを使うのが一般的です。診断の検証にデバッガを使う場合には、いくつか問題があります。

  • デバッグモードの実行可能ファイルは、リリースバージョンの実行可能ファイルが異なる
  • アドレスやシンボルの識別に手間がかかる
  • プログラムの実行を停止させる必要がある
  • レジスタやオペコードのトレーサビリティがない

Simicsを使えば、プロセッサやターゲット環境をシミュレートでき、ソフトウェアのリリースバージョンを使いながらシステムに不具合を発生させることが可能です。

JE:ご自身で不具合挿入のためにSimicsを利用したことはありますか?

AB:現在、Safety Profile for VxWorks 7の開発において、機能安全マネージャを務めています。Safety Profile for VxWorks 7をモジュール式でスケーラブルなものにするために、カーネル部分のみを認証しています。また、ウインドリバーでは、PPC、インテル、ARMのプロセッサなどのアーキテクチャに対応した、カーネルの補完部品も提供する予定です。アーキテクチャ対応では、統合プロセッサ診断が提供されるため、お客様にとって付加価値の高いものとなるでしょう。現在Simicsをそのような統合プロセッサ診断の検証に適したツールに認定する方法を検討中です。これは、既に述べた3つ領域の1つにあたります。

JE:シミュレータによる不具合挿入や診断テストについて、規格ではどのように定められているのですか?

AB:安全規格では、安全性検証技術としてシミュレーションを強く推奨しています。IEC61508-7のセクションC.5.19では、シミュレーションについて以下のように説明しています。

「テスト目的で作成された、被制御機器(EUC)の動作を模倣するシステムである。

シミュレーションは、ソフトウェアのみである場合やソフトウェアとハードウェアの組み合わせの場合もある。機能は次のとおり。

  • システムのインストール時に提供される被試験システムの入力をすべて備えている
  • システムからの出力に対して、被制御機器の動作に忠実に反応する
  • 被試験システムに要求されている任意の摂動を提供するための入力処理が準備されている

ソフトウェアのテストでのシミュレーションであれは、ターゲットハードウェアの入出力のシミュレーションとなる。」

提唱しているSimicsのアプローチでは、テストされるソフトウェアが診断で、「被制御機器」が使用プロセッサに該当します。Simicsを利用することで、通常運用時の状態、予測される事象、さらにシステム処理が必要となるような望ましくない状況の下で、妥当性確認を容易に実行できます。このような作業には、Simicsが最適なのです。

JE:シミュレーションにおける不具合挿入とは、具体的にどのようなものですか?

AB:簡単な例を挙げて説明しましょう。IEC61508で中級レベルの診断カバレッジを主張するには、CPUレジスタやRAMでのソフトウェアのエラーによって引き起こされる、データ変更の検出を義務付けています。たとえば、実装した診断が正しく動作することを検証したいとします。Simicsを使っていれば、単純にレジスタのデータを変更して、診断がこの「不具合」を検出して指定のシステム処理を起動するかどうかを確認すればよいだけです。

JE:要件の妥当性確認はどうでしょう?

AB:それは、プロトタイプ開発に関連しています。問題やバグのほとんどは、要件が十分に指示されていないことが原因です。プロトタイプを開発して、早期の要件の妥当性確認に利用することで、この問題を解決できます。システム全体をシミュレートするシステムシミュレータが、このような早期のプロトタイピングに非常に役立ちます。仮想ハードウェアを利用することで、ソフトウェアとハードウェアの両方、および依存性や相互作用を理解できます。IEC61508規格では、要件の十分な理解、および該当環境下でのソフトウェアのテスト方法として、シミュレーションを使ったプロトタイピングが指示されています。

「要件を導いたり、特定の要件やその影響に関して詳しい情報を得るために、任意の段階でプロトタイピングを活用できる。

IEC61508:妥当性確認と検証ツール(シミュレータなど)

該当ソフトウェアでは、以下の項目をシミュレーションします。

1) 通常運用中の入力信号
2) 予測される事象
3) システム処理が必要となるような望ましくない状況

機能テストとブラックボックステスト:プロトタイピングアニメーション」

JE:IEC61508でプロトタイピングを扱う場合、それはどのように認証と関連していますか?

AB:安全規格では、ソフトウェアアーキテクチャ(基盤となるハードウェアとの相互作用を含む)を検証するための、機能テストとブラックボックステストを義務付けています。プロジェクトの初期段階でリソース要件を理解することは、開発者にとって非常に重要です。プロトタイプを使えば確実な推定値が得られます。信頼性の高いSimicsモデルによって、特定の制約のもとでのシステム実装の実現性を確認できます。

JE:プロトタイピングは初期段階で行うということですね?

AB:はい、そうです。設計フローの早期に開始します。簡単な例を挙げて説明しましょう。プロセッサとRAMの容量が決まり、エラーに対して定期的にRAMをチェックする必要があるとします。通常これは、作業行程の後半で行われます。ところが、もしシステムが常にRAMチェックでビジーであるとしたら、どうでしょう?シミュレータを使えば、初期段階でRAMチェックが実現可能かどうかを確認できます。より高速なプロセッサやECC RAMへの変更が必要か、またはRAMチェックを完全にやめてしまうのか。

これは、プロジェクトの終盤に、実装したものが機能するかどうかを検証するために行われる、不具合挿入とは異なります。

JE:インタビューの冒頭で、最後に挙げていた項目は、カバレッジ指標を増やすということですが、これは、どういう意味ですか?

AB:安全規格では、ソフトウェアモジュールのテストについて、いわゆる「構造ベースのテスト」を強く推奨しています。その目的は、プログラムコードの大部分を実行することです。コードカバレッジの割合は、要求されている厳密度によって変わりますが、ハイクリティカルなソフトウェアの場合、一般的に次の要件が適用されます。

  • 構造テストカバレッジ(ステートメント)100%
  • 構造テストカバレッジ(分岐)100%
  • 構造テストカバレッジ(条件、MC/DC)100%

ソフトウェアは、ある時点でハードウェアとやり取りし、ハードウェアイベントに反応します。そのような場合、安全規格のカバレッジ要件を満たすことは、不可能でないとしても、非常に手間がかかることになります。プログラムコードの特定部分をソフトウェアに実行させるような、特定のハードウェアイベントをテスト担当者が簡単に発生させることはできません。さらに、モジュールテストの多くは、実際のハードウェア上ではなく、ホスト環境で行われるという点にも気をつけてください。結果的に、カバレッジ100%の要件を満たすことができず、テスト担当者がジャスティフィケーションステートメントを追加して対処する必要があります。その場合、検査官が呼び出しケースとして認証認めない可能性があるため、リスクが伴います。Simicsでは、特定のプログラムコードを実行させる特定のハードウェアイベントのシミュレーションが可能なため、結果的にカバレッジを増加できます。

JE:なるほど、そうですね。珍しいイベントや究極状態に対応したコードをテストするために、Simicsを利用してそのような状態を強制的に作り出しているユーザが多いようです。

ところで、もう1つ質問があるのですが、Simicsで観察できる状態が、実際の状態を反映したものであると、どうしてわかるのでしょうか?この件に関する見解を教えてください。

AB:Simicsは、ツールでエラーが起これば欠陥を見つけることができず、かといって実行可能なソフトウェアで直接エラーを発生させることもできないような部分について、設計や実行可能コードのテストや検証をサポートする、T2ツールであると考えています。IEC61508のパート3、セクション7.4.4では、ツールの認定方法に関するガイドが提供されています。ウインドリバーとユーザが協力すれば、Simicsセットアップが安全規格要件の認定を受けることもできるでしょう。

JE:それは、規格として実用的かつ実際的なアプローチのようですね。つまり、Simicsが、IEC61508規格におけるソフトウェア開発作業の共通部品として選定されてもよいという話なのですね。その実現に向けて、他に必要なことはありますか?

AB:T2ツールとしてのSimicsの使用方法や認定について、これまでに何度か認証機関と話し合いました。モデル認定へのアプローチとしては、インテルなどのベンダーの既存のプロセッサ検査項目を、実際のプロセッサ上とSimicsモデル上で同じように実行し、結果を比較するというものです。もちろん、このアプローチについて、認証機関の同意を得る必要があります。通常、安全プロジェクトでは実績があり広く普及しているプロセッサ(全く新しいプロセッサではなく)を利用するため、このアプローチで比較のために使う実際のハードウェアを確保できます。

JE:今回は、興味深いお話をありがとうございました。セーフティクリティカルなシステムや、その開発やテストへのSimicsの応用方法について、新たに学ぶことが多くありました。

関連トピックについての詳細は、過去のブログ記事をご覧ください。

Thank You

Wind River, a wholly owned subsidiary of Intel Corporation (NASDAQ: INTC), is a world leader in embedded and mobile software. Wind River has been pioneering computing inside embedded devices since 1981 and its technology is found in more than 500 million products