MATLAB/Simulink検証製品の 最新動向と活用術 · MATLAB/Simulink検証製品の...
Transcript of MATLAB/Simulink検証製品の 最新動向と活用術 · MATLAB/Simulink検証製品の...
1© 2014 The MathWorks, Inc.
MATLAB/Simulink検証製品の最新動向と活用術
MathWorks
伊藤泰充
2
日本はMBDの最前線
日本におけるMBDの特徴
日本人としての特性
– 個々人がプロセス全体の最適化を図ろうとする
– 開発プロセスをきっちりと構築しようとする
– 組織的な活動を得意とする
JMAABによる活動とその成果物の浸透
特に検証分野においてMBDの積極利用が顕著
3
なぜモデル検証を利用するのか?
MBDの効用• データフローの可視化による理解のしやすさ、再利用性の向上• シミュレーションによるバーチャル世界での実現性の早期確認• 自動コード生成による実装工数の短縮
開発プロセスを改善することによる狙い• 高品質の確保• 開発工数の削減→ 開発の中で最も工数を要する検証工程の改善がカギとなる
検証ツール導入によって期待される恩恵• 検証のフロントローディングによる不具合の早期発見• 自動化による不要な手作業工数の削減• 検査点数の拡大
4
本講演におけるVプロセス
要求
要求モデル
実装モデル
オブジェクト
要求とモデルの一致性検証
モデルとオブジェクトの一致性検証
モデル検証
5
Simulink®検証製品の概要と新機能
6
Simulink検証製品
Simulink® Verification and Validation™
– モデルカバレッジ測定
– 要求トレーサビリティの確保
– モデルアドバイザのカスタマイズと業界標準チェック
要求
要求モデル
実装モデル
オブジェクト
Simulink® Design Verifier™
– テストケースの自動生成
– プロパティ証明
– 設計エラー検出
7
モデルカバレッジ測定
シミュレーション時に達成されたモデルの網羅度を定量的に測定– 判定カバレッジ
– 条件カバレッジ
– MCDCカバレッジ
– Lookup Tableカバレッジ
– 信号範囲カバレッジ
– ユーザ定義カバレッジ
要求
要求モデル
実装モデル
オブジェクトテスト信号
test1
test2
test3
test4
Simulink Verification and Validation
8
テストケースの自動生成
モデルカバレッジを満たすテストケースを自動生成
判定カバレッジ
条件カバレッジ
MCDCカバレッジ
ユーザ定義カバレッジ
要求
要求モデル
実装モデル
オブジェクトSimulink Design Verifier
9
プロパティ証明
制御モデルに対し、その振る舞うべき条件(検証式)を定義することによって、(時系列を含めた)あらゆるモデル入力に対するその条件の成立性を証明する機能
要求
要求モデル
実装モデル
オブジェクトSimulink Design Verifier
10
設計エラー検出
次の設計エラーの有無を証明し、反例があれば生成する
デッドロジック
整数オーバーフロー
ゼロ除算
指定された最小/最大中間値をチェック
範囲外配列アクセス
要求
要求モデル
実装モデル
オブジェクトSimulink Design Verifier
11
近年に追加された主な新機能
Simulink Verification and Validation (カバレッジ関連)
モデルカバレッジフィルタ (R2011a)
整数オーバーフローで飽和カバレッジ(R2012a)
カバレッジ測定結果のWebView対応 (R2014a)
Simulink Design Verifier
テスト自動生成エンジンが非線形演算に強化 (R2011a)
R2011b+をWebリリース
設計エラー検出が設計Min/Maxに対応 (R2011b)
設計エラー検出がデッドロジックに対応 (R2012a)
設計エラー検出が範囲外配列アクセスに対応 (R2013a)
解析状況を解析中にハイライト表示(R2013b)
パラメータ設定を簡便化するGUI (R2014a)
12
Simulink Design Verifier
Simulink Verification and Validationの日本語化
R2014a
13
Simulink検証製品の有効活用術
14
モデルカバレッジ測定によりテスト網羅度の定量化
上流工程から、モデルのカバレッジ測定を行い、受け入れ基準を設けることにより、品質を見える化する
例:
要求モデル・結合レベル 判定カバレッジ100%
実装モデル・単体レベル MCDCカバレッジ100%
期待値との一致比較により上流での
高品質の確保につながる
要求
要求モデル
実装モデル
オブジェクトSimulink Verification and Validation
15
自動テストと手動テストの使い分け #1
要求とモデルの一致性検証において
要求
要求モデル
実装モデル
オブジェクト
手動テストと自動テストのハイブリッド
– 主要な振る舞いはテスト+期待値を
手動にて作成する
– 手動テストで網羅されないパスを自動テスト
で生成する
自動テストを主に利用する場合
– 短時間に高いカバレッジのテストケースを生成可能
– 生成されたテストケースに対してシミュレーション結果が期
待値通りかを確認 (自動生成されたテストは必ずしも想
定されるシナリオに従わない)
16
自動テストと手動テストの使い分け #2
モデルとコード(オブジェクト)一致性検証について
→ 期待値はシミュレーション結果となる
自動テストをフルに活用可能
上位モデルに利用したテストを再利用
過去モデルで利用したテストを再利用 要求
要求モデル
実装モデル
オブジェクト
17
手動テストの記述方法ExcelからSignalBuilderへのインポート
Excel上で設計したテストケースをSimulinkに取り込み可能
– 入力対して期待値を与える
Simulink
18
形式検証ツールの有効活用 #1
Simulink Design Verifierは、Simulinkモデルを変換し、数理論理学を基にする形式手法エンジンによってその解析を行う
特徴
到達性・非到達性に関して証明を行うことができる
条件の組み合わせに対して強力であり網羅性が高い
複数エンジンが内部で利用され最適化されている
弱点
エンジンの厳密さゆえ、どのようなモデルに対しても解が収束する訳では無い
Simulink Design Verifier
19
形式検証ツールの有効活用 #2
条件判断部と計算部をできるだけ分ける
条件判断を行う部分と、その結果に応じた計算を行う部分をできるだけ分けたアーキテクチャを採用する
Simulink Design Verifier
20
形式検証ツールの有効活用 #3
単体レベルから適用を始める
いきなり大規模モデルに適用しても、「思ったように結果が得られない」で終わるケース
対処方法:
単体レベルから適用を行う
単体テストの積み上げを大規模モデルのテストに活用する
slvnvextractコマンドによりアトミックサブシステムの切り出
しが可能
Simulink Design Verifier
21
形式検証ツールの有効活用 #4
ツールの特性を理解し、対処する
非線形演算の例– 浮動小数点同士の乗算 (x*y)
– 浮動小数点除算 (c/z)
– 浮動小数点変数→整数キャスト
対処方法:
– 「テストスイートの最適化」に Nonlinear Extended を用
いる(テスト生成の場合)
– 浮動小数点を数点の代表値に固定する
Simulink Design Verifier
22
形式検証ツールの有効活用 #5
タイマー・カウンタに対する対処
タイマー・カウンタは、ボトルネックの代表格
対処方法:
タイマーカウント値の縮小化例:ステップサイズ:1ms、1,3,10秒のタイマー → ステップサイズを0.5秒にして解析を行う
タイマー・カウンタは単体検証で保証し、スタブ化する
「既存テストケースを拡張する」を利用し、タイマー・カウンタ部分は手動テストとして与える(テスト生成の場合)
Simulink Design Verifier
23
「既存テストケースを拡張する」を利用
「既存テストケースを拡張する」を利用することで、手動で作成したテストケースを再利用し、拡張することが可能
sldvlogsignalsコマンドを利用し作成
既存テストケースの最終ステップ状態からも解析が行われるSimulink Design Verifier
24
MCDCカバレッジを超える網羅度のテスト
Test Objectiveブロック、sldv.test関数(Stateflow, MATLAB Function内)によりカスタムテストを生成可能
ブロック置換機能等によりTest Objectiveの自動埋め込み
Simulink Design Verifier
25
最新バージョンでの自動テスト生成結果を量産バージョンで利用
量産向けにバージョンは固定したい
担保したい部分はシミュレーション結果と生成コード
テストケース自身は量産バージョンと独立して考えることも可能
対処方法:
テスト自動生成を最新バージョンで行い、テストケースを含むデータファイル(MAT-ファイル)を量産バージョンで取り込み、利用する
slvnvmakeharness コマンドを参照
Simulink Design Verifier
26
APIの利用による自動化
MBDプロセスは各社様々
アプリケーション、開発環境・サイクル、ビジネスモデルなどによる
手作業を最小化するためにAPIを利用して定型作業を自動化
将来のツールの進化に沿ったカスタマイズが求められる
→ MathWorksコンサルティングサービスの活用
MBD環境構築エンジニアの育成
「MATLABによるSimulink開発環境の自動化」トレーニングを利用することで基礎を習得可能→ 担当営業までお問い合わせ下さい
27
まとめ検証ツール有効活用のポイント
自動化
– テストケース作成
– テストシミュレーション→判定→レポートの自動実行
– APIを利用した開発環境の構築
再利用
– 上流テストを下流テストで再利用
ツールの利点/弱点を理解し、いいとこ取りをする