(57)【要約】システム及び方法は、設計モデルと、インターフェース仕様と、該設計モデルをテストする１以上のテストとの間の整合性を自動的に確保する。該システムは、該インターフェース仕様を作成するように構成されたブローカーを備えることができる。該インターフェース仕様は、該設計モデルのインターフェース、たとえば、該設計モデルの外部入力、外部出力、及び初期化設定を識別する。該インターフェース仕様はまた、該テストの出力、入力、及び初期化設定オブジェクトを識別することができる。該設計モデルのインターフェース、該インターフェース仕様、及び該テストのインターフェースのうちの任意の１つに対する提案された変更を、ブローカーによって捕捉することができ、及び、他の２つに適用することができる。【選択図】図１７
2016506550.tif 000002
【特許請求の範囲】
【請求項１】
実行可能なセマンティクスを有するコンピュータベースの設計モデルを受け取るステップであって、該設計モデルは複数のインターフェース要素を有する、ステップと、
複数のインターフェース要素を有するテストを前記設計モデルに関連付けるステップと、
インターフェース仕様を生成するステップであって、該インターフェース要素は、前記設計モデルのインターフェース要素の、対応する前記テストのインターフェース要素に対するマッピングを含む、ステップと、
前記インターフェース仕様に対する変更を受け取るステップと、
前記インターフェース仕様に対する前記変更に適合するように前記設計モデルを自動的に変更するステップと、
前記インターフェース仕様に対する前記変更に適合するように前記テストを自動的に変更するステップ
を含む方法。
【請求項２】
複数のテストが前記設計モデルに関連付けられており、
前記インターフェース仕様に対する前記変更に適合するように前記複数のテストを自動的に変更するステップ
をさらに含む、請求項１の方法。
【請求項３】
前記インターフェース仕様に対する前記変更、前記設計モデルに対する前記変更、及び、前記テストに対する前記変更が、単一のトランザクションの一部として実行される、請求項１の方法。
【請求項４】
前記テストを分析して、前記設計モデルの前記インターフェース要素に対応する前記テストのそれぞれのインターフェース要素を識別するステップをさらに含む、請求項１の方法。
【請求項５】
前記設計モデルの前記インターフェース要素が、
外部入力と、
外部出力と、
初期化設定と、
モデルレベルの設定と、
モデルレベルのパラメータと、
制御信号
とのうちの１以上を含むことからなる、請求項１の方法。
【請求項６】
前記インターフェース仕様の表示可能な形態を生成するステップと、
前記インターフェース仕様の前記表示可能な形態をユーザーに提示するステップ
をさらに含む、請求項１の方法。
【請求項７】
前記インターフェース仕様の前記表示可能な形態がユーザーによって編集可能であり、
前記インターフェース仕様に対する前記変更が、前記ユーザーに提示された前記インターフェース仕様の前記表示可能な形態を介して受け取られる、請求項６の方法。
【請求項８】
前記設計モデルに対する前記変更に対してデフォルト条件が必要であるかを自動的に判定するステップと、
前記デフォルト条件が必要であると判定された場合には、所定のデフォルト条件を選択するステップと、
前記所定のデフォルト条件を前記設計モデルに対する前記変更に割り当てるステップ
をさらに含む、請求項１の方法。
【請求項９】
前記所定のデフォルト条件は、前記設計モデルに対する前記変更の後の前記設計モデルの実行が成功することを可能にする、請求項８の方法。
【請求項１０】
前記設計モデルに対する前記変更が、新しい入力であり、
前記所定のデフォルト条件が、前記新しい入力に対するグラウンド値である、請求項９の方法。
【請求項１１】
実行可能なセマンティクスを有するコンピュータベースのテストモデルを受け取るステップであって、該テストモデルはサブモデルへの参照を含み、該サブモデルは、複数のインターフェース要素を有する、ステップと、
前記サブモデルへの前記参照を用いて前記複数のインターフェース要素を介してやり取りされるデータを記録するための手段を前記テストモデルに設けるステップと、
前記テストモデルの１以上の実行中に、前記サブモデルへの前記参照を用いてやり取りされる前記ログデータを取得するステップと、
前記取得されたログデータを用いて設計モデル用のデータ駆動型テストを自動的に生成するステップであって、前記データ駆動型テストは、前記サブモデルの前記インターフェース要素への前記取得されたログデータのマッピングを含む、ステップ
を含む方法。
【請求項１２】
前記サブモデルは、前記設計モデルの１つのバージョンを表す、請求項１１の方法。
【請求項１３】
前記サブモデルへの前記参照は、前記テストモデルのモデル参照ブロックである、請求項１１の方法。
【請求項１４】
前記テストモデルと前記サブモデルは、グラフィックモデルである、請求項１１の方法。
【請求項１５】
前記取得したログデータは複数の信号トレースを含み、
前記取得したログデータの信号トレースを、前記サブモデルのインターフェース要素にマッピングするステップをさらに含む、請求項１１の方法。
【請求項１６】
前記サブモデルのインターフェース要素の少なくともいくつかは、前記テストモデルのそれぞれのインターフェース要素に結合され、
前記サブモデルのインターフェース要素及び前記テストモデルのインターフェース要素に関する情報を格納しているインターフェース仕様にアクセスするステップと、
前記インターフェース仕様に格納されている前記情報を用いて前記マッピングを実行するステップ
をさらに含む、請求項１５の方法。
【請求項１７】
前記設計モデルは、該設計モデルの実行中に結果を生成し、
前記データ駆動型テストが、
前記設計モデルによって処理するための入力データと、
前記設計モデルの実行中に生成された前記結果と比較するための出力データ
を含むことからなる、請求項１１の方法。
【請求項１８】
プログラム命令を含んでいるコンピュータ可読媒体であって、
前記プログラム命令は、処理要素によって実行されると、
実行可能なセマンティクスを有するコンピュータベースの設計モデルを受け取るステップであって、該設計モデルは複数のインターフェース要素を有することからなる、ステップと、
前記設計モデルにテストを関連付けるステップであって、該テストは複数のインターフェース要素を有することからなる、ステップと、
インターフェース仕様を生成するステップであって、該インターフェース仕様は、前記設計モデルのインターフェース要素の、対応する前記テストのインターフェース要素に対するマッピングを含む、ステップと、
前記設計モデルのインターフェース要素のうちの１つに対する変更、または、前記テストのインターフェース要素のうちの１つに対する変更、または、前記インターフェース仕様に対する変更を受け取るステップと、
前記受け取った変更が、前記設計モデルのインターフェース要素のうちの１つに対する変更である場合には、該受け取った変更に適合するように、前記インターフェース仕様と、前記テストの１以上のインターフェース要素とを自動的に変更するステップと、
前記受け取った変更が、前記テストのインターフェース要素のうちの１つに対する変更である場合には、該受け取った変更に適合するように、前記インターフェース仕様と、前記設計モデルの１以上のインターフェース要素とを自動的に変更するステップと、
前記受け取った変更が、前記インターフェース仕様に対する変更である場合には、該受け取った変更に適合するように、前記設計モデルの１以上のインターフェース要素と、前記テストの１以上のインターフェース要素とを自動的に変更するステップ
を実行するように動作可能であることからなる、コンピュータ可読媒体。
【請求項１９】
前記設計モデルのインターフェース要素の１つに対する前記受け取った変更に対してデフォルト条件が必要であるか否かを自動的に判定し、
前記デフォルト条件が必要であると判定した場合には、所定のデフォルト条件を選択し、
前記所定のデフォルト条件を、前記設計モデルのインターフェース要素の１つに対する前記受け取った変更に割り当てる
ためのプログラム命令をさらに含む、請求項１８のコンピュータ可読媒体。
【請求項２０】
前記所定のデフォルト条件はグラウンド値である、請求項１９のコンピュータ可読媒体。
【請求項２１】
コンテナを格納するように構成されたメモリと、
前記メモリに結合されたプロセッサ
を備える装置であって、
前記コンテナは、
実行可能なセマンティクスを有する設計モデルであって、複数のインターフェース要素を有する設計モデルと、
前記設計モデルに関連付けられたテストであって、複数のインターフェース要素を有するテストと、
前記設計モデルのインターフェース要素を、前記テストの対応するインターフェース要素にマッピングするインターフェース仕様
を格納し、
前記プロセッサは、
前記インターフェース仕様に対する変更を受け取り、
前記変更に適合するように前記設計モデルを自動的に変更し、
前記変更に適合するように前記テストを自動的に変更する
ように構成されることからなる、装置。
【請求項２２】
前記複数のインターフェース要素は、少なくとも１つの読み出し可能／書き込み可能なインターフェース要素を含む、請求項２１の装置。
【請求項２３】
前記少なくとも１つの読み出し可能／書き込み可能なインターフェース要素は、データ格納メモリ、または、間接参照及び／または書き込みがされるように構成されたポインタである、請求項２２の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、Robert O. Aberg、Andrew C. Grace、及びPeter S. Szpakによって２０１２年１０月２８日に提出された「Self-TestingGraphical Component Algorithm Specification」と題する（本願と出願人が同一である）同時係属の米国特許出願第１３／６６２，５２９号の一部継続出願である。当該米国特許出願の全開示内容は、参照によって本明細書に組み込まれるものとする。
【先行技術文献】
【特許文献】
【０００２】
【特許文献１】米国特許第７，３２４，９３１号明細書
【特許文献２】米国特許第７，９９１，５９８号明細書
【図面の簡単な説明】
【０００３】
下記の本発明の説明は、添付の図面を参照している。
【図１】本発明に使用するのに適したデータ処理システムの略ブロック図である。
【図２】本発明の１実施形態にしたがうモデリング環境の部分的な機能図である。
【図３】本発明の１実施形態にしたがう、実行可能なセマンティクス（executable semantics）を有するグラフィックデザインモデルを示す図である。
【図４Ａ】本発明の１実施形態にしたがうインターフェース仕様を示す図である。
【図４Ｂ】本発明の１実施形態にしたがうインターフェース仕様を示す図である。
【図５Ａ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図５Ｂ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図５Ｃ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図５Ｄ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図５Ｅ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図６】本発明の１実施形態にしたがう実行可能なセマンティクスを有するテストモデルを示す図である。
【図７】図６のテストモデルのソースコンポーネント用の構成ウィンドウを示す図である。
【図８】図３のグラフィックデザインモデルの変更バージョンを示す図である。
【図９】図６のテストモデルの変更バージョンを示す図である。
【図１０】図７のソースコンポーネントの変更バージョン用の構成ウィンドウを示す図である。
【図１１】本発明の別の実施形態にしたがうテストモデルを示す図である。
【図１２】本発明の別の実施形態にしたがうテストモデルを示す図である。
【図１３】本発明の１実施形態にしたがうヒューマンマシンインターフェース（ＨＭＩ）テストモデルを示す図である。
【図１４】本発明の１実施形態にしたがう分散コンピューティング環境の略図である。
【図１５】本発明の１実施形態にしたがうモデリング環境の部分機能図である。
【図１６Ａ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図１６Ｂ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図１７】本発明の１実施形態にしたがうデザインプロジェクトコンテナ用のホーム画面の略図である。
【図１８】本発明の１実施形態にしたがう実行可能なセマンティクスを有するグラフィックデザインモデルを示す図である。
【図１９】本発明の１実施形態にしたがう実行可能なセマンティクスを有するテストモデルを示す図である。
【図２０】本発明の１実施形態にしたがうインターフェース仕様を示す図である。
【図２１Ａ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図２１Ｂ】本発明の１実施形態にしたがう１方法のフローチャートである。
【図２２】本発明の１実施形態にしたがう１方法のフローチャートである。
【図２３】本発明の１実施形態にしたがう実行可能なセマンティクスを有する親グラフィックモデルを示す図である。
【図２４】本発明の１実施形態にしたがう１方法のフローチャートである。
【発明を実施するための形態】
【０００４】
本発明の１実施形態は、設計モデルと、インターフェース仕様と、該設計モデルをテストするために作成された１以上のテストとの間の整合性を自動的に確保するためのシステム及び方法に関連する。設計モデルは、１以上の外部入力、１以上の外部出力、１以上の初期化設定（初期化設定は初期設定ともいう）、及び１以上のパラメータを含むインターフェースを有することができる。実行中、設計モデルは、その入力でデータを受け取り、初期化設定及びパラメータに基づいてそのデータを処理し、結果を計算して、計算した結果をその出力に提示する。１以上のテストは、設計モデルの入力及び出力の少なくとも一部に対応する出力及び入力を含むことができる。典型的なテストは、テストモデル、テストハーネス、テストプログラムもしくはテストスクリプト、データ駆動型テスト（data driven test）などを含み、開ループテストまたは閉ループテストでありうる。テストモデルは、その出力に対するデータを指定することができ、該データを設計モデルの入力を駆動するために使用することができ、これによって、設計モデルをテストすることができる。テストモデルは、（設計モデルの出力によって駆動される）その入力に対して、データロギング、または、合格／失敗の基準などのテスト基準を指定することもできる。テストモデルまたは他のテストはまた、設計モデルのテストラン中に該設計モデルの初期化設定及びパラメータの値を指定するために、１以上の初期化設定及びパラメータ設定オブジェクトを含むことができる。テスト中の設計モデルを、非試験装置（ＤＵＴ）や被試験ユニット（ＵＵＴ）と呼ぶことができる。
【０００５】
ブローカー（broker）を、インターフェース仕様を作成するように構成することができる。インターフェース仕様は、設計モデルの外部入力、外部出力、初期化設定、及びパラメータを特定することができる。インターフェース仕様はまた、テストの出力、入力、初期化設定オブジェクト、及びパラメータ設定オブジェクトを指定することができる。設計モデルのインターフェースに対する提案された変更は、たとえばユーザー起動の編集を介して、ブローカーによって捕捉される。ブローカーは、設計モデルとインターフェース仕様とテストと間の整合性を維持するために行う必要がある、テスト及びインターフェース仕様に対する１以上の対応する変更を決定することができる。設計モデルのインターフェースに対する提案された変更が実行されて、インターフェース仕様及びテストに対する決定された変更が自動的に適用され、これによって、インターフェース仕様及びテストは、変更された設計モデルとの整合性を維持する。設計モデルに対する、該設計モデルのインターフェースを変えない変更は、ブローカーによって無視することができ、該変更が、インターフェース仕様またはテストに対して対応する変更を何ら生じないようにすることができる（本明細書における「変更」には、修正ないし部分的な変更が含まれる）。
【０００６】
ブローカーはまた、インターフェース仕様に対する提案された変更を取得ないし捕捉することができる。すなわち、インターフェース仕様をユーザーが編集可能な形態で提示することができる。ブローカーは、インターフェース仕様に対する提案された変更を調べて、設計モデルや他のテストのインターフェースに対する対応する変更を決定する。インターフェース仕様に対する提案された変更を実行することができ、ブローカーは、決定された変更を、設計モデル及びテストに自動的に適用して、インターフェース仕様、テスト、及び設計モデル間の整合性を維持することができる。同様に、ブローカーは、テストのインターフェースに対する提案された変更を取得ないし捕捉して、それらの変更を、インターフェース仕様及び設計モデルに適用することができる。
【０００７】
１実施形態では、設計モデル、インターフェース仕様、及びテストに対する変更を、アトミックトランザクションなどの単一のトランザクションの一部として実行することができる。したがって、設計モデル、インターフェース仕様、及びテストに対する変更を完了することが保証される。
【０００８】
１実施形態では、設計モデル及びテストを、ミラーダイアグラム（mirror  diagram）と呼ばれる場合があるインターフェース仕様を指すように構成することができる。すなわち、設計モデル及びテストは、同じインターフェース仕様、たとえば、１つのミラーダイアグラムを指すことができる。設計モデルのインターフェースやテストのインターフェースに対してなされたユーザー編集などの変更は、単一のインターフェース仕様に適用される。同様に、該インターフェース仕様に対する変更は、設計モデル及びテストに適用される。このように、設計モデルとテストが別個のインターフェースを有するのではなく、設計モデルとテストの両方に対して単一のインターフェース仕様が生成される。この実施形態では、設計モデルとテストの両方に対するアトミックな及び／または自動的な変更を回避することができる。
【０００９】
データ処理システム
図１は、本発明の１実施形態を実施して利用するためのコンピュータシステムまたはデータ処理システム１００の略図である。コンピュータシステム１００は、システムバス１１２によって相互接続された、処理要素１０２などの１以上の処理要素、メインメモリ１０４、ユーザー入出力（Ｉ／Ｏ）１０６、ディスクドライブ１０８などのデータ記憶装置、及びリムーバブルメディアドライブ１１０を備えている。コンピュータシステム１００はまた、ネットワークインターフェースカード（NIC）１１４などの通信装置を備えることができる。ユーザーＩ／Ｏ １０６は、キーボード１１６、マウス１１８などのポインティングデバイス、及びディスプレイ（表示装置）１２０を含むことができる。他のユーザーＩ／Ｏ１０６の構成要素には音声コマンドシステムが含まれる。他のポインティングデバイスは、タッチパッドやタッチスクリーンを含み、他の出力装置は、プリンターやプロジェクターなどを含む。典型的な処理要素は、シングルコアまたは複数コアの中央処理装置（ＣＰＵ）、グラフィクスプロセッシングユニット（ＧＰＵ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロプロセッサ、マイクロコントローラなどを備えている。
【００１０】
メインメモリ１０４は、オペレーティングシステム１２２などの複数のプログラムライブラリもしくはモジュール、及び、オペレーティングシステム１２２とインターフェースする１以上のアプリケーションプログラム（モデリング環境アプリケーション２００を含む）を格納することができる。
【００１１】
リムーバブルメディアドライブ１１０は、ＣＤ、ＤＶＤ、フロッピーディスク、ソリッドステートドライブ、テープ、フラッシュメモリ、またはその他の媒体などのコンピュータ可読媒体１２６を受け入れて読み出すことができる。リムーバブルメディアドライブ１１０は、コンピュータ可読媒体１２６に書き込みをすることもできる。
【００１２】
適切なコンピュータシステムには、パーソナルコンピュータ（ＰＣ）、ワークステーション、ラップトップコンピュータ、タブレット、パームコンピュータ、スマートフォン、電子リーダー、その他の携帯型コンピューティング装置などが含まれる。しかしながら、図１のコンピュータシステム１００は、説明用であることが意図されており、本発明を、他のコンピュータシステム、データ処理システム、もしくはコンピュータ装置と共に使用することができる。本発明を、ネットワーク化された（たとえば、クライアント−サーバー）コンピュータアーキテクチャ、または、パブリック及び／もしくはプライベートクラウドコンピューティング構成において使用することもできる。たとえば、モデリング環境アプリケーション２００をサーバー上で動作させて、該アプリケーション２００を、ワシントン州レドモンド在のMicrosoft社のRemote Desktop Connection（リモートデスクトップ接続）ツールなどのアプリケーションホスティングシステムを介してリモートのクライアントによってアクセスすることができる。
【００１３】
適切なオペレーティングシステム１２２には、とりわけ、マイクロソフト社のWindows（登録商標）シリーズのオペレーティングシステム、Linuxオペレーティングシステム、カリフォルニア州クパティーノ在のApple社のMAC OS（登録商標）シリーズのオペレーティングシステム、UNIX（登録商標）シリーズのオペレーティングシステムが含まれる。
【００１４】
上記のように、エンジニア、科学者、プログラマー、テストエンジニアなどのユーザーまたは開発者は、キーボード１１６、マウス１１８、及びディスプレイ１２０などの１以上の入力装置を利用して、モデリング環境２００を操作し、設計されまたは評価されるシステムの１以上の設計モデル、または、設計モデルをテストするための１以上のテストモデルを構成することができる。設計モデル及びテストモデルはコンピュータによる処理（計算など）が可能であり、実行可能なセマンティクスを有することができる。具体的には、それらは実行可能である。設計モデルは、１以上の時間ベース、イベントベース、状態ベース、頻度ベース、制御フローベース、及びデータフローベースの実行セマンティクス（実行意味論）を提供することができる。設計モデルを実行して、モデリング中のシステム（たとえば物理的システム）の動作をシミュレートすることができる。設計モデルの実行を、設計モデルのシミュレーションと呼ぶ場合がある。
【００１５】
１実施形態では、モデリング環境２００は、高レベルモデリング環境である。適切な高レベルモデリング環境には、とりわけ、マサチューセッツ州ナティック在のMathWorks社のMATLAB（登録商標）及びSimulink（登録商標）テクニカルコンピューティング環境、並びに、MathWorks社のSimscape（登録商標）物理モデリングシステム及びStateflow（登録商標）チャート作成ツール、カナダ国オンタリオ州在のWaterlooMaple社のMapleSim物理モデリング及びシミュレーションツール、テキサス州オースティン在のNational Instruments社のLabVIEWプログラミングシステム及びNI MatrixXモデルベースの設計製品、カリフォルニア州サンタクララ在のAgilent Technologies社のVisual EngineeringEnvironment（VEE）、カリフォルニア州マウンテンビュー在のSynopsys社のSystem Studioモデルベースの信号処理アルゴリズム設計及び分析ツール、SynopsisのSPW信号処理アルゴリズムツール、Unified Modeling Language（UMR）システム、Systems Modeling Language（SysML）システム、カリフォルニア州サンノゼ在のXilinx社のSystem Generatorシステム、及び、「Conversion of Model Components Into References」と題する米国特許第７，３２４，９３１号及び「Method and System for Modeling a Mechanical System」と題する米国特許第７，９９１，５９８号に記載されているグラフィカルモデリングシステム（これらの米国特許の開示内容全体は参照により本明細書に組み込まれるものとする）が含まれる。高レベルモデリング環境で作成されたモデルは、より詳細ではない実装形態を含むことができるので、Ｃ、Ｃ++、Ｃ♯、SystemCプログラミング言語などのいくつかのプログラミング言語よりも高レベルの言語で動作することができる。
【００１６】
当業者には、MATLAB（登録商標）テクニカルコンピューティング環境は、いくつかの用途の中でも特に、デジタル信号処理（ＤＳＰ）設計用の数学指向のテキストプログラミング環境であることが理解されよう。Simulink（登録商標）テクニカルコンピューティング環境は、いくつかの用途の中でも特に、動的システムをモデリング（モデル化）及びシミュレートするためのモデルベース設計環境である。MATLAB（登録商標）及びSimulink（登録商標）ツールは、アルゴリズムの開発及び探査を容易にし、及び、モデルベースの設計をサポートするいくつかの高レベルの特徴を提供する。典型的な高レベルの特徴には、とりわけ、動的型付け（dynamic typing）、アレイベースの動作（array-basedoperation）、データ型の推論（data type inferencing）、サンプル時間の推論（sample time inferencing）、及び、実行順序の推論（execution order inferencing）が含まれる。
【００１７】
別の実施形態では、高レベルモデリング環境の代わりに、とりわけ、Ｃ、Ｃ++、Ｃ♯プログラミング言語などのより低レベルのプログラミング言語を用いて、設計モデル及びテストモデルを作成することができる。
【００１８】
モデリング環境
図２は、モデリング環境２００の１実施形態の部分的なブロック図である。環境２００は、ユーザーインターフェース（ＵＩ）エンジン２０２、モデルエディタ２０４、及び、シミュレーションエンジン２０６を備えることができる。シミュレーションエンジン２０６は、インタープリター２１８と、ＩＲ（Intermediate Representation：中間表現）ビルダー２２２などの１以上のＩＲビルダーを含むことができるモデルコンパイラ２２０と、ソルバー２２６ａ〜２２６ｃなどの１以上の好ましくは多数のソルバーを備えることができる。典型的なソルバーには、オイラー法（Euler's Method）またはホイン法（Heun's Method）に基づく積分技法を利用することができる１以上の固定ステップ連続ソルバー（fixed-stepcontinuous solver）、ルンゲ・クッタ（Runge-Kutta）とドルマン・プリンス（Dormand-Prince）のペアに基づくことができる１以上の可変ステップソルバー（variable-step continuous solver）が含まれる。MathWorks社の「Simulink 7 User's Guide」（２０１１年９月版）には適切なソルバーが非網羅的に記載されている（該文書の全開示内容は参照により本明細書に組み込まれるものとする）。
【００１９】
モデルエディタ２０４を用いて、設計モデル３００などの１以上の設計モデルを構成することができる。モデルエディタ２０４を用いて、設計モデル３００をテストするための１以上のテストモデル２３０ａ〜２３０ｃを構成することもできる。
【００２０】
１実施形態では、インターフェースブローカー２３２をモデリング環境２００に組み込むことができる。インターフェースブローカー２３２（該インターフェースブローカーをブローカー２３２ともいう）は、インターセプトエンジン２３４及びアトミックトランザクションエンジン２３６を備えることができる。ブローカー２３２はさらに、インターフェース仕様４００などの１以上のインターフェース仕様を含むことができ、または、該インターフェース仕様にアクセスすることができる。１実施形態では、ブローカー２３２は、設計モデル３００などの設計モデルの各々に対する少なくとも１つのインターフェース仕様４００を構成し及び維持することができる。
【００２１】
モデリング環境２００は、コード発生器２４０、ターゲット言語コンパイラ２４２、差分エンジン２４３、及び自動テストモデルビルダー２４４などの他の構成要素（コンポーネントまたは要素。以下同じ）を備えることができる。コード発生器２４０を、モデルから、ソースコード及び／またはオブジェクトコードなどのコンピュータプログラミングコードを生成するように構成することができる。ターゲット言語コンパイラ２４２を、ターゲットのプラットフォームまたはターゲットのハードウェアによる実行のために、コード発生器２４０によって生成されたソースコードなどのソースコードをコンパイルするように構成することができる。差分エンジン２４３を、２つのモデルを分析して、それら２つのモデル間の差分を記述するレポートを生成するように構成することができる。自動テストモデルビルダー２４４を、設計モデル用のテストモデルを自動的に作成ないし構築するように構成することができる。本発明に使用するのに適したコード発生器には、MathWorks社のSimulink Coder（シミュリンクコーダー）、Embedded Coder、Simulink HDL Coder、及び、ドイツのパーダーボルン在のdSpace GmbHのTargetLink（ただし、これらには限定されない）が含まれる。しかしながら、他のコード発生システムを使用することもできる。
【００２２】
モデリング環境２００のブローカー２３２、自動テストモデルビルダー２４４、及びその他の構成要素の各々は、順序論理回路を生成するように構成及び配置されたレジスタ及び組み合わせ論理回路を備えることができる。１実施形態では、ブローカー２３２及び自動テストモデルビルダー２４４を、本明細書に記載されている方法に関連するプログラム命令を含む１以上のソフトウェアモジュールもしくはソフトウェアライブラリによって実施することができる。これらのソフトウェアモジュールを、メインメモリ１０４、及び／またはコンピュータ可読媒体１２６などのコンピュータ可読媒体に格納することができ、及び、処理要素１０２などの１以上の処理要素によって実行することができる。他のコンピュータ可読媒体を、それらのプログラム命令を格納して実行するために使用することもできる。代替の実施形態では、ファームウェアを含むソフトウェア及びハードウェアの種々の組み合わせを用いて、本発明を実施することができる。
【００２３】
インターフェース仕様４００、設計モデル３００、及びテストモデル２３０を、ファイル、テーブル、ツリー（木）、または、他のデータ構造もしくはオブジェクトを用いて実施することができる。それらを、メインメモリ１０４、永続的なメモリ（persistent memory）１０８、及び／または媒体１２６に格納することができる。
【００２４】
図３は、設計モデル３００を示す略図であり、該モデル３００を、実行可能なセマンティクスを有するコンピュータ生成のグラフィック設計モデルとすることができる。設計モデル３００を、モデルエディタ３０４のモデルキャンバス３０２上で開いて作成ないし構成することができる。たとえば、ユーザーは、既定のオブジェクトを含む１以上のライブラリから、アイコンやブロックなどの複数のグラフィックオブジェクトを選択して、選択したオブジェクトを、モデルエディタ２０４によって管理することができるモデルキャンバスに配置することができる。ユーザーはまた、モデルキャンバス上に目視できるように表示される場合もあれば目視できないように表示される場合もある、ブロック間の関係（たとえば接続）を規定することができる。設計モデルのグラフィックオブジェクトは、動的システム、計算、関数（もしくは機能）、処理、イベント、もしくは状態、及び、オブジェクト間の線や矢印で表示することができる接続、データ、制御、信号、イベント、数学的関係、物理的な接続などを表すことができる。１実施形態では、一組の相互接続されたブロックをサブシステムに編成することができ、一組の状態をサブチャートに編成することができる。
【００２５】
具体的には、ＵＩエンジン２０２及びモデルエディタ２０４は、グラフィック設計モデルを表示するためのモデルキャンバスを含むグラフィカルユーザーインターフェース（ＧＵＩ）を提供ないしサポートすることができる。グラフィックモデルを、Simulink（シミュリンク）モデル、Stateflow（ステートフロー）チャート、LabVIEW（ラボビュー）ブロック図、VEE（ビー）ダイアグラム、MATLAB（マトラボ）ファイル、MatrixXモデルなどとすることができる。設計モデルは、航空機飛行制御装置、エンジン制御ユニット（ＥＣＵ）、パワーウィンドウコントローラ、電子回路などの現実世界の動的システム、金融システムもしくは金融商品、天候パターンなどの自然現象を表すことができる。
【００２６】
モデルエディタ３０４は、モデルキャンバス３０２に加えて、いくつかあるグラフィック要素中でも特に、メニューバー３０６及びツールバー３０８を含むことができる。ツールバー３０８は、いくつかあるコマンドボタンの中でも特に、実行ボタン３１０を含むことができる。ユーザーが、たとえばマウス１１８を使って実行ボタン３１０を選択すると、これに応答して、シミュレーションエンジン２０６は、設計モデル３００を実行することができる。設計モデル３００の実行を、設計モデル３００のシミュレーションと呼ぶ場合もある。
【００２７】
設計モデル３００は、単位遅延（またはユニット遅延）ブロック３１４に接続された第１の入力ポートブロック（In1）３１２を備えており、該ブロック３１４は、利得（ゲイン）ブロック３１６に接続されている。利得ブロック３１６及びデータ格納メモリ読み出しブロック３１８は、積ブロック３２０に接続されている。積ブロック３２０は、第１の出力ポートブロック（Out1）３２２に接続されている。さらに、第２の入力ポートブロック（In2）は、アトミックサブシステムブロック３２６に接続されており、該ブロック３２６は、第２の出力ポートブロック（Out2）３２８及び第３の出力ポートブロック（Out3）３３０に接続されている。アトミックサブシステムブロック３２６は、それ自体で、ブロックなどの複数の相互接続されたグラフィックオブジェクトを階層的に表すことができる。
【００２８】
設計モデルを、図、または、テキスト（文字）、または、図とテキストの組み合わせで指定することができる。
【００２９】
設計モデルは、外部インターフェースと呼ぶことができるインターフェースを有することができ、典型的には、該インターフェースを有している。設計モデルの外部インターフェースは、該設計モデル用の値を設定できる、該設計モデルに対する外部入力、該設計モデルからの外部出力、１以上の初期化状態、及び、１以上のパラメータを含むことができる。１実施形態では、該モデルの外部入力及び外部出力の値は時間と共に変化しうる。たとえば、それらの入力及び出力のうちの１以上を時間と共に変化する信号（経時変化する信号）とすることができ、その場合、１以上の初期化状態及びパラメータの値を時間と共に変化しないものとすることができる。代わりに、それらの１以上の初期化状態及びパラメータの値を、設計モデルのそれぞれの実行（たとえばシミュレーション）毎に一回設定することができる。設計モデルが、ブロック線図モデルなどのグラフィックモデルであれば、外部入力及び外部出力を図で指定することができる。
【００３０】
設計モデルの外部インターフェースはまた１以上の制御信号を含むことができ、該制御信号を設計モデルにおいて用いて、設計モデルの１以上の条件付きサブシステムなどの該設計モデルの１以上の部分の実行を制御することができる。条件付きサブシステム用の典型的な制御信号には、イネーブル制御信号（該制御信号は、該制御信号が正のときにそれぞれのサブシステムを実行させることができる）、トリガーされた制御信号（該制御信号は、トリガーイベントが起こったときにそれぞれのサブシステムを実行させることができる）、及び、制御フロー信号（該信号は、制御ブロックなどの、設計モデルの別のオブジェクトの制御下でそれぞれのサブシステムを実行させることができる）が含まれる。
【００３１】
サブシステムブロック３２６への入力は、設計モデル３００の内部入力であり、したがって、該モデルの外部インターフェースの一部ではない。同様に、サブシステムブロック３２６の出力は内部出力であり、したがって、該モデルの外部インターフェースの一部ではない。しかしながら、サブシステムブロック３２６の出力は、第２の出力ポートブロック３２８及び第３の出力ポートブロック３３０を駆動するところ、それらのブロック３２８及び３３０は、外部出力（部）であり、したがって、該モデルの外部インターフェースの一部であることに留意されたい。
【００３２】
モデルエディタ３０４は、設計モデルキャンバス３０２に加えて、１以上のテストモデルキャンバスを提供することができる。１実施形態では、モデルエディタ３０４は、設計モデルタブ（Ｍ）３３２、及びテストモデルタブ（Ｔ）３３４を提供することができる。ユーザーは、それぞれのタブ３３２、３３４をたとえばマウス１１８を使って選択することによって、設計モデルキャンバス３０２とテストモデルキャンバスを切り換えることができる。さらに、モデルエディタ３０４は、テストモデルキャンバス内で開けられたかまたは作成されたテストモデルを、設計モデルキャンバス３０２内で開けられた設計モデルに割り当てることができる。たとえば、設計モデル３００とテストモデルキャンバス内で開けられたかまたは作成されたテストモデルを、範囲が設計モデル３００に設定されているモデル作業空間（モデルワークスペース）に保存することができる。
【００３３】
インターフェース仕様
図４Ａ及び図４Ｂは、設計モデルのインターフェース仕様４００の略図である。インターフェース仕様４００は、情報を格納するためのセルもしくはレコードを定義ないし画定する複数の列及び行を有するテーブルとして編成ないし構成されている。インターフェース仕様４００は、外部入力に関する情報を格納するための第１のセクション４０２、外部出力に関する情報を格納するための第２のセクション４０４、初期化状態に関する情報を格納するための第３のセクション４０６、パラメータに関する情報を格納するための第４のセクション４０８、及び、制御信号に関する情報を格納するための第５のセクション４１０を有することができる。
【００３４】
セクション４０２、４０４、４０６、４０８。及び４１０の各々は、特定の入力、出力、初期化状態、パラメータ、及び制御信号に関する情報を格納するための１以上の行を含むことができる。より具体的には、外部入力セクション４０２は、外部入力名列４１２、外部入力データ型列４１４、外部入力数値型列４１６、外部入力データ次元列４１８、及び、外部入力サンプリングモード列４２０を含むことができる。データ型の例には、符号なし８ビット整数、倍精度浮動小数点、単精度浮動小数点、及び固定小数点が含まれる。数値型の例には、実数または複素数が含まれる。次元の例には、１次元（たとえばスカラーやベクトル）、２次元（たとえば配列）、または多次元（たとえば多次元マトリックス）が含まれる。サンプリングモードの例には、（１つの信号が１つのデータサンプルを有する）サンプルベース、及び（１つの信号が、たとえば、１つのチャンネルもしくは複数のチャンネルからの連続したサンプルの集合を含む）フレームベースが含まれる。外部入力セクション４０２と同様に、外部出力セクション４０４も、外部出力名列４２２、外部出力データ型列４２４、外部出力数値型列４２６、外部出力データ次元列４２８、及び、外部出力サンプリングモード列４３０を含むことができる。初期化状態セクション４０６は、初期化状態名列４３２、初期化状態データ型列４３４、初期化状態数値型列４３６、及び、初期化状態データ次元列４３８を含むことができる。パラメータセクション４０８は、パラメータ名列４４０、パラメータデータ型列４４４、及び、パラメータデータ次元列４４６を含むことができる。制御信号セクション４１０は、制御信号名列４４８、制御信号データ型列４５０、制御信号数値型列４５２、及び、制御信号データ次元列４５４を含むことができる。
【００３５】
インターフェース仕様４００はまた、１以上の関連付けられたテストモデルと設計モデルの外部インターフェースとの間のマッピングに関する情報を含むことができる。具体的には、インターフェース仕様４００は、第１の関連付けられたテストモデル用の第１の領域４５６、第２の関連付けられたテストモデル用の第２の領域４５８（以下同様）を含むことができる。外部入力セクション４０２に記載されている、設計モデルの外部入力の１以上を、第１の領域４５６の名前列４６０及び第２の領域の名前列４７０に記載することができるテストモデルの外部出力にマッピングすることができる。セクション４０４に記載されている設計モデルの外部出力を、第１の領域４５６の名前列４６２及び第２の領域４５８の名前列４７２に記載することができるテストモデルの外部入力にマッピングすることができる。セクション４０６に記載されている設計モデルの初期化状態を、それらの初期化状態に値を設定するテストモデルのオブジェクトにマッピングすることができ、それらのオブジェクトを、第１の領域４５６の名前列４６４及び第２の領域４５８の名前列４７４に記載することができる。セクション４０８に記載されている設計モデルのパラメータを、それらのパラメータに値を設定するテストモデルのオブジェクトにマッピングすることができ、それらのオブジェクトを、第１の領域４５６の名前列４６６及び第２の領域４５８の名前列４７６（図４Ｂ）に記載することができる。セクション４１０に記載されている設計モデルの制御信号を、それらの制御信号に値を設定するテストモデルのオブジェクトにマッピングすることができ、それらのオブジェクトを、第１の領域４５６の名前列４６８及び第２の領域４５８の名前列４７８に記載することができる。
【００３６】
設計モデルによっては、少なくともいくつかのセクションが空、すなわち、行を有しない場合がある。
【００３７】
図５Ａ〜図５Ｅは、本発明の１実施形態にしたがう１方法のフローチャートを示している。ブロック５０２に示されているように、モデリング環境２００は、たとえばユーザーからの入力を受け取って、（メインメモリ１０４または永続的なメモリ１０８に格納することができる）１以上の設計モデルを開き、構成ないし作成し、編集し、または分析することができる。ブロック５０４に示されているように、モデリング環境２００はまた、たとえばユーザーからの入力を受け取って、所与の設計モデル用の１以上のテストモデルを作成し、または、１以上のテストモデルを該所与の設計モデルに割り当てることができる。該１以上のテストモデルを、メインメモリ１０４または永続的なメモリ１０８に格納することもできる。設計モデルと同様に、テストモデルも、図またはテキスト（文字）または図とテキストの組み合わせによって指定することができる。たとえば、テストモデルを、図で指定することができる。テストモデルを、たとえばユーザーによって、手作業で作成することができ、または、たとえば自動テストモデルビルダー２４４によって自動的に作成することができる。
【００３８】
ブロック５０６に示すように、ブローカー２３２は、設計モデル３００を分析して、該モデルの外部インターフェースを識別することができる。たとえば、ブローカー２３２は、ＩＲビルダー２２２によって構成された表現などの、設計モデル３００のメモリ内の表現を評価し、及び、該設計モデルの外部入力、出力、初期化状態、パラメータ、及び制御信号を識別することができる。ブロック５０８に示すように、ブローカー２３２は、この情報を用いて、該設計モデルの（インターフェース定義ということもできる）インターフェース仕様４００を構成ないし作成することができる。
【００３９】
設計モデル３００は、２つの外部入力、すなわち２つの入力ポートブロック（In1 ３１２及びIn2 ３２４）、及び、３つの外部出力、すなわち３つの出力ポートブロック（Out1 ３２２、Out2 ３２８、Out3 ３３０）を備えている。設計モデルのインターフェースはまた、複数のパラメータを備えている。具体的には、データ格納メモリ読み出しブロック３１８（該ブロックの値を、設計モデル３００のシミュレーションの開始時に設定することができる）は、設計モデル３００の第１のパラメータを表す。さらに、利得ブロック３１６は、「５」などの数値を指定する代わりに、その利得値を、変数すなわち「Ｋ」として指定する。変数「Ｋ」（これを、利得ブロック３１６のパラメータということもできる）は、設計モデル３００の第２のパラメータである。特に、Ｋの値を、設計モデル３００のシミュレーションの開始時に設定することができる。
【００４０】
サブシステムブロック３２６への入力は、設計モデル３００の内部入力であり、したがって、該モデルの外部インターフェースの一部ではない。同様に、サブシステムブロック３２６の出力は内部出力であり、したがって、該モデルの外部インターフェースの一部ではない。しかしながら、サブシステムブロック３２６の出力は、第２の出力ポートブロック３２８及び第３の出力ポートブロック３３０を駆動するところ、それらのブロック３２８及び３３０は、外部出力（部）であり、したがって、該モデルの外部インターフェースの一部であることに留意されたい。
【００４１】
ブロック５１０に示されているように、ブローカー２３２はまた、設計モデル３００に関連付けられている１以上のテストモデル２３０を識別することができる。さらに、ブロック５１２に示されているように、ブローカー２３２は、該関連付けられている１以上のテストモデルの各々を分析し、それらのテストモデルと該設計モデルとの間のマッピングを決定して、このマッピング情報をインターフェース仕様４００に含めることができる。
【００４２】
１実施形態では、インターフェース仕様４００に対する提案された変更の通知を受け取るために、設計モデル３００及び１以上のテストモデルをブローカー２３２に記録ないし登録することができる。別の実施形態では、提案されたインターフェース仕様の変更の通知を受け取るために、それぞれのテストモデルをブローカー２３２に記録ないし登録することができる。記録ないし登録処理の一部として、設計モデル３００は、特定の変更がインターフェース仕様４００に対してなされるのに応答して（または該特定の変更に応答して）呼び出される１以上の関数を指定することができる。たとえば、設計モデル３００は、該インターフェース仕様に対する変更が新しい入力の追加であるときには、特定のタイプの外部入力を設計モデル３００に加えるようにする第１の関数を指定することができる。同様に、テストモデルの各々は、たとえば、記録ないし登録処理の一部として、インターフェース仕様４００に対する特定の変更に応答して呼び出される１以上の関数を指定することができる。
【００４３】
ブロック５１４に示されているように、ブローカー２３２は、設計モデルの外部インターフェースに対する要求されたもしくは提案された変更を捕捉（インターセプト）する。たとえばモデルエディタ２０４を用いた、ユーザー起動のものとすることができる典型的な変更には、設計モデルの外部入力または外部出力を追加しまたは削除すること、及び、既存の外部入力のデータ型を変更することが含まれる。ブローカー２３２は、要求された変更が、（たとえばモデルエディタ２０４によって）実行される前に、該要求された変更を捕捉（インターセプト）することができる。１実施形態では、ブローカー２３２は、差分エンジン２４３とともに動作して、設計モデルの外部インターフェースに対する提案された変更を識別することができる。たとえば、差分エンジン２４３を、設計モデル３００の外部インターフェースに影響を与える提案された変更を検出し、及び、かかる提案された変更をブローカー２３２に知らせるように構成することができる。ブローカー２３２は、提案された変更を調べて、ブロック５１６（図５Ｂ）に示されているように、該変更が、設計モデル３００の１以上の構成要素に対する直接的な変更を表している場合には、ブローカー２３２は、そのような構成要素を識別することができる。ブロック５１８に示されているように、提案された変更が、実行された場合に、設計モデル３００の１以上の構成要素に間接的に影響を与える場合には、ブローカー２３２はまた、そのような構成要素を識別することができる。
【００４４】
提案された変更は、１以上の構成要素を直接変更することなく、該１以上の構成要素に影響を与えることができる。たとえば、設計モデルが、０から１２まで順に番号付けされた複数の外部入力を含んでいると想定する。さらに、提案された変更が外部入力９を削除することであると想定する。この場合、提案された変更は、削除される外部入力９に直接影響を与える。提案された変更はまた、外部入力１０〜１２に間接的に影響を与えるが、これは、元の外部入力９を削除した後に、それらの外部入力１０〜１２を外部入力９〜１１として番号付けし直すようにモデリング環境２００を構成することができるからである。
【００４５】
１実施形態では、ブローカー２３２は、設計モデルの外部インターフェースに対する提案された変更を捕捉（インターセプト）するだけでありうる。たとえば、設計モデルの内部インターフェース、内部のグラフィックオブジェクトもしくはサブシステム、モデルの実行中に使用されるソルバーなどのモデルレベルの特性ないし属性などに対する他の変更は、ブローカー２３２によって捕捉（インターセプト）されない場合がある。その代わり、それらの変更を、要求に応じて、たとえばモデルエディタ２０４によって実施することができる。
【００４６】
ブローカー２３２は、提案された変更によって直接及び間接に影響を受ける構成要素を識別することに加えて、ブロック５２０に示されているように、設計モデルの外部インターフェースに対する提案された変更によって直接影響を受ける、関連付けられているテストモデルの１以上の構成要素を識別することができる。ブロック５２２に示されているように、ブローカー２３２はまた、提案された変更によって間接的に影響を受けるテストモデルの１以上の構成要素を識別することができる。ブローカー２３２は、インターフェース仕様４００からのマッピング情報を用いて、設計モデルの直接及び間接に影響を受ける構成要素に対応する１以上のテストモデルの構成要素を識別することができる。たとえば、ブローカー２３２は、影響を受ける設計モデルの構成要素に対応する行を識別することができ、また、テストモデルの対応する構成要素を識別することができる。
【００４７】
提案された変更が、外部出力「Out2」３２８を削除することであると想定する。ブローカー２３２は、外部出力「Out2」３２８に対応するインターフェース仕様４００のエントリーを見つけ、そのエントリーをたどって、外部出力「Out2」３２８に対応するテストモデルの構成要素を識別することができる。この場合、第１のテストモデルの「In2」構成要素、及び第２のテストモデルの「In2」構成要素は、設計モデル３００の外部出力「Out2」に対応する。外部出力「Out2」３２８が削除されると、連続する出力ポート番号に空白が生じるのを避けるために、外部出力「Out3」３３０が「Out2」にリナンバー（再番号付け）されることにもなる。したがって、ブローカー２３２は、外部出力「Out2」３２８を削除することによって、外部出力「Out3」３３０にも間接的に影響を与えると判断することができる。同様に、ブローカー２３２は、既存の構成要素「In2」を削除したことに応答して、テストモデル１の構成要素「In3」及びテストモデル２の構成要素「In3」を、構成要素「In2」としてリナンバーすることが必要であると判断することができる。したがって、ブローカー２３２は、それら２つの「In3」構成要素が、外部出力「Out2」３２８を削除する（これによって、２つのテストモデルの構成要素「In2」が削除されることになる）ことによって間接的に影響を受けると判断することができる。
【００４８】
ブロック５２４に示されているように、次に、ブローカー２３２は、設計モデルの外部インターフェースに対する提案された変更を実施することができる。さらに、ブロック５２６に示されているように、ブローカー２３２は、１以上のテストモデルの識別された構成要素を変更することによって、該１以上のテストモデルと設計モデル３００との整合性（ないし一貫性）を維持することができる。ブロック５２８（図５Ｃ）に示されているように、ブローカー２３２はまた、インターフェース仕様４００を更新することによって、設計モデル３００及び該１以上のテストモデル２３０に対してなされた変更を反映することができる。
【００４９】
１実施形態では、ブロック５３０に示されているように、アトミックトランザクションエンジン２３６は、アトミックトランザクションとして、設計モデル３００及び１以上のテストモデル２３０に対する変更を実行し、かつ、インターフェース仕様４００を更新する。アトミックトランザクションとして、設計モデルインターフェース４００及び該１以上のテストモデルを変更することによって、ブローカー２３２は、それらのテストモデルが、設計モデル３００の外部インターフェースと整合しなくなるのを防止する。
【００５０】
ブロック５３２に示されているように、ブローカー２３２はまた、設計モデル３００に関連付けられているテストモデル２３０の所与の１つに向けられた変更を捕捉（インターセプト）することができる。ブローカー２３２は提案された変更を調べて、ブロック５３４に示されているように、該提案された変更によって直接及び間接に影響を受ける該所与のテストモデルの構成要素を決定することができる。ブロック５３６に示されているように、ブローカー２３２はまた、該所与のテストモデルに対する提案された変更によって直接及び間接に影響を受ける他のテストモデルの対応する構成要素を識別することができる。さらに、ブロック５３８に示されているように、ブローカー２３２は、該所与のテストモデルに対する提案された変更によって直接及び間接に影響を受ける、設計モデルの外部インターフェースの対応する構成要素を識別することができる。ブローカー２３２は、インターフェース仕様４００内のマッピング情報を用いて、設計モデル３００及び他のテストモデルの対応する構成要素を識別することができる。
【００５１】
ブロック５４０（図５Ｄ）に示されているように、ブローカー２３２は、該所与のテストモデルに対して該提案された変更を実施することができる。ブロック５４２に示されているように、ブローカー２３２はまた、設計モデルの識別された構成要素を変更することによって、設計モデルインターフェースと該所与のテストモデルとの整合性を維持することができる。さらに、ブロック５４４に示されているように、ブローカー２３２は、他のテストモデルの識別された構成要素を変更することによって、それらの構成要素と該所与のテストモデルとの整合性を維持することができる。さらに、ブロック５４６に示されているように、ブローカー２３２は、インターフェース仕様４００を更新することによって、該所与のテストモデル、設計モデル、及びその他のテストモデルに対する変更を反映することができる。ブロック５４８に示されているように、該所与のテストモデル、設計モデル３００、及びその他のテストモデルに対する変更、及び、インターフェース仕様４００の更新を（すべて）、アトミックトランザクションとして実行することができる。
【００５２】
ブロック５５０（図５Ｅ）に示されているように、設計モデル３００を、テストモデルのうちの1以上を用いてテストすることができる。たとえば、モデルの外部入力、初期化状態、パラメータ、及び制御信号の値を決定することができ、及び、モデルの外部出力を記録しまたは（その妥当性を）検証することができるテストモデルのうちの１つを用いて、設計モデル３００を実行（たとえばシミュレート）することができる。
【００５３】
１実施形態では、設計モデルの実行を、ユーザーによって指定されたかまたは機械（マシン）によって指定されたものとすることができるある時間、たとえばシミュレーション時間にわたって実行することができる。あるコンパイル段階は、設計モデルの実行の開始をマークすることができ、及び、データ構造の準備（ないし作成）、パラメータの評価、ブロックの特性の構成ないし設定及び伝達、ブロックの接続性の決定、及び、ブロックの削減及びブロックの挿入の実行を含むことができる。データ構造の準備（ないし作成）及びパラメータの評価によって、該コンパイル段で使用される１以上のデータ構造を作成し及び初期化することができる。ブロックの各々に対して、ある方法は、ブロックにその全てのパラメータを評価させるようにすることができる。設計モデル内の全てのブロックに対してこの方法を呼び出すことができる。未解決のパラメータが存在する場合には、実行エラーを発生させることができる（または実行エラーが発生する場合がある）。ブロック及びポート／信号の特性の構成ないし設定中及び伝達中に、各ブロック（及び／またはポート）の（データ次元、データ型、複雑さ、サンプルモード、及びサンプル時間などの）コンパイルされた特性ないし属性を、線（たとえば矢印）によって所与のブロックに接続されているブロック（及び／またはポート）の対応する挙動及び特性（ないし属性）に基づいて設定することができる。特性（ないし属性）の設定を、あるプロセス（該プロセス中に、ブロックの挙動が、１つのブロックから次のブロックへと信号や他の接続をたどって設計モデルを「波及していく」）によって実行することができる。
【００５４】
このプロセスは「プロパゲーション（propagation）」（伝搬）と呼ばれる。ブロック（またはそのポート）の挙動が明示的に指定されているブロックの場合には、プロパゲーションは、該ブロックの属性が、該ブロックに接続されているブロックの属性に適合している（または両者に互換性がある）ことを確実にするのを助ける。そうでない場合（適合していない場合）には、エラーを発生させることができる（またはエラーが発生する場合がある）。第２に、多くの場合に、ブロックは、広範な属性と適合する（または互換性がある）ように実装ないし実施される。そのようなブロックは、該ブロックの挙動を、該ブロックに接続されているブロックの属性にしたがって適合させることができる。これは、オブジェクト指向プログラミング言語における多相性（ポリモーフィズム）の概念に類似している。ブロックの正確な実装ないし実施を（設計モデル内で該ブロックがそれ自身を見出すところの）設計モデルに基づいて選択することができる。このステップに含まれているのは、全てのレート遷移（rate-transition）が決定論的な結果（deterministicresult）を生じること、及び、適切なレート遷移ブロックが使用されていることを検証ないし確認するなどの他の側面である。コンパイルステップはまた、実際のブロックの接続性を決定ないし判定することができる。たとえば、仮想ブロックは、設計モデルの実行において意味役割（semantic role）をなんら果たすことができない。このステップでは、仮想ブロックを、最適化により除去するすなわち取り除くことができ、残りの非仮想ブロックを、互いに適切に再接続することができる。実際のブロック接続を有する設計モデルのこのコンパイルされたバージョンを、この時点以降、実行プロセスにおいて使用することができる。設計モデルにおいてブロックを相互接続するやり方は、必ずしも、個々のブロックに対応する式（方法）が解決される（実行される）順番を定めない。実際の順番を、コンパイルにおける格納ステップ中に決定することができる。１実施形態では、コンパイルステップが完了すると、ソートされた（並べ替えられた）順番を、設計モデルの実行の全期間にわたって変更することはできない。
【００５５】
これと同じコンパイル段階を、１以上のテストモデルに対して実行することもできる。
【００５６】
ブロック５５２に示されているように、コンパイル段階に続いて、設計モデル３００用のコードが生成される場合もあれば生成されない場合もある。コードが生成される場合には、加速実行（accelerated execution）モードで設計モデル３００を実行することができ、このモードでは、設計モデル３００もしくは該モデルの一部は、本明細書では広い意味でコードと呼ぶソフトウェアモジュールまたはハードウェア記述に変換ないし翻訳される。この段階が実行されると、以後の段階は、該生成されたコードを設計モデルの実行中に使用する。コードが生成されない場合には、設計モデルは、解釈（interpretive）モードで実行することができ、このモードでは、設計モデルのコンパイル（編集）されてリンク（結合）されたバージョンを直接用いて、所望の時間にわたって設計モデルを実行することができる。ユーザーが設計モデル用のコードを生成する場合には、該ユーザーは、モデルの実行をさらに進行させないことを選択することができる。その代わりに、ユーザーは、コードを取り出してモデリング環境２００の領域の外部に配置することを選択することができる。
【００５７】
さらに、ブロック５５２に（既に）示されているように、コード発生器２４０は、設計モデル用のコードを生成することができ、また、設計モデル用の生成されたコードを、ハードドライブ１０８などの記憶装置（たとえば永続的なメモリ）に格納することができる。ＵＩエンジン２０２は、ユーザーが選択することができるＧＵＩ中のコード生成ボタンを提供しもしくはサポートすることができ、または、ＵＩエンジン２０２は、ユーザーによって（たとえば、ＧＵＩまたはＣＬＩにおいて）入力されたコード生成命令を受け取ることができる。コード生成命令を、（たとえば、特定のイベントが起こったときに）プログラムによって起動ないし発生させることもできる。コード発生器２４０は、コード生成命令が発生したことに応答して、設計モデル用のコードを生成することができる。
【００５８】
１実施形態では、生成されたコードを、テキストソースコード（テキストによるソースコード）などのテキストコード（テキストによるコード）とすることができ、該コードをコンパイルして、ターゲットのマシンもしくは装置で実行することができる。生成されたコードを、Ａｄａ（エイダ）、Ｂａｓｉｃ（ベーシック）、Ｃ、Ｃ++、Ｃ♯、ＳｙｓｔｅｍＣ（システムシー）、ＦＯＲＴＲＡＮ（フォートラン）、ＶＨＤＬ、Ｖｅｒｉｌｏｇ（ベリログ）、embedded ＭＡＴＬＡＢ（組み込み型ＭＡＴＬＡＢ）、Ｘｉｌｉｎｘ ＦＰＧＡライブラリなどのベンダーもしくはターゲット固有のＨＤＬコード、アセンブリコードなどの１以上のプログラミング言語に適合（ないし準拠）したものとすることができる。たとえば、ヘッダファイル、メインファイル（主ファイル）、メイク（make）ファイル、及び他のソースファイルなどの１以上のコード生成ファイルを、設計モデル用に生成することができる。ブロック５５４に示されているように、ターゲット言語コンパイラ２４２は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などターゲットのハードウェアによる実行のために、生成されたコードをコンパイルすることができる。１実施形態では、コード発生器２４０はまた、（１以上の）テストモデルのうちの一部のテストモデルもしくは全てのテストモデル用のコードを生成することができ、この生成されたコードを、ターゲット言語コンパイラ２４２によってコンパイルすることもできる。
【００５９】
１実施形態では、ブローカー２３２を、周知のモデルビューコントローラパラダイム（model-view-controllerparadigm）を用いて実施することができる。この場合、インターフェース仕様４００を「モデル」と同じとみなすことができ、設計モデル３００及びテストモデル２３０を「ビュー」と同じとみなすことができ、ブローカー２３２を「コントローラ」と同じとみなすことができる。モデルビューコントローラパラダイムについては、S. Burbeckによる「ApplicationProgramming in Smalltalk-80: How to use Model-View-Controller (MVC)」（イリノイ大学アーバナ・シャンペーン校（UIUC）Smalltalk Archive）、及びS. Morse他による「Introducing Application Designand Software Engineering Principles in Introductory CS Courses:Model-View-Controller Java Application Framework」（Journalof Computing Sciences in Colleges, Vol. 20, Issue 2 (Dec. 2004)）に記載されており、これらの文献の全内容は、参照により本明細書に組み込まれるものとする。
【００６０】
ブローカー２３２を、セマフォ技術などの他のソフトウェアパラダイムを用いて実施することができる。
【００６１】
１実施形態では、設計モデル３００と各テストモデル２３０は、互いに異なる別個独立のオブジェクトであるが、それらは、インターフェース仕様４００に対する変更のために１つのグループまたはエンティティを形成する。設計モデル３００とテストモデル２３０を、１つのコンテナ内の別個のパーティション（区分）とすることができる。たとえば、設計モデル３００を、「.mdlファイル」などの設計モデルタイプファイルとすることができ、テストモデル２３０を、単一のｚｉｐ（ジップ）またはｔａｒ（ター）ファイル、単一のフォルダ、単一のディレクトリ、または単一のプロジェクトなどのコンテナ内に格納されたテストモデルタイプのモデルとすることができる。ｚｉｐファイルやｔａｒファイルやフォルダやディレクトリやプロジェクトなどのコンテナはまた、インターフェース仕様４００を含むことができる。
【００６２】
設計モデル３００とテストモデル２３０を別個の異なるファイル、オブジェクトまたはその他のエンティティとして維持することによって、（インターフェース仕様に対する変更以外の）変更を、（設計モデルとテストモデルのうちの）他方に変更を加えることなく、一方に対して行うことができる。たとえば、それらが、別個のオブジェクトもしくはファイルなどの別個のエンティティとして生成されて維持されるために、ブロックまたは信号の属性（ないし特性）は、テストモデル２３０と設計モデル３００の間、または、設計モデル３００とテストモデル２３０の間を伝わることはできない。したがって、（インターフェース仕様４００に対する変更以外の）変更を、設計モデル３００またはテストモデル２３０に対して、他方に影響を与えることなく行うことができる。たとえば、設計モデル３００の内部入力／出力に対する変更や設計モデル３００によって表されるアルゴリズムに対する変更などは、テストモデル２３０の実行動作を変更したり該実行動作に影響を与えたりはしない。同様に、インターフェース仕様４００に対する変更以外のテストモデルに対する変更は、設計モデル３００または他のテストモデルの実行動作を変更したり該実行動作に影響を与えたりはしない。
【００６３】
さらに、テストモデルに対する唯一の変更が、新しいテストシーケンス（またはテスト系列）または新しいテストベクトルの追加である場合には、テストエンジニアは、設計モデル３００に関連する全てのテストを再度実行するのではなく、該新しいテストシーケンスまたはテストベクトルを実行するだけでよい。
【００６４】
別の実施形態では、設計モデルの外部インターフェースに対する変更を、該設計モデル３００に関連するテストモデルに対する変更に同期させるように、ブローカー２３２を構成することができる。たとえば、ブローカー２３２は、提案された変更要求を捕捉（インターセプト）する代わりに、外部インターフェースに対する変更を、それらの変更が、設計モデル３００から開始されたか、テストモデル２３０の１つから開始されたかにかかわらず、記録することができる。具体的には、ブローカー２３２は、変更を行うエンティティ、及び、なされる特定の変更を記録することができる。所定のポイントで、ブローカー２３２は、その記録（ログ）を調べて、記録されている変更を、設計モデル３００、及び／または、設計モデル３００に関連する１以上のテストモデル２３０に適用し、これによって、テストモデル２３０と設計モデル３００を同期させることができる。該所定のポイントを、該記録（ログ）内の保留されている変更の特定の数（もしくは番号）、または、更新間の特定の時間間隔、または、その他の基準に設定することができる。
【００６５】
図６は、テストモデルタブ（Ｔ）３３４を選択することによってアクセスすることができる、テストモデルキャンバス６０２上で開かれた、または構成ないし作成されたテストモデル６００を示す略図である。テストモデルキャンバス６０２に加えて、テストモデル投影面６０４を提供することができる。テストモデル投影面６０４は、設計モデル３００（図３）に割り当てられているか、または、設計モデル３００に関連付けられている少なくともいくつかのテストモデルを含むことができる。１実施形態では、投影面６０４は全てのテストモデルを含んでいる。複数のテストモデルを、「グループ１」６０６、「グループ２」６０８、「グループ３」６１０などの、投影面６０４内のグループまたはフォルダに編成することができる。「グループ１」６０６などの所与のグループまたはフォルダを、たとえばユーザーがマウス１１８を使って選択することによって、開くことができ、そのグループまたはフォルダ内に含まれているテストモデルを、投影面６０４内に、サムネイル６１１ａ〜６１１ｃなどのサムネイル画像で表示することができる。サムネイル６１１ａなどの特定のテストモデルのサムネイル画像を投影面６０４から選択することによって、テストモデル６００などのそれぞれのテストモデルを開いて、テストモデルキャンバス６０２内に提示（または表示）することができる。サムネイルの代わりに他のオブジェクトを投影面６０４内で使用することができる。たとえば、投影面６０４は、各エントリー（入力）がテストモデルである、該エントリーのリストを含むことができる。
【００６６】
テストモデル６００は、設計モデル３００（図３）の外部入力を駆動するように構成された１以上のオブジェクト、（たとえば、記録または検証のために）設計モデル３００の外部出力を受けるように構成された１以上のオブジェクト、並びに、該設計モデルの初期化状態、パラメータ、及び制御信号の値を指定するための１以上のオブジェクトを備えることができる。具体的には、テストモデル６００は、（設計モデル３００を表す）サブシステムブロック６１４に接続された信号ビルダーブロック６１２、及び、３つの検証ブロック６１６（Check Static Upper Bound1）、６１８（Check StaticRange1）、６２０（Assertion1）を備えている。設計モデル３００と同様に、サブシステム６１４は、２つの入力（In1 ６２２ａ及びIn2 ６２２ｂ）と３つの出力（Out1 ６２４ａ、Out2 ６２４ｂ、Out3６２４ｃ）を有している。信号ビルダーブロック６１２は、経時変化する信号の１以上のグループを生成するために使用されるソースブロックである。信号ビルダーブロック６１２は、入力テスト信号を提供するためにサブシステムブロック６１４の入力In1 ６２２ａ、In2 ６２２ｂにそれぞれ接続された２つの信号である信号１６２６ａ及び信号２ ６２６ｂを提供する。サブシステムブロック６１４の出力Out1 ６２４ａ、Out2 ６２４ｂ、Out3 ６２４ｃは、検証ブロック６１６、６１８、６２０にそれぞれ接続されている。第１の検証ブロック６１６は、サブシステムブロック６１４の第１の外部出力信号６２８ａに対して上限検査を実行するように構成されている。第２の検証ブロック６１８は、第２の外部出力信号６２８ｂに対して範囲検査を実行するように構成されており、第３の検証ブロック６２０は、第３の外部出力信号６２８ｃがアサートされているか否かを検査するように構成されている。
【００６７】
図７は、信号ビルダーブロック６１２用の構成ウィンドウ（コンフィギュレーションウィンドウともいう）７００を示す略図である。構成ウィンドウ７００は、タブ７０２、７０４、７０６などの一連のタブを含んでおり、タブ７０２、７０４、７０６の各々は、信号ビルダーブロック６１２によって規定された（または定められた）それぞれの信号のグループに対応する。「グループ１」、タブ７０２などの選択されたグループに対して規定された信号は、信号グループ面７０８内に提示されており、該面７０８は、該グループ内の各信号に対して構成（ないし設定）可能な波形デザイナーを含むことができる。図示のように、「グループ１」の第１の信号（信号１）は、第１の波形デザイナー７１０においてステップ信号７１２として規定されている。「グループ１」の第２の信号（信号２）は、第２の波形デザイナー７１４において、振幅が「０」から「２」に及ぶ三角波７１６として規定されている。他のグループは、信号ビルダーブロック６１２の出力信号（信号１及び信号２）に対してその他のステップ（階段）もしくは三角波形、一定値（たとえば振幅が一定の波形）、ランプ信号、方形波などの異なる波形を規定することができる。
【００６８】
提案された変更がインターフェース仕様４００に受け入れられ（または該仕様で受け取られ）、そして、該提案された変更が設計モデル３００に新しい入力ポートブロックを追加し、この新しい入力ポートブロックを、サブシステムブロック３２６用に規定された新しい入力に接続することであると想定する。ブローカー２３２は、設計モデル３００に関連付けられているテストモデルを識別して、該提案された変更後に（または該変更にしたがって）設計モデル３００に対するそれらのテストモデルの整合性を維持するために、それらのテストモデルに対してなされる対応する変更を決定することができる。テストモデル６００に関しては、ブローカー２３２は、信号ビルダーブロック６１２が、テストモデル６００内にサブシステムブロック６１４によって表されている設計モデル３００の外部入力にテスト信号を提供することを決定する。提案された変更後に（または該変更にしたがって）設計モデル３００に対するテストモデル６００の整合性を維持するために、ブローカー２３２は、信号ビルダーブロック６１２に新しい出力を追加し、及び、該新しい出力を、設計モデル３００に追加される新しい入力ポートブロックに接続することによって、テストモデル６００を変更すべきであると決定することができる。ブローカー２３２はまた、インターフェース仕様４００に対してなすべき更新を決定することができる。次に、ブローカー２３２は、アトミックトランザクションとして、設計モデル３００、テストモデル６００、及びインターフェース仕様４００を変更することができる。ブローカー２３２は、代替的に、設計モデル及びテストモデルを変更する他のエンティティを制御できることが理解されよう。
【００６９】
別の実施形態では、ブローカー２３２は、新しい信号ビルダーブロックまたはその他のソースブロックなどの１以上の新しい構成要素をテストモデルに追加すべきことを決定することができる。
【００７０】
図８は、提案された変更によって変更された設計モデル８００を示す略図である。変更された設計モデル８００は、変更されたサブシステムブロック８０４の新しい入力（In2）に接続された新しい入力ポートブロック８０２を含んでいる。サブシステムブロック８０４の新しい入力「In2」は、設計モデル８００の内部入力を表しているので、テストモデルに対して行う必要がある対応する変更はない。
【００７１】
図９は、変更された設計モデル８００との整合性を維持するように変更されたテストモデル９００を示す略図である。変更されたテストモデル９００は、新しい出力信号（信号３）９０４を有するように変更された信号ビルダーブロック９０２を備えており、該出力信号９０４は、変更された設計モデル８００を表す変更されたサブシステムブロック９０６の新しい入力（In3）に接続されている。
【００７２】
ブローカー２３２は、変更されたテストモデル９００の信号ビルダーブロック９０２に新しい出力ポート９０４を追加することに加えて、信号ビルダーブロック９０２によって規定された信号の各グループを自動的に変更して、該新しい出力の信号値を指定することもできる。図１０は、変更された信号ビルダーブロック９０２用の構成ウィンドウ１０００を示す略図である。構成ウィンドウ１０００は、信号ビルダーブロック９０２によって規定された３つの信号グループ（「グループ１」、「グループ２」、「グループ３」）用のタブ１００２、１００４、１００６を含んでいる。信号グループ面１００８は、選択されたタブ、たとえばタブ１００２（「グループ１」）の信号を表示する。しかしながら、ブローカー２３２は、（全ての信号グループが）該ブロックの新しい出力信号９０４に提供される新しい信号（信号３）を含むように、全ての信号グループを自動的に変更している。特に、構成ウィンドウ１０００は、信号グループ面１００８内に第３の波形デザイナー１０１０を有している。ブローカー２３２を、そのような追加された信号に対してデフォルトの信号プロファイル値を自動的に規定する（定める）ように構成することができる。たとえば、ブローカー２３２を、該新しい信号の値を、たとえば０という一定値に設定するように構成することができる。したがって、第３の波形デザイナー１０１０は、一定信号１０１２を表示する。
【００７３】
他の実施形態では、新しい信号に適用されるデフォルトの信号値をユーザー指定のものとすることができる。たとえば、所与の設計モデルについて、ユーザーは、新しく追加された信号が、値「１」または他の何らかの値を有することを指定することができる。
【００７４】
設計モデル３００に対して、他のテストモデルまたはテストを手動でまたは自動的に生成することができる。たとえば、開ループテストモデルを生成することができる。図１１は、典型的な開ループテストモデル１１００の略図である。開ループテストモデル１１００は、入力ポートブロック１１０２〜１１０４などの１以上の入力を備えることができる。入力ポートブロック１１０２〜１１０４の各々を、設計モデル３００のそれぞれの外部出力に接続することができる。開ループテストモデル１１００の入力を、１以上のロギングオブジェクトまたは検証オブジェクトに接続することができる。たとえば、入力ポートブロック１１０２〜１１０４を、たとえば信号線１１０６〜１１０８によって、検証ブロック１１１０〜１１１２にそれぞれ接続することができる。開ループテストモデル１１００はまた、出力ポートブロック１１１６、１１１７などの１以上の出力に接続された、信号ビルダーブロック１１４などの１以上のソースブロックを備えることができる。出力ポートブロック１１１６、１１１７を、設計モデル３００の外部入力に接続することができる。開ループテストモデル１１００は、設計モデル３００を表すオブジェクトを含んでいなくてもよい。
【００７５】
別のタイプのテストモデルは閉ループテストモデルである。図１２は、閉ループテストモデル１２００の略図である。閉ループテストモデル１２００は、設計モデル３００のそれぞれの外部出力に接続することができる入力ポートブロック１２０２〜１２０４などの複数の入力を備えることができる。これらの入力を、閉ループテストモデル１２００の１以上のテストモデルオブジェクトに接続することができる。たとえば、入力ポートブロック１２０２〜１２０４を、たとえば信号線１２０６〜１２０８によって、第１のサブシステムブロック１２１０などの１以上のサブシステムブロックに接続することができる。第１のサブシステムブロック１２１０を、プラントサブシステムブロックとすることができ、及び、製造プラントや他の物理的なプラントなどのプラントの動作をモデル化するように構成することができる。プラントモデルサブシステムブロック１２１０は、閉ループモデル１２００の出力に接続された１以上の出力を有することができる。より具体的には、プラントモデルサブシステムブロック１２１０は、２つの出力ポートブロック１２１２、１２１３に接続された２つの出力を有することができる。出力ポートブロック１２１２、１２１３を、設計モデル３００のそれぞれの外部入力に接続することができる。閉ループテストモデル１２００は、設計モデル３００を表すオブジェクトを含んでいなくてもよい。
【００７６】
別のタイプのテストモデルを、設計モデルに接続されたヒューマンマシンインターフェース（ＨＭＩ）とすることができ、または、該テストモデルは、該ＨＭＩを備えることができる。ＨＭＩを、たとえば、グラフィカルユーザーインターフェース（ＧＵＩ）ビルダーツールと対話（相互作用）するユーザーもしくは他の開発者によって、開く（オープンする）ことができまたは構成（ないし作成）することができる。ＧＵＩビルダーツールは、選択可能で、かつ、特定のＨＭＩを構成するために使用できるボタンやディスプレイなどのＧＵＩ要素を有する１以上のライブラリを含むことができる。適切なＧＵＩビルダーツールは、MathWorks社のGuages Blocksetソフトウェアツールである。
【００７７】
図１３は、グラフィカルなＨＭＩテストモデル１３００の略図である。ＨＭＩテストモデル１３００を設計モデル（不図示）に接続することができる。ＨＭＩ１３００は、カーラジオやオーディオシステムなどの、設計もしくはテストされるシステムのユーザーインターフェースをモデル化することができる。該設計モデルは、カーラジオやオーディオシステムの動作をモデル化することができる。ＨＭＩ１３００は、１以上の入力ボタン、及び、１以上の表示素子を備えることができる。特に、ＨＭＩ１３００は、複数の選局プリセットボタン１３０２〜１３０７、及び、音量調節ボタン１３０８を備えることができる。ＨＭＩ１３００はまた、マルチラインデジタル表示素子１３１０を備えることができる。ＨＭＩ１３００の入力ボタン１３０２〜１３０８の各々を、設計モデルの外部入力に接続することができる。１実施形態では、入力ボタン１３０２〜１３０８のうちの１以上のボタンを、テストエンジニアなどのユーザーが、たとえば、マウス、または、ＨＭＩ１３００を表示できるタッチスクリーンを用いて操作することができる。さらに、マルチラインデジタル表示素子１３１０などの、ＨＭＩ１３００の表示素子の各々を、設計モデルの外部出力に接続することができる。
【００７８】
ＨＭＩ１３００用の１以上のテスト仕様を作成することができる。該テスト仕様は、ボタン押下のシーケンス（順番）を指定することができる。テストを実行するために、テストエンジニアは、テスト仕様によって指定されたシーケンスでＨＭＩ１３００の入力ボタン１３０２〜１３０８を押すことができる。テスト仕様はまた、ＨＭＩ１３００のマルチラインデジタル表示素子１３１０に表示される予想出力を指定することができる。テストエンジニアは、テスト中に、ＨＭＩ１３００のマルチラインデジタル表示素子１３１０に表示されるデータまたは情報を記録または監視することができる。ＨＭＩ１３００を含むテストモデルはまた、テスト中にテストエンジニアによって入力されたボタン押下を記録するように構成された１以上のオブジェクトまたは構成要素を備えることができる。したがって、予想外の出力が、ＨＭＩ１３００のマルチラインデジタル表示素子１３１０に表示されたか、または、他の何らかの予期しない結果がテスト中に起こった場合には、テストエンジニアは、テストを中止して、ボタン押下の記録（ログ）を検査することができる。この検査は、予想外の出力またはエラー状態の原因を突き止めるために、１以上の追加のテストシーケンス（試験手順）を生成することにつながりうる。
【００７９】
別の実施形態では、ＨＭＩ１３００を含むテストモデルを、１以上の一連のボタン押下を自動的に実行するように構成することができる。たとえば、テストモデルは、実行される一連のボタン押下を要求するテストスクリプトを含むことができる。この場合、テストエンジニアは、テスト中に行われている一連のボタン押下を監視することができる。すなわち、それぞれのボタン押下が行われるときに、ＨＭＩ１３００上のそれぞれのボタンは、その外観を短時間変えることができる。たとえば、ボタンは、短時間だけ、色や輝度などを変えることができる。テストエンジニアはまた、マルチラインデジタル表示素子１３１０に表示されたデータまたは他の情報を監視または記録することができる。エラーまたは他の予期しない出来事が検出された場合には、テストエンジニアは、テストを中断して、記録（ログ）や他の構成要素を検査して、ＨＭＩ１３００及び／または設計モデルのさらなるテストを規定（ないし定義）することができる。
【００８０】
他のテストモデルと同様に、ブローカー２３２は、設計モデルのインターフェース仕様及びＨＭＩ１３００を構成ないし作成することができる。インターフェース仕様に対する変更が提案された場合には、ブローカー２３２は、ＨＭＩ１３００に対して行われる対応する変更を決定することができる。たとえば、新しい外部入力が設計モデルに追加されると想定する。ブローカー２３２は、新しい入力ボタンをＨＭＩ１３００に追加する必要があることを判定ないし決定することができる。さらに、設計モデルへの該新しい外部入力の追加とＨＭＩ１３００への該新しい入力ボタンの追加をアトミックに実行することができる。ＨＭＩ１３００、及び／またはＨＭＩ１３００を含むテストモデルは、インターフェース仕様に対する特定の提案された変更に応答して呼び出される１以上の関数を指定することができる。たとえば、該関数は、ＨＭＩ１３００上のデフォルトの位置に配置されるデフォルトのフォーマットを有する入力ボタンを要求することができる。さらに、該関数は、ユーザーに提示される（たとえばユーザーに対して表示される）メッセージまたは警告を要求することができる。該メッセージまたは警告は、ユーザーからのさらなる入力を必要とする、ＨＭＩ１３００に対する変更が行われたことを該ユーザーに知らせることができる。典型的なメッセージは、「新しいレイアウトが必要である」というものである。メッセージを、ユーザーに、ＨＭＩ１３００に新しく追加されたボタンのフォーマット（形式）、外観、及び／または位置を、所望のフォーマット（形式）、外観、及び／または位置に変更させるものであるように設計ないし構成することができる。
【００８１】
たとえば、新しい外部入力が、ＨＭＩ１３００に接続された設計モデルに追加される場合には、ブローカー２３２は、破線の輪郭で示されている新しいボタン１３１２などの新しいボタンをＨＭＩ１３００に追加することができる。
【００８２】
分散環境
本発明は、ワークステーションなどの単一のデータ処理装置で実施できるだけでなく、分散環境または分散アーキテクチャで実施することができる。図１４は、分散システム１４００として実施された本発明の（構成を示す）略図である。分散システム１４００の実施形態では、本発明の構成要素は、互いに通信関係にある別個のワークステーションやサーバーなどの別個のノードに配置されて、たとえば該別個のノードで動作する。
【００８３】
分散システム１４００は、ノード１４０２〜１４０５などの複数のノードを備えることができる。ノード１４０２〜１４０５の各々を、ワークステーションやサーバーなどの別個のデータ処理装置とすることができ、及び、それらのノードの各々は、データ処理システム１００（図１）の要素の一部または全てを備えることができる。第１のノード１４０２は、設計モデル１４０８を開きまたは構成（ないし作成）するために使用することができるモデリング環境１４０６を含むことができる。第２のノード１４０３は、設計モデル１４０８用に作成されたインターフェース定義１４１２を制御するブローカー１４１０を備えることができる。第３のノード１４０４は、テストモデル１４１６を開き及び／または構成（ないし作成）することができるモデリング環境１４１４を含むことができる。第４のノード１４０５は、テストモデル１４２０を開き及び／または構成（ないし作成）することができるテスト開発環境１４１８を含むことができる。ブローカー１４１０のローカルエージェント（不図示）はまた、第１のノード１４０２、第３のノード１４０４、及び第４のノード１４０５で動作することができる。
【００８４】
第１のノード１４０２及び第３のノード１４０４で動作するモデリング環境１４０６、１４１４を、同じタイプのモデリング環境の別個のインスタンスとすることができ、または、それらを、異なるモデリング環境とすることができる。設計モデル１４０８、テストモデル１４１６、及びテストモデル１４２０は、インターフェース定義１４１２に対する提案された変更に関する通知を受け取るために、ブローカー１４１０に登録することができる。
【００８５】
第１のノード１４０２、第３のノード１４０４、及び第４のノード１４０５を、双方向矢印１４２２〜１４２４で示されているように、ブローカー１４１０をホストする第２のノード１４０３に動作可能に結合することができる。矢印１４２２〜１４２４は、それぞれのノード間の通信リンクまたは通信チャンネルを表している。適切な通信チャンネルには、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、及び／または、インターネットなどの通信ネットワークにオーバーレイされた（重ね合わされた）１以上の仮想プライベートネットワーク（ＶＰＮ）が含まれる。第１のノード１４０２、第３のノード１４０４、及び第４のノード１４０５は、互いに通信関係になくてもよい、実際に、第１のモデリング環境１４０６、第２のモデリング環境１４１４、及び、テスト開発環境１４１８は互いに相手のことに気付かない場合さえある。別の実施形態では、第１のノード１４０２、第３のノード１４０４、及び第４のノード１４０５を、互いに通信関係にある（互いに通信できる）ものとすることができる。
【００８６】
設計モデルのインターフェースに対する提案された変更が、第１のノード１４０２の第１のモデリング環境１４０６によって行われると想定する。この提案された変更を、ローカルのブローカーエージェントによって取得ないし捕捉して、第２のノード１４０３のブローカー１４１０に伝えることができる。ブローカー１４１０は、テストモデル１４１６及びテストモデル１４２０が、インターフェース定義１４１２に対する変更のリスナー（聞き手）として登録したことを判定ないし決定することができる。したがって、ブローカー１４１０は、第３のノード１４０４及び第４のノード１４０５に対する１以上の通知メッセージを生成して、該メッセージをそれらのノードに送ることができる。第３のノード１４０４及び第４のノード１４０５におけるローカルのブローカーエージェントは、それらの通知メッセージを受け取り、及び、テストモデル１４１６及びテストモデル１４２０に関するそれぞれの（またはそれらのテストモデルのそれぞれの）関数を呼び出すことによって、変更されたときに、それらのテストモデルが設計モデル１４０８と整合した状態を維持するようにすることができる。
【００８７】
ローカルなブローカーエージェントを、設計モデル１４０８、テストモデル１４１６、及びテストモデル１４２０の全てにおいて変更が行われること、または、それらのどれも変更されないことを確実にするように構成することができる。そのような更新を実行するための適切な技術には、Two Phase Commit（二相コミット）プロトコルなどのデータベースプロトコルが含まれる。
【００８８】
１実施形態では、インターフェース定義１４１２は、ブルートゥース無線データ交換（Bluetoothwireless data exchange）プロトコルを規定する規格などの規格を参照することができる。したがって、Bluetooth（ブルートゥース）プロトコルに準拠するテストを定義ないし規定することができる。
【００８９】
１実施形態では、複数のユーザーが、同じ設計モデルに対するテストを同時または順次に生成することができる。それらのユーザーは異なる場所で作業している場合がある。それにもかかわらず、テストモデルの生成及び改訂は、設計モデルに影響を与えない（たとえば修正や変更を加えない）。
【００９０】
ソフトウェアインザループ（SiL：Software in the Loop）／プロセッサインザループ（PIL：Processor in the Loop）
上記したように、設計モデル３００及びテストモデル６００を、デスクトップパソコンやラップトップパソコンなどのワークステーションで実行することができる。別の実施形態では、設計モデル３００を、ソフトウェアインザループ（SiL）モードまたはプロセッサインザループ（PIL）モードで実行することができる。より具体的には、コード発生器２４０を、設計モデル３００用のコードを生成するように動作させることができる。さらに、生成されたコードを、ターゲット言語コンパイラ２４２によってコンパイルすることができる。コンパイルされたコードを、デジタル信号プロセッサ（ＤＳＰ）やマイクロプロセッサなどのターゲットのハードウェアデバイス（ハードウェア装置）にロードして実行することができる。さらに、ターゲットのデバイスを、イーサネットポート、シリアルもしくはパラレルポート、ＵＳＢポート、無線接続などの通信チャンネルを介してワークステーションに結合することができる。テストモデルを、たとえばシミュレーションエンジン２０６によってワークステーションで実行することができ、一方、設計モデル３００から生成されたコードをターゲットのデバイスで実行することができる。テストモデル６００は、通信チャンネルを用いて、ターゲットのデバイスによって実行される設計モデル３００の外部入力を駆動し、及び、ロギング（記録）及び／または基準テストのために外部出力を受け取ることができる。
【００９１】
たとえば、リアルタイムで実行できる設計モデル３００用のＣコードを自動的に生成することができる。たとえば、該Ｃコードを、１以上のダイナミックリンクライブラリ（ＤＬＬ）などの１以上の共有ライブラリにコンパイルすることができる。該１以上のＤＬＬを、Windows CE（Windows Embedded Compact（ウィンドウズエンベデッド コンパクト）の別名でも知られている））オペレーティングシステムなどのリアルタイムオペレーティングシステムを動作させるマイクロプロセッサで実行することができる。
【００９２】
別の実施形態では、コード発生器２４０を、ハードウェア記述言語（ＨＤＬ）に準拠するコードを生成するように動作させることができる。生成されたＨＤＬコードを用いて、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラム可能なハードウェアデバイスを構成することができる。たとえば、１以上の合成ツールは、ＨＤＬを受け取って、ハードウェア加速シミュレーション"用の、または、再構成可能な入力／出力信号調節用のＦＰＧＡを構成することができる。該ＦＰＧＡを通信チャンネルを介してワークステーションに結合することができる。この実施形態では、テストモデル６００をワークステーションで実行することができ、一方、設計モデル３００を該ＦＰＧＡで実行することができる。
【００９３】
さらに別の実施形態では、ＨＤＬコードを、テストモデル６００の構成要素の一部または全てについて生成し、該ＨＤＬコードを用いて、設計モデル３００に加えて、該テストモデルの一部または全てを実行するように該ＦＰＧＡをさらに構成することもできる。第１の実施形態では、ＨＤＬを、テストモデル６００の非ソースブロック及び非シンクブロックについて生成し、該ＨＤＬを用いて、該非ソースブロック及び非シンクブロックを実施するようにプログラム可能な論理回路を構成することができる。別の実施形態では、ＨＤＬを、ソースブロック及び／またはシングブロックについて同様に生成することができる。たとえば、入力信号を構成ないし作成するための情報を、そのサイズに応じて、該ＦＰＧＡに実装されている１以上のルックアップテーブルに格納することができる。ループテストにおいてハードウェアを実行するのに適切なデバイスには、National Instruments社のCompactRIOシリーズのデバイスが含まれる。
【００９４】
１実施形態では、設計モデル３００がマイクロプロセッサやＦＰＧＡなどのターゲットのハードウェアに実装される場合には、モデリング環境２００において設計モデル３００用に構成されたテストモデルを再利用することができる。テストモデルを再利用するのに適したツールには、MathWorks社のEmbeddedCoderによって提供されるEmbedded Targetが含まれる。
【００９５】
モデリング環境
図１５は、モデリング環境１５００の別の実施形態の部分機能図である。モデリング環境１５００は、ユーザーインターフェース（ＵＩ）エンジン１５０２、モデルエディタ１５０４、及びシミュレーションエンジン１５０６を備えることができる。シミュレーションエンジン１５０６は、インタープリター１５０８と、ＩＲ（Intermediate Representation：中間表現）ビルダー１５１２などの１以上のＩＲビルダーを含むことができるモデルコンパイラ１５１０と、ソルバー１５１４ａ〜１５１４ｃなどの１以上のソルバーとを備えることができる。ＵＩエンジン１５０２を、グラフィカルユーザーインターフェース（ＧＵＩ）などの１以上のユーザーインターフェースを作成して提示ないし提供するように構成することができる。この場合、ユーザーは、グラフィックモデルのオープン、生成、及び保存、並びに、テキストで記述されたプログラムのオープン、生成、及び保存などの種々のタスクを実行するために、該ユーザーインターフェースを動作させることができる。モデルエディタ１５０４を、１以上の設計モデル及び／またはテストモデルなどの１以上のグラフィックモデルを構成ないし作成するように構成することができる。ソルバー１５１４のうちの１以上のソルバーを用いてグラフィックモデルをシミュレートする（たとえば実行しまたは動作させる）ために、シミュレーションエンジン１５０６を用いることができる。
【００９６】
モデリング環境１５００はさらに、インターフェースブローカー１５１６を備えることができる。インターフェースブローカー１５１６は、インターセプトエンジン１５１８、アトミックトランザクションエンジン１５２０、及び、デフォルト条件生成器１５２２を備えることができる。１以上のインターフェース仕様を作成（ないし構成）及び維持するように、ブローカー１５１６を構成することができる。
【００９７】
モデリング環境１５００はまた、コンテナマネージャ１５２３及び要件マネージャ１５２５を備えることができ、さらに、設計プロジェクトコンテナ１５２４などの１以上の設計プロジェクトコンテナを備えることができ、または該コンテナにアクセスすることができる。コンテナマネージャ１５２３を、オブジェクトを保持または格納するコンテナを生成及び管理するように構成することができる。たとえば、コンテナマネージャ１５２３は、設計プロジェクトコンテナ１５２４を生成することができ、また、複数のオブジェクトを設計プロジェクトコンテナ１５２４にロードすることができる。具体的には、設計プロジェクトコンテナ１５２４は、設計モデル１８００と、テスト１５２８ａ〜１５２８ｃなどの、設計モデル１８００用の１以上のテストと、インターフェース仕様２０００と、設計仕様１５３２と、設計要件１５３４と、テスト要件１５３５とを備えることができる。設計仕様１５３２、設計要件１５３４、及びテスト要件１５３５をドキュメント（文書など）とすることができる。コンテナ１５２４は、それら以外のオブジェクトまたはそれらとは異なるオブジェクトを含むことができる。
【００９８】
本明細書に記載されているように、設計モデル１８００を実行可能なセマンティクスを有するグラフィックモデルとすることができる。設計モデル１８００は、設計者などのユーザーによって作成（ないし構成）され、編集され、及び／または評価される（コントローラなどの）システムまたはシステムの一部を表すことができる。テスト１５２８ａ〜１５２８ｃを、設計モデル１８００を評価するために使用されるテスト仕様やテストハーネスなどとすることができる。第１のテスト１５２８ａを、たとえば、実行可能なセマンティクスを有するグラフィックテストモデルとすることができる。第２のテスト１５２８ｂを、実行されると、設計モデル１８００に対して１以上のテストを実行するテキストで記述されたプログラムもしくはスクリプトとすることができる。第３のテスト１５２８ｃを、設計モデル１８００をテストするために使用される一組のデータなどのデータ駆動型テストとすることができる。該一組のデータは、設計モデル１８００によって処理される入力データ値、及び、設計モデル１８００が該入力データ値を処理したときに設計モデル１８００によって実際に生成された出力に対して評価される出力データ値または出力データの範囲を含むことができる。
【００９９】
他の形態ないし形式のテストを、設計プロジェクトコンテナ１５２４において生成することができ、また該コンテナに含めることができることが理解されよう。たとえば、別のテストをテストモデル１５２８ｂに基づくものとすることができるが、該テストは、該テストモデル１５２８ｂに異なるモデルパラメータを適用することができる。すなわち、第１のテストケースは、テストモデルパラメータの組「Ｘ」を有するテストモデル１５２８ｂを含むことができ、一方、第２のテストケースは、テストモデルパラメータの組「Ｙ」を有するテストモデル１５２８ｂを含むことができる。さらに、設計モデル１８００への参照、及びテストモデルへの参照を含むテストハーネスを定義ないし規定することができる。テストハーネスにおいて異なるテストモデルを代わりに用いることによって代替のテストを生成することができる。
【０１００】
データ駆動型テスト１５２８ｃの一組のデータは、入力信号及び出力信号トレースを含むことができ、該一組のデータを、複数の異なるやり方で生成しまたは取得することができる。たとえば、該一組のデータを、研究室や現場に実在する（たとえば物理的な）構成要素をテストすることによって取得することができる。該一組のデータを、設計モデル１８００、または設計モデル１８００の他のバージョンなどの他のモデルの１以上のシミュレーション中に生成しまたは取得することもできる。より具体的には、モデルのシミュレーション中に生成されたデータを記録するために、該モデルに（そのための）手段ないし機能を設けることができる。この記録されたデータを保存し、及び、設計モデル１８００のデータ駆動型テストとして使用することができる。手段ないし機能が設けられたモデルを、設計モデル１８００または設計モデル１８００のあるバージョンを含む最上位モデルまたは親モデルとすることができる。
【０１０１】
モデリング環境１５００は、コード発生器１５３６、ターゲット言語コンパイラ１５３８、差分エンジン１５４０、自動テストビルダー１５４２、及び設計検証部１５４４などの他の構成要素を備えることができる。コード発生器１５３６を、モデルから、ソースコード及び／またはオブジェクトコードなどのコンピュータプログラミングコードを生成するように構成することができる。ターゲット言語コンパイラ１５３８を、ターゲットのプラットフォームまたはターゲットのハードウェアによる実行のために、コード発生器１５３６によって生成されたソースコードなどのソースコードをコンパイルするように構成することができる。差分エンジン１５４０を、２つのモデルを分析して、該２つのモデル間の違いを記述するレポートを生成するように構成することができる。自動テストビルダー１５４２を、設計モデル用のテストを自動的に構成ないし作成するように構成することができる。設計検証部１５４４を、グラフィックモデルを評価して、該モデルにおける設計エラーを識別するように構成することができる。検出可能な典型的な設計エラーには、デッドロジック（dead logic）、整数オーバーフロー、ゼロ除算、並びに、設計プロパティ及びアサーションの違反が含まれる。設計検証部１５４４はまた、エラーが発見されたモデルの部分に対するテストベクトルを生成することができる。該テストベクトルは、該モデルのシミュレーション中にエラーを再現することができる。
【０１０２】
適切な設計検証部には、MathWorks社のSimulink DesignVerifierツールが含まれる。
【０１０３】
ブローカー１５１６、コンテナマネージャ１５２３、要件マネージャ１５２５、及び自動テストビルダー１５４２、並びに、モデリング環境１５００のその他の構成要素の各々は、順序論理回路を生成するように構成及び配置されたレジスタ及び組み合わせ論理回路を備えることができる。１実施形態では、ブローカー１５１６、コンテナマネージャ１５２３、要件マネージャ１５２５、及び自動テストビルダー１５４２を、本明細書に記載されている方法に関連するプログラム命令を含む１以上のソフトウェアモジュールもしくはソフトウェアライブラリによって実施することができる。これらのソフトウェアモジュールを、メインメモリ１０４、及び／またはコンピュータ可読媒体１２６などのコンピュータ可読媒体に格納することができ、及び、処理要素１０２などの１以上の処理要素によって実行することができる。他のコンピュータ可読媒体を、それらのプログラム命令を格納し及び実行するために使用することもできる。代替の実施形態では、ファームウェアを含むソフトウェア及びハードウェアの種々の組み合わせを用いて、本発明を実施することができる。
【０１０４】
設計プロジェクトコンテナ１５２４を、Open PackagingConventions（OPC）を用いて生成されたOpenXML Specification（OpenXPS）ドキュメントとして実施することができる。代替的には、コンテナ１５２４を、ｚｉｐ（ジップ）ユーティリティなどの圧縮ユーティリティを用いて実施することができる。設計モデル１８００及びテスト１５２８を、ファイル、テーブル、ツリー（木）、または、他のデータ構造もしくはオブジェクトを用いて実施することができる。設計プロジェクトコンテナ１５２４（これ自体がオブジェクトでありうる）を、メインメモリ１０４、永続的なメモリ１０８、及び／または媒体１２６に格納することができる。
【０１０５】
図１６Ａ及び図１６Ｂは、本発明の１実施形態による１方法のフローチャートである。ブロック１６０２に示されているように、ブローカー１５１６は、所与のプロジェクト用に、コンテナ１５２４などの設計プロジェクトコンテナを構成ないし作成することができる。ブロック１６０４に示されているように、ブローカー１５１６は、設計モデル、１以上のテスト、設計仕様、設計要件、及びテスト要件などのユーザーによって選択された１以上のオブジェクトをコンテナ１５２４に追加することができる。本明細書に記載されているように、ブローカー１５１６はまた、ブローカー１５１６によって生成されたインターフェース仕様をコンテナ１５２４に追加することができる。ブロック１６０６に示されているように、ＵＩエンジン１５０２は、設計プロジェクトコンテナのホーム画面またはホームページを表現ないし表示するＧＵＩなどのユーザーインターフェースを作成ないし生成することができる。
【０１０６】
図１７は、設計プロジェクトコンテナ１５２４のホームページ１７００を表現するグラフィカルユーザーインターフェース（ＧＵＩ）などのユーザーインターフェースの略図である。ホームページ１７００を、ワークステーション１００のディスプレイ１２０に表示することができる。ホームページ１７００を、それぞれのコンテナ１５２４に格納されているオブジェクトの少なくとも一部（好ましくは全て）へのアクセスを提供するように構成することができる。たとえば、ホームページ１７００は、複数のコマンドボタンやハイパーリンクなどのリンク（ユーザーは、該リンクを介してコンテナ１５２４のオブジェクトにアクセスすることができる）を含むことができる。具体的には、ホームページ１７００は、設計モデル１８００にアクセスするための設計モデルボタン１７０２、テスト１５２８ａ〜１５２８ｃにアクセスするための１以上のテストボタン１７０４ａ〜１７０４ｃ、インターフェース仕様２０００にアクセスするためのインターフェース仕様ボタン１７０６、設計仕様１５３２にアクセスするための設計仕様ボタン１７０８、設計要件１５３４にアクセスするための設計要件ボタン１７１０、及び、テスト要件１５３５にアクセスするための設計要件ボタン１７１２を備えることができる。
【０１０７】
コマンドボタンを、それぞれのオブジェクトのサムネイル画像の形態とすることができる。たとえば、設計モデルボタン１７０２を、設計モデル１８００のサムネイル画像とすることができる。
【０１０８】
ブロック１６０８に示されているように、設計プロジェクトコンテナ１５２４の１以上のオブジェクトを開くことができる。ユーザーは、オブジェクトを開くために、たとえばマウス１１８で、ホームページ１７００のそれぞれのコマンドボタンを選択することができる。ユーザーは、（たとえば編集またはシミュレーションのために）設計モデル１８００を開くために、設計モデルボタン１７０２を選択することができる。
【０１０９】
図１８は、コンピュータによって生成されたグラフィックモデル１８００の略図である。グラフィックモデル１８００を、ブロック線図モデルとすることができる。グラフィックモデル１８００は、自動車のドライブシャフト（駆動軸）のモデルを表すことができる。グラフィックモデル１８００は、機能または処理を実行する複数の（ブロックなどの）グラフィックオブジェクトを含むことができる。具体的には、グラフィックモデル１８００は、（モーターからの）入力ポートブロック１８０２、４つのFiveElementサブシステムブロック１８０４〜１８０７（すなわち、第１、第２、第３、及び第４のサブシステムブロック）、及び、（クラッチへの）出力ポートブロック１８０８を備えることができる。FiveElementサブシステムブロック１８０４〜１８０７の各々は、複数のFlexibleElementオブジェクト（不図示）などの複数のオブジェクトを階層的に表すことができる。
【０１１０】
ユーザーは、テスト１５２８ａ〜１５２８ｃのうちの１以上、インターフェース仕様２０００、設計仕様１５３２、または、設計要件１５３４などのコンテナ１５２４の他のオブジェクトを開くことができる。
【０１１１】
図１９は、ブロック線図モデルなどのグラフィックモデルとして実施される第１のテスト１５２８ａの略図である。第１のテスト１５２８ａを、モデルエディタ１５０４によって開いて、ディスプレイ１２０に表示することができる。第１のテスト１５２８ａは、複数の（ブロックなどの）グラフィックオブジェクトを含むことができる。具体的には、第１のテスト１５２８ａは、電気モーターブロック１９０２、ダイナモメーター（動力計）ブロック１９０４、クラッチブロック１９０６、及びモデル参照ブロック１９０８を含むことができる。モデル参照ブロック１９０８は、設計モデル１８００（図１８）への参照を提供することができる。電気モーターブロック１９０２及びクラッチブロック１９０６をモデル参照ブロック１９０８に結合して、モデル参照ブロック１９０８を介して、設計モデル１８００に入力を提供し、及び、設計モデル１８００から出力を受け取ることができる。第１のテスト１５２８ａは、閉ループテストの１例である。閉ループテストでは、テスト対象物（たとえば設計モデル）の出力が、シミュレーション中に使用されて、閉ループテストの１以上の入力に影響を与える。この代わりにまたはこれに加えて、閉ループテストの出力は、シミュレーション中に使用されて、テスト対象物の１以上の入力に影響を与えることができる。閉ループテストでは、たとえば微分代数方程式（DAE：differential algebraic equation）ソルバーネットワークを用いるときには、シミュレーションエンジン１５０６は、閉ループテストと設計モデルは複雑に絡み合っているものとみなしうる。それにもかかわらず、設計モデルのアイデンティティ（個性）を閉ループテストの要素とは別個のものとして保持するようにシミュレーションエンジン１５０６を構成することができる。
【０１１２】
第１のテスト１５２８ａを、複数のナビゲーションタブを有するユーザーインターフェース１９１０内で開くことができる。具体的には、ユーザーインターフェース１９１０は、ホームタブ（home tab）１９１２、設計タブ１９１４、第１のテストタブ１９１６、第２のテストタブ１９１８、及び第３のテストタブ１９２０を含むことができる。ユーザーは、ホーム画面１７００、設計モデル１８００、及びテスト間をナビゲートするために、たとえばマウス１１８を使って、対応するナビゲーションタブ１９１２〜１９２０を選択することができる。たとえば、ユーザーは、グラフィックモデル１８００（図１８）に戻るために、設計タブ１９１４を選択することができる。グラフィックモデル１８００が表示されているモデルキャンバスも一連のナビゲーションタブを有することができる。
【０１１３】
上記したように、第２のテスト１５２８ｂを、ＭＡＴＬＡＢ言語などのプログラミング言語にテキストで書かれたプログラムまたはスクリプトとすることができる。ユーザーは、該テストを、ＭＡＴＬＡＢエディタや他のテキストエディタなどのエディタ（エディターともいう）で開いて、変更または修正することができる。第３のテスト１５２８ｃを、設計モデル１８００用の入力データを含むデータファイルまたはデータオブジェクトとすることができる。この入力データを、実行中に設計モデル１８００によって受け取って処理して、１以上の出力値を生成することができる。第３のテスト１５２８ｃはまた、実行中、すなわち、シミュレーション中に設計モデル１８００によって生成された実際の値と比較することができる予測出力データ値または予測出力データ範囲を含むことができる。第３のテスト１５２８ｃを、テストハーネスなどのテストモデルに関連付けることができる。テストハーネスを、たとえば、ファイル名に基づいて作業空間または格納場所から、データファイルもしくはデータオブジェクトをロードするように、及び、ロードされたデータファイルもしくはデータオブジェクトからの情報を設計モデルへの入力として利用するように構成することができる。テストハーネスを、ロードされたデータファイルもしくはデータオブジェクトからの情報に対して設計モデルの出力を評価するように構成することもできる。他のデータ駆動型テスト、たとえば、他のデータファイルもしくはデータオブジェクトは、設計モデルをテストするために同じテストハーネスを利用することができる。テストハーネスは、テストハーネスによってロードされたデータファイルまたはデータオブジェクトからのデータとパラーメータ的に組み合わせることができる組み込みデータを含むことができる。さらに、テストハーネスを、データファイルもしくはデータオブジェクトからのデータを操作するように構成することができる。たとえば、テストハーネスは、該データをスケーリング（拡大／縮小）しまたは該データにその他の処理を施すことができる。
【０１１４】
１実施形態では、設計プロジェクトコンテナ１５２４の全てのオブジェクトは、ユーザーによる編集が可能である。すなわち、ユーザーは、設計モデル１８００、テスト１５２８、インターフェース仕様２０００、設計仕様１５３２、設計要件１５３４、及びテスト要件１５３５のうちのどれでも開いて、変更して、保存することができる。といっても、１以上の該オブジェクトを編集できないように（たとえばロック）することができる。設計モデル１８００などの１以上のオブジェクトを、たとえば「ブラックボックス」テストを生成するために、見えないように（たとえばロック）することもできる。「ブラックボックス」テストでは、ブラックボックスの中がユーザーには「見えない」ようになっている場合でも、合格／不合格の結果を提示することができる。
【０１１５】
図１６Ａを参照すると、ブロック１６１０に示されているように、ブローカー１５１６は、設計モデル１８００を分析して、該モデルの外部インターフェースを識別することができる。たとえば、ブローカー１５１６は、設計モデル１８００のメモリ内の表現を評価することができ、及び、いくつかあるインターフェース要素の中でも特に、該設計モデルの外部入力、出力、初期化設定、パラメータ、及び制御信号を識別することができる。初期化設定は、設計モデルの状態、信号、入力及び／または出力のデフォルト値もしくは開始値などの値を指定することができる。ブロック１６１２に示されているように、ブローカー１５１６は、この情報を用いて、設計モデル１８００の（インターフェース定義と呼ばれる場合もある）インターフェース仕様２０００を構成ないし作成することができる。
【０１１６】
ブローカー１５１６はまた、設計モデル１８００に関連付けられている１以上のテスト１５２８を識別することができ、及び、ブロック１６１４に示されているように、それらのテスト１５２８の各々を分析して、該テストのインターフェース要素と該設計モデルのインターフェース要素間のマッピングを決定することができる。ブロック１６１６に示されているように、ブローカー１５１６は、インターフェース仕様２０００にこのマッピング情報を含めることができる。
【０１１７】
図２０は、インターフェース仕様２０００の略図である。インターフェース仕様２０００を、ホーム画面１７００のインターフェース仕様ボタン１７０６を選択することによって、テキストエディタなどのエディタで開くことができる。１実施形態では、インターフェース仕様２０００を、複数の行と列を有し、該行と列の交差部が情報もしくはデータを格納するためのセルを定める（画定する）ところの複数の行と列を有する、たとえばテーブルなどの配列（アレイ）として編成ないし構成することができる。各行を、特定のインターフェース要素に対応付けることができ、及び、各行は、そのインターフェース要素に関する情報を格納することができる。より具体的には、各列は、該インターフェース要素に関する情報の特定のカテゴリー（部類）もしくはタイプを指定することができる。たとえば、インターフェース仕様２０００の第１の列２００２は、設計モデル１８００のインターフェース要素の名前を格納することができる。第２の列２００４は、第１のテスト１５２８ａのインターフェース要素の名前を格納することができる。第３の列２００６は、第２のテスト１５２８ｂのインターフェース要素の名前を格納することができる。第４の列２００８は、第３のテスト１５２８ｃのインターフェース要素の名前を格納することができる。インターフェース仕様２０００は、属性（または特性）などのインターフェース要素に関する追加の情報を含むことができる。
【０１１８】
たとえば、インターフェース仕様は、インターフェース要素のデータ型を格納するData Type列（データ型列）２０１０、インターフェース要素のデータ次元を格納するDataDimension列（データ次元列）２０１２、インターフェース要素の複雑さを格納するComplexity列（複雑さ列）２０１４、インターフェース要素のサンプリングモードのタイプを格納するSampling Mode列（サンプリングモード列）２０１６、及び、インターフェース要素が読み出し可能か、または書き込み可能か、または、読み出しと書き込みが可能かの指標を格納するRead/Write列（リード／ライト列）２０１８を含むことができる。たとえば、Simulinkモデリング環境では、入力ポートを読み出しのみ可能なポートとすることができ、出力ポートを書き込みのみ可能なポートとすることができ、データ格納メモリ（ＤＳＭ）を読み出しと書き込みが可能なメモリとすることができる。インターフェース仕様はさらに、インターフェース要素の値の範囲を格納するRange列（範囲列）２０２０、及び、（もしあれば）インターフェース要素の１以上のデフォルト条件を格納するDefault Value列（デフォルト値列）２０２２を備えることができる。ＤＳＭなどの読み出し及び書き込みが可能なインターフェース要素は、設計モデル及び／またはテストの入力と出力の両方として機能することができる。入力と出力の両方を表すことができる他の要素は、ポインタ（該ポインタから間接参照（または逆参照）し、または該ポインタに書き込みができる）を含む。
【０１１９】
インターフェース仕様２０００の行のグループを、たとえば外部インターフェースのタイプ別にまとめる（または編成する）ことができる。具体的には、インターフェース仕様２０００は、設計モデル１８００への外部入力用の第１の組の行２０２４、設計モデル１８００の外部出力用の第２の組の行２０２６、設計モデル１８００の初期化設定（状態及び信号）用の第３の組の行２０２８、設計モデル１８００のモデル設定（またはモデル設定値）／パラメータ用の第４の組の行２０３０、及び、設計モデル１８００の設計制御信号用の第５の組の行２０３２を含むことができる。インターフェース仕様２０００は、他のタイプの外部インターフェースを含むことができることが理解されよう。
【０１２０】
上記したように、インターフェース仕様２０００の各行は、所与のインターフェース要素に関する情報を格納することができる。たとえば、行２０３４は、設計モデル１８００に対する入力に関する情報（たとえば、「FromMotor」入力（モーターからの入力）を含むことができ、該情報は、第１のテストの「ToShaft」出力（シャフトへの出力）、第２のテストの「Out1」出力、及び第３のテストの「Out1」出力にマッピングされる。行２０３６は、設計モデル１８００の出力に関する情報（たとえば、「ToClutch」出力（クラッチへの出力）を含むことができ、該情報は、第１のテストの「FromShaft」入力（シャフトからの入力）、第２のテストの「In1」入力、及び第３のテストの「In1」入力にマッピングされる。
【０１２１】
インターフェース仕様２０００は、追加のインターフェース要素、及び／または、より少ない数のインターフェース要素、及び／または、他のインターフェース要素を含むことができることが理解されよう。たとえば、設計モデルが、入力と出力の両方を表すことができるData Store Memory（データ格納メモリ）要素などのインターフェース要素を含めることをサポートする場合には、該インターフェース仕様は、別個の入力と出力としてラベル付けされた（１以上の）エントリーもエントリーの（１以上の）グループも含んでいない場合がある。その代わり、該インターフェース仕様は、読み出し可能な／書き込み可能なインターフェース要素などのインターフェース要素用の（１以上の）エントリーを単に含むことができる。
【０１２２】
１実施形態では、インターフェース仕様２０００は、グラフィック表現などのテーブル（表）形式の他に他の形式を取ることもできる。
【０１２３】
インターフェース仕様の修正ないし変更
上記したように、ブローカー１５１６を、設計モデル１８００及びテスト１５２８のインターフェースに対する提案された変更を捕捉（インターセプト）するように構成することができる。さらに、ブロック１６１８（図１６Ｂ）に示されているように、ブローカー１５１６は、インターフェース仕様２０００に対する提案された変更を捕捉（インターセプト）することもできる。すなわち、ユーザーは、（たとえばテキストエディタまたは他のエディタで）インターフェース仕様２０００を開いて、インターフェース仕様２０００を修正ないし変更することができる。典型的な変更もしくは修正には、設計モデル１８００の入力、出力、もしくは初期化設定などのインターフェース要素を追加し、または除去し、または変更することが含まれる。たとえば、ユーザーは、既存の行を削除し、または、インターフェース仕様２０００に新しい行を追加して、設計モデル１８００の新しい入力、出力、もしくは初期化設定を指定することができる。ユーザーはまた、新しい入力、出力、もしくは初期化設定を指定する新しい行に、名前、及び／または、１以上の属性（ないし特性）などのなんらかの情報を入力することができる。ブローカー１５１６は、要求された変更が実行される前に該要求を捕捉（インターセプト）することができる。
【０１２４】
ブロック１６２０に示されているように、ブローカー１５１６は、提案された変更を検査して、設計モデル１８００のインターフェース及びテスト１５２８のインターフェースに対する対応する変更を識別して、それらが互いに整合性を維持するようにすることができる。ブロック１６２２に示されているように、ブローカー１５１６はまた、提案された変更によって影響を受ける設計モデル１８００及びテスト１５２８の任意の構成要素を識別することができる。ブロック１６２４に示されているように、次に、ブローカー１５１６は、インターフェース仕様２０００に対して提案された変更を実行（たとえば実施）し、及び、設計モデル１８００及びテスト１５２８に対して対応する変更を加えることができる。さらに、ブロック１６２６に示されているように、ブローカー１５１６は、インターフェース仕様２０００に対する提案された変更によって影響を受けるものとして識別された設計モデル１８００及びテスト１５２８の構成要素を変更することができる。ブロック１６２８に示されているように、アトミックトランザクションエンジン２３６は、設計モデル１８００、テスト１５２８、及びインターフェース仕様２０００に対する変更を、アトミックトランザクションなどの単一の分割できない処理として実行することができる。次に、最後のブロック１６３０に示されているように、処理を完了することができる。
【０１２５】
ユーザーが、設計モデル１８００、インターフェース仕様２０００、及び／またはテスト１５２８から１以上のインターフェース要素を削除する場合には、そのような削除されたアイテム（要素）をグラウンド（ground）ブロックまたはターミネータブロックで置き換えるようにインターフェースブローカー１５１６を構成することができる。設計モデル１８００、インターフェース仕様２０００、及び／またはテスト１５２８に追加されたインターフェース要素を、「自動的に追加された」ものとしてマークするようにインターフェースブローカー１５１６を構成することもできる。このようにして、設計モデル１８００、インターフェース仕様２０００、及び／またはテスト１５２８に追加された新しいインターフェース要素を識別する視覚情報（ビジュアルキュー）をユーザーに提供することができる。
【０１２６】
生成されたデータをマッピングしてデータ駆動型テストを生成する
図２１Ａ及び図２１Ｂは、本発明の１実施形態にしたがう設計モデル用のデータ駆動型テストを生成するための１方法のフローチャートである。ブロック２１０２に示されているように、設計モデル１８００を含む最上位のモデルまたは親モデルを生成することができる。たとえば、親モデルは、設計モデル１８００を参照するモデル参照ブロックを含むことができる。親モデルを、設計モデル１８００用のテストモデルとすることができる。ブロック２１０４に示されているように、親モデルに（所定の）機能もしくは手段を設けることができる。具体的には、親モデルのシミュレーション中に、たとえば設計モデル１８００を参照するモデル参照ブロックなどの設計モデル１８００のインターフェース要素の少なくとも一部（好ましくは全て）において信号トレースなどのデータを記録するために、それらのインターフェース要素に機能もしくは手段を設けることができる。グラフィカルモデリング環境において信号を記録するのに適したメカニズムには、MathWorks社のSimulinkモデリング環境におけるSignal Properties（信号プロパティ）ダイアログボックスを用いて、または、MathWorks社のModelExplorerツールを用いて、信号の「DataLogging」（データロギング）プロパティを有効にすることなどがある。所望のインターフェース要素がデータロギングに対して有効にされると、ブロック２１０６に示されているように、親モデルを実行（たとえばシミュレート）することができる。親モデルの実行中に、ブロック２１０８に示されているように、ログ（記録）が取られるインターフェース要素において生成された信号トレースなどのデータ値を記録する（たとえば格納する）ことができる。記録されたデータを、メモリに保存することができる１以上のデータオブジェクトに格納することができる。
【０１２７】
ブロック２１１０に示されているように、ブローカー１５１６は、記録されたデータを、設計モデル１８００のそれぞれのインターフェース要素にマッピングすることができる。具体的には、ブローカー１５１６は、特定の信号について記録されたデータを、設計モデル１８００の対応するインターフェース要素に関連付ける（リンクする）ことができる。インターフェース要素に対する記録されたデータのマッピングすなわち関連付けをインターフェース仕様２０００に格納することができる。すなわち、ブロック２１１２に示されているように、ブローカー１５１６は、設計モデル１８００用の新しいデータ駆動型テストを自動的に構成ないし作成して、該データ駆動型テストをインターフェース仕様２０００に格納することができる。たとえば、ブローカー１５１６は、記録されたデータ（または、該記録されたデータへのポインタ）をインターフェース仕様２０００に保存することができる。ブロック２１１４（図２１Ｂ）に示されているように、ブローカー１５１６はまた、該新しいデータ駆動型テストを設計プロジェクトコンテナ１５２４に含めることができる。
【０１２８】
その後、ユーザーは、該新しいデータ駆動型テストを選択し、ブロック２１１６に示されているように、それに格納されているデータを利用して設計モデル１８００をテストすることができる。インターフェース仕様２０００は、設計モデル１８００のそれぞれのインターフェース要素に対する、信号トレースなどの生成されたデータのマッピングを含んでいるので、ユーザーは、そのようなマッピングを手動で作成する必要はない。該新しいデータ駆動型テストに格納されているデータを利用して設計モデルをテストするために、既存のテストハーネスなどのテストハーネスを用いることができる。たとえば、ユーザーは、複数のデータ駆動型テストからのデータが設計モデルをテストするために使用されるときには、該複数のデータ駆動型テストの全てが同じテストハーネスを使用できるところの該複数のデータ駆動型テストを生成することができる。
【０１２９】
代替的な実施形態では、データ駆動型テストのテストデータを、設計モデルを含んでいないモデルから生成することができる。たとえば、以前のバージョンの設計モデルを有するモデルを使用することができ、または、異なるサブモデルを有するモデルを使用することができる。
【０１３０】
デフォルトのアクションを生成する
図２２は、新しいインターフェース要素のデフォルト条件を生成するためのフローチャートである。ブロック２２０２に示されているように、デフォルト条件生成器１５２２は、設計モデルのインターフェース、テストのインターフェース、またはインターフェース仕様２０００に対して提案された変更を評価することができる。判定ブロック２２０４に示されているように、デフォルト条件生成器１５２２は、該提案された変更が、該変更に関連付けられているデフォルト条件を必要としうるか（または必要とするか）否かを判定することができる。たとえば、デフォルト条件生成器１５２２は、提案された変更のタイプを決定することができ、及び、該変更のタイプがデフォルト条件を必要としうるか（または必要とするか）否かを判定することができる。たとえば、提案された変更が、設計モデル１８００に新しい入力を追加することである場合には、デフォルト条件生成器１５２２は、デフォルト値などのデフォルト条件を該新しい入力に関連付ける必要がありうると判定ないし決定することができる。提案された変更が、設計モデル１８００の出力に対する新しいテストを追加することである場合には、デフォルト条件生成器１５２２は、デフォルト条件を該新しい出力テストに関連付けるべきと判定ないし決定することができる。
【０１３１】
デフォルト条件生成器１５２２は、設計モデルが実行中にエラーを発生するのを防止するデフォルト値を選択することができる。該選択されたデフォルト値は、デフォルト値が使用されていることをユーザーに知らせる状態（ステータス）警告メッセージなどの１以上の警告メッセージを表示させることができる。１実施形態では、デフォルト条件生成器１５２２は、インターフェース要素のデータ型に応じて特定のデフォルト条件もしくはデフォルト値を選択または使用することができる。たとえば、数値データ型に対しては、デフォルト条件生成器１５２２は、デフォルト条件としてゼロを使用することができる。固定小数点型に対しては、デフォルト条件生成器１５２２は、デフォルト条件としてグラウンド値（ground value）を使用することができる。論理型（ブール型）に対しては、デフォルト条件生成器１５２２は、デフォルト条件としてFalse（偽）を使用することができる。１例として、設計モデルは、値が「ＯＫ」（正常）または「Failed」（故障）でありうる「システム状態」入力を含むことができる。たとえば、デフォルト条件を「ＯＫ」とし、ユーザーが故障モードをテストしたいときには、「システム状態」入力を「Failed」に設定するだけでよい。
【０１３２】
グラウンドブロックまたは他の要素を用いて、グラウンド値を有する信号を出力することができる。所与のモデル内に配置されているグラウンドブロックの出力データ型がゼロ（０）を正確に表すことができるときには、グラウンド値をゼロ（０）とすることができる。出力データ型がゼロ（０）を正確に表すことができないときには、グラウンド値を、ゼロに可能な限り近い値である非ゼロ値とすることができる。この操作を、非ゼロのバイアスを有する固定小数点データ型にのみ適用することができる。非ゼロのバイアスを有する固定小数点データ型の１例は、１の勾配と１のバイアスを有する符号なし８ビットデータ型を特定する「fixdt(0,8,1,1)」によって与えられる。グラウンドブロックの出力が列挙データ型（enumeration data type）の場合には、該列挙データ型がゼロ（０）を表すことができる場合でも、グラウンド値を列挙データのデフォルト値とすることができる。列挙データ型がデフォルト値を持っていない場合には、グラウンド値を、型定義における第１の列挙値とすることができる。列挙データ型は、値が定義済みの一組のシンボルまたは名前に属するユーザー定義データ型を参照することができ、それらのシンボルまたは名前は、値の単一の型を表すことができる。列挙値は、名前、及び、数値などの根底にある値を含むことができる。
【０１３３】
デフォルト条件生成器１５２２を、特定の設計モデル用のデフォルトのテストハーネスを識別するように構成することができる。この場合、ユーザーが、テストハーネスではなくデータ駆動型テストを選択した場合には、デフォルト条件生成器１５２２は、該デフォルトのテストハーネスを利用することができる。
【０１３４】
ブロック２２０８に至るYesの矢印２２０６によって示されているように、デフォルト条件生成器１５２２が、デフォルト条件を提案された変更に割り当てるべきと判定ないし決定した場合には、該生成器１５２２は、該提案された変更用のデフォルト条件を自動的に選択する。ブロック２２１０に示されているように、デフォルト条件生成器１５２２はまた、選択されたデフォルト条件を対応するインターフェース要素に割り当てることができる。たとえば、デフォルト条件生成器１５２２は、選択されたデフォルト条件（または該デフォルト条件へのポインタ）を、インターフェース仕様２０００内（たとえばデフォルト条件列２０２２）に格納することができる。
【０１３５】
１実施形態では、デフォルト値を、施される提案された変更のタイプに依存するデフォルト条件として利用するように、デフォルト条件生成器１５２２を構成することができる。たとえば、ユーザーが、インターフェース仕様２０００にアクセスして、設計モデル１８００に新しい入力を追加する場合を想定する。この新しい入力にデフォルト値「０」またはグラウンド値を割り当てるように、デフォルト条件生成器１５２２を構成することができる。なぜなら、そのような値は、設計モデル１８００のシミュレーション中にエラーを引き起こす可能性が低いからである。ユーザーが、テスト１５２８に新しい出力テストを追加する場合には、この新しい出力テストに、「Pass」（合格）というデフォルトのテスト条件を割り当てるように、デフォルト条件生成器１５２２を構成することができる。なぜなら、そのような値は、設計モデル１８００がテスト１５２８を用いてテストされているときにエラーを引き起こす可能性が低いからである。
【０１３６】
上記に代えて、または上記に加えて、設計仕様１５３２及び／または設計要件１５３４及び／またはテスト要件１５３５内の情報を利用してデフォルト条件を選択するように、デフォルト条件生成器１５２２を構成することができる。たとえば、設計仕様１５３２は、設計モデルへの入力が、４００Ｈzで５ボルトの電気信号を受信することを示すことができる。この場合、デフォルト条件生成器１５２２は、デフォルト条件値を４００Ｈzで５ボルトの新しい入力に割り当てることができる。同様に、デフォルト条件生成器１５２２を、設計検証部１５４４によって生成された情報を用いてデフォルト条件を選択するように構成することもできる。たとえば、インターフェース要素のコールバック関数またはオブジェクトまたは方法を登録ないし記録することができる（または、コールバック関数またはオブジェクトまたは方法をインターフェース要素に登録ないし記録することができる）。コールバック関数は、（Gen400hz5VoltSineWave(t1,t2)）などの関数を呼び出して、特定の時間もしくは時間範囲に関するデータを要求することができる。
【０１３７】
さらに別の実施形態では、ユーザーは、デフォルト条件生成器１５２２によって割り当てられる１以上のデフォルト値を指定することができる。たとえば、ユーザーは、設計モデル１８００の（１以上の）インターフェース要素に、それらのインターフェース要素に関する情報で注釈を付けることができる。デフォルト条件生成器１５２２は、それらの注釈にアクセスして適切なデフォルト条件を選択することができる。たとえば、デフォルト条件生成器１５２２は、インターフェース要素を周波数、電圧、及び位相オフセットに関して検査して、該インターフェース要素が、４００（単位はヘルツ）、５（単位はボルト）、及び０．２５（単位はサイクル）を指定していることを判定ないし決定することができる。ユーザーはまた、特定のデフォルト条件値を選択するときに、デフォルト条件生成器１５２２によって適用されることになる１以上のルールを指定することができる。
【０１３８】
判定ブロック２２０４に戻って、終了ブロック２２１４に至るNoの矢印２２１２によって示されているように、提案された変更がデフォルト条件を必要としない場合には、処理を終了することができる。
【０１３９】
上記したように、新しいインターフェース要素に公称値を提供するようにデフォルト条件生成器１５２２を構成して、設計モデルのテストがエラーを起こすことなく進行するようにすることができる。デフォルト条件生成器１５２２によって利用されるデフォルトのアクション（動作ないし処理）もしくは値をユーザーが設定可能なものとすることができる。たとえば、設計モデルの作成者は、新しいインターフェース要素に使用されるデフォルトのアクションもしくは値の指標を指定もしくは提供するコメント（注釈など）を該モデルに含めることができる。
【０１４０】
構成要素（コンポーネント）のモデリング／インクリメンタル（増分）ローディング
設計プロジェクトコンテナ１５２４の設計モデル１８００を、実行可能なセマンティクスを有するより高いレベルのグラフィックモデルに含めることができる。図２３は、複数の構成要素（コンポーネント）を含む親グラフィックモデル２３００の略図である。具体的には、親モデル２３００は、エンジンコンポーネント２３０２、ドライブシャフトコンポーネント２３０４、クラッチコンポーネント２３０６、及び、車両及びタイヤ（の）動力学コンポーネント２３０８を備えることができる。コンポーネント２３０２〜２３０８を、それぞれが他のモデルを参照するところのモデル参照ブロックとすることができる。たとえば、ドライブシャフトコンポーネント２３０４に結合されたエンジンコンポーネント２３０２は、ガソリンエンジンまたはディーゼルエンジンなどのエンジンのモデルを参照することができる。クラッチコンポーネント２３０６に結合されたドライブシャフトコンポーネント２３０４は、車のドライブシャフトをモデル化する設計モデル１８００（図１８）を参照することができる。車両及びタイヤ（の）動力学コンポーネント２３０８に結合されたクラッチコンポーネント２３０６は、クラッチのモデルを参照することができる。車両及びタイヤ（の）動力学コンポーネント２３０８は、自動車の動力学系のモデルを参照することができる。これらの他のモデルを、時間ベース、及び／または、データ／制御ベースのグラフィックモデル、状態図、テキストモデル（textual model）、または、それらの組み合わせとすることができる。
【０１４１】
コンポーネント２３０２〜２３０８の各々は、異なるチーム、たとえば、異なるグループの設計者及びエンジニアによって作成されたものであるかもしれない。それにもかかわらず、親モデル２３００の全てのコンポーネント２３０２〜２３０８は、１つのシステム（たとえば自動車）をモデル化するために協働することが意図されている。
【０１４２】
ドライブシャフトコンポーネント２３０４は、設計プロジェクトコンテナ１５２４の設計モデル１８００への参照（たとえばダイナミック（動的）リンク）を含むことができる。ドライブシャフトコンポーネント２３０４は、設計プロジェクトコンテナ１５２４の他のオブジェクトへの参照を含んでいなくてもよい。かくして、親モデル２３００が開かれると、モデルエディタ１５０４は、設計モデル１８００を設計プロジェクトコンテナ１５２４からメモリにロードするだけである。モデルエディタ１５０４は、テスト１５２８、インターフェース仕様２０００、設計仕様１５３２、設計要件１５３４またはテスト要件１５３５などの他のオブジェクトのどれも、設計プロジェクトコンテナ１５２４からメモリにロードしない。オブジェクトのこの部分的なロードは、インクリメンタルローディングと呼ばれる場合がある。
【０１４３】
設計とテストと他のオブジェクト間の分離を維持する
１実施形態では、コンテナマネージャ１５２３は、設計プロジェクトコンテナ１５２４などのコンテナに格納されているオブジェクトのメタデータを維持するように構成される。該メタデータは、設計モデルやテストなどのオブジェクトのタイプ、改訂番号、オブジェクトを作成した日付、オブジェクトが最後に変更された日付、オブジェクトが最後にアクセスされた日付、オブジェクトに関する統計などの情報を含むことができる。
【０１４４】
１実施形態では、コンテナ１５２４に格納されている他のオブジェクトから設計モデル１８００が分離された状態を維持するように、コンテナマネージャ１５２３を構成することができる。さらに、テスト１５２８または設計仕様１５３２または設計要件１５３４に対する変更もしくは編集が、設計モデル１８００に対して変更を加えないようにするように、コンテナマネージャ１５２３を構成することができる。設計モデル１８００が変更されなかったことを証明するために、コンテナマネージャ１５２３によって設計モデル１８００のために生成されたメタデータに、たとえばプロジェクトマネージャがアクセスして（それを）チェックすることができる。さらに、設計モデル１８００に何の変更も加えられなかったことを重ねて証明するために、差分エンジン１５４０を用いて、現在の設計モデル１８００をその旧バージョンと比較することができる。
【０１４５】
設計要件とテスト要件を区別する
図２４は、本発明の１実施形態にしたがう要件マネージャ１５２５の１動作方法のフローチャートである。ブロック２４０２に示されているように、設計モデル１８００の選択されたオブジェクトと、設計要件１５３４の選択された部分間のリンク（または関連付け）を生成するように、要件マネージャ１５２５を構成することができる。ブロック２４０４に示されているように、要件マネージャ１５２５はまた、テスト１５２８のテストモデル１５２８ａなどの１以上の選択されたオブジェクトと、テスト要件１５３５の選択された部分間のリンク（または関連付け）を生成することができる。具体的には、ＵＩエンジン１５０２は、（たとえば画面１２０に）表示するための要求管理インターフェース（Requirements Management Interface）を生成することができる。ユーザーは、該要求管理インターフェースを介して１以上のリンクを指定することができる。それらのリンクを、設計要件１５３４及び／またはテスト要件１５３５のドキュメント内のテキストエントリーもしくはその他のエントリーを指示する参照とすることができる。より具体的には、コンテキストメニューを用いて、設計要件１５３４及び／またはテスト要件１５３５内の要件オブジェクトまたはブックマークを、設計モデル１８００またはテストモデル１５２８ａの１以上のオブジェクトにリンクさせる（または関連付ける）ことができる。
【０１４６】
ブロック２４０６に示されているように、要件マネージャ１５２５はまた、要件レポートを生成することができる。要件レポートは、どの設計要件が設計モデル１８００のオブジェクトによって満たされたか、及び、どのテスト要件がテストモデル１５２８ａのオブジェクトによって満たされたかを示すことができる。さらに、それらのリンクは、双方向のトレーサビリティ（たとえば追跡調査）を可能にすることができる。したがって、設計モデル１８００、インターフェース仕様２０００、及びテスト１５２８を、全ての設計要件が設計モデル１８００内のどこかで実現されていること（たとえば、欠落した設計要件がないこと）、及び、全てのテスト要件がテスト１５２８によってテストされていること（たとえば、テストされていない要件がないこと）を確認するために検査することができる。
【０１４７】
ブロック２４０８に示されているように、要件マネージャ１５２５はまた、１以上の整合性チェックを実行して、除去されたかまたは変更された要件を識別することができる。
【０１４８】
コンテナマネージャ１５２３が、設計モデル１８００とテスト１５２８間の分離を維持するので、ユーザーは、特定の要件が、設計モデル１８００にリンクされている（または関連付けられている）か、したがって設計要件を表しているか、または、該特定の要件が、テスト１５２８にリンクされている（または関連付けられている）か、したがってテスト要件を表しているかを容易に判定することができる。
【０１４９】
「ライフサポート」テストを生成する
１実施形態では、自動テストビルダー１５４２を、設計モデル１８００用の最小テストを構成ないし作成するように構成することができる。最小テストを、最少数の要素しか有しないが、依然として、エラーや他の故障を生じることなく設計モデル１８００をテストすることができるテストモデルまたはテストハーネスとすることができる。自動テストビルダー１５４２は、インターフェース仕様２０００の情報を利用して、最小テストを構成ないし作成することができる。１実施形態では、自動テストビルダー１５４２は、最小テストを構成ないし作成するときに、設計モデル１８００を何ら考慮しなくてもよい。たとえば、自動テストビルダー１５４２は、インターフェース仕様２０００にリストされている設計モデル入力の各々に対する出力を生成することができる。自動テストビルダー１５４２は、インターフェース仕様２０００にリストされている設計モデル出力の各々に対する入力を生成することができる。さらに、自動テストビルダー１５４２は、最小のテストハーネスを構成ないし作成するときに、該インターフェース仕様に格納されている属性情報を利用することができる。これらの代わりに、または、これらに加えて、設計仕様１５３２及び／または設計要件１５３４及び／またはテスト要件１５３５内の情報を利用して最小テストを構成ないし作成するように、自動テストビルダー１５４２を構成することができる。
【０１５０】
上記の実施形態の説明は、例示及び説明を意図したものであって、本発明を網羅することを意図したものでも、本発明を開示した形態そのものに限定することを意図したものでもない。上記の教示に照らしていくつかの修正及び変形が可能であり、また、本発明の実施からそのような修正及び変更を得ることができる。たとえば、一連の動作を、フローチャートを参照して説明したが、他の実施例ではそれらの動作の順番を変えることができる。さらに、依存関係のない動作を平行して（または同時に）実行することができる。また、本明細書で使用されている「ユーザー」という用語は、別段の明示がない限り、たとえば、コンピュータやデータ処理システム（たとえばシステム１００）、または、コンピュータやデータ処理システムのユーザーを含む広い意味に解釈されるべきことが意図されている。
【０１５１】
さらに、本発明のいくつかの実施形態を、１以上の機能を実行する論理回路（ロジック）として実施することができる。この論理回路を、ハードウェアベース、またはソフトウェアベース、またはハードウェアベースとソフトウェアベースの組み合わせとすることができる。該論理回路の一部または全てを、１以上の有形の非一時的なコンピュータ可読記憶媒体に格納することができ、及び、該論理回路の一部または全てが、システム１００などのコンピュータもしくはデータ処理システムによって実行することができるコンピュータ実行可能命令を含むことができる。コンピュータ実行可能命令は、本発明の１以上の実施形態を実施する命令を含むことができる。有形の非一時的なコンピュータ可読記憶媒体を、揮発性または不揮発性とすることができ、該記憶媒体には、たとえば、フラッシュメモリ、ダイナミックメモリ、リムーバブルディスク、及び、固定型ディスクを含めることができる。
【０１５２】
本明細書及び／または図面に記載されている要素、動作、または命令のどれも、本発明に不可欠なものとして（そのように明示していない限り）解釈されるべきではない。また、本明細書で使用されている「ある」（「ａ」）という冠詞は、１以上のアイテム（要素など）を含むことが意図されている。１つのアイテムだけが意図されている場合には、「単一の」という用語またはこれと類似の言葉が使用されている。さらに、「に基づいて」という語句は、他の意味であることが明示されていない限り、「に少なくとも部分的に基づいて」を意味することが意図されている。
【０１５３】
上記の説明は、本発明の特定の実施形態に向けられたものである。しかしながら、説明したそれらの実施形態に対して、それらの利点の一部または全てを達成しつつ、他の変更及び修正を行うことができることは明らかであろう。したがって、添付の特許請求の範囲の目的は、それら全ての変更及び修正を本発明の真の思想及び範囲内のものとしてカバーすることである。
【図１】
2016506550.tif 000003
【図２】
2016506550.tif 000004
【図３】
2016506550.tif 000005
【図４Ａ】
2016506550.tif 000006
【図４Ｂ】
2016506550.tif 000007
【図５Ａ】
2016506550.tif 000008
【図５Ｂ】
2016506550.tif 000009
【図５Ｃ】
2016506550.tif 000010
【図５Ｄ】
2016506550.tif 000011
【図５Ｅ】
2016506550.tif 000012
【図６】
2016506550.tif 000013
【図７】
2016506550.tif 000014
【図８】
2016506550.tif 000015
【図９】
2016506550.tif 000016
【図１０】
2016506550.tif 000017
【図１１】
2016506550.tif 000018
【図１２】
2016506550.tif 000019
【図１３】
2016506550.tif 000020
【図１４】
2016506550.tif 000021
【図１５】
2016506550.tif 000022
【図１６Ａ】
2016506550.tif 000023
【図１６Ｂ】
2016506550.tif 000024
【図１７】
2016506550.tif 000025
【図１８】
2016506550.tif 000026
【図１９】
2016506550.tif 000027
【図２０】
2016506550.tif 000028
【図２１Ａ】
2016506550.tif 000029
【図２１Ｂ】
2016506550.tif 000030
【図２２】
2016506550.tif 000031
【図２３】
2016506550.tif 000032
【図２４】
2016506550.tif 000033
【国際調査報告】
2016506550.tif 000034
2016506550.tif 000035
2016506550.tif 000036
2016506550.tif 000037
2016506550.tif 000038