(57)【要約】【課題】１つの上位セマンティック表記を主に用い１つ以上の副上位セマンティック表記を利用する部分を有する混成線図に基づいて、検査を実行する。【解決手段】計算機からなる検査生成装置が初期化され（４１０）ると、ステートチャート表記及びデータ・フロー表記の上位セマンティック表記のからなる線図が入力される（４２０）。次いで、検査生成装置は、ＴＲＩデータ構造に格納されているＴＲＩを、線図を通して伝搬させ、検査生成テンプレートを決定する（４３０）。ノードについての検査生成テンプレートは、ノードの特定的な機能要件を記述し、ノードへの入力時間シーケンス及びノードからの期待出力から成る。そして、検査生成装置は、線図を通じて伝搬させた制約に基づいて検査を生成し（４４０）、該検査を実行すべきか否かについて判定し（４５０）、生成した検査を実行する（４６０）。【選択図】図４
2009277225.tif 000002
【特許請求の範囲】
【請求項１】
検査生成装置であって、
コンピュータ・プロセッサと、
データ・ストレージと、
前記データ・ストレージに格納され、前記コンピュータ・プロセッサによって実行可能な機械語命令であって、
前記検査生成装置を初期化し、
複数の埋め込みノードと、複数のアークとを含む、複数のノードを備えているシステム実行デバイスに対する要件を表す線図を入力し、各アークは前記複数のノードの１つ以上を接続し、前記複数のノードにおける各ノードは、前記複数の埋め込みノードを除いて、主要セマンティック表記に属し、前記複数の埋め込みノードにおける各埋め込みノードは、前記主要セマンティック表記と同一でない副セマンティック表記に属する少なくとも１つのサブ線図を備えており、
前記ノードが用いるセマンティック表記に基づいて、前記複数のノードにおける各ノードを通じて、タイプ及び範囲情報（ＴＲＩ）を伝搬させ、
前記ノードが用いるセマンティック表記に基づいて、前記複数のノードにおける各ノード毎に、複数の検査生成テンプレートを決定し、
前記複数の検査生成テンプレートに基づいて、前記線図に対する検査を生成し、
少なくとも１つの生成した検査を実行すべきか否か判定を行い、
少なくとも１つの生成した検査を実行すべきであるという判定に応答して、前記少なくとも１つの生成した検査を実行する
ことを含む機能を実行するための機械語命令と、
を備えていることを特徴とする検査生成装置。
【請求項２】
請求項１記載の検査生成装置において、前記線図を通してＴＲＩ情報を伝搬させ、複数の検査生成テンプレートを決定する機能は、
前記線図の部分集合である入力線図の前記複数のノードの少なくとも１つのノードを、ＴＲＩ伝搬キューに挿入し、
前記入力線図のセマンティック表記に基づいて検査生成手順を選択し、
前記ＴＲＩ伝搬キューが空でない間、
（ｉ）前記ＴＲＩ伝搬キューからノードを選択し、
（ｉｉ）前記選択したノードを前記ＴＲＩ伝搬キューから除去し、
（ｉｉｉ）前記選択したノードが指定ノードであるか否か判定し、
（ｉｖ）前記選択したノードが指定ノードであると判定したことに応答して、前記選択ノードを通じてＴＲＩを伝搬させ、前記選択した検査生成手順を用いて、前記選択したノードに対して検査生成テンプレートを決定し、
（ｖ）前記選択したノードが非指定ノードであると判定したことに応答して、前記選択したノードを入力線図として用いて、前記伝搬方法を再帰的にコールし、次いで前記選択したノードを後処理し、前記選択したノードの後処理を、前記選択したノードのセマンティック表記に基づいて行う
ことを実行することを特徴とする検査生成装置。
【請求項３】
請求項１記載の検査生成装置において、前記複数の検査生成テンプレートに基づいて前記線図に対して検査を生成する機能は、
（ｉ）前記複数の検査生成テンプレートから検査生成テンプレートを選択し、
（ｉｉ）前記選択した検査生成テンプレートの上流にある入力を、前記線図の複数の影響を及ぼし得る入力点に投影し、
（ｉｉｉ）関連するノードから複数の測定可能測定点に、期待出力を下流に向けて伝搬させ、
（ｉｖ）前記投影した入力と前記伝搬させた期待出力とに基づいて生成した検査を記録し、
（ｖ）前記複数の検査生成テンプレートにおいて、処理すべき別の検査生成テンプレートを決定し、
（ｖｉ）別の検査生成テンプレートを処理すべきであると判定したことに応答して、前記別の検査生成テンプレートに対して機能（ｉ）〜（ｉｖ）を実行する
ことを特徴とする検査生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査生成及び実行の自動化に関し、更に特定すれば、混成（ハイブリッド）データ・フロー及びステートチャート線図から生成する検査事例の自動検査生成及び実行に関する。
なお、本願は、２００８年５月１４日に出願され"Method and Apparatus for Hybrid Test Generation from Diagrams with Combined Data Flow and Statechart Notation"（データ・フロー及びステートチャート表記を組み合わせた混成線図からの検査生成方法及び装置）と題する米国仮特許出願第６１／０５３，２０５号の優先権を主張する。その内容全体は、ここで引用したことにより本願にも含まれるものとする。
【従来技術】
【０００２】
安全性に対して厳格なソフトウェアの検証は難しい問題であり、大量の時間及びコストが伴う。モデル・ベース開発（ＭＢＤ：model-based development）ツールが広く用いられており、制御システム（飛行制御、エンジン制御、航行等）に合ったアルゴリズムを指定し、当該制御システムにおいてブロック図を実行することにより、指定したアルゴリズムが正しく実現されることを検証する検査を自動的に作成することができる。この検査生成の自動化によれば、特に、データ・フロー図又はステートチャート図のセマンティックス(semantics)が示す特定の「アルゴリズム要件」を検査するために検査を生成するときに、検証コスト及び時間を大幅に削減することができる。
【０００３】
ＭＢＤツール・モデリング表記では、アルゴリズムは、データ・フロー・ブロック図、ステートチャート、又は組み合わせ線図によって指定することができ、該ステートチャートは、データ・フロー・ブロックとしてデータ・フロー図に埋め込まれる（又はその逆もある）。更に一般的には、「混成図」とは、データ・フロー表記、ステートチャート表記、及び／又はシーケンス図表記のような、２つ以上の種類のセマンティック表記が用いられる線図である。要求駆動型検査(requirement-driven test)生成技法が提案され、該技法は純粋なデータ・フロー図及び純粋なステートチャートに合わせて実現されている。
【０００４】
アルゴリズムは、「ノード」及び「アーク」を用いた「線図」を用いて表現することができる。線図は、文字及び／又は描写で記述することができる。線図におけるノードも、内部線図を内包することができる。内部線図のことをサブ（副）線図と呼ぶことができ、各サブ線図は、内部線図すなわちサブ・サブ線図等を有するノードで構成することができる。この線図、サブ線図、サブ・サブ線図等の階層は、親／子関係の語句で表現される。一般的に言うと、線図における任意のノード（又はノードの集合）も、親線図を含む先祖を有することができ、先祖は最終的に最上位の線図にまで到達する。また、ノードは、子サブ線図、サブ・サブ線図等を有することができる。特殊な事例として、最上位の線図は、最終親線図と考えられる。最上位線図をモデルと呼ぶこともできる。
【０００５】
データ・フロー図は、方向が定められ、循環的な線図である場合もあり、この線図における各ノードは、ある種の機能を実行し、ノード間を接続するアークは、データがどのようにノード間を流れるかを示す。データ・フロー図のノードは「ブロック」とも呼ばれており、各ブロックはブロック・タイプを有する。ブロックは、多数の入来アークと、多数の出立アークとを有することができる。アークの各端部は「ポート」を通じてブロックに接続される。ポートには方向がなく、情報が流入する又は流出するのどちらかであるが、両方ではない。「入力ポート」は多くても１つの入来アークしかないこともあるが、「出力ポート」は無限数の出立アークを有することができる。入来アークのないブロックは、「入力ブロック」と見なされ、出立アークがないブロックは「出力ブロック」と見なされる。
【０００６】
ステートチャートとは、方向が定められ、循環的な線図である場合があり、「状態」と呼ばれる複数のノードと、「遷移」と呼ばれる複数のアークとを備えており、アークの各々は原始状態から宛先状態への経路を示す。各遷移は、１つ以上の「状態」、即ち、その遷移を越える前に満足しなければならない必要条件を備えることができる。各状態は、１つ以上の「ステートチャート定義変数」を指定することができ、これらの変数はステートチャート内において値を格納するために用いられる。ステートチャートは、１つ以上の「ステートチャート入力変数」、即ち、システム機能を実行する前にデバイスに供給する値、及び１つ以上の「ステートチャート出力変数」、即ち、システム機能を実行する前にデバイスが出力する値を備えることができる。各条件は、ステートチャート定義変数、ステートチャート入力変数、及び／又はステートチャート出力変数に関して表現することができる。
【０００７】
シーケンス線図は、方向が定められた線図であり、相互作用、即ち、「オブジェクト」と呼ばれるノード集合間において「メッセージ」と呼ばれるアーク集合を差し出して、所望の動作又は結果を得る。シーケンス線図は、２つの次元、すなわち時間次元（通常、垂直軸）及びオブジェクト次元（通常、横軸）を有する。時間次元は通常縦軸に沿って下方に進むので、時間的に後に発生するメッセージが、シーケンス線図では、多くの場合、先のメッセージの下方に示される。オブジェクト次元に沿ったメッセージの順序付けには、特に意味はない。
【０００８】
混成線図は、多数のセマンティック表記に関して必然的に指定されるデバイス又はシステムに対して要件を指定するためには有用である。例えば、自動車用巡航制御デバイスは、「巡航制御使用中」、「巡航制御加速中」、「巡航制御減速中」、「巡航制御解除」等のような、状態を有するように記述することができる。各状態における情報は、データ・フロー技法を用いてモデル化することができる。"desired_speed"値は、"cruise_control_UI"ユーザ・インターフェース・スレッドによって設定し、自動車が加速すべきか、減速すべきか、又は速度を維持すべきかを判定するために"cruise_control_engine_interface"エンジン・インターフェース・スレッドによって読み出すことができることを示すというように、データ・フロー技法は、情報がプログラム・モジュール、タスク、プロセス、又は状態を実現するスレッド間でどのように移行するかを示す。
【０００９】
混成（ハイブリッド）線図では、現行の技術的現状には、２つの主要な手法がある。第１の手法は、データフロー・セマンティックス及びステートチャート・セマンティックスの双方を支援する下位表記を用いて、混成線図を変換することである。例えば、現行のモデル・チェッカ・ツールは、プログラム・カウンタ及び変数状態表記のような、下位表記を用いて線図を変換する。第２の手法は、線図の入力に対して乱数を発生し、混成モデル・シミュレーションによって期待出力値を計算する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、混成線図から、検査を生成する方法、システム、及び装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明の第１実施形態は、検査を生成する方法を提供し、該方法においては、検査生成装置が初期化され、システム実行デバイスに対する要求を表す線図が入力される。線図は、複数のノードと複数のアークとを含む。各アークは、複数のノードの内１つ以上を接続する。複数のノードは、複数の埋め込みノードを含む。複数のノードにおける各ノードは、複数の埋め込みノードを除いて、主（メイン）セマンティック表記に属する。複数の埋め込みノードにおける各埋め込みノードは、主セマンティック表記とは同一でない副（サブ）セマンティック表記に属する１つ以上のサブ線図を含む。伝搬方法（propagation）を用いて、線図を通してタイプ及び範囲情報（ＴＲＩ）を伝搬させて、複数のノードにおいて各ノード毎に検査生成テンプレートを決定する。ＴＲＩを伝搬させ、埋め込みノードを除く複数のノードにおける各ノード毎に主セマンティック表記に基づいて、検査生成テンプレートを生成する。ＴＲＩを伝搬させ、副セマンティック表記に基づいて、複数の埋め込みノードにおける各ノード毎に検査生成テンプレートを生成する。複数の検査生成テンプレートに基づいて、線図に対して検査を生成する。
【００１２】
本発明の第２実施形態は、線図からシステム実行デバイスに対する要件を表す検査を生成する方法を提供する。線図は、複数のノードと複数のアークとを含む。各アークは、複数のノードの内１つ以上を接続する。複数のノードは、複数の埋め込みノードを含む。複数のノードにおける各ノードは、複数の埋め込みノードを除いて、主セマンティック表記に属する。複数の埋め込みノードにおける各埋め込みノードは、主セマンティック表記とは同一でない副セマンティック表記に属する１つ以上のサブ線図を含む。複数の検査生成テンプレートが、検査生成テンプレート・データ構造の中に受け入れられる。各検査生成テンプレートは、線図の関連ノードを表す。検査生成テンプレート・データ構造からの検査生成テンプレート、及び検査生成テンプレートに対する関連ノードが選択される。選択された検査生成テンプレートに基づいて、検査生成テンプレート・データ構造が更新される。関連ノードから複数の影響し得る入力ポイントまでの第１経路に沿って、入力が上流に向けて投影される。第1経路の中にあるノードのセマンティック表記に基づいて入力が投影される。関連ノードから複数の測定可能観察点に第２経路に沿って、期待される出力（期待出力）が下流に向けて伝搬される。第２経路の中にあるノードのセマンティック表記に基づいて、期待出力が伝搬される。選択した検査生成テンプレートに基づいて、検査が生成される。複数の検査生成テンプレートにおいて、検査生成テンプレート・データ構造に基づいて、別の検査生成テンプレートを処理すべきかの判定が行われる。
【００１３】
本発明の第３実施形態は、検査生成装置を提供する。該検査生成装置は、コンピュータ・プロセッサと、データ・ストレージと、機械語命令とを含む。機械語命令は、データ・ストレージに格納されており、機能を実行するためにコンピュータ・プロセッサによって実行可能である。検査生成装置を初期化する。システム実行デバイスに対する要件を表す線図を入力する。線図は、複数のノードと複数のアークとを含む。複数のアークにおける各アークは複数のノードの１つ以上を接続する。複数のノードは、複数の埋め込みノードを備えている。複数のノードにおける各ノードは、複数の埋め込みノードを除いて、主セマンティック表記に属する。複数の埋め込みノードにおける各埋め込みノードは、主セマンティック表記と同一でない副セマンティック表記に属する少なくとも１つのサブ線図を備えている。ノードが用いるセマンティック表記に基づいて、前記複数のノードにおける各ノードを通じて、ＴＲＩを伝搬させるために、伝搬方法を用いる。ノードが用いるセマンティック表記に基づいて、複数のノードにおける各ノード毎に、複数の検査生成テンプレートを決定する。複数の検査生成テンプレートに基づいて、線図に対して検査を生成する。
本明細書では、以下の図面を参照しながら、実施形態の種々の例について説明する。図面においては、同様の参照番号は同様の構成要素を示すこととする。
【図面の簡単な説明】
【００１４】
【図１】データ・フロー図の一例であり、本発明の実施形態にしたがって、データ・フロー図のブロックを、ステートチャートとして表現したものである。
【図２】ステートチャート線図の一例であり、本発明の実施形態にしたがって、ステートチャートの状態をデータ・フロー図として表現したものである。
【図３】本発明の実施形態による計算機の一例である。
【図４】本発明の実施形態にしたがって、線図から検査を生成する方法の一例を示すフローチャートである。
【図５】本発明の実施形態にしたがって、線図全体にＴＲＩを伝搬させ検査生成テンプレートを決定する伝搬方法の一例を示すフローチャートである。
【図６】本発明の実施形態にしたがって、検査生成テンプレートから検査を生成する方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
データ・フロー表記及びステートチャート表記の本来のセマンティクスを考慮に入れた手法を用いて、総合的な要求に基づく検査事例を作成して、検証のコスト及び時間を削減する方法及び装置を提供する。本発明は、システム機能を実行することができるシステム実行デバイス（例えば、航空デバイス、コンピュータ・プロセッサ、画像プロセッサ、及び／又はコンピュータ・ソフトウェア・システム）の機能（振る舞い）の要求を指定する線図上で動作する。
【００１６】
線図は、混成（ハイブリッド）線図であってもなくてもよい。線図が混成線図でない場合、検査生成方法を用いると、線図を表現するために用いられるセマンティク表記の形式に基づいて、該線図について検査を生成することができる。データ・フロー図から検査を生成する方法の一例が、２００８年５月２９日に米国特許出願公開第２００８／０１２６９０２号として公開された、"Requirements-Based Test Generation"（要件に基づく検査生成）と題する米国特許出願第１１／９４５，０２１号（「データ・フロー出願」）に開示されている。また、ステートチャートから検査を生成する方法の一例は、２００８年６月１０日に出願され、"Method, Apparatus, and System for Automatic Test Generation from Statecharts"と題する米国特許出願第１２／１３６，１４６号（「ステートチャート出願」）に開示されている。これら２つの特許出願の内容全体は、ここで引用したことにより、本願にも含まれるものとする。本文書では、以下、特にそうでないと述べない限り、線図は混成線図と仮定する。
【００１７】
前述のように、現行の手法の１つでは、混成線図を、プログラム・カウンタ及び変数状態表記のような、下位表記に変換し、次いでこの下位表記を用いて検査を生成する。この手法には少なくとも３つの主要な欠点がある。第１の主要な欠点は、混成線図において指定された要件の上位セマンティクスが、下位表記では失われるので、要件に基づく検査を事実上生成できないことである。下位表記を用いると、検査事例を作成することが遥かに難しくなる。これは、データ・フロー及びステートチャート線図のような、上位表記の構造全体が、下位表記が必要とする詳細では失われているからである。
【００１８】
第２の主要な欠点は、下位表記を用いて表現した混成線図に生成した検査を格納し実行するために必要となる空間が遥かに広いことである。下位表記で表現された変換線図は、元のデータ・フロー及びステートチャート・コンポーネント線図よりも遥かに大きく、しかも桁外れに大きな状態空間を必ず伴う。
【００１９】
第３の主要な欠点は、元のステートチャート及びデータ・フロー表記のセマンティクスに基づく解決及び状態空間間引き(pruning)技法が、下位表記を用いて表現した組み合わせ線図には適用できないことである。セマンティック情報が失われることにより、下位表記を追従することは上位表記よりも困難になるのが一般的である。状態空間、又は可能な状態の数は、上位表記を用いて表現する検査と比較して、下位表記を用いて表現する検査の方が遥かに多くなる。即ち、プログラム・カウンタ及び変数状態表記を用いて表現した検査のための状態空間は、多くの可能なプログラム・カウンタ値及び多数の変数を有する線図では事実上無限となる場合もあり、その多くは、大量の可能な値を許容するタイプ（即ち、整数、文字列、実数）を用いて表現されている。したがって、状態空間を利用することは一層厳しくなり、その結果、下位表記で状態の同等性について理由付けすることは、不可能ではないにしても、遥かに厳しくなる。
【００２０】
第２の現行手法は、線図の入力に対して乱数を発生し、混成モデル・シミュレーションによって期待出力値を計算している。この手法には、２つの主要な欠点がある。第１の欠点は、このようにランダムに生成した検査は、要件に基づいておらず、したがって混成モデルによって指定されるシステムの実施において機能的誤りを、信頼性高く発見(uncover)できないことである。第２の欠点は、多数の時間ステップを必要とする検査生成に対して入力数が増大するに連れて状態空間が爆発的に増えることである。このため、ランダム・シミュレーション手法は拡縮調整ができなくなり、したがって実世界のモデルでは動作不可能になる。
【００２１】
本願は、現行の手法に伴う問題に取り組む新規の技法を開示する。即ち、データ・フロー図及びステートチャートを含む、多数の上位表記を用いて表現した混成線図に対する独立検査生成技法を組み合わせる検査生成方法を提供する。混成検査生成方法は、検査生成装置によって実現することができる。検査生成装置の好適な実施形態は、ＮＪ、MorristownのHoneywell International, Incが提供するHoneywell Integrated Lifecycle Tools and Environment (HiLiTE) コンピュータ・ソフトウェア・パッケージである。
【００２２】
図３に関して以下に説明する計算機（コンピュータ装置）等からなるデバイスを用いて、検査生成装置を実現すること、及び／又は以下に記載する方法４００、５００、及び／又は６００におけるブロックを実行することができる。計算機を検査生成装置として用いる場合、方法４００、５００、及び／又は６００は、計算機のデータ・ストレージに格納する機械語命令として実装する。一旦検査を生成したなら、これらは、コンピュータ化した検査ドライバ及び／又は検査人によって実行することができる。
【００２３】
混成線図は、主に、１つの上位セマンティック表記を用い、部分的に１つ以上の別の上位セマンティック表記を利用する。即ち、１つの上位セマンティック・モデルを用いて主に表現した混成線図は、１つ以上の「埋め込みノード」、即ち、主セマンティック・モデルではない副セマンティック・モデルに関して表現した、主セマンティック・モデルのコンポーネントを含むことができる。例えば、主にデータ・フロー図として表現した親ノード又は線図は、ステートチャート表記、シーケンス線図、及び／又はその他のセマンティック・モデルに関して表現した１つ以上の埋め込みノードを有することができる。同様に、ステートチャートとして表現した線図は、データ・フロー表記、シーケンス線図、及び／又はその他のセマンティック・モデルに関して表現した１つ以上の埋め込みノードを有することができる。特に、１つの埋め込みノードは、主セマンティック・モデルで表現したインターフェース、及び主セマンティック・モデルとは異なる副セマンティック・モデルで表現した１つ以上のサブ線図を含むことができる。本明細書において記載する場合、特に指定がなければ、線図は混成線図であるので、各線図は少なくとも１つの埋め込みノードを内包する。
【００２４】
また、ノードは、「指定ノード」又は「未指定ノード」にも分類することができる。指定ノードとは、ＴＲＩ伝搬のためというように、検査生成装置が使用するために利用可能なタイプ及び範囲情報（ＴＲＩ）を有するノードのことである。指定ノードの一例に、以下で説明する図１のノード１２０のような、データ・フロー図の加算ノード(sum node)がある。予め決定してあるＴＲＩを、検査生成装置に利用可能にすることができる。例えば、種々のノードについてのＴＲＩをＴＲＩデータベースに格納することができ、検査生成装置は、恐らくはＴＲＩデータベースに対する問い合わせに基づいて、実行中にＴＲＩにアクセスして読み出すことができる。ＴＲＩデータベースは、検査生成テンプレートも格納することができる。ＴＲＩ情報（タイプ及び範囲情報）が利用できない場合、ノードを未指定ノードに分類すればよい。また、検査生成装置が埋め込みノードについてのＴＲＩ情報を有する場合、この埋め込みノードを、ステートチャート内に埋め込まれたデータ・フロー図の加算ノードのような、指定ノードとすることができる。この場合、加算ノードについてのＴＲＩ情報は、検査生成装置において利用可能となる。
【００２５】
このように、検査生成装置は、未指定ノード毎にＴＲＩ情報を決定しなければならない。未指定ノードについてのＴＲＩ情報は、当該未指定ノードのサブ線図の決定に基づいて決定することができる。セマンティック表記に関係なくノードを指定する１つの技法では、これらを原型(archetype)として扱う。これは、２００２年９月１２日に出願され、"Framework for Domain-Independent Archetype Modeling"（ドメインに依存しない原型モデリングのためのフレームワーク）と題する米国特許出願第１０／２４２，２０１号に開示されている。その内容全体は、ここで引用したことにより、本願にも含まれるものとする。
【００２６】
混成線図の概念は、再帰性とすることができる。即ち、混成線図の埋め込みノードは、主に１つのセマンティック表記を用いて表現することができ、埋め込みノード内にある埋め込みノードは、異なるセマンティック表記を用いて表現する。一例として、ステートチャート表記を主に用いて線図を表現し、データ・フロー表記を用いて埋め込みノードを表現すると仮定する。更に、主にデータ・フロー表記を用いる埋め込みノードが、ステートチャート表記を用いる埋め込みノードを有すると仮定する。混成線図の埋め込みノード内における埋め込みノードの再帰プロセスは、線図の要件を表現するために、必要に応じて連続することができる。
【００２７】
検査生成装置は、線図を入力として取り込むことができる。例えば、線図をステートチャートとして表現し、埋め込みノードをデータ・フロー図として表現することができる。あるいは、線図をデータ・フロー図として表現し、埋め込みノードをステートチャート表記で表現することができる。
【００２８】
検査生成装置は、線図に用いられている上位セマンティック構造体(constructs)を下位セマンティック構造体に低下させることなく、線図を処理する。検査生成装置は、これを遂行する際、必要に応じて、線図に用いられる上位セマンティック・モデルに基づいて、検査事例又は検査生成テンプレートを生成する。例えば、検査生成装置は、線図におけるステートチャートの各遷移をトリガするために検査生成テンプレートを生成することができ、更に線図におけるデータ・フロー構造体に対する全ての要件を検査するために検査生成テンプレートを生成することができる。検査生成装置は、線図が指定する要件を有する、システム実行デバイスに対して検査を生成するために、必要に応じて、検査生成テンプレートを生成することができる。
【００２９】
本明細書において説明する検査生成装置は、データ・フロー表記、ステートチャート表記、及びシーケンス線図表記を、線図を書くための上位セマンティック表記の例として用いる。他の上位セマンティック表記が以下の３つの要件を満たすならば、該他の上位セマンティック表記も用いることができる。
【００３０】
第１の要件は、上位セマンティック表記が、ノードに対して検査生成テンプレートの生成を可能にすることである。検査生成テンプレートは、ノードの機能的要件を記述し、ノードに入力として適用すべき値の時間シーケンス、及びノードからの期待出力を含む。検査生成テンプレートは、検査事例、又はノードからの特定入力及び出力値を含むことができる。
【００３１】
上位セマンティック表記の第２の要件は、生成するあらゆる検査生成テンプレートを制約するために、上位セマンティック表記を用いて、線図のノードについてのＴＲＩを、線図について生成できることである。言い換えると、上位セマンティック表記は、変数タイプ（例えば、整数、文字列）と値、及び／又は範囲情報（例えば、「ａ」又は７．２というような特定の値、及び／又は［ａ〜ｚ］又は［１〜１０］というような値の範囲）を考慮に入れた検査生成を可能にしなければならない。
【００３２】
第３の要件は、値を下流側に向けて測定可能な観察点まで伝搬させるために、上位セマンティック表記で書いた線図のノード毎に、問い合わせを決定できなければならないことである。問い合わせは、値をノードに帰属させる(attribute)ために、ノードに適用することができる入力を指定し、ノードからの可能な出力を戻すことができなければならない。また、問い合わせは、そのノードを通じて、影響を受ける可能性のある入力点に値を上流に向けて投影できなければならない。問い合わせは、ノードについて検査生成テンプレート及び／又は検査事例を決定するために、ノードから生成することができる出力を指定し、可能な入力をノードに返すことができなければならない。
【００３３】
検査ドライバ又は検査ハーネスのような、自動検査システムは、これらの検査ベクトルを用いて、ステートチャートに具体化した要件を検証することができる。要件は、システム実行デバイスを検査する検査ドライバによって検証することができる。アプリケーション開発者は、航空業界におけるＤＯ−１７８Ｂ規格のような、業界標準開発目的を満たすために、現在ではコストのかかる検査手順や手動検査生成を用いているが、このプロセスの自動化は、検証に必要な時間や資源を劇的に削減することができる。あるいは、検査ベクトルから、人が読み取ることができる検査を生成し、検査者がシステム実行デバイスを検査してもよい。
【００３４】
１つの線図においてセマンティック・モデルを混合し照合(matching)することによって得られる柔軟性のために、ステートチャート、データ・フロー図、及び／又はその他の上位セマンティック・モデルの任意の組み合わせによって指定するシステムについても検査の生成が可能となり、システム設計者及び要件記述者はプロジェクトによる要求に応じて、多数の上位セマンティック・モデルを用いることが可能になる。また、混成線図は、多数の上位セマンティック・モデルを用いて表現されるが、下位セマンティック表記を用いて、線図及び／又は当該線図内に具体化した埋め込みノードを表現することも可能である。
【００３５】
データ・フロー図の一例
線図は、主にデータ・フロー表記を用いて表現することができる。図１は、本発明の実施形態によるデータ・フロー図１００の一例であり、データ・フロー図のブロック１１０は、ステートチャート（即ち、埋め込みノード）として表現されている。データ・フロー図１００は、ブロック１１０、１２０を有し、これらは、アーク１３０のような、有向アークによって相互接続されている。アークは、ブロック間のデータ・フローを規定する。データ・フロー図のブロックは、数学的演算子（例えば、和又は積）又は、ステートチャート表記を用いて表現するブロックのような埋め込みノードとすることができる。例えば、ブロック１２０は、加算演算子であり、ブロック１１０は、データ・フロー図１００においてステートチャートとして表現される埋め込みノードである。したがって、ブロック１１０は１つ以上の状態を備えることもできる。更に、ブロック１１０のステートチャートにおける１つ以上の状態は、ブロック１１０のステートチャート内部のステートチャート表記以外の上位表記等を用いて表現する埋め込みノードであってもよい。
【００３６】
ステートチャートの一例
線図は、主にステートチャート（状態図）表記を用いて表現することができる。図２は、本発明によるステートチャート２００の一例であり、状態２１０、２２０、及び２３０を有する。ステートチャートの状態２２０は、内部データ・フロー図を備えている。
【００３７】
「上流状態」とは、ステートチャートの条件を横断する、現在の状態より前に至る状態のことである。同様に、「下流」状態とは、現在の状態の後に至る状態のことである。視覚的には、上流状態は、下流状態への遷移を表す矢印の開始端部にあり、下流状態はその同じ矢印の指示（終端）端部にある。例えば、現状態を状態２２０とすると、状態２１０は状態２２０からは上流となり（遷移２１４を経由する）、状態２３０は状態２２０の下流となる（遷移２２８を経由する）。
【００３８】
尚、ステートチャート及びデータ・フロー表記のように、循環を内包するセマンティック表記では、上流及び下流の双方となるノードもある。例えば、状態２１０は、遷移２２８、状態２３０、及び遷移２４０を含む経路を経由すると、状態２２０の下流となり、状態２３０は、遷移２４０、状態２１０、及び遷移２１４を含む経路を経由すると、状態２２０の上流となる。
遷移は、遷移２１４を「保護する」条件２１２のような、当該遷移を横断することができる前に満たさなければならない条件を有する。
【００３９】
図２において、ステートチャート線図２００のローカル変数は、埋め込みデータ・フロー図の入力ポート及び出力ポートにマップする。図２は、１１個のローカル変数、"Inval1"、"Inval2"、"Value_Out"、"oHam_Out"、"Choise"、"var1"、"var2"、"var3"、"var4"、"var5"、及び"var6"を有する状態２１０を示す。ローカル変数は、ステートチャート状態又は埋め込みノードのいずれかとして表現された上流状態又は下流状態によって用いることができる。図２は、上流状態２１０において値が割り当てられた、変数"Inval1"、"Inval2"、及び"Choice"を入力ポートとして用いるデータ・フロー図として表現した状態２２０を示す。
【００４０】
図２は、出力ポート"Value_out"及び"oHam_Out"を有する状態２２０を示す。これらの出力ポートは、遷移２２８を通じて状態２３０に達するときには状態２２０の下流となる状態２３０において読み込まれる。
更に、状態２２０のデータ・フロー図における１つ以上のブロックは、状態２２０のデータ・フロー図内部におけるデータ・フロー表記以外の上位表記等を用いて表現する埋め込みノードであってもよい。図２は、ブロック２２６がステートチャートを備えており、したがって、状態２２０のデータ・フロー図の埋め込みノードにおけるブロック２２６を含むことを示す。
【００４１】
信号のアトリビューション
特定の要件は、下流ノード上で作ることができる。下流ノードは、１つ以上の伝搬した入力値が適正な「アトリビューション」(attribution：属性)を有することを検証するために、別のノードの出力として生成した１つ以上の入力を要求することができる。アトリビューションとは、入力値又は出力値のような、信号を線図を通過する経路に沿って辿って行ける能力を言う。アトリビューションは、顧客及び／又は、空中システムにおけるＤＯ−１７８ＢSoftware Consideration（ソフトウェア要件）や、アヴィオニクスにおいてソフトウェアを検証するためにFederal Aviation Administration（ＦＡＡ）が用いるEquipment Certification（機器証明書）のような、政府要件を満たすために要求される場合もある。
【００４２】
特定の下流入力を下流ノードに帰属させるには、後に特定の下流入力に至る特定の上流出力を生成する上流ノードに対して、特定の検査事例を生成することができる。例えば、ステートチャートには２つの状態、上流状態及び下流状態しかなく、上流状態が下流状態の上流にあると仮定する。変数ｊの値が属性を必要とするが、ｊの値は下流状態においてのみ設定されると仮定する。更に、上流から下流への遷移は「ｉ＞３」の保護(guard)を有すると仮定する。つまり、下流状態に対する特定の下流入力は、変数ｉが３よりも大きくなる条件となる。この場合、検査生成装置は、ｉ＞３となるような特定の入力値を用いて、上流状態に対する検査事例を生成しなければならないと判断することができる。
【００４３】
検査生成装置は、１つ以上の検査事例が特定の上流出力を生成するか否か判定するために、埋め込みノードに対して生成された複数の検査事例を問い合わせることができる。問い合わせに成功した場合、特定の下流入力に至る特定の上流出力を生成することができ、したがって特定の下流入力は上流ノードに属する可能性がある。問い合わせに失敗した場合、特定の下流入力は、下流ノードへの特定の上流入力を生成する上流ノードに属する可能性はないと考えられる。
【００４４】
特定の出力を上流ブロックに帰属させるには、上流ブロックは、埋め込みノードの出力からの特定の下流入力を用いて、特定の検査事例を生成する必要があると判断することができる。検査生成装置は、埋め込みノードに生成した複数の検査事例に問い合わせを行い、１つ以上の検査事例が特定の下流入力を生成するか否か判定することができる。問い合わせに成功した場合、特定の上流出力を、特定の下流入力を生成する１つ以上の検査事例に帰属させることができる。問い合わせに失敗した場合、特定の上流出力は、下流ノードを通じて帰属させることはできない。
例えば、特定の上流出力は、特定の下流入力に最終的に至る１つ以上のノードへの多くの入力の１つである場合もあり、したがって、埋め込みノードの特定の下流入力は、特定の上流出力に帰属可能であっても又はなくてもよい。
【００４５】
例示のために、ステートチャートが４つの状態を有すると仮定する。状態１では、入力"in1"の値を読み取り、出力"out1"に書き出す。状態２では、入力"in2"の値を読み取り、出力"out2"に書き出す。併合状態(MergeState)では、"out1"及び"out2"の値双方を読み込み、出力"merge_out"に書き出す。下流状態(DownstreamState)では、"merge_out"の値を読み取り、出力"downstream_out"に書き出す。更に、"merge_out"の特定の値（又は複数の値）を、状態１から下流状態に帰属させる。状態１のみが"out1"だけに出力を生成すると、"out1"の指定値（又は複数の指定値）が、状態MergeStateにおける"out2"の使用に応じて、"merge_out"の特定の値に至っても至らなくてもよい。つまり、上流出力（例えば、"out1"）の特定の値が特定の下流入力（例えば、"merge_out"）に帰属可能であるか否か判定することは不可能である場合もあり、したがって、特定の下流入力の値、及び後続の下流値（例えば、"downstream_out"）は、線図を通過する経路に沿って帰属可能であってもなくてもよい。
【００４６】
計算機の一例
図３は、本発明の実施形態による計算機３００の一例のブロック図であり、演算装置３１０、データ・ストレージ３２０、及びユーザ・インターフェース３３０を備えている。計算機３００は、デスクトップ・コンピュータ、ラップトップ又はノートブック・コンピュータ、パーソナル・データ・アシスタント（ＰＤＡ）、移動体電話機、あるいは本明細書において記載する方法３００及び／又は本明細書において記載する検査生成装置及び／又は検査ドライバの機能性の少なくとも一部を実現するコンピュータ命令を実行可能な演算装置を搭載している同様のデバイスであればいずれでもよい。
【００４７】
演算装置３１０は、１つ以上の中央演算装置コンピュータ・プロセッサ、移動体プロセッサ、特定用途集積回路（ＡＳＩＣ）、ディジタル信号プロセッサ（ＤＳＰ）、マイクロプロセッサ、コンピュータ・チップ、特殊論理回路、及び／又は現在知られている又は今後開発される、命令をシリアル又はパラレルのいずれかで実行する同様の演算装置を含むことができ、機械語命令を実行し、データを処理することができる。
【００４８】
データ・ストレージ３２０は、１つ以上の記憶装置を備えることができる。データ・ストレージ３２０は、リード・オンリ・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、リムーバブル・ディスク・ドライブ・メモリ、ハード・ディスク・メモリ、磁気テープ・メモリ、フラッシュ・メモリ、ならびに現在知られている同様の記憶装置及び今後開発される同様の記憶装置を含むことができる。データ・ストレージ３２０は、少なくとも、１つ以上の線図３２２、データ構造３２４、及び機械語命令３２６を収容するのに十分な記憶容量を備えている。
【００４９】
データ構造３２４は、本明細書において記載する検査生成装置、本明細書において記載する検査ドライバの機能の一部又は全部を実行するため、及び／又は方法４００、５００、及び／又は６００に記述されている手順の一部又は全部を実行するために必要な、本明細書において記載するあらゆるデータ構造をも備えており、ＴＲＩデータ構造及びＴＲＩ−伝搬キューを含むが、これらに限定されるのではない。データ・ストレージ３２０に収容される機械語命令３２６は、本明細書において記載する検査生成装置、本明細書において記載する検査ドライバの機能の一部又は全部を実行するため、及び／又は方法４００、５００、及び／又は６００に記述されている手順の一部又は全部を実行するために演算装置３１０によって実行可能な命令を含む。
【００５０】
ユーザ・インターフェース３３０は、入力ユニット３３２及び／又は出力ユニット３３４を備えることができる。入力ユニット３３２は、計算機３３０のユーザからユーザ入力を受け取ることができる。入力ユニット３３２は、キーボード、キーパッド、タッチ・スクリーン、コンピュータ・マウス、トラック・ボール、ジョイスティック、及び／又は、計算機３００のユーザからユーザ入力を受け取ることが可能な、現在知られている又は今後開発されるその他の同様のデバイスを備えることができる。出力ユニット３３４は、計算機３００のユーザに出力を提供することができる。出力ユニット３３４は、１つ以上の陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、ディジタル光処理（ＤＬＰ）技術を用いたディスプレイ、プリンタ、光バルブ、及び／又は、グラフィック情報、テキスト情報、及び／又は数値情報を計算機３００のユーザに表示可能な、現在知られている又は今後開発される同様のデバイスを備えることができる。出力ユニット３３４は、代わりに又は加えて、スピーカ、スピーカ・ジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホン、及び／又は、音響情報及び／又は可聴情報を計算機３００のユーザに伝達可能な、現在知られている又は今後開発される同様のデバイスを備えることができる。
したがって、計算機３００は、本明細書に記載する種々の機能、ステップ、及び手順を実現し実行する手段の一例である。
【００５１】
混成線図から検査を生成する方法の一例
図４は、本発明の実施形態にしたがって、線図から検査を生成する方法４００の一例を示すフローチャートである。
尚、このフローチャートにおける各ブロック及び本明細書において呈示するその他のフローチャートの中にある各ブロックは、モジュール、セグメント、又はコンピュータ・プログラム・コードの一部を表す場合もあり、特定の論理機能又はプロセスにおけるステップを実現するための１つ以上の実行可能命令を含むことは言うまでもない。実施形態例の範囲には、代替実施態様も含まれ、その場合、機能は、伴う機能性に応じて、図示又は論述するのとは異なる順序で実行してもよい。異なる順序とは、実質的に同時であること又は逆の順序を含む。これは、記載する実施形態の技術分野に相応に習熟している者には明白であるであろう。
【００５２】
方法４００は、ブロック４１０において開始する。ブロック４１０において、検査生成装置が初期化される。検査生成装置の初期化は、方法４００、５００、及び／又は６００のブロックを実行するために検査生成装置が用いるデータ構造を初期化することを含み、データ構造には、ＴＲＩ−伝搬キュー、及び／又は複数の検査生成テンプレートを含むが、これらに限定されるのではない。方法５００及び６００については、それぞれ図５及び図６を参照して以下で説明する。
【００５３】
ブロック４２０において、検査生成装置は線図を入力する。線図は、アビオニクス・デバイス、コンピュータ・プロセッサ、画像プロセッサ、コンピュータ・ソフトウェア・システム、又はその他のこのようなデバイス等のシステム実行デバイスに対する要件を表すものである。
線図は、１組のノード、及び１組のノードの中にある１つ以上のノードを接続する１組のアークを備えることができる。線図は、第１の上位セマンティック表記で表現することができる。線図は、混成線図とするとよい。線図が混成線図である場合、１組のノードにおける少なくとも１つのノードは埋め込みノード、即ち、第１の上位セマンティック表記以外の上位セマンティック表記で表現した少なくとも１つのサブ線図を有するノードとなる。線図は、文字及び／又は描画で表現することもできる。
【００５４】
ブロック４３０において、検査生成装置は、ＴＲＩデータ構造に格納されているＴＲＩを、線図を通して伝搬させることができる。また、ブロック４３０において、検査生成装置は、検査生成テンプレートを決定し、更に（又は代わりに）検査事例を決定することもできる。ノードについての検査生成テンプレートは、当該ノードの特定的な機能要件を記述し、ノードへの入力の時間シーケンス及びノードからの期待出力から成る。検査事例は、線図の入力及び出力に基づく値のベクトル、及び／又は値の範囲を収容する。方法５００の手順を用いて、ＴＲＩを伝搬させ、検査生成テンプレートを決定することができる。方法５００については、図５に関して以下で説明する。
【００５５】
ＴＲＩは、線図において用いられる変数についての、ＴＲＩデータ構造のような情報を用いて伝搬される。一部のノードでは、データＴＲＩが伝搬されなかったり又は検査生成テンプレートが生成されない場合もある。例えば、ステートチャート線図における到達不可能な状態は、いずれの関連ＴＲＩも実現可能な検査生成テンプレートも有していない場合がある。ＴＲＩは、特定の変数の値を制限するために用いることができる範囲情報を含むことができる。例えば、図１のInval1変数に対するＴＲＩは、［０，１０００］の範囲を示すことができ、Inval2変数に対するＴＲＩは［０，２０００］の範囲を示すために用いることができる。また、タイプ情報も、ＴＲＩの一部として指定することができる。例えば、Inval1は整数型の値である。
【００５６】
検査生成装置は、次に、線図によって指定される動作を実行することによって、ＴＲＩを線図全域に伝搬させることができる。前述の例を続けると、Inval1に対するＴＲＩは［０，１０００］の範囲を示し、Inval2に対するＴＲＩは［０，２０００］の範囲を示すので、図１のノード１２０における和変数に対するＴＲＩは、Inval1及びInval2の範囲の和、即ち、［０，３０００］の範囲を示す。
【００５７】
特定の値、値の範囲、及び相対的な値を指定し、線図を通じて伝搬させることができる。別の例として、図１のInval1変数を、２．２の値を有するように指定し、Inval2変数を範囲［０，２０００］内となるように指定し、Choice変数をInval1変数よりも小さいと指定したと仮定する。すると、和変数（及び恐らくはInput_1変数）に伝搬させる値は、Inval1及びInval2の和、例えば、範囲［２．２，２００２．２］となればよい。更に、Choice変数の範囲は、（−∞，２．２）となる。
【００５８】
選択されたノード毎のＴＲＩは、データ・フロー・アプリケーションの図３及び図４に関して説明した静的分析手順及び／又は動的分析手順を用いて決定することができる。特に、ＴＲＩは、線図の開発者又はその他の著作者が提供する情報に基づくとよい。ＴＲＩは、線図の任意の変数、入力、及び／又は出力についても提供することができる。検査生成装置は、静的分析の一部として、線図の中に静的誤りがあると判断して、開発者／著作者にこの静的誤りを訂正させることができる。また、コンピュータ・プログラム・ファイル及び／又は線図を収容するファイルの変数タイプ及び／又は範囲情報についての解析というような、自動化したタイプ及び／又は範囲技法を用いてＴＲＩを決定することもできる。コンピュータ・プログラム・ファイルの例には、コンピュータ言語（例えば、Ｃ又はＣ＋＋ヘッダ・ファイル）又は、クラス線図、コンポーネント線図、複合構造線図、展開線図、オブジェクト線図、及びパッケージ線図のような、統一モデリング言語（ＵＭＬ）静的構造線図用のデータ仕様ファイルがある。
【００５９】
検査生成テンプレートは、機能的要件、内部構造、ノードの内部セマンティクス（恐らくは伝搬されるＴＲＩと組み合わせられる）、及びシステム入力のような追加情報に基づいて決定することができる。検査生成装置は、線図を分析して、線図の埋め込みノードの中にあるノードも含めて、線図のノード毎にＴＲＩを決定することができる。
【００６０】
図１に示すデータ・フロー図１００の例を用いると、検査生成テンプレートは、Inval1、Inval2、及び／又はChoice（即ち、データ・フロー図１００への入力）の特定の値に基づいて決定することができる。ＴＲＩは、図１に示すように、ブロック１１０（及び、ブロック１１０の下流ノード）への入力として要求されるInput_1の値のような、他のノードの特定値に基づいて決定することができる。
【００６１】
再度図１に示すデータ・フロー図１００の例を用いて、ＴＲＩとは別個のシステム入力に基づいてInval1を２．２に指定し、Inval2を３．３に指定したと仮定する。次いで、検査生成装置は、Inval1及びInval2に対するシステム入力に基づいて、ブロック１２０の出力変数を５．５に抑制する検査生成テンプレートを生成することができる。更に、検査生成装置は、次に、和変数の値、即ち、５．５に等しくなるようにInput_1を抑制する、図１のステートチャート１１０のための検査生成テンプレートを生成することができる。
【００６２】
伝搬したＴＲＩは、検査ベクトルを抑制するために適用することができる。所与のノードに対する検査ベクトルは、該所与のノードに対する入力変数及び出力変数の値を示す。また、線図全体に対して含む、ノードのグループに対する入力変数及び出力変数を示す検査ベクトルも生成することができる。所与のノードに対する検査ベクトルは、該所与のノードに対する検査生成テンプレートと共に格納することができ、また、所与のノード及び／又は線図内にある他のノードに対する検査生成テンプレートを修正するために用いることもできる。
【００６３】
ブロック４４０において、検査生成装置は線図に対す有る検査を生成する。検査生成装置は、線図を通じて伝搬させた制約に基づいて、検査を生成することができる。即ち、検査生成装置は、ＴＲＩデータ構造、検査事例、検査ベクトル、及び／又は前述の検査生成テンプレートを用いて、伝搬させた値の制約を示すことができる。伝搬値は、線図に対する検査を生成するために用いることができる。検査は、線図における全てのノードを検査するため、及び／又は線図内にある１つ以上の所与のノードを検査するために生成することもできる（例えば、サブユニット検査(sub-unit testing)を実行する）。検査を生成するために、検査生成装置は、図６に関して以下で説明する方法６００の手順を用いることができる。
【００６４】
ブロック４５０において、生成した検査を実行すべきか否かについて判定を行う。この判定は、ユーザ入力に基づくことができ、ハードコード化することができ、及び／又はハードウェア及び／又はソフトウェアの使用（又は不使用）に基づいて判定することができる（例えば、検査ハーネスのような検査デバイスがアクティブでなければ、検査を実行しない）。検査を実行しようとする場合、方法４００はブロック４６０に進むことができる。検査を実行しようとしない場合、方法４００を終了することができる。
【００６５】
ブロック４６０において、生成した検査を実行することができる。１つ以上の生成した検査を選択して実行してもよく、したがって、生成時に又は一度に全ての検査を実行する必要はない。検査は、対象となる特定のノード及び／又は（副）線図の選択に基づいて選択することができる。選択は、恐らくはユーザ入力による、特定の検査、ノード、サブ線図、又は線図の選択に基づいて、行うことができる。代わりに又は加えて、選択は、この場合もユーザ入力による、１つ以上の検査についての検査実行ステータスに基づくこともできる。例えば、検査は、実行に成功した検査に対して「合格」、実行に成功しなかった検査に対して「不合格」、実行していない検査に対して「未実行」、及び／又は検査実行ステータスを決定する前に更に考慮を必要とする検査に対して「要研究」の検査実行ステータスを有することができる。検査実行ステータスが１つ以上の特定値を有するように検査を選択することもできる（例えば、検査実行ステータスが「不合格」又は「未実行」の検査を全て選択する）。また、検査は、特定のソフトウェア及び／又はハードウェア・ユニットの可用性に基づいて選択することもできる。例えば、"AutoPilot"ソフトウェア・ユニット又は"Engine 3"ハードウェア・ユニットの可用性による影響を受ける検査全てを走らせる。多くのその他の選択も行うことができる。
【００６６】
選択された検査は、該検査を検査ドライバに受け渡すことによって、自動的に実行することができる。選択された検査は、検査官が手動で実行してもよい。手動検査を実行する場合、選択された検査は、検査実行を容易にできるように、人が読み取り可能なフォーマットで出力するようにフォーマット化するとよい。ブロック４６０を完了した後、方法４００は終了する。
【００６７】
特に、方法４００は、検査事例を生成し、埋め込みノードについての検査を実行するために用いるとよい。例えば、線図が主にデータフロー・セマンティックスを用いて書かれており、ステートチャート表記を用いて表現した埋め込みノードを含むと仮定する。更に、ステートチャート表記を用いて表現した埋め込みノードが、埋め込みデータ・フロー図として表された状態を備えていると仮定する（即ち、データ・フロー図に埋め込まれたステートチャートに埋め込まれたデータ・フロー図）。そして、図５に関して以下で詳細に説明する方法５００の手順を用いて、ＴＲＩ情報を伝搬させ、埋め込みノード、及び埋め込みノードの中の埋め込みノード等を含む、線図の全てのノードに対して検査生成テンプレートを決定することができる。次いで、方法６００の手順を用いて、検査生成テンプレート及びＴＲＩに基づいて検査を生成することができる。
【００６８】
ＴＲＩを線図中に伝搬させ、検査生成テンプレートを決定する方法の一例
図５は、本発明の実施形態にしたがってＴＲＩを線図中に伝搬させ、検査生成テンプレートを決定するための伝搬方法５００の一例を示すフローチャートである。方法５００は、本明細書において記載する検査生成装置のような、検査生成装置によって実行される。尚、方法５００を伝搬方法と称する。
【００６９】
方法５００は、ブロック５１０において開始する。ブロック５１０において、検査生成装置は、入力線図のノードをＴＲＩ伝搬キューに挿入する。入力線図の例には、線図、その線図ではない親線図、又は１つのノードがある。「ＴＲＩ伝搬キュー」という用語をここでは用いるが、ＴＲＩ伝搬キューの実現には、限定ではなく、キュー、スタック、リスト、ハッシュ・テーブル、ツリー、１つ以上のデータベース構造（例えば、データベース表）、優先順位キュー、又は本明細書において記載するＴＲＩ伝搬キューとして作用するのに適したその他のデータ構造というような、１つ以上のデータ構造の使用を伴う場合もある。
【００７０】
ブロック５１２において、検査生成装置は、入力線図の主要セマンティック表記を判定することができる。判定したセマンティック表記に基づいて、検査生成装置は、検査生成手順のグループから１つを選択する（例えば、データ・フロー表記、ステートチャート表記、シーケンス線図表記等に基づいて、検査生成手順を入力線図に合わせて選択することができる）。このような検査生成手順は、ＴＲＩを伝搬させ、検査生成テンプレート及び／又は処理後ノードを決定する手順を含むことができる。主セマンティック表記に基づくその他の検査生成手順も可能である。
【００７１】
ブロック５２０において、検査生成装置は、ＴＲＩ伝搬キューからノードを選択する。
ブロック５３０において、検査生成装置は、選択したノードから上流にある全てのノードを分析し終えているか否か判定を行う。検査生成装置は、選択したノードから上流にあるノードがＴＲＩ伝搬キューに中にあるか否か判定を行うために、ＴＲＩ伝搬キューを調べることができる。検査生成装置がＴＲＩ伝搬キューの中に、選択したノードから上流にあるノードを発見した場合、検査生成装置は、選択したノードから上流にある全てのノードを処理し終えていないと判断することができる。
【００７２】
選択したノードから上流にある全てのノードを処理し終えていた場合、検査生成装置はブロック５４０に進む。選択したノードから上流にある全てのノードを処理し終えていない場合、検査生成装置はブロック５２０に進む。尚、検査生成装置は、選択したノードから上流にある全てのノードを処理し終えたことを確認するというように、選択したノードから上流にある全てのノードを処理し終えたことを確認することとは異なる判断基準を用いて、ノードの分析を使用指令(use order)してもよい。
【００７３】
ブロック５４０において、検査生成装置は、選択したノードをＴＲＩ伝搬キューから除去する。
ブロック５５０において、検査生成装置は、選択したノードが指定ノードであるか否か判定を行う。既に定義したように、指定ノードとは、検査生成装置による使用のために利用可能なＴＲＩを有するノードである。検査生成装置は、ＴＲＩデータベースにおいて、選択したノードに対するＴＲＩ及び／又は検査生成テンプレートを検索して探し出すことによって、選択したノードが指定ノードであるか否か判定することができる。
【００７４】
ノードが指定ノードであるか否かを判定する代わりに又はそれに加えて、検査生成装置は、選択したノードが埋め込みノードであるか否か判定してもよい。検査生成装置は、選択したノードが、主セマンティック表記を用いない内部線図（サブ線図）を有することを判定することによって、選択したノードが埋め込みノードであるか否か判定することができる。
【００７５】
検査生成装置は、埋め込みノードが指定ノードであることを判定する前に、所定のＴＲＩを含むがこれに限定されない、埋め込みノードに対するＴＲＩ及び／又はその他の検査生成テンプレートを検索することができる。あるいは、検査生成装置は、主セマンティック表記以外のセマンティック表記を用いて、ＴＲＩがノードには利用可能でないという想定の下で、埋め込みノードが非指定ノードであるというデフォルトの判定を行うこともできる。
ノードが指定ノードである場合、検査生成装置はブロック５６０に進む。ノードが非指定ノードである場合、検査生成装置はブロック５７０に進む。
【００７６】
ブロック５６０において、検査生成装置は、選択した指定ノードを通じて、ＴＲＩを伝搬させる。即ち、検査生成装置は、選択したノードに対するセマンティック表記、当該ノードに利用可能なあらゆる追加情報（例えば、ノードに対するノード指定データ構造における情報）、及び、恐らくは選択したノードのＴＲＩデータ構造において表されている、選択したノードの上流ノード（が１つでもある場合）によって生成されたＴＲＩに基づいて、選択したノードにおいて用いられる変数に対するＴＲＩを決定する。即ち、検査生成装置は、入力線図の主セマンティック表記に基づいて、ＴＲＩを伝搬させるために選択された検査生成手順を用いることができる。入力線図におけるノード毎のＴＲＩデータ構造は、ＴＲＩ伝搬キューに格納することができる。
【００７７】
ブロック５６２において、検査生成装置は、選択した指定ノードに対して、１つ以上の検査生成テンプレートを決定する。検査生成テンプレートは、選択したノードのセマンティック表記、及び選択したノードに対する伝搬ＴＲＩ情報に基づいて決定される。即ち、検査生成装置は、検査生成テンプレートを決定するために入力線図の主セマンティック表記に基づいて選択した検査生成手順を用いる。
【００７８】
例えば、主にデータ・フロー表記で書かれた線図内に埋め込まれたステートチャート・ブロックに対して、生成方法５００の再帰（リカーシブ）コールが完了する間に、検査事例を生成したと仮定する。ステートチャートで表された埋め込み線図に対して生成した各線図レベルの検査事例は、ステートチャートによって表されるデータ・フロー図のブロックに対する検査生成テンプレートと見なすことができる。したがって、ステートチャートに対して生成した検査事例は、親データ・フロー図に検査生成テンプレートを決定するために用いることができる。加えて、検査事例を再フォーマット化したり、それ以外の処理を行って、対応する検査生成テンプレートを決定することもできる。
【００７９】
検査生成装置は、所与のノードに対する検査事例又は検査生成テンプレートの入力及び期待出力値の時間シーケンスに制約を決定することができ、その際、（ｉ）所与のノードについてのＴＲＩデータ構造及び／又はその他のデータ、及び／又は（ｉｉ）線図における他の関連ノードからのＴＲＩデータ構造のデータを用いる。他の関連ノードとは、所与のノードから上流のノードとするとよい。
【００８０】
特に、検査生成装置は、選択したノードに対するＴＲＩデータ構造に基づいて、選択したノードの下流にあるあらゆる「到達可能」ノードを更新することができる。検査生成装置は、選択したノードのＴＲＩ情報、下流ノードのＴＲＩ情報、及び／又は入力線図に基づいて、ノードが到達可能であることを判定することができる。例えば、図２のProcess_Data状態２２０がAwait_Input状態２１０から到達可能であるという判定は、条件２１２によって示すように、input_valid変数の値に依存する。Await_Input状態２１０に示すように、input_validの値は入力var1及びvar2の値に依存する。次いで、ＴＲＩが、var1の範囲が［０，１０］に抑制されており、var2の範囲が［１００，２００］に抑制されていることを示す場合、検査生成装置は、Process_Data状態２２０は到達不可能であると判定することができる。
【００８１】
検査生成装置は、選択したノードが実行する動作についての情報に基づいて、到達可能な下流ノードについてのＴＲＩデータ構造を更新することができる。例えば、検査生成装置が、選択したノードが以下の演算：「ｉ＝１００」を実行すると判定したと仮定する。すると、検査生成装置は、選択したノードから下流にある各ノードのＴＲＩデータ構造を更新して、変数ｉを１００に設定することを示すことができる。したがって、所与の検査生成テンプレートの決定は、選択したノードのセマンティック表記に基づく。何故なら、選択したノードのセマンティック表記が、該セマンティック表記によってモデル化することができる動作及びそれらの動作の効果を決定するからである。
【００８２】
尚、検査生成装置は、最初に、下流ノードが到達可能か否か判定し、そして下流ノードまでの経路に沿ったノードに到達する順序を決定した後に、下流ノードのＴＲＩデータ構造を更新してもよい（即ち、更新するＴＲＩデータ構造のみが、選択したノードから到達可能な下流ノードのＴＲＩデータ構造である）。
【００８３】
下流ノードに適用する検査生成アルゴリズムは、ＴＲＩデータ構造を用いて、下流ノードの入力時に、初期条件を示すことができる。前述の例を続けると、１つの初期条件（選択したノードの下流ノードの伝搬情報データ構造に格納されている）は、「ｉ＝１００」とするとよい。この条件はノードに対する初期条件であるので、下流ノードの機能性が読み出されるタイムステップよりも早いタイムステップにおいて現れると判定される。
【００８４】
検査生成装置は、タイミング情報を各ノードに示すことによって、動的分析も実行することができる。例えば、変数ｉが１０タイムステップの間指定されず、次いで、次の２０タイムステップの間、先に示したように、１００に指定され、次いでその後０に指定されると仮定する。すると、検査生成装置は、選択したノード及び／又は到達可能な下流ノードに、変数ｉは、タイムステップ０〜１０の間は「未指定」、タイムステップ１１〜３０の間は１００、そしてタイムステップ３０の後は０の時間依存値を有することを示すことになる。
【００８５】
尚、ブロック５６０及び５６２双方の手順を同時に行ってもよい。言い換えると、ブロック５６０及び５６２を実現するソフトウェアを１つの合体モジュールに合体することによって、又は静的−動的分析技法を組み合わせて用いることによって、又はその他の手段によって、ＴＲＩを伝搬させ、同時に選択したノードに対して検査生成テンプレートを決定することができる。
ブロック５６２の手順を完了した後、検査生成装置はブロック５８０に進む。
【００８６】
ブロック５７０において、検査生成装置は、埋め込みノードを入力線図として用いて、伝搬方法５００を再帰的にコールする。伝搬方法５００への再帰的コールは、図５では、ブロック５１０に向かって下降する矢印に接触するブロック５７０から発する破線の矢印として示されている。伝搬方法５００への再帰的コールは、線図を入力として取り込む関数コールを用いて実現することができる。
【００８７】
例えば、method500（in_diagram, output）が方法５００の技法を実現する関数であると仮定する。ここで、in_diagramはmethod500()に入力される線図であり、outputはmethod500()の出力を表すデータ構造の一例である。更に、in_diagramのような線図が、getDiagram()と呼ばれる線図を表すデータ構造を戻すソフトウェア・メソッド又は関数をサポートすると仮定する。即ち、in_diagram.getDiagram()の呼び出しにより、線図in_diagramを表すデータ構造が戻される。次いで、embedded_nodeが、ブロック５４０において埋め込みノードであると判定された選択ノードを表す場合、方法５００への再帰コールはmethod500(embedded_node.getDiagram(), output)とすればよい。方法５００への再帰コールを実行している間に埋め込みノードembedded_node2を発見した場合、方法５００を再度再帰的にコールすればよい。たとえば、method 500(embedded_node2.getDiagram(),output)となる。このように、混成線図内にある埋め込みノードを、コンピュータ実行による方法５００のハードウェア及びソフトウェア資源によってのみ限定される深さまで処理することができる。
【００８８】
一般に、ブロック５５０において行う判定は、ＲＴＩの可用性に基づいて準備する検査生成テンプレートの選択に備えたものである。一方、ＴＲＩは、入力線図の主セマンティック表記、及びノードが指定されているか否かに基づくことができる。ノードが指定ノードである場合、ブロック５６０及び５６２の手順を実行すると、線図の主セマンティック表記及びノードのタイプに特定的であるとよい手順によって、ＴＲＩを伝搬させ、検査生成テンプレートを準備する。しかしながら、ノードが未指定ノードである場合、ブロック５７０における再帰コールでは、入力線図の主セマンティック表記とは異なってもよい、未指定ノードの主要セマンティック表記に基づく異なる手順の選択が可能となる。これは、未指定ノードは再帰コールの間入力線図として扱われるからである。
【００８９】
例えば、未指定ノードが埋め込みノードであり、内部線図がステートチャート情報を用いて書かれており、データ・フロー図を主に用いて書かれた線図に埋め込まれていると仮定する。方法５００は、埋め込みノードの内部線図が分離したステートチャートであるかのように、無指定埋め込みノードを扱う。したがって、ステートチャート・アプリケーションに記載されているステートチャートのための検査生成技法を用いると、埋め込みノードを通じて入力及び出力を投影する(project)することができる。即ち、検査事例は、ステートチャート用の順方向伝搬パス及び／又は逆方向伝搬パスを用いて生成することができる。順方向伝搬パス及び逆方向伝搬パスはステートチャート上で動作し、したがってステートチャート表記で指定した用件から検査を生成する。検査事例は、適用すべきステートチャート入力の値と、多数のタイム・スタンプ（周期的又はイベント・ドリブン）にわたる期待出力とを収容する。ステートチャート・レベルでの検査生成では、ステートチャート表記のセマンティックスは全ての状態（埋め込みデータ・フロー図を含む）に用いられ、ステートチャート・アプリケーションに記載されているステートチャート技法を用いる。検査事例が生成されると、検査事例に対応する検査生成テンプレートを生成することによって、又は検査事例に基づいて既存の検査生成テンプレートを更新することによって、ＴＲＩ及び／又は検査生成テンプレートとして用いるために、各検査事例を処理又は再フォーマット化することができる。
【００９０】
再帰コールが完了すると、方法５００はブロック５７２に進む。
ブロック５７２において、検査生成装置は、選択したノードの後処理を行うことができる。後処理は、生成方法５００の再帰コールの間に到達したノードからのＴＲＩを組み合わせること、及び／又は再帰コールの間に到達しなかった入力線図のノードに投影することを含むことができる。検査生成部は、選択したノードの主セマンティック表記に基づいて選択した検査生成手順を用いて、選択したノードの後処理を行う。
【００９１】
再帰コールの間に到達したノードからのＴＲＩを組み合わせる際及び／又は入力線図のノードに投影する際、入力線図及び／又は再帰コールの間に到達した到達ノードの主セマンティック表記に基づくとよい。特に、ＴＲＩの組み合わせ及び／又は投影は、再帰コールの間に到達したノード及び／又は入力線図のノードの分析に左右されることがある。
【００９２】
分析の一例では、それぞれのノードのセマンティック表記に基づいて、タイプ変換が必要となる場合もある。別の分析例として、再帰コールの間に到達した「vector-op」ノードが、vector-opノードのセマンティック表記によってサポートされるベクトル演算を行い、その後入力線図における「vector-out」ノードに出力を生成すると仮定する。すると、vector-outノードに供給されるＴＲＩは、vector-opノードのセマンティック表記に左右されることになる。
【００９３】
更に、ブロック５７２の手順の一部として、後処理の出力を入力線図のノードに利用可能にする必要がある場合もある。この出力を利用可能にするには、ブロック５６０に関して説明した伝搬技法、及び／又はブロック５６２に関して記載した判定技法を用いて、ＴＲＩ情報を投影すればよい。後処理の出力を利用可能にするためには、検査生成装置は、代わりに又は加えて、入力線図からの入力の、再帰コールの間に到達したノードへのそしてこれらのノードを通過する順方向伝搬、及び／又は出力の、再帰コールの間に到達したノードへのそしてこれらのノードを通過する逆方向伝搬を用いることもできる。
【００９４】
ブロック５７２の手順を完了した後、検査生成装置はブロック５８０に進む。
ブロック５８０において、検査生成装置は、選択したノードから下流にあるノードをＴＲＩ伝搬キューに入力することができる。最初に、検査生成装置は、ＴＲＩ伝搬キューを調べて、各下流ノードの存在を確認した後に、下流ノードをＴＲＩ伝搬キューに入力する。
【００９５】
ブロック５９０において、検査生成装置は、ＴＲＩ伝搬キューが空から否か判定を行うことができる。ＴＲＩ伝搬キューが空でない場合、検査生成装置はブロック５２０に進むことができる。ＴＲＩ伝搬キューが空である場合、方法５００は終了する。しかしながら、データ伝搬コールが、方法５００への再帰的コールの間に、初期状態で満杯であった場合、方法５００への再帰コールは、ブロック５９０においてＴＲＩ伝搬キューが空であると判定したときに完了し、（ａ）方法５００への全ての再帰コールが完了し終えるまで、及び（ｂ）ＴＲＩ伝搬キューが空になるまでの双方において、方法５００は継続することができる。
【００９６】
線図から検査を生成する方法
図６は、本発明の実施形態にしたがって、検査生成テンプレートから検査を生成する方法６００の一例を示すフローチャートである。
方法６００は、ブロック６１０において開始する。方法６００は、検査生成装置によって実行される。
ブロック６１０において、検査生成装置は、線図に関連する複数の検査生成テンプレートを受け取る。受け取った検査生成テンプレートは、図５を参照して先に説明した方法５００の使用によって生成される。受け取った検査生成テンプレートは、検査生成テンプレート・データ構造に格納される。
【００９７】
ブロック６２０において、検査生成装置は、検査生成テンプレートを選択する。検査生成テンプレートは、線図の特定のノードと関連付けられている。検査生成テンプレート・データ構造は、選択により更新することもできる。例えば、選択した検査生成テンプレートを検査生成テンプレート・データ構造から除去することができ、及び／又は選択した検査生成テンプレートを、検査生成テンプレート・データ構造において「選択済み」という印を付けることもできる。検査生成テンプレートを選択するための多くの他の技法も採用可能である。
【００９８】
ブロック６３０において、検査生成装置は、入力を上流の影響を受ける可能性がある入力点に向けて投影する。検査生成装置は、投影すべき入力に基づいて、関連するノードの上流にある経路に沿って１つ以上の影響を受ける可能性がある入力点までのノードについて、検査生成テンプレートによって指定された値を更新することによって、入力を上流に投影する。検査生成装置は、一旦影響を受ける可能性がある入力点に達したならば、入力の投影を中止する。ノードを内包する線図が親線図を有し、影響を受ける可能性のある入力点が子線図では到達可能でない場合、値は子線図入力から、親線図内に内包されている内包ノード(containing node)の入力ポートまで投影しなければならない。これは、影響を受ける可能性がある入力点に達するまで継続し、上位線図の入力ポートまで隈無く投影する。
【００９９】
影響を受ける可能性がある入力点とは、線図への入力、又は埋め込みノードを含む、指定場所（例えば、線図における選択ノード又はアーク）のいずれかであり、検査中に入力を指定することができる。同様に、「測定可能な観察点」という用語は、線図の出力、又は検査中に出力を観察することができる指定場所のいずれかを記述するために用いられる。指定場所は、入力デバイスを用いて線図の表示のノード又はアークを選択することによって、検査スクリプト・ファイルを編集することによって、及び／又は場所を指定するために１つ以上のコマンドを入力することによって、ユーザによって選択することができる。
【０１００】
影響を受ける可能性がある入力点及び／又は測定可能な観察点を用いると、検査生成及び可能な検査実行のために線図の一部又は複数の部分を（線図全体の代わりに）選択することをユーザに可能にすることにより、検査作業を補助することができる。線図の一部を選択するには、１つ以上の場所を影響を受ける可能性がある入力点として指定する、及び／又は１つ以上の場所を測定可能観察点として指定すればよい。検査生成装置は、次に、線図の選択部分のみに対して検査を生成することができる。これら双方により、ユーザは、線図全体ではなく、線図の一部に集中し、検査作業を速めることが可能となる。
【０１０１】
ブロック６４０において、検査生成装置は、期待出力を順方向に関連ノードから測定可能な観察点に伝搬させて、検査生成テンプレートにおいて指定された値が観察点において完全に帰属可能となるようにする。
検査生成装置は、関連するノードのセマンティクスを調べて、ノードに対してどの入力が必要か判断する。例えば、関連ノードが入力「Ｉ１」、「Ｉ２」、及び「Ｉ３」を受け取り、出力「Ｏ１」及び「Ｏ２」を生成するステートチャート・ノードであると仮定すると、以下の処理を実行する。
Ｏ１＝Ｉ１＊Ｉ２＋３
Ｏ２＝Ｉ２−Ｉ３
ステートチャート・ノードから要求される期待出力がＯ１のみである場合、必要な入力はＩ１及びＩ２のみとなる。同様に、期待出力がＯ２のみである場合、必要な入力はＩ２及びＩ３のみとなる。
【０１０２】
出力を前方に(forward)投影する前に、検査生成装置は関連ノードの処理を実行して、伝搬させるべき特定の出力値を決定することができる。前述の例を続けると、Ｉ１、Ｉ２、及びＩ３の値をそれぞれ１０、２０、及び３０に決定したと仮定する。この場合、検査生成装置は、Ｏ１はＩ１＊Ｉ２＋３＝２０３であり、Ｏ２はＩ２−Ｉ３＝−１００であると、関連ノードにおいて示される処理に基づいて決定することができる。
【０１０３】
前述の例において示したように、帰属する出力値を決定し、ノードを通じて伝搬させるためには、多数の入力が必要となる場合がある。ノードへの入力の全てでなく一部を、影響を受け得る入力点に投影する場合、検査生成装置は、ノードから出力を伝搬させる前に、未だ投影されていない入力の値（又は値の範囲）を決定しなければならない場合もある。
【０１０４】
検査生成装置は、表記特定方法を用いて、未投影入力を判定することができる。例えば、ステートチャートでは、ステートチャートに関する出願に開示されている順方向伝搬及び／又は逆方向伝搬技法が、未投影入力を判定することができる。逆方向伝搬技法は、線図に用いられているセマンティック表記に応じて、使用する。また、逆方向伝搬技法は、部分的に、検査生成結果を問い合わせることによって実行することができる。
【０１０５】
例えば、ノードの内部線図をステートチャート表記を用いて書き、主にデータ・フロー表記を用いて書いた線図に、このノードを埋め込むと仮定する。ステートチャート検査生成の副産物として、ステートチャート全体の順方向伝搬パス及び／又は逆方向伝搬パスの使用により、逆方向及び順方向データ・フロー信号伝搬仕様が、ステートチャートに合わせて自動的に作成される。
【０１０６】
順方向伝搬パス及び逆方向伝搬パスは、ステートチャート入力値及びステートチャート出力値に基づいて、検査事例を生成する。データ・フロー図のコンテキストでは、ステートチャート入力値は、ステートチャートを用いて表されているデータ・フロー図のブロックの入力ポートにおける値として指定することができる。同様に、ステートチャート出力値は、ステートチャートを用いて表されているブロックの出力ポートにおける値として指定することができる。ステートチャート入力値及びステートチャート出力値は、１つ又は複数の特定値（例えば、input1=4又はoutput1=7,20）、値の範囲（例えば、input1=[120,200]）、及び特定値及び値の範囲の組み合わせ（例えば、input1=4,7, [10, 50]又はoutput1=2,6,[12,52], [120,200]）に関して指定することができる。
【０１０７】
一部のステートチャートには、多数の検査事例が生成される場合もある。したがって、検査事例に問い合わせて、当該検査事例の特定の部分集合を決定するとよい。検査事例の問い合わせは、１つ以上のステートチャート入力値及び／又は１つ以上のステートチャート出力値に基づくことができる。即ち、問い合わせは、特定の入力値又は特定の出力値、例えば、input1=145又はoutput1=269に基づいて、検査事例で作ることができる。ステートチャート入力値及びステートチャート出力値と同様、問い合わせは、特定の値及び／又は値の範囲を用いて作ることもできる（例えば、問い合わせは、input1=[120,200]又はoutput1=2, 6, [12,52], [120,200]と指定することができる）。
【０１０８】
問い合わせは、問い合わせ入力を決定するノードを決定するために、範囲のない、即ち、無限範囲の入力（例えば、input1=[−∞，＋∞]）について形成することができる。問い合わせの結果に基づいて、検査生成装置は、問い合わせ入力を最初に決定したソース・ノードを判定し、次いでソース・ノードから関連ノードに問い合わせ入力を投影することができる。
【０１０９】
ブロック６５０において、検査生成装置は、投影入力及び／又は伝搬出力に基づいて、検査を生成する。投影入力及び／又は伝搬出力は、選択した検査生成テンプレートに含ませることができる。次いで、投影入力及び／又は伝搬出力に基づいて、検査ベクトルを生成することができる。次いで、検査ベクトルから１つ以上の検査を生成することができる。例えば、１つ以上の生成した検査は、検査ベクトル（のコピー）であってもよい。次いで、生成した検査は、検査生成装置のメモリの中、生成した検査の電子ファイルに、印刷した又はそれ以外の永続的記録上等に記録すること、及び／又は別の計算機に電子的に送信することができる。
【０１１０】
ブロック６６０において、処理すべき別の検査生成テンプレートがあるか否か判定を行う。例えば、検査生成テンプレートを保持するために用いている検査生成テンプレート・データ構造が空でないことを判定することによって、判定を行うことができる。別の例として、検査生成テンプレート・データ構造を精査して、全ての検査生成テンプレートに「選択済み」と印されており、したがって全ての検査生成テンプレートを処理し終えているか否か確認することもできる。処理すべき検査生成テンプレートがあるか否か判定するために、他の多くの技法が採用可能である。処理すべき別の検査生成テンプレートがある場合、方法６００はブロック６２０に進む。処理すべき検査生成テンプレートがない場合、方法６００は終了する。
【０１１１】
結論
以上、本発明の実施形態例について説明した。しかしながら、特許請求の範囲によって規定する、本発明の真の技術的範囲及び技術思想から逸脱することなく、記載した実施形態には変更や修正が可能であることは、当業者であれば理解できるであろう。本明細書において詳細に説明した本構成及びその他の構成は、例示の目的のためにのみ呈示したのであって、本発明は以下の特許請求の範囲の範囲及び主旨の中に全ての修正や改良を包含することは言うまでもない。したがって、他の構成及びその他の要素（例えば、機械、インターフェース、機能、順序、機能の集合体等）も代わりに用いることができ、いくつかの要素は纏めて省略してもよいことは、当業者には認められるであろう。
【０１１２】
更に、本明細書において記載した要素の多くは、機能的エンティティであり、離散コンポーネント又は分散コンポーネントとして、あるいは他のコンポーネントと一緒に、適した組み合わせ及び位置であればいずれでも、そしてハードウェア、ファームウェア、及び／又はソフトウェアの適した組み合わせであれば如何様にも実現することができる。
【図１】
2009277225.tif 000003
【図２】
2009277225.tif 000004
【図３】
2009277225.tif 000005
【図４】
2009277225.tif 000006
【図５】
2009277225.tif 000007
【図６】
2009277225.tif 000008
【外国語明細書】
2009277225000001.pdf