SimulinkモデルがCコードに変換され、Carに流れ込む様子を示す図

Reactis プロダクトファミリー: Simulinkモデル, C コード テスティングツール

プロダクト 概  要
Reactis for Simulink テストスイート生成, シミュレーション, Simulink® / Stateflow® モデル検証
Reactis for EML Plugin Reactis が Embedded MATLAB® をサポートするためのオプション
Reactis for C Plugin Reactis が モデルに含まれる C コードの検証サポートするためのオプション (C Caller blocks, S-Functions 及び Stateflow custom code)
Reactis Model Inspector 独立した製品、軽快に動く Simulink Viewer
Reactis for C テストスイート生成, シミュレーション, C コード検証 (モデルには含まれないコードを検証)

Reactis for Simulink

Reactis for Simulink は、MathWorks社のSimulinkで作成された SLX ファイルを読込み、検証する事が可能です。 Reactis は、3つのコンポーネントで 構成されます。: Reactis Tester, Reactis Simulator, そして Reactis Validator です。

Reactis Tester

自動でテストデータを生成
  • 予期せぬ入力でランタイムエラーが発生する?
  • 自分のモデルのどれだけの部分が本当にテストできている?

Reactis Tester は、 guided simulation と呼ばれる特許技術に基づくテストスイート生成コンポーネントです。ツールは、様々な カバレッジメトリックスをデータ生成と同時に計測します。そして未到達なカバレッジメトリクス を使って、更にデータを拡張します。

generate tests from Simulink/Stateflow model

カバレッジメトリクスとは、一般的な Decision, Condition, と Modified Condition/Decision Coverage (MC/DC), Simulink 特有の ブランチ や サブシステム, そして Stateflow 特有の ステート, コンディションアクション, や トランジションアクション 等です。

comparing code to a model

モデルに対する生成されたコード(自動生成、ハンドコード)のテストは、 Reactisなら容易に行う事が可能:

  1. モデルからテストスイートを生成
  2. テストスイートをコード上で実行
  3. 出力値の差分を自動的に検出、エラーとしてレポート

Reactis Simulator

シミュレーションとデバッグ

バグを理解し、影響分析、修正するためには?

  • 一つのブロックを実行、1ステップ実行、複数ステップ実行。
  • リバース実行。
  • 変数値の確認、マウスによりホバー、スコープによる確認、変数の監視(watched variable)。
  • 未実行箇所を赤でハイライト。
  • 詳細なカバレッジレポート生成。
  • ブレークポイントの設定。
  • Reactis for C Plugin や Reactis for EML Pluginを使用すると、さらに高度なソースコード デバッガーになります。ReactisのGUIを通して、Simulink, Stateflow, Embedded MATLAB、Cコードの 情報を統合的にコントロールする事が可能となります。
debug Simulink models

Reactis Validator

要求事項のチェック
  • ブレーキは常にクルーズコントロールを解除する?

Validator はテストスイートを使用し、モデルの検証作業を行います。ユーザは、 まず初めにモデルを監視するための条件(モデルや式)を装着します。 Validatorは、次にテストスイート生成コンポーネントのTesterを使いデータを生成し、 違反を引き起こすデータが無いか確認します。

verify Simulink models

監視するための条件とは、 assertionsuser-defined targets の事です。 Assertions の条件は、もしモデルの機能が正しく動作すると、常に true であることが求められます。 User-defined targets の条件は、常にテストされなくてはなりません。 テストスイート生成の間、Reactisは assertions の違反を監視し、そしてuser-defined targets を カバーする事を試みます。assertions と user-defined targets は、C コードの式、又は Simulink/Stateflow を 使ったモデルとして記述します。

 

Reactis for C

Reactis for C は、Cコード(自動生成、ハンドコード)のテストスイート生成、シミュレーション、 そして検証作業をサポートします。 Reactis for C を構成する3つのメインコンポーネントは: Reactis Tester, Reactis Simulator, そして Reactis Validatorです。

Reactis Tester

テストデータの自動生成
  • 予期せぬ入力でランタイムエラーが発生する?
  • 自分のコードのどれだけの部分が本当にテストできている?

Reactis Tester は、 guided simulation と呼ばれる特許技術に基づくテストスイート生成コンポーネントです。ツールは、様々な カバレッジメトリックスをデータ生成と同時に計測します。そして未到達なカバレッジメトリクス を使って、更にデータを拡張します。 カバレッジメトリクスには、ステートメント、デシジョン、 コンディション、 Modified Condition/Decision Coverage (MC/DC), Function, and Function Call 等があります。

generate tests from C code

Reactis Tester により生成されたテストスイートは、Cコードのランタイムエラーを検出するために利用されます。 特にメモリーエラーは容易に発生し、デバッグは非常に難しいと言えます。なぜなら 不正なアドレスへのreads-from や writes-to により発生する 非常に一般的なエラーと言えます。原因の一つは、Cプログラムのメモリーに直接アクセスを許している為です。 この事によりパフォーマンスは向上されますが、エラー発生の可能性を増加させます。

Reactisにより検出されるエラーには、out-of-bounds array indexes, buffer overruns, 無効なメモリー領域を指すポインター (解放処理の後にメモリ領域を参照する)、 無効な stack pointers (関数の処理終了後に、その関数のローカル変数へのポインターアクセス)、 そして 無効な数値により、ポインターへのキャストが行われる。 Reactis Tester は、これらのエラーを検出するだけでなく、Reactis Simulator により実行された 情報もユーザにフィードバックします。

Reactis Simulator

シミュレートとデバッグ

バグを理解し、影響分析、修正するためには?

  • 一つのステートメントを実行; ステップイン, オーバー, 関数を抜ける, 全てのステップを実行、複数のステップのみ実行。
  • リバース実行。
  • データの値、マウスによりホバー、スコープを開く、変数をウォッチに追加。
  • 未実行のステートメントは赤でハイライト。
  • 詳細なカバレッジレポートを自動生成。
  • ブレークポイント設定。
debug Simulink models

Reactis Validator

Check requirements
  • ブレーキは常にクルーズコントロールを解除する?

Validator は、テストスイートを使用し C コードの検証を行います。ユーザは、 まず初めにコードを監視するための条件(式)装着します。 Validator は、次にテストスイート生成コンポーネントの Tester を使いデータを生成し、 違反を引き起こすデータが無いか確認します。

verify C code

ランタイムエラーの排除は重要です。しかし高品質のソフトウェアへの 一歩に過ぎません。クラッシュはしないが、誤った動作をするプログラムも 見過ごす事は出来ません。Reactis Validator は、あなたのプログラムが 適切に動作するか検証する為の定式化とチェックを提供します。 チェックは、Cのアサート機構と同様に定式化されます。