Comments
Transcript
モデルベーステスティング&バリデーション - Reactive Systems, Inc.
【モデルベーステスティング&バリデーション】 目次_____________________________________________________________________________________________ はじめに_______________________________________________________________________________________P 3 Reactisの概要______________________________________________________________________________P 3 Reactis Tester___________________________________________________________________P 4 Reactis Simulator______________________________________________________________P 7 Reactis Validator_______________________________________________________________P 7 TesterとSimulatorによるデバッグ_________________________________________P 8 Validatorによるモデル検証___________________________________________________P 10 高度な実装テスト____________________________________________________________________________P 11 ソフトウェアテスト__________________________________________________________________ P 11 システムテスト______________________________________________________________________P 12 レガシーコードのリバースエンジニアリングによるモデル作成_________________P 13 結論_____________________________________________________________________________________________P 15 Reactive Systems, Inc. リアクティブ システムズ インコーポレイテッド ジャパン ブランチ オフィス 愛知県西区則武新町3-1-76-502 Tel: 052-618-6083 Fax: 03-5501-9001 www.reactive-systems.com [email protected] Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 2 of 15 イントロダクション Reactisは、モデルベース開発(以下MBD)におけるバリデーションとベリフィケーションの 自動化により、技術者が優れたソフトウェアを、より早く構築する事をサポートします。 MBDは、組込み制御システム開発を手がける技術者の間でポピュラーになりつつあります。 MBDでは、システム実装前に、組込み制御システムの実行可能なビジュアルなモデルが開発 されます。モデルは制御用ソフトウェア開発のために使用される事もあれば、ソフトウェアやシ ステムテストのベースラインとして使用されることもあります。MBDの利点は、技術者が設計段 階でデバッグやバリデーションを行う事を可能にし、ソフトウェアやシステム実装段階時に比べ、 早期に設計の欠陥を検出し、修正するコストを削減します。また、モデルはシステムテストやバ リデーション時に実動作を評価する、ベースラインとしても利用できます。こうした理由から、モ デルの活用は、とりわけ強固なツールのサポートにより制御システム開発のコストを大幅に削 減します。 Reactive Systems, Inc., のReactisツールスイートは、モデルベース開発において、制御 システムのSimulink®/Stateflow®モデルに基づいたテストとバリデーション工程の自動化によ り、組織の利益を実質的に高めます。 Reactis の使用により、エンジニアは *徹底的に試行したモデルからテストスイートを生成する *モデルが、期待されるシステム動作要求に違反しないかどうか確認する Reactisは、高性能のモデルデバッグ機能も備えています。 ここでは、Reactisが、開発工程における諸作業を自動化する為に、どのように使用されるか 説明します。特にReactisが、より精緻なモデル開発をする為に、どのように使用されソフトウ ェアとシステムテストを効率化し、レガシーコードからのモデルのリバースエンジニアリングをい かにサポートするか説明します。 Reactisの概要 Reactis, Simulink, Stateflowに関わるモデルベース開発環境は、図1のように表せます。 Reactis は、3つの主要なコンポーネント、Tester、Simulator、Validatorにより構成されて います。Testerはモデルからテストスイートを自動生成します。Simulatorは、モデルの実行 を視覚化します。Validatorは、ユーザー定義の要求をモデルが違反しないか自動的に監視し ます。この後、これらの3つのコンポーネントの機能について、詳しく述べていきます。 *SimulinkⓇ、StateflowⓇは米国 The Math Works, Incの登録商標です。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 3 of 15 図1:Reactisは、Simulink/Stateflow のツールチェーンの中にプラグインとして提供されます。 Reactis Tester(リアクティス テスター) Reactis Tester は、モデルからテストスイートを自動生成します。このテストスイートは、 DO-178/BガイドラインによりUS Federal Aviation Administration(FAA)が指定したModified Condition/Decision Coverage(MC/DC)を含む、複数のテストクオリティーメトリクスの包括的 なカバレッジを提供します。また同時に、テストの重複を最小化します。 テストスイートの各テストケースは、モデルに挿入された一連の入力とモデルによって生成さ れるこれらの入力に対するレスポンスで成り立ちます。これらのテストは、次に説明するような 様々な用途で使用されます。 実装適合性 モデルから生成したテストを実装用コードに適用し、モデル動作と一致するか確認。 モデルテスティングとデバッグ モデル動作の解析と修正の為、テストをモデル自身に入力。 Cソースからモデルのリバースエンジニアリング モデルとコードの適合性をチェックする為、レガシーコードから派生するモデルからテス ト生成。 Reactis Testerは、実際にテストに費やす時間を削減する一方で、テストの最大限の効率化 を図ります。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 4 of 15 Simulink/ Stateflow Model Test Suite Reactis Tester ゴール ・カバレッジ最大化 ・重複の回避 ・モデル生成した出力を記録 用途 ・ソースコードテスト ・モデルデバッグ ・モデル比較 図2:Reactis Testerは、包括的で且つコンパクトなテストスイートを自動生成します。 テスターで生成されたテストの構造は図3に示されます。 図3:Reactisが生成したテストの構成図 図3. テストは、入力ポートと出力ポートに対応する各行にマトリックスとして表示され、各列は シミュレーションの1ステップを表しています。図4に見られるように、テストスイートは複数のテ ストの集まりです。複数のステップの集まりがテストを形成します。テストスイートを実行する時、 モデルは各テスト終了後と次のテスト開始前に 初期状態にリセットされます。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 5 of 15 Simulink/ Stateflow Model Reactis Tester Test Suite テストスイート:テストの集まり テスト:ステップの集まり ステップ: ・モデルの各入力ポートの数値 ・モデルの各出力ポートの数値 図4:Reactisが生成したテストスイートの構成 テストスイートは、モデルをシミュレーションし各ステップにおける、インプットとアウトプットデ ータにより構成されています。シミュレーション実行に必要なインプットの数値を作成する為、 複数のアプローチが可能です。入力データはフィールドテスト中に取り出し、技術者が手動で 構成する事も出来ますが、非常にコストがかかります。また、ランダムに生成された入力デー タを使用する方法を採用しても、今度はカバレッジ率が悪くなります。 Reactis Testerは、質の良い入力データを自動生成するGuided Simulation、という新し いアプローチ方法を備えています。このアプローチとは、アルゴリズムとヒューリスティクス(発 見的解決法)を使用し、まだカバーされていないカバレッジターゲット(例えば、ユーザーが確 かめたいモデルの構成要素を少なくとも一度実行する)を引き出す入力を自動生成します。 Reactis は、複数のターゲット、あるいはカバレッジ基準をユーザーが使用できるようになって います。サポートする基準のうち、2つはSimulinkのみを対象とし、3つはStateflow特有のも ので残りは一般的にSimulinkとStateflow両方のモデルをターゲットとします。 Simulink-specific:Conditional subsystems. 次のブロックのBranches: Dead Zone, Logical Operator, MinMax, Multiport Switch, Relational Operator, Saturation, Switch Stateflow-specific:States. Condition actions. Transition actions. Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 6 of 15 Generic: Decision(Simulinkの論理ブロック、またはStateflowの遷移セグメントからの)、 Condition(the atomic predicates that are the building blocks of decisions)、Modified Condition/Decision Coverage(MC/DC)ターゲット、トップレベルの入力ポートの境界値。 Reactis Simulator Reactis Simulatorは、モデルの実行を可視化します。Simulatorのユーザーインターフェー スは、従来のプログラミング言語のデバッガに似ています。その為ユーザーは、ブレイクポイン トをセットするのと同様、手動でモデルをステップ実行する事ができます。 Simulatorは、逆実行、Reactis Testerで生成されたテストのリプレイ、異なるカバレッジメトリ クスをグラフィカル表示、データアイテムバリュー表示、テスターが生成したテストスイートを調 整する機能などをサポートします。 Reactis Validator Reactis Validatorは、ユーザー定義された要求違反を自動検出します。 もしValidatorが違反を検出すれば、その問題へと導くテストに戻します。 そして、その問題につながる一連のイベントを理解するために、Reactis Simulatorがこのテ ストを実行する事もあります。Validatorは、デザインエラー、矛盾の早期検出を可能にし、デ ザインのレビューを容易にします。 Validatorで実行されるチェックの例は次の通りです。 *変数の数値は、要求範囲から逸脱しないか。 *自動車のクルーズコントロールは、設定されたスピードを許容できる範囲内で維持で きるか。 *飛行機の逆推力装置は、離陸時に連動するか。 *レントゲン機は、危険範囲の放射能を放出していないか。 *携帯電話は、サービス圏内から圏外に移動した時に省電力モードになるか。 高度なモデルバリデーション Reactisのモデル妥当性確認の性能により、技術者はバグを早期検出し、修正にかかるコス ト削減を実現します。 MBDは、設計段階(例えば、モデリング)で、主にシステムデザインの欠陥を検出し、修正す る事に貢献します。システムの初期段階で検出すれば、コストも少なく、修正にも時間がかか りません。さらに、適切なツールのサポートにより、モデルレベルでの欠陥検出の確率が著しく 上昇します。このセクションでは、技術者のより良いモデル構築をサポートするReactisの高度 なモデルバリデーション機能について詳しく述べていきます。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 7 of 15 テスターとシミュレーターによるデバッグ Reactis TesterとSimulatorは、被検証モデルを徹底的に試行したテストスイートの自動生 成(Reactis Tester)、そしてモデル内で実行された時のテストの可視化(Reactis Simulator) によって、モデルデバッグをサポートします。TesterとSimulatorのこのような利用シナリオの 一つを図5に示します。TesterのGuided Simulationテスト生成アルゴリズムが、テスト生成 中にモデルを徹底的にシミュレーションするので、ランタイムエラーを何度も検出します。例え ば、オーバーフロー、ミッシングケース、インデックスの悪い配列をなどが検出されます。このタ イプのエラーはSimulinkでシミュレーションを実行するときにも検出されます。しかしながら、 テスターのGuided Simulationエンジンは、ランダムにシミュレーションするのと比較し、かな り徹底的にモデルをシステマティックに試行をする事から、このようなモデリングの問題を検出 する確率はReactisを利用する事で高くなります。 図5:Reactis Tester とSimulatorによるモデルデバッグ Testerの生成したテストは、多くの有用なモデルデバッグのパターンを備えるので、 Simulatorで実行される事もあります。図6にいくつかの例が示されます。 図6は、自動車のクルーズコントロールシステムのSimulink / Stateflowモデルを実行した Reactisのスクリーンショットです。これは、Reactisにサンプルとして含まれている複数のアプ リケーションの一つです。図のメインウィンドウには、左にモデルの階層、右にはモデルの Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 8 of 15 Stateflowダイアグラムの実行のスナップショットが表示されています。Reactisはモデルの実 行を視覚化する場合、ユーザーは次の3種類の入力値から選択できます。 1.テスターで生成されたテストから入力値を読込む 2.ランダムに生成 3.ユーザーによって対話的に供給 図の通り、入力値はTesterで生成されたテストスイートのテスト6からのものです。図に示さ れた以外のモデルデバッグ機能は次の通りです。 *モデル動作シミュレーション時、各ステップ実行で進み、戻り(逆実行)が可能 *Stateflow変数の数値、あるいはSimulinkのブロック、信号を「スコープ」上で観察 可能。図中のスコープでは、Stateflow変数modeの数値の変化する過程を表示。 このスコープを開くには、ダイアグラムパネルのmode変数を右クリックして” open scope"を選択。 *Simulinkブロック、信号、またはStateflow変数の現在値は、マウスを動かしその 上にカーソルをおくと表示される。 *ユーザーはブレイクポイントを設定できる。この例では、ブレイクポイントはActive of the Mode subsystemにセットされている。そのため、シミュレーション開始後、 この状態になると一時停止し、モデルを注意深く調査する事ができる。シミュレ ーションはmodeに何か入力(テストから読み込んだ物、ランダムに生成された 物、あるいはユーザーに供給される物のいずれか)することで再開される。 *スナップショットにも見られる通り、モデルの現在のシミュレーション状態は緑で、 まだ試行されていない部分は赤でハイライトされ容易に認識が可能である。 図6:Simulatorのモデルデバッギング機能 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 9 of 15 Validatorによるモデルの妥当性検証 Reactis Validatorには高度なモデルバリデーション機能があります。Validatorは、モデル の欠陥と矛盾を検出します。アサーションとして要求を明確に記述してモデルに挿入し、アサ ーションの違反を招くモデルのシミュレーションを自動検出することが可能です。Validatorが アサーション違反を検出すると、その問題へと導くテストに反映されます。このテストは、問題 の原因を特定する一連のイベントを理解するためReactis Simulatorで実行されます。 Validatorにはユーザー定義のカバレッジターゲットを実行するテストを検出する使用法もあり ます。Validatorは、デザインエラーと矛盾を早期に検出し、デザインレビューにかかる労力を 軽減します。 図7:Reactis Validator Usage 図7は、Validatorの使用方法を表しています。まずモデルに、チェックの為のアサーション とユーザー定義のカバレッジターゲットを加えます。以降の説明では、このようなアサーション やカバレッジターゲットをバリデータオブジェクティブと呼びます。次に、アサーション違反と特 定のカバレッジターゲットへと導くパスを検出する為、そのモデル上にValidatorが起動されま す。Validator実行のアウトプットは、分析中に検出されたオブジェクティブへと導くテストを含 むテストスイートです。Validator オブジェクティブは、モデルのどのSimulink やStateflowにも 加えられます。 Simulinkモデルにオブジェクティブを作り出す二つのメカニズムは次の通りです。 Expression オブジェクティブ(以下、 E-オブジェクティブ)は、C言語のようなBoolean 表記で す。 Diagram オブジェクティブ(以下、 D-オブジェクティブ)はSimulink/Stateflowの監視ダイアグラ ムです。 D-オブジェクティブは、ライブラリからSimulinkモデルを特定する為、Reactisの GUIを使用 しモデルに加えられ、モデル内に結線されます。D-オブジェクティブは通常のモデルが構築さ れるのと同様にSimulinkとStateflowを使って作成されます。D-オブジェクティブがモデルに追 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 10 of 15 加されると、それはモデルのヒエラルキーツリーに含まれます。ただし、D-オブジェクティブは 別のライブラリに記録され、制御モデルのある.mdlファイルは変更されずに残ります。 洗練されたモデルデバッグ機能により、Reactisのツールスイートは、市場をリードする Simulink/Stateflowモデリング環境に大きな付加価値を与えます。モデルベースのデバッグに おける優れた点は、技術者が、ソースコードが生成される前にソフトウェアのデバッグを出来る という事です。論理エラーが早い段階で検出されれば、修正にかかるコストを削減する事が可 能です。 高度な実装テスト Reactisによるテスト生成と実行の自動化で、技術者は実装ソフトウェアがモデル内で特定さ れた動作に一致するかどうかを簡単にチェックする事が可能になりました。 モデルデバッグとバリデーションの優れた機能は前述の通りです。これらに費やされた努力 は、システム実装テストをサポートするため、どのように”再利用”されるか、という問題につい て次項で説明します。 ソフトウェアテスト Reactis Testerで生成されたテストの重要な点は、モデルのアウトプットも記録する、という 事です。それ故、これらのテストは、モデルから生成されたソースコードがモデルに一致するこ とを確認するため必要とされる全ての情報を保持します。Reactis-drivenソースコードテスト は次のように行われます。 1.テストスイートに含まれる入力値を使いソフトウェアを実行する 2.テストで記録された出力値とCソースで生成された出力値を比較する 3.矛盾があれば記録する この方法論は、model-based software testingを参照しています。この方法の長所は、モデ ルがテストの目的にベースラインとして機能する事です。モデルで生成されたアウトプットはソ フトウェアで生成されたアウトプットを評価する為の基準として使用されます。ソフトウェアがモ デルと一致しない場合、開発者はソースコードに問題があると確信できます。 Reactisによるモデルベーステストの目指すものは、低コストで高品質のソフトウェアです。良 いテストデータが自動的に生成、実行されるので、技術者はテスト作成、実行にかかる時間を 節約できます。テストは徹底されており、バグを検出する確率は最大限です。また、テストスイ ートがコンパクトなので素早く実行できます。要するに、Reactisは、組込み制御ソフトウェアの テストにかかるコストを劇的に削減します。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 11 of 15 図8ではReactisが、どのようにソースコードの高度なモデルベーステストをサポートするか 示されています。図のように、Reactisでサポートされるモデルベーステストプロトコルは以下 のようになっています。 1.開発者は、開発中システムの、検証済みSimulink/Stateflowモデルを代表する.mdlフ ァイルを、Reactisへのインプットとして提供する。 2.Reactis TesterはReactisによってサポートされる様々なカバレッジ基準に従い、与 えられたモデルを徹底的に試行するテストスイートを自動生成する。 3.開発者は、テスト実行を可視化し、モデルのカバレッジをさらに高める為のテストスイ ートのテストを調整するために、Reactis Simulatorを展開できる。 4.テストスイートとモデルを実装したソフトウェアは、ソースコードテスト工程を自動化す るため、テストハーネスにインプットとして与えられる。 5.テストスイートのテスト実行中、ソフトウェアとモデルによって生成されたアウトプットを 比較する事により、モデルのソースコードの動作における逸脱は用意に検出可能で、 モデルとソースコードの一致を確実にするよう開発者を導きます。 6.テストは、ソースコードがテストスイートのすべてのテストをパスして終了します。 図8:Reactisによるソースコードテスト システムテスト ソフトウェアテスト後、システムを検証する次のステップは、コードをコンパイルし、その結果 生成される実行可能なプログラムをプラットホーム上テストする事です。その為には、マイクロ プロセッサーと、最終的に展開される、関連するシステムソフトウェアが含まれます。このよう なテストは、しばしばシステムテスト、またはインテグレーションテストと呼ばれます。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 12 of 15 システムテストは一般的にHardware- in- the-loop(以下、HIL)シミュレーションツールの使用 を伴います。これらのHILツールは非常に高価で、従って、これらを可能な限り効果的に使用 するのは大幅なコスト削減となります。 システムレベルモデルの提供により、Reactis はシステムテストを大変容易にします。ソフト ウェアテストのケースとして、テスト技術者はモデルから非常にコンパクトなテストスィートを生 成し、モデル動作に背くシステム動作をチェックする為、Reactis TesterとReactis Simulator を使用します。テストスイートがコンパクトと言うのは、高価なHILがシステム動作に対する正 確な結果を得る為の長いテスト実行をする必要がないという事です。 Reactisの生成したテストデータが、どのように利用されるかは使用されるHIL環境によって 異なります。HILツールは、一般的にテスト実行を定義するためにスクリプティング設備を提供 します。Reactisはいくつかの分析可能なフォーマット(例えばカンマで区切られた数値, CSV) にテストデータをエクスポートし、HIL環境にReactisの生成したテストデータを読込むスクリプ トを書く事を容易にします。 レガシーコードのリバースエンジニアリングによるモデル作成 Reactisの自動テスト生成、実行機能により、リバースエンジニアリングで作成されたモデルが、 レガシーコードの動作と一致するかどうか容易に検証できます。 MBD技術は、レガシーシステム協調して動作する重要な役割をも果たします。このようなシス テムは、文書による情報が少なく、基礎をなすコードの脆弱性により、システム要求に合った 修正を加える事は難しくなっています。しかし正確で明瞭なレガシーシステムで動作するモデ ルを持つことは開発者にとって有益です。このようなモデルはフォーマルで、レガシーコードの スペックで実行可能となっています。それによって、システムメンテナンス、ドキュメンテーショ ン、展開を容易にします。このセクションではReactisがコードからどのように引き出し、リバー スエンジニアリングを可能にするのかを説明します。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 13 of 15 図9:レガシーコードからモデルをリバースエンジニアする過程 リバースエンジニアリングは次のように進行します。 1.Simulink/Stateflowモデリング環境が、レガシーコードのモデルのドラフト作成に使用 されます。 2.結果として生じる.mdlファイルをReactis Testerに投入し、モデルからテストスイート を自動生成します。そして.rstファイル(Reactis test suite file)というテストスイー トファイルが作られます。生成されたテストスイートは複数のカバレッジ基準により ドラフトモデルを徹底的に試行します。カバレッジ基準にはStateflowのstateと transition、Simulinkのbranch、そしてMC/DCなどが含まれます。Testerは不必要 なステップを省くため、生成するテストスイートの余分な部分を削除します。 3.Reactis SimulatorはReactis Testerで生成されたテストを元に実行を可視化する 為に使用されます。また、モデルカバレッジをさらに改善するためテストスイートを 調整する為にも使用されます。 4.テストスイートは、CSVファイルとしてエクスポートされ、テストスイートをレガシーコー ドに適用する工程を自動化するテストハーネスにインプットとして与えられます。 5.レガシーコードから生成された出力とモデルによって生成された出力を比較すること により、動作の偏向は容易に検出されレガシーシステムの動作を正確に捉えるこ とを確実にし、ユーザーがモデルを改良できるようにガイドします。 6.モデルのリバースエンジニアリングは、コードがモデルから生成されたすべてのテスト をパスして終わります。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 14 of 15 レガシーシステムと協調するモデルを持つ事の長所は、モデルがコードのフォーマルで実行 可能な仕様として務めることです。それによりコードメンテナンス、ドキュメンテーション、展開 のタスクを容易にします。 結論 この紙面では、市場をリードするThe MathWorksの提供する Simulink/Stateflowモデリング 環境に、Reactisのツールスイートが重要な付加価値を提供するいくつかの方法について述 べてきました。洗練されたモデルデバッグ機能を通して、Reactisは、エンジニアがシステム実 装に着手する前にソフトウェアをデバッグすることを可能にします。早期にデザインエラーが検 出可能なことで、修正にかかるコストを削減し、優れたモデルデバッグによりソフトウェア全体 にかかるコストを削減できます。また、Reactisで生成された分かりやすくコンパクトなテストス イートはモデルとシステムの整合性検証や、現存するコントロールソフトウェアからのモデルの リバースエンジニアリングにかかるコストを大幅に削減する事ができます。現在重要な手作業 での努力が要求される作業を自動化することにより、Reactisは開発にかかるコストを削減し ます。テストとバリデーションを徹底的に行い、システムが駆動される前にエラーを検出し、修 正することが可能です。それ故、リコールや賠償責任などにかかるコストを削減できます。 ReactisはReactive Systems, inc.にて現在販売されております。オーダーに関する情報や、 30日間無料でご試用いただけるソフトウェアの入手方法については、当社のWEBサイト www.reactive-systems.comをご覧ください。 Copyright © 2006 Reactive Systems, Inc. All rights reserved. Page 15 of 15