(57)【特許請求の範囲】
【請求項１】
コンピュータに、
設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第１の優先度を付与し、
前記検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第２の優先度を決定し、
前記第１の優先度と前記第２の優先度とに基づいて、選択した前記検証用情報の検証順位を決定し、
選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
処理を実行させる設計検証プログラム。
【請求項２】
前記第２の優先度を決定する処理では、前記パラメータと、前記処理手順が備える処理単位の実行を制約する条件との論理式を求め、その結果に応じて前記パラメータの前記第２の優先度を決定する請求項１記載の設計検証プログラム。
【請求項３】
コンピュータが、
設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第１の優先度を付与し、
前記検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第２の優先度を決定し、
前記第１の優先度と前記第２の優先度とに基づいて、選択した前記検証用情報の検証順位を決定し、
選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
設計検証方法。
【請求項４】
設計対象の設計仕様が備える処理手順を有し、かつ、前記処理手順を検証する検証用情報に、前記処理手順の優先度に応じて第１の優先度を付与する優先度付与部と、
前記検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順に含まれており、かつ、前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第２の優先度を決定する優先度決定部と、
前記第１の優先度と前記第２の優先度とに基づいて、選択した前記検証用情報の検証順位を決定する検証順位決定部と、
前記優先度決定部により選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する出力部と、
を有する設計検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は設計検証プログラム、設計検証方法および設計検証装置に関する。
【背景技術】
【０００２】
近年、設計技術の進歩により、ソフトウェアやハードウェアの開発対象が大規模化している。
設計開発時には、開発対象に対する動作検証を行い、開発対象の動作を確認しつつ、設計を進めることが行われている。
【０００３】
前述した開発対象の大規模化により、開発工程全体における検証工程の占める割合が増加する傾向にある。
一方で、納期短縮等による設計期間の短縮化や、工数が当初の見積もりより大きくなる等の理由により、設計期間が足りなくなることはしばしばある。
【０００４】
このため、検証効率の向上のため、例えば、検証工程の検証項目を抽出し、設計期間の短縮化を図る技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７２７５２３１号明細書
【特許文献２】特開２００６−８５７１０号公報
【特許文献３】特開２００４−１８５５９２号公報
【特許文献４】特開２００７−２５７２９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
抽出した全ての検証工程についての検証を順不同に実行すると、優先的に検証したい工程が最後の方に存在した場合、エラーを検出するまでに時間がかかり、検証の処理効率が低くなる。
【０００７】
このため、膨大な数の検証工程から検証したい工程を優先的に検証したい場合は、設計者や検証者（ユーザ）の経験により、膨大な数の検証工程から検証を行うための検証手順を選択して検証を行うことが行われている。
【０００８】
しかしながら、設計者や検証者の経験が浅い場合、適切な検証手順の選択を誤る場合があり、誤って選択された検証手順によっては、やはり検証の処理効率が低いという問題がある。
【０００９】
１つの側面では、本発明は、効率的な検証工程の情報を提供することができる設計検証プログラム、設計検証方法および設計検証装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、設計検証装置は、優先度決定部と、検証順位決定部と、出力部とを有している。優先度決定部は、設計対象の設計仕様が備える処理手順の検証要求に応じて、処理手順を検証する検証用情報の少なくとも１つを選択し、選択した検証用情報が有する処理手順の実行を制約する条件を示すパラメータに応じてパラメータの優先度を決定する。検証順位決定部は、優先度決定部により決定された優先度に基づいて選択された検証用情報の検証順位を決定する。出力部は、優先度決定部により選択された検証用情報を識別する情報を、検証順位を明示して出力する。
【発明の効果】
【００１１】
効率的な検証工程の情報を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の設計検証装置を説明する図である。
【図２】第１の実施の形態の設計検証装置を説明する図である。
【図３】第２の実施の形態のシステムを示す図である。
【図４】第２の実施の形態のＬＳＩの設計仕様の構成を示す図である。
【図５】ＬＳＩの設計仕様のデータ構造の一例を示す図である。
【図６】メッセージ・シーケンス・チャート間の関係と階層構造を説明する図である。
【図７】メッセージ・シーケンス・チャートの構成を説明する図である。
【図８】メッセージ・シーケンス・チャートの他の例を示す図である。
【図９】設計検証装置のハードウェア構成例を示す図である。
【図１０】設計検証装置の機能を示すブロック図である。
【図１１】入力されるパラメータ情報を示す図である。
【図１２】図１１に示したパラメータ情報のデータ構造例を示す図である。
【図１３】設計検証装置の全体処理を示すフローチャートである。
【図１４】検証用シナリオ生成処理を示すフローチャートである。
【図１５】検証用シナリオ生成処理を示すフローチャートである。
【図１６】ラベル付与処理を示すフローチャートである。
【図１７】シナリオ優先度付与処理を示すフローチャートである。
【図１８】パラメータ優先度付与処理を示すフローチャートである。
【図１９】ＬＳＩの設計仕様のデータ構造の具体例を示す図である。
【図２０】メッセージ・シーケンス・チャートの具体例を示す図である。
【図２１】ＬＳＩの設計仕様にラベルを付与する具体例を示す図である。
【図２２】ＬＳＩの設計仕様にラベルを付与する具体例を示す図である。
【図２３】ＬＳＩの設計仕様にラベルを付与する具体例を示す図である。
【図２４】ラベルを付与したＬＳＩの設計仕様のデータ構造例を示す図である。
【図２５】ＬＳＩの設計仕様にラベルを付与する他の具体例を示す図である。
【図２６】有限ステートマシンに変換する処理を説明するメッセージ・シーケンス・チャートを示す図である。
【図２７】図２６に示すメッセージ・シーケンス・チャートに関連する状態マトリックスを示す図である。
【図２８】状態マトリックスに関する状態図を示す図である。
【図２９】有限ステートマシンにラベルを付与する具体例を示す図である。
【図３０】有限ステートマシンにラベルの付与が終了したときの状態を示す図である。
【図３１】状態マトリックスに関する状態図を示す図である。
【図３２】有限ステートマシンのデータ構造例を示す図である。
【図３３】検証用シナリオ格納部に格納されている検証用シナリオを示す図である。
【図３４】優先度が付与された検証用シナリオのデータ構造を示す図である。
【図３５】優先度が付与された検証用シナリオのデータ構造を示す図である。
【図３６】パラメータ優先度付与処理の具体例を示す図である。
【図３７】パラメータ優先度付与処理の具体例を示す図である。
【図３８】優先順位リストの具体例を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、第１の実施の形態の設計検証装置について説明し、その後、第２の実施の形態以降、設計検証装置をより具体的に説明する。
【００１４】
＜第１の実施の形態＞
図１および図２は、第１の実施の形態の設計検証装置を説明する図である。
実施の形態の設計検証装置１は、生成部１ａと、優先度付与部１ｂと、パラメータ条件格納部１ｄと、優先度決定部１ｅと、検証順位決定部１ｆと、出力部１ｇとを有している。
【００１５】
生成部１ａは、設計対象の設計仕様が備える複数の処理手順（処理のシナリオ）が備える処理単位それぞれに、設計仕様の検証対象となる部位（検証対象部位）を識別する識別情報（ラベル）を関連付けた、検証用情報を生成する。この検証用情報は、処理手順を検証（例えば処理手順の成否を検証）するものである。
【００１６】
ここで、設計対象は、設計検証装置１によるテストおよび検証対象となるハードウェアコンポーネントまたはシステムやソフトウェアモジュールである。
この設計対象の設計仕様は、実装が守るべき約束事を記したものであり、少なくとも１つの機能により実現される。
【００１７】
図１では、機能２ａと機能２ｂとを有する設計仕様２を示している。機能２ａは、機能２ａを実現する２つの処理手順２０ａと処理手順２０ｂを有している。
処理手順２０ａは、機能２ａの基本動作についての処理手順であり、処理手順２０ｂは、基本動作に取って替わる代替動作についての処理手順である。
【００１８】
各処理手順２０ａ、２０ｂそれぞれには、処理手順の実行を制約する条件（制約条件）として、事前条件、事後条件、不変条件（の１つまたは複数）が定義されている場合がある。
【００１９】
事前条件とは、機能を実現する一連の操作の実行前に満たすべき（真となる）条件である。
事後条件とは、一連の操作の実行後に満たすべき条件である。
【００２０】
不変条件とは、事後条件が発生するまでの間（一連の操作の実行中）に要求される条件である。
図１では、一例として、基本動作、代替動作ともに事前条件が定義されている。
【００２１】
ところで、処理手順２０ａは枝構造を有しており、ノードとなる部分に基本動作の実行すべき処理単位が設定されている。この処理単位としては、例えば、機能２ａの実現に関わっている全てのオブジェクト間のやり取りを明確にした仕様であるメッセージ・シーケンス・チャート（Message Sequence Chart）等が挙げられる。なお、メッセージ・シーケンス・チャートについては、特許文献１と特許文献２を参照のこと。
【００２２】
処理手順２０ａと処理手順２０ｂとの関係は、図２に示す構造体３によって示される。
この構造体３を用いることで、設計仕様２をコンパクトに表示することができる。
構造体３は、第１のシーケンス、第２のシーケンス、および、第３のシーケンスと、これら各シーケンス間の関係を示すブランチ（branch）およびマージ（merge）を有している。
【００２３】
各シーケンスのブロックを接続する矢印は、機能が実行される順序を記述する。
処理手順２０ａは、第１のシーケンス、第２のシーケンスの順番に処理が行われることを示している。
【００２４】
処理手順２０ｂは、第１のシーケンス、第３のシーケンスの順番に処理が行われることを示している。
従って、構造体３は、これら２つの処理手順が第１のシーケンスまで同じ動作を有するが、それ以降の動作は異なっていることを示す。
【００２５】
構造体３のエッジは有向であり、ガード条件が付与されている。
ガード条件は、各シーケンスの終了後、ガード条件が成立すればエッジ先のシーケンスに遷移することを示している。
【００２６】
図２では、第１のシーケンスの処理後、ｉ＞０のガード条件が成立すれば、第２のシーケンスに移行する。一方、ｉ＜＝０のガード条件が成立すれば、第３のシーケンスに移行する。
【００２７】
図１に示す機能２ａの場合、生成部１ａは、処理手順２０ａ、すなわち、基本動作に対し、処理手順２０ａが備える第１のシーケンスおよび第２のシーケンスそれぞれに設計仕様の検証対象部位を識別する識別情報を関連付けた検証用情報を生成する。
【００２８】
検証対象部位は、例えば、機能、処理手順、処理単位等が挙げられる。図２では、第１のシーケンス、第２のシーケンスそれぞれに、機能２ａを識別する識別情報「機能＃１」、処理手順２０ａを識別する識別情報「基本動作」を関連付ける。
【００２９】
また、生成部１ａは、処理手順２０ｂ、すなわち、代替動作に対し、処理手順２０ｂが備える第１のシーケンスおよび第３のシーケンスそれぞれに設計仕様の検証対象部位を関連付けた検証用情報を生成する。
【００３０】
図２では、第１のシーケンス、第３のシーケンスそれぞれに、機能２ａを識別する識別情報「機能＃１」、処理手順２０ｂを識別する識別情報「代替動作」を関連付ける。
この結果、第１のシーケンスには、識別情報「機能＃１：基本動作」、「機能＃１：代替動作」が関連付けられる。第２のシーケンスには、識別情報「機能＃１：基本動作」が関連付けられる。第３のシーケンスには、識別情報「機能＃１：代替動作」が関連付けられる。
【００３１】
そして、生成部１ａは、同じ識別情報を備えるシーケンスを抽出し、抽出したシーケンスの集合をそれぞれ検証用情報とする。
図２では、識別情報「基本動作」を備える第１のシーケンスおよび第２のシーケンスの集合を１つの検証用情報３ａとする。換言すれば、検証用情報３ａは、機能２ａの基本動作を検証するための情報となる。
【００３２】
また、識別情報「代替動作」を備える第１のシーケンスおよび第３のシーケンスの集合を１つの検証用情報３ｂとする。換言すれば、検証用情報３ｂは、機能２ａの代替動作を検証するための情報となる。
【００３３】
再び図１に戻って説明する。
優先度付与部１ｂは、情報４ａに応じて、検証用情報３ａ、３ｂに処理優先度を付与する。
【００３４】
例えば、図１に示すように、情報４ａとして、機能２ａの基本動作の処理優先度を代替動作の処理優先度より高くすることを示す「基本動作＞代替動作」が入力されたものとする。
【００３５】
この場合、優先度付与部１ｂは、検証用情報３ａに、検証用情報３ｂより高い優先度「２」を付与する。また、検証用情報３ｂに優先度「１」を付与する。
なお、本実施の形態では、優先度が付与された検証用情報は、検証用情報格納部１ｃに格納される。図１では、優先度「２」に検証用情報３ａを示す検証用情報＃１を関連付けたレコードと、優先度「１」に検証用情報３ｂを示す検証用情報＃２を関連付けたレコードとが検証用情報格納部１ｃに格納されている。
【００３６】
優先度決定部１ｅは、情報４ｂに応じて、検証用情報格納部１ｃに格納されている検証用情報＃１、＃２の少なくとも１つを選択する。そして、選択した検証用情報が有する制約条件を示すパラメータに応じてパラメータ毎の優先度を決定する。
【００３７】
例えば、処理手順が１つの関数であるとすると、その関数のインプットの値（関数の引数となる値）を入力することにより、処理手順が実行できる。その入力をパラメータという。
【００３８】
例えば、図１に示すように、情報４ｂとして、基本動作の事前条件として「Ｐ＝１０」が入力され、代替動作の事前条件として「Ｐ＝０」が入力されたものとする。
優先度決定部１ｅは、基本動作の事前条件としての「Ｐ＝１０」に応じて、基本動作を検証する検証用情報３ａを選択する。
【００３９】
ここで、パラメータ条件格納部１ｄには、パラメータに応じて優先度を決定する条件が予め格納されている。例えば、「Ｐ＝１０」については、優先度「２」であることが予め定められている。
【００４０】
従って、優先度決定部１ｅは、検証用情報３ａの事前条件に対する優先度が「２」であることを決定する。
また、優先度決定部１ｅは、代替動作の事前条件としての「Ｐ＝０」に応じて、代替動作を検証する検証用情報３ｂを選択する。
【００４１】
また、パラメータ条件格納部１ｄには、例えば、「Ｐ＝０」については、優先度「１」であることが予め定められている。
従って、優先度決定部１ｅは、検証用情報３ｂの事前条件に対する優先度が「２」であることを決定する。
【００４２】
検証順位決定部１ｆは、優先度決定部１ｅにより決定された優先度に基づいて選択された検証用情報３ａ、３ｂの検証順位を決定する。
検証順位の決定方法は特に限定されないが、例えば、検証用情報３ａ、３ｂそれぞれの優先度付与部１ｂによって付与された優先度と、優先度決定部１ｅによって決定された優先度とを加算する。そして、その加算結果を比較して優先度の合計値が大きい順番（優先度の高い順番）に検証用情報の検証順位とする。
【００４３】
本実施の形態では、検証用情報３ａの優先度付与部１ｂによって付与された優先度「２」と、優先度決定部１ｅによって決定された優先度「２」とを加算する。そして加算値「４」を得る。また、検証用情報３ａの優先度付与部１ｂによって付与された優先度「１」と、優先度決定部１ｅによって決定された優先度「１」とを加算する。そして加算値「２」を得る。そして、その加算結果「４」と「２」を比較して優先度の合計値が大きい検証用情報３ａを最初の検証順位、検証用情報３ｂを２番目の検証順位とする。
【００４４】
なお、検証順位の決定方法としては、他にも、検証用情報３ａ、３ｂそれぞれの優先度付与部１ｂによって付与された優先度と、優先度決定部１ｅによって決定された優先度とを乗算し、その乗算結果を比較して優先度の合計値が大きい順番を検証順位とする方法や、予め定められた関数に従って演算し、その演算結果を比較して優先度の合計値が大きい順番を検証順位とする方法等が挙げられる。
【００４５】
出力部１ｇは、優先度決定部１ｅにより選択された検証用情報３ａ、３ｂを識別する情報を、検証順位を明示して出力する。
図１では、優先順位「１」に検証用情報３ａを示す検証用情報＃１を関連付けたレコードと、優先順位「２」に検証用情報３ｂを示す検証用情報＃２を関連付けたレコードとを備える出力結果５を出力する。
【００４６】
このような設計検証装置１によれば、生成部１ａが、検証用情報３ａ、３ｂを生成し、優先度付与部１ｂが、設計仕様の複数の検証対象部位およびこれら検証対象部位の処理優先度を示す情報４ａに応じて、検証用情報毎に優先度を付与するようにした。
【００４７】
これにより、検証対象の単位に応じて行うべき優先度を容易に把握することができる。
また、優先度決定部１ｅが、処理手順の制約条件毎に与えられたパラメータを示す情報４ｂに応じて、優先度を決定し、検証順位決定部１ｆが、優先度付与部１ｂによって付与された優先度と優先度決定部１ｅによって決定された優先度とに基づいて、検証用情報３ａ、３ｂそれぞれの検証順位を決定するようにした。
【００４８】
これにより、ユーザは、この検証順位の順に検証用情報を用いて検証対象の検証を行うことにより、効率よく検証を行うことができる。
なお、本実施の形態では、設計検証装置１が、生成部１ａおよび優先度付与部１ｂを備え、優先度が付与された検証用情報を生成した。しかし、これに限らず、設計検証装置１が、他の装置によって生成された、優先度が付与された検証用情報を読み込み、優先度決定部１ｅが、この検証用情報およびパラメータ条件格納部１ｄに格納されたパラメータ条件に基づいて優先度を決定するようにしてもよい。この場合、設計検証装置１は、生成部１ａおよび優先度付与部１ｂの機能を省略することができる。
【００４９】
以下、実施の形態をより具体的に説明する。
＜第２の実施の形態＞
図３は、第２の実施の形態のシステムを示す図である。
【００５０】
システム１００は、設計検証装置１０と、信号インタフェース２００とテスト対象装置３００とを有している。
設計検証装置１０は、テスト対象装置３００が設計仕様に従って動作するか判断するため、設計仕様が備えるシナリオ毎に、これらシナリオを検証するための検証用シナリオを生成する。
【００５１】
そして、設計検証装置１０は、検証用シナリオに優先順位を付与する。
さらに、設計検証装置１０は、優先順位が付与された検証用シナリオを利用して、テスト対象装置３００がこの検証用シナリオに従って動作するか否かを判断するため、信号インタフェース２００を介しテスト対象装置３００と通信する。
【００５２】
この際、付与した優先順位に従って、検証用シナリオをテスト対象装置３００に流す。
信号インタフェース２００は、設計検証装置１０とテスト対象装置３００とを接続するための装置を表す。信号インタフェース２００は、設計検証装置１０により通信される信号を設計検証装置１０による利用に適した信号に変換する。
【００５３】
なお、例えば、設計検証装置１０とテスト対象装置３００が互換的な信号を使用する場合、信号インタフェース２００は省略されてもよい。
テスト対象装置３００は、設計検証装置１０によるテストおよび検証対象となるハードウェアコンポーネントまたはシステムやソフトウェアモジュールを表す。
【００５４】
テスト対象装置３００は、製品開発中に製造される設計プロトタイプであってもよいし、設計検証装置１０によって生成されるステートマシン（State Machine）であってもよい。以下、テスト対象装置３００がＬＳＩ（Large Scale Integration）である場合を例にとって説明する。
【００５５】
＜ＬＳＩの設計仕様＞
図４は、第２の実施の形態のＬＳＩの設計仕様の構成を示す図である。
前述したように、設計仕様とは、実装が守るべき約束事を記したものであり、複数の機能により実現される。
【００５６】
なお、設計仕様は、リスト構造で表現される。このリスト構造は、例えば、ＸＭＬ（Extensible Markup Language）形式で表現される。
各機能ブロック２１、２２、２３には、それぞれ１つの機能が対応付けられている。対応付けられた各機能は、例えば、ソフトウェアにより呼び出されるハードウェアで実現する機能であり、または、ハードウェアに依存するソフトウェアで実現する機能である。
【００５７】
各機能ブロック２１、２２、２３は、それぞれ、１つまたは複数のシナリオブロックを有している。例えば、機能ブロック２１は、シナリオブロック２１ａとシナリオブロック２１ｂとを有している。
【００５８】
各シナリオブロック２１ａ、２１ｂには、それぞれ、１つのシナリオが対応付けられている。対応付けられた各シナリオは、機能の実体であり、呼び出し時の条件により複数存在する。
【００５９】
より詳しくは、シナリオは、機能を実現するために実行される一連の操作を定義するものである。言い換えると、シナリオは、オブジェクト間で送受信されるメッセージの順序および組み合わせを表すものである。
【００６０】
各シナリオブロック２１ａ、２１ｂは、それぞれ、１つまたは複数のメッセージ・シーケンス・チャートブロック（以下、「ＭＳＣブロック」という）を有している。例えば、シナリオブロック２１ａは、ＭＳＣブロック２１１ａと、ＭＳＣブロック２１２ａとを有している。
【００６１】
ＭＳＣブロック２１１ａ、２１２ａには、それぞれ、１つのメッセージ・シーケンス・チャートが対応付けられている。
メッセージ・シーケンス・チャートは、シナリオが備えるサブ機能群である。具体的には、メッセージ・シーケンス・チャートは、機能の実現に関わっている全てのオブジェクト間のやり取りを明確にしたものである。このオブジェクトは、ＬＳＩ２０が備える機能や、このＬＳＩ２０を含むシステムに干渉する外部環境を含む。
【００６２】
＜ＬＳＩの設計仕様のデータ構造＞
次に、ＬＳＩ２０の設計仕様のデータ構造を説明する。
図５は、ＬＳＩの設計仕様のデータ構造の一例を示す図である。
【００６３】
前述したように、ＬＳＩ２０の設計仕様は、複数の機能により実現される。図５では、図４に示した設計仕様をツリー構造で示し、そのうちの１つの機能を示している。
各機能それぞれには、制約条件として、事前条件、事後条件、不変条件（の１つまたは複数）が定義されている場合がある。
【００６４】
これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない条件には、「条件なし」が設定される。例えば、事前条件のみが定義されている場合は、事後条件、不変条件は「条件なし」が設定される。
【００６５】
前述したように、機能ブロック２１に対応付けられている機能は、シナリオブロック２１ａに対応付けられているシナリオＡ１とシナリオブロック２１ｂに対応付けられているシナリオＡ２とを有している。
【００６６】
シナリオＡ１、Ａ２は、それぞれ、「基本動作」、「代替動作」、「例外動作」のいずれか１つの属性を有している。その属性が、種類として記載されている。
また、各シナリオＡ１、Ａ２それぞれには、制約条件として、事前条件、事後条件、不変条件（の１つまたは複数）が定義されている場合がある。これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない条件には、「条件なし」が設定される。
【００６７】
図５では、シナリオＡ１は、基本動作についてのシナリオであり、事前条件と、事後条件と、不変条件とを有している。
シナリオＡ２は、シナリオＡ１に対する代替動作についてのシナリオであり、基本動作と同様に、事前条件と、事後条件と、不変条件とを有している。
【００６８】
ＭＳＣブロック２１１ａ、２１２ａに対応付けられているメッセージ・シーケンス・チャートは、メッセージ・シーケンス・チャートを識別するための名前（識別名）を有している。ＭＳＣブロック２１１ａに対応付けられているメッセージ・シーケンス・チャートの識別名は、「ＭＳＣ１の動作」であり、ＭＳＣブロック２１２ａに対応付けられているメッセージ・シーケンス・チャートの識別名は、「ＭＳＣ２の動作」である。
【００６９】
メッセージ・シーケンス・チャートは、制約条件として、事前条件、事後条件、不変条件（の１つまたは複数）が定義されている場合がある。これら各条件が存在する場合には、その条件が設定される。また、条件が存在しない場合には、「条件なし」が設定される。
【００７０】
メッセージ・シーケンス・チャート「ＭＳＣ１の動作」は、事前条件と、不変条件と、事後条件とを有している。
メッセージ・シーケンス・チャート「ＭＳＣ２の動作」は、事前条件と、不変条件と、事後条件とを有している。
【００７１】
なお、シナリオブロック２１ｂも少なくとも１つのＭＳＣブロックを有しているが、図５ではその図示を省略している。
ところで、ＬＳＩ２０の設計仕様は、複数のメッセージ・シーケンス・チャートを含む単一の有向グラフによって表されてもよいし、単一の平坦化されたメッセージ図によって表されてもよい。
【００７２】
この平坦化されたメッセージ・シーケンス・チャートは、オブジェクト間で通信されるメッセージの順序を示すものである。
さらに、ＬＳＩ２０の設計仕様は、互いに埋め込まれた複数の有向グラフと複数のメッセージ・シーケンス・チャートによって表されてもよい。
【００７３】
図６は、メッセージ・シーケンス・チャート間の関係と階層構造を説明する図である。
本実施の形態では、ＬＳＩ２０の設計仕様は、有向グラフ３０によって、階層的に形成されている。
【００７４】
この有向グラフ３０を用いることで、ＬＳＩ２０の設計仕様をコンパクトに表示することができる。
前述したように、有向グラフ３０は、複数のメッセージ・シーケンス・チャートと、これらメッセージ・シーケンス・チャート間の関係を示すブランチおよびマージを有している。この関係は、メッセージ・シーケンス・チャートを１以上のシーケンスに順序付けするものである。
【００７５】
他方、各メッセージ・シーケンス・チャートは、オブジェクト間の関係を示すものである。メッセージ・シーケンス・チャートは、オブジェクト間で通信されるメッセージを特定し、少なくとも一部のメッセージが通信される順序を示すものである。
【００７６】
有向グラフ３０は、将来的なユーザを認証するため、ある機能によって実行される複数の機能の関係を記述する。これら機能は、形状によって表されるメッセージ・シーケンス・チャートによって規定される。各メッセージ・シーケンス・チャートは、機能によって表現されている。各ブロックを接続する矢印は、機能が実行される順序を記述する。
【００７７】
また、有向グラフ３０のエッジは有向であり、ガード条件が付与されている場合がある。
図６に示すように、有向グラフ３０は、各自がメッセージ・シーケンス・チャート３２、メッセージ・シーケンス・チャート３３およびｈメッセージ・シーケンス・チャート３４によって表される独立したメッセージ・シーケンス・チャートによって規定される３つの機能を有している。
【００７８】
ここで、ｈメッセージ・シーケンス・チャート３４は、複数のメッセージ・シーケンス・チャートの階層構造をまとめて表したものである。
初期状態ブロック３１は、仮想的な状態であり、エントリポイントを有向グラフ３０に提供する。具体的には、どのメッセージ・シーケンス・チャートが最初に「起動」されるかを指定する。
【００７９】
従って、初期状態ブロック３１とメッセージ・シーケンス・チャート３２との間の矢印は、メッセージ・シーケンス・チャート３２に関連するメッセージ・シーケンス・チャートが有向グラフ３０へのエントリ後に直面することを示す。
【００８０】
メッセージ・シーケンス・チャート３２により表されるメッセージ・シーケンス・チャートに規定されるメッセージの通信後、メッセージ・シーケンス・チャート３３またはｈメッセージ・シーケンス・チャート３４のいずれかに実行が継続される。
【００８１】
従って、有向グラフ３０は、２つのシナリオを含む。
１つのシナリオは、初期状態ブロック３１、メッセージ・シーケンス・チャート３２およびメッセージ・シーケンス・チャート３３を介し進行するパスに関する。
【００８２】
他のシナリオは、初期状態ブロック３１、メッセージ・シーケンス・チャート３２およびｈメッセージ・シーケンス・チャート３４を介し進行するパスに関する。
従って、有向グラフ３０は、これら２つのシナリオがメッセージ・シーケンス・チャート３２まで同じ動作を有するが、メッセージ・シーケンス・チャート３２からの動作は異なっていることを示す。
【００８３】
有向グラフ３０のエッジは有向であり、ガード条件が付与されている。
ガード条件は、メッセージ・シーケンス・チャートに記述されたメッセージのシーケンスの終了後、ガード条件が成立すればエッジ先のメッセージ・シーケンス・チャート、または、その階層内のメッセージ・シーケンス・チャートへ遷移する。
【００８４】
図６では、メッセージ・シーケンス・チャート３２の処理後、ｉ＞０のガード条件が成立すれば、メッセージ・シーケンス・チャート３３に移行する。一方、ｉ＜＝０のガード条件が成立すれば、ｈメッセージ・シーケンス・チャート３４に移行する。
【００８５】
この情報は、２つのシナリオの共通部分が設計に関する有向グラフ３０を完全にテストするのに繰り返される必要はないため、検証および検証目的に有用に利用される。
ここで、有向グラフ３０が有する各メッセージ・シーケンス・チャートは、同一のオブジェクト群を利用してもよい。さらに、あるメッセージ・シーケンス・チャートによって規定される各メッセージが、次のメッセージ・シーケンス・チャートがパスに沿って実行可能となる前に実行される必要があるということを示すルールが、有向グラフ３０に関連して設けられていてもよい。
【００８６】
次に、メッセージ・シーケンス・チャートの一般的な構成を説明する。
＜メッセージ・シーケンス・チャート＞
図７は、メッセージ・シーケンス・チャートの構成を説明する図である。
【００８７】
前述したように、メッセージ・シーケンス・チャートは、機能の実現に関わっている全てのオブジェクト間のやり取りを明確にしたものである。
メッセージ・シーケンス・チャートは、ＬＳＩが備えるハードウェアブロック、または、システムと干渉する外部環境であるオフジェクトを有している。
【００８８】
図７に示すメッセージ・シーケンス・チャート（ＭＳＣ）４０には、複数のオブジェクトとして、ハードウェア（ＨＷ）４１、４２、４３が設けられている。
これらのオブジェクトが生成された後、データ・イベント・メッセージはオブジェクト間で通信されるものとして示される。
【００８９】
このデータ・イベント・メッセージは、ユーザにより指定されるものである。ユーザは当該メッセージがどのオブジェクト間で通信されるか指定することができる。
例えば、ユーザにより、１つのオブジェクトが選択され、その後に図示しないポインティングツールを用いて第２のオブジェクトが選択される。
【００９０】
メッセージ・シーケンス・チャート４０の生成時には、送信イベントを有する第１オブジェクトと受信イベントを有する第２オブジェクトからなる示された２つのオブジェクトの間においてデータ・イベント・メッセージが生成される。このようにして、データ・イベント・メッセージｍ１〜ｍ４の矢印が、メッセージ・シーケンス・チャート４０に示されるハードウェア４１、４２、４３間で送受信されるデータ・イベント・メッセージｍ１〜ｍ４の４個のメッセージを表すよう生成される。
【００９１】
具体的には、オブジェクトライン４４、４５、４６を相互接続する水平矢印は、データ・イベント・メッセージが、オブジェクト間で送受信されることを示す。
各データ・イベント・メッセージは、送信オブジェクトと受信オブジェクトを関連付けている。オブジェクトライン４４、４５、４６とデータ・イベント・メッセージｍ１〜ｍ４とが交差する位置は、イベントと呼ばれる。
【００９２】
各データ・イベント・メッセージは、送信オブジェクトに関連する送信イベントと、受信オブジェクトに関連する受信イベントを含む。例えば、データ・イベント・メッセージｍ１は、オブジェクトライン４５とオブジェクトライン４４とを接続する。
【００９３】
このため、データ・イベント・メッセージｍ１は、ハードウェア４１および送信オブジェクトと、ハードウェア４２および受信オブジェクトとを関連付ける。
さらに、データ・イベント・メッセージｍ１のオブジェクトライン４４との交点は送信イベントを生成し、データ・イベント・メッセージｍ１とオブジェクトライン４５との交点は受信イベントを生成する。
【００９４】
ここで、メッセージ・シーケンス・チャートによって特定される関係について、以下の２つのルールが設けられている。
第１のルール：任意のデータ・イベント・メッセージｍに対して、送信イベント（ｓ（ｍ））は、対応する受信イベント（ｒ（ｍ））の前に発生する。
【００９５】
従って、ｓ（ｍ）＜ｒ（ｍ）となる。
第２のルール：オブジェクトライン上のイベントは、上から下に順序付けされる。
これら２つのルールは、メッセージ・シーケンス・チャートがオブジェクト間で送受信されるデータ・イベント・メッセージの順序を記述することを示している。
【００９６】
例えば、第１のルールにより、メッセージ・シーケンス・チャート４０は、データ・イベント・メッセージｍ１に関する送信イベントが同じメッセージに関する受信イベントの前に発生することを示している。
【００９７】
また、第２のルールにより、メッセージ・シーケンス・チャート４０は、データ・イベント・メッセージｍ２に関する送信イベントが、データ・イベント・メッセージｍ４に関する受信イベントの前に発生するということを示している。
【００９８】
図７に示すデータ・イベント・メッセージの送信は受信より先に起きる。
ハードウェア４１の時間軸ではデータ・イベント・メッセージｍ１とデータ・イベント・メッセージｍ２とが、この順番に送信される。その後、データ・イベント・メッセージｍ４が受信される。
【００９９】
ハードウェア４２の時間軸ではデータ・イベント・メッセージｍ１が受信された後、データ・イベント・メッセージｍ３が受信される。
ハードウェア４３の時間軸ではデータ・イベント・メッセージｍ２が受信されてから、データ・イベント・メッセージｍ３とデータ・イベント・メッセージｍ４とを、この順番に送信する。
【０１００】
ここで、上記ルールは推移的である。例えば、イベントｅ１がイベントｅ２（ｅ１＜ｅ２）の前に発生し、イベントｅ２がイベントｅ３（ｅ２＜ｅ３）の前に発生する場合、イベントｅ１は、イベントｅ３（ｅ１＜ｅ３）の前に発生する。
【０１０１】
しかしながら、これら２つのルールは、全てのデータ・イベント・メッセージの間の順序付けされた関係を規定するものではない。
例えば、４つのオブジェクトを含むが、２つのデータ・イベント・メッセージしか含まないメッセージ・シーケンス・チャートを考える。
【０１０２】
第１のデータ・イベント・メッセージが第１オブジェクトと第２オブジェクトとの間で送受信され、第２のデータ・イベント・メッセージが第３オブジェクトと第４オブジェクトとの間で送受信される場合、これら２つのデータ・イベント・メッセージの間の順序付けされた関係はこれら２つのルールによっては規定されない。この場合、２つのデータ・イベント・メッセージは任意の順序で発生する。
【０１０３】
図７では、ハードウェア４２とハードウェア４３は時間軸の順序関係を共有しないため、データ・イベント・メッセージｍ１とデータ・イベント・メッセージｍ２の受信順序は図７に表現した順序と異なってもかまわない。
【０１０４】
ハードウェア４１とハードウェア４２は時間軸の順序関係を共有しないため、データ・イベント・メッセージｍ３とデータ・イベント・メッセージｍ４の受信順序は、図７に表現した順序と異なってもかまわない。
【０１０５】
図８は、メッセージ・シーケンス・チャートの他の例を示す図である。
メッセージ・シーケンス・チャート４０ａには、複数のオブジェクトとして、ハードウェア４１、４２、４３が設けられている。
【０１０６】
メッセージ・シーケンス・チャート４０ａは、同時性制約、タイムアウト制約および同期エッジの３つの（先進的）機能を有している。
同時性制約およびタイムアウト制約については、イベントを包囲するボックスが描画されている。
【０１０７】
同時性制約を示すボックス４７には、このボックス４７がこれらのイベントを同時イベントにグループ化することを示す「ｓｉｍｕｌ」がラベル付けされている。
ボックス４７は、データ・イベント・メッセージｍ５とデータ・イベント・メッセージｍ６に関する送信イベントをグループ化している。
【０１０８】
タイムアウト制約を示すボックス４８には、タイムアウト制約のタイムアウト値を表す整数がラベル付けされている。
実行がタイムアウト制約に直面すると、示されたタイムアウト期間が経過するまで実行が停止される。時限実行モデルでは、タイムアウト期間が経過して始めて実行が継続する。
【０１０９】
従って、データ・イベント・メッセージｍ７は、ボックス４８のラベルに付されている「３」時刻単位後経過した後に、送信される。
同期エッジは、データ・イベント・メッセージの順序を特定するために用いられる。同期エッジの表示は、名前「ｓｙｎｃｈ」が同期エッジに利用可能であるという点を除いて、データ・イベント・メッセージと同様に描かれている。
【０１１０】
「ｓｙｎｃｈ」とラベル付けされたデータ・イベント・メッセージ（以下、「同期メッセージ」という）を利用して、順序付けされた関係を確立する。例えば、ハードウェア４２に関する送信イベントと、ハードウェア４１に関する受信イベントを含む同期エッジを考える。同期メッセージは、ハードウェア４２がデータ・イベント・メッセージｍ８を受信した後に送信されるものとして示される。同期メッセージは、また、データ・イベント・メッセージｍ９が送信されるまでにハードウェア４１により受信されるものとして示される。
【０１１１】
メッセージ・シーケンス・チャート４０ａによれば、ハードウェア４２におけるデータ・イベント・メッセージｍ８の受信は、ハードウェア４１におけるデータ・イベント・メッセージｍ９の送信前に発生する必要がある。
【０１１２】
ここで、同期エッジは関連性のないオブジェクト間の関係を生成する。しかしながら、ある実施例によると、同期エッジによって関連するオブジェクト間において実際にメッセージは送受信されない。
【０１１３】
同期メッセージは、データ・イベント・メッセージｍ７およびデータ・イベント・メッセージｍ８と、データ・イベント・メッセージｍ５およびデータ・イベント・メッセージｍ６とを比較して、これらの間の順序を生成するものではない。
【０１１４】
しかしながら、同期メッセージは、データ・イベント・メッセージｍ７とデータ・イベント・メッセージｍ８に関する受信イベントの後にデータ・イベント・メッセージｍ９に関する送信イベントを発生させる。
【０１１５】
次に、設計検証装置１０の構成を説明する。
＜設計検証装置＞
図９は、設計検証装置のハードウェア構成例を示す図である。
【０１１６】
設計検証装置１０は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０９を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、外部補助記憶装置１０６、インタフェース１０７および通信インタフェース１０８が接続されている。
【０１１７】
ＣＰＵ１０１は、入力インタフェース１０５、外部補助記憶装置１０６、インタフェース１０７および通信インタフェース１０８から受信した情報を処理するよう動作する。
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【０１１８】
ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。また、ＨＤＤ１０３内には、ＸＭＬ（Extensible Markup Language）形式で表現されたリスト構造や、プログラムファイルが格納される。
【０１１９】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号を、バス１０９を介してＣＰＵ１０１に送信する。
【０１２０】
外部補助記憶装置１０６は、記録媒体に書き込まれた情報を読み取ったり、記録媒体に情報を書き込んだりする。外部補助記憶装置１０６で読み書きが可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１２１】
インタフェース１０７は、設計検証装置１０に接続された装置から情報を送受信するよう動作可能なハードウェアである。具体的には、インタフェース１０７は、信号インタフェース２００およびテスト対象装置３００と通信する。
【０１２２】
通信インタフェース１０８は、ネットワーク４００に接続されている。通信インタフェース１０８は、ネットワーク４００を介して、他のコンピュータとの間でデータの送受信を行う。
【０１２３】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。このようなハードウェア構成の設計検証装置１０内には、以下のような機能が設けられる。
【０１２４】
図１０は、設計検証装置の機能を示すブロック図である。
設計検証装置１０は、検証用シナリオ生成部１１と、検証用シナリオ格納部１２と、シナリオ優先度付与部１３と、優先度付与済みシナリオ格納部１４と、パラメータ優先度付与部１５と、優先度ルール格納部１６と、パラメータ格納部１７と、検証順位決定部１８と、出力部１９とを有している。
【０１２５】
また、図示していないが、設計検証装置１０は、他にもメッセージ・シーケンス・チャートを生成するツールや、設計の実現形態の動作を検証するため、メッセージ・シーケンス・チャートに基づくステートマシン（State Machine）を生成するためのツールを有していてもよい。
【０１２６】
検証用シナリオ生成部１１は、図４および図５にて説明したＬＳＩ２０の設計仕様のデータに基づいて、シナリオ毎に検証用シナリオを生成する。
ここで、検証用シナリオは、ＬＳＩ２０の設計仕様の各シナリオが備えるメッセージ・シーケンス・チャートそれぞれに設計仕様のラベル（検証対象部位を識別する識別情報）を関連付けた情報である。なお、検証対象部位としては、例えば、機能、シナリオ、メッセージ・シーケンス・チャート等が挙げられる。
【０１２７】
この検証用シナリオは、シナリオ優先度付与部１３の処理対象となる中間的なデータである。
また、検証用シナリオ生成部１１は、検証用シナリオを生成する際に作成するデータを一時記憶する機能も有している。
【０１２８】
検証用シナリオ格納部１２は、検証用シナリオ生成部１１により生成された検証用シナリオを格納する。
シナリオ優先度付与部１３は、ユーザにより入力されるパターンを参照し、検証用シナリオに優先度（処理優先度）を付与する。
【０１２９】
シナリオ優先度付与部１３に入力されるパターンは、項目として識別情報と同様の情報を有している。例えば、機能名、シナリオ名、シナリオの種類（基本動作、代替動作、例外動作）、メッセージ・シーケンス・チャート名、上記の論理的な組み合わせのうちの少なくとも１つを有している。
【０１３０】
また、パターンは処理優先度情報を有していてもよい。
処理優先度情報を有するシナリオの種類のパターンの一例としては、例外動作より基本動作を優先するパターン（基本動作＞例外動作）等が挙げられる。また、処理優先度情報を有するメッセージ・シーケンス・チャート名のパターンの一例としては、問い合わせより認証成功を優先するパターン（認証成功＞問い合わせ）が挙げられる。さらに、認証成功より認証失敗を優先するパターン（認証失敗＞認証成功＞問い合わせ）等が挙げられる。
【０１３１】
優先度付与済みシナリオ格納部１４は、シナリオ優先度付与部１３によって優先度が付与された検証用シナリオ（以下、「優先度付与済みシナリオ」という）を格納する。優先度付与済みシナリオは、パラメータ優先度付与部１５の処理対象となる中間的なデータである。
【０１３２】
パラメータ優先度付与部１５に入力されるパターンは、項目として、（１）シナリオ、（２）パラメータ情報（パラメータ値の集合）、（３）（１）のシナリオに対する制約条件を有している。入力される１つのシナリオに対し、異なる複数の制約条件を有していてもよい。
【０１３３】
パラメータ優先度付与部１５は、入力されるパターンに含まれるシナリオの制約条件としてのパラメータ値に優先度を付与する。
また、パラメータ優先度付与部１５は、入力されるシナリオに基づいて、当該シナリオを検証する検証用シナリオを特定する。そして、特定した検証用シナリオと、パラメータ値の組み合わせを求める。
【０１３４】
以下、パラメータ情報と制約条件について説明する。
＜パラメータ情報＞
図１１は、入力されるパラメータ情報を示す図である。
【０１３５】
ＬＳＩ２０の設計仕様には、機能の階層構造とは別個に、事前条件や事後条件を明確に定義するためのパラメータ情報を定義することができる。
ＬＳＩ２０は、変数を割り当てるレジスタとポートを有している。図１１では、１つのレジスタおよび１つのポートが有する情報を１つのブロックに示している。
【０１３６】
レジスタブロック２５ａ、２５ｂは、それぞれレジスタの情報（レジスタ情報）を有している。
レジスタ情報は、属性として、パラメータ名、型、最大値、最小値、典型値を有している。
【０１３７】
パラメータ名は、設計仕様で定義された外部から参照可能なレジスタを識別する名前を示している。例えば、レジスタブロック２５ａのレジスタ情報のパラメータ名はレジスタ「Ｖ」である。
【０１３８】
型は、変数の性質を表すデータ型を示している。例えば、レジスタブロック２５ａのレジスタ情報の型は、「ｉｎｔｅｇｅｒ」である。
最小値、最大値、典型値は、それぞれ、パラメータを抽出するための条件を示している。
【０１３９】
例えば、レジスタブロック２５ａのレジスタ情報の最小値、最大値は、レジスタ「Ｖ」に格納できる最小値、最大値を示している。
例えば、レジスタブロック２５ａのレジスタ情報の最小値は「０」、最大値は「１３７」である。
【０１４０】
また、典型値は、例えば、ユーザが予め設定した値である。設定するか否かは、ユーザが任意に決定することができる。例えば、レジスタブロック２５ａのレジスタ情報の典型値は「１４」である。また、レジスタブロック２５ｂのレジスタ情報の典型値は未設定（n.a:not applicable）である。
【０１４１】
ポートブロック２６ａ、２６ｂは、それぞれ１つのポートの情報（ポート情報）を有している。
ポート情報は、属性として、ポート名、型、最大値、最小値、典型値を有している。
【０１４２】
ポート名は、設計仕様で定義された外部から参照可能なポートを識別する名前を示している。例えば、ポートブロック２６ａのポート情報のパラメータ名はポート「ＩＮＴ１」である。
【０１４３】
型は、変数の性質を表すデータ型を示している。例えば、ポートブロック２６ａのポート情報の型は［０：１］である。
最小値、最大値、典型値は、それぞれ、パラメータを抽出するための条件を示している。
【０１４４】
例えば、ポートブロック２６ａのポート情報の最小値、最大値は、ポート「ＩＮＴ１」に格納できる最小値、最大値を示している。
例えば、ポートブロック２６ａのポート情報の最小値は「０」、最大値は「３」である。
【０１４５】
また、典型値は、例えば、ユーザが予め設定した値である。設定するか否かは、ユーザが任意に決定することができる。例えば、ポートブロック２６ａのポート情報の典型値は「０」である。また、ポートブロック２６ｂのポート情報のレジスタ情報の典型値は未設定（n.a）である。
【０１４６】
図１２は、図１１に示したパラメータ情報のデータ構造例を示す図である。
パラメータ情報は、例えば、図１２に示すデータ構造で与えられる。このパラメータ情報を示すデータ２７は、ＸＭＬ形式で表現されている。
【０１４７】
記述２７ａは、レジスタブロック２５ａに関する記述部分を示している。また、記述２７ｂは、レジスタブロック２５ｂに関する記述部分を示している。また、記述２７ｃは、ポートブロック２６ａに関する記述部分を示している。また、記述２７ｄは、ポートブロック２６ｂに関する記述部分を示している。
【０１４８】
再び図１０に戻って説明する。
優先度ルール格納部１６は、パラメータ優先度付与部１５が優先度を付与するために用いる優先度ルールを格納している。
【０１４９】
優先度ルールは、例えば、予め設計者が決定しておくものである。以下、優先度ルールの一例を示す。
典型値は優先度を「１」とする。
【０１５０】
典型値が設計仕様で与えられない場合は、中央値（＝（最大値＋最小値）／２）を典型値とし、優先度を「２」とする。
最大値と最小値は、優先度を「１０」とする。
【０１５１】
境界値（ビット境界、零等）は、優先度を「４」とする。境界値は、経験上バグが発生することが多い。従って、境界値の優先度を典型値の優先度よりも大きく設定するのが好ましい。なお、ビット境界は、例えば、２ビットであれば「７」と「８」や、「６３」と「６４」等が挙げられる。
【０１５２】
境界値に隣接する値は、優先度を「５」とする。
過去の設計事例でバグが出た値は優先度を「７」とする。
さらに、制御に関わるパラメータ（例えば、割り込み信号等）は、上記優先度の値を「＋１」する。また、制御に関わらないパラメータ（例えば、画像のサイズ等）は、上記優先度の値を「−１」する。
【０１５３】
パラメータ優先度付与部１５は、入力される制約条件とパラメータ情報と優先度ルールとによって、パラメータ値の優先度を決定することができる。
例えば、図１１に示すパラメータ情報と、事前条件（制約条件）としてパラメータ値「Ｖ＝１４」とが入力された場合を説明する。
【０１５４】
事前条件のパラメータ値「Ｖ＝１４」は、レジスタ「Ｖ」の典型値である。従って、このパラメータ値の優先度は「１」となる。
なお、入力されたパラメータ値が、例えばユーザによって優先度ルール格納部１６に設定されていないパラメータ値である場合は、例えば、優先度が設定されないパラメータ値の優先度は全て「０」とする、のようなルールを予め決定しておくこともできる。これにより、優先度を定めることができる。例えば、典型値に対して優先度が設定されなかった場合、典型値の優先度を「０」とする。
【０１５５】
＜制約条件＞
前述したように、パターンは、項目として制約条件（事前条件、事後条件、不変条件）の１つまたは複数を有している。
【０１５６】
制約条件が与えられたときは、設計検証装置１０は、検証用シナリオの優先順位の決定に際し、パターンとして入力された制約条件だけを利用するようにしてもよい。また、メッセージ・シーケンス・チャートに設定されている制約条件と、入力された制約条件の論理式（論理積、論理和等）を利用するようにしてもよい。なお、論理積を利用する場合において、その演算結果に矛盾が生じる場合は、そのパラメータ値と検証用シナリオの組み合わせを優先度付与対象外（検証対象外）とするようにしてもよい。例えば、メッセージ・シーケンス・チャートの事前条件が（ｘ＞１）であり、パターンとして与えられた事前条件が（ｘ＜１）である場合は、そのメッセージ・シーケンス・チャートを含む検証用シナリオとパラメータ値の組み合わせを優先度付与対象外とするようにしてもよい。事後条件、不変条件についても同様である。
【０１５７】
パラメータ格納部１７は、各シナリオに対する優先度が付与されたパラメータを格納する。
検証順位決定部１８は、優先度付与済みシナリオの優先度と入力されたパラメータ値の優先度とから評価関数を用いて入力されたシナリオおよびパラメータ値の組み合わせの優先順位（検証順位）を決定する。
【０１５８】
なお、評価関数としては、例えば、全ての優先度を加算する関数や、加算と乗算を組み合わせた関数等が挙げられる。
例えば、全ての優先度を加算する関数を用いた場合、入力されたシナリオを検証する検証用シナリオに付与された優先度と、入力された制約条件としてのパラメータ値の優先度とを加算して加算結果を取得する。入力されたシナリオが複数存在するときは、シナリオ毎に加算結果を取得する。
【０１５９】
また、入力されたシナリオに対する制約条件が複数存在するときは、制約条件毎に加算結果を取得する。
そして、得られた加算結果を比較して優先度の合計値が大きい順番に入力されたシナリオおよびパラメータ値の組み合わせの優先順位（入力されたパラメータ値でのシナリオの優先順位）を決定する。
【０１６０】
出力部１９は、検証順位決定部１８が決定した優先順位の順番に入力されたシナリオおよびパラメータ値の組み合わせを並べる。
そして、出力部１９は、優先順位を付与した入力されたシナリオおよびパラメータ値の組み合わせを予め用意されたフォーマットに従って作成したリスト（優先順位リスト）を出力する。
【０１６１】
なお、出力部１９は、ユーザにより入力されたソート条件に従って入力されたシナリオおよびパラメータ値の組み合わせを並べるようにしてもよい。
次に、設計検証装置１０の全体処理を説明する。
【０１６２】
図１３は、設計検証装置の全体処理を示すフローチャートである。
まず、検証用シナリオ生成部１１が、ユーザにより入力されたＬＳＩ２０の設計仕様に基づいて、検証用シナリオ生成処理を行って検証用シナリオを生成する（ステップＳ１）。生成した検証用シナリオは、検証用シナリオ格納部１２に格納する。
【０１６３】
次に、シナリオ優先度付与部１３が、ユーザにより入力されたパターンおよび検証用シナリオ格納部１２に格納されている検証用シナリオに基づいて、シナリオ優先度付与処理を行って検証用シナリオに優先度を付与する（ステップＳ２）。優先度付与済みシナリオは、優先度付与済みシナリオ格納部１４に格納する。
【０１６４】
次に、パラメータ優先度付与部１５が、入力されたパラメータ値の優先度を決定する（ステップＳ３）。そして、決定した優先度をシナリオに関連付けて、パラメータ格納部１７に格納する。
【０１６５】
次に、検証順位決定部１８が、優先順位決定処理を行って優先度付与済みシナリオの優先度とパラメータ値の優先度から入力されたシナリオおよびパラメータ値の組み合わせの優先順位を決定する（ステップＳ４）。すなわち、全ての組み合わせに対し、優先度を評価関数で計算することにより、最終的な入力されたシナリオおよびパラメータ値の組み合わせの優先順位を算出する。
【０１６６】
次に、出力部１９が、ソート処理を行って、算出した優先順位の順番に入力されたシナリオおよびパラメータ値の組み合わせを並べる（ステップＳ５）。
そして、出力部１９が、優先順位を付与した入力されたシナリオおよびパラメータ値の組み合わせを、優先順位リストとして出力する（ステップＳ６）。
【０１６７】
以上で、全体処理の説明を終了する。
なお、検証用シナリオ生成処理を予め行って生成した検証用シナリオを検証用シナリオ格納部１２に格納しておいて、ユーザによるパターンの入力を待ってシナリオ優先度付与処理以降を行うようにしてもよい。また、ユーザによるパターンの入力時に、検証用シナリオ生成処理を開始するようにしてもよい。
【０１６８】
次に、ステップＳ１に示す検証用シナリオ生成処理を説明する。
図１４および図１５は、検証用シナリオ生成処理を示すフローチャートである。
まず、ＬＳＩ２０の設計仕様にラベルを付与する（ステップＳ１１）。この処理については、後に詳述する。
【０１６９】
次に、ステップＳ１１にて付与された設計仕様において、メッセージ・シーケンス・チャートを備える有向グラフを平坦化（Flatten）する（ステップＳ１２）。具体的には、有向グラフの階層構造を取り払う。
【０１７０】
次に、平坦化した有向グラフからメッセージ・シーケンス・チャートを１つ選択する（ステップＳ１３）。
次に、選択したメッセージ・シーケンス・チャートを有限ステートマシン（FSM）に変換する（ステップＳ１４）。これにより、一連のメッセージ・シーケンス・チャートを組み合わせたデータ・イベント・メッセージのやり取りを有限ステートマシンで表現する。この処理については、後に詳述する。
【０１７１】
次に、変換された有限ステートマシンの各ステートに、メッセージ・シーケンス・チャートに付されていたラベルを付与する（ステップＳ１５）。
ステップＳ１４およびステップＳ１５の処理により、有限ステートマシンの各ステートにラベルが付与される。各ステートにラベルが付与された有限ステートマシンは、検証用シナリオ生成部１１が一時記憶する。
【０１７２】
次に、未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する（ステップＳ１６）。
未処理のメッセージ・シーケンス・チャートが存在する場合（ステップＳ１６のＹｅｓ）、ステップＳ１３に移行して未処理のメッセージ・シーケンス・チャートを選択し、選択したメッセージ・シーケンス・チャートについて、ステップＳ１４以降の処理を引き続き行う。
【０１７３】
一方、未処理のメッセージ・シーケンス・チャートが存在しない場合（ステップＳ１６のＮｏ）、ステップＳ１１にてラベルが付与された設計仕様を参照し、設計仕様が備えるメッセージ・シーケンス・チャートを１つ選択する（ステップＳ１７）。
【０１７４】
次に、メッセージ・シーケンス・チャートの制約（synchやtimeout等）から、選択したメッセージ・シーケンス・チャートの有限ステートマシンの不要なステートを刈る（ステップＳ１８）。この処理は後に詳述する。
【０１７５】
次に、未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する（ステップＳ１９）。
未処理のメッセージ・シーケンス・チャートが存在する場合（ステップＳ１９のＹｅｓ）、ステップＳ１７に移行し、未処理のメッセージ・シーケンス・チャートを選択する。そして、選択したメッセージ・シーケンス・チャートについてステップＳ１８以降の処理を引き続き行う。
【０１７６】
一方、未処理のメッセージ・シーケンス・チャートが存在しない場合（ステップＳ１９のＮｏ）、ステップＳ１１にてラベルが付与されたＬＳＩ２０の設計仕様を参照し、設計仕様が備える機能を選択する（図１５のステップＳ２０）。
【０１７７】
次に、選択された機能からシナリオを選択する（ステップＳ２１）。
次に、ステップＳ１５にてラベルが付与された有限ステートマシンから、選択したシナリオと同じラベルを有する有限ステートマシンを抽出する（ステップＳ２２）。
【０１７８】
次に、選択したシナリオと同じラベルを有する有限ステートマシンの部分（以下、「部分有限ステートマシン」という）を抽出する（ステップＳ２３）。検証用シナリオ生成部１１は、抽出した有限ステートマシンの部分を一時記憶する。
【０１７９】
次に、ステップＳ２３にて抽出した有限ステートマシンの部分から検証用シナリオを生成し、生成した検証用シナリオを検証用シナリオ格納部１２に格納する（ステップＳ２４）。なお、有限ステートマシンの部分から検証用シナリオを生成する方法は、後に詳述する。
【０１８０】
次に、ステップＳ２０にて選択した機能に、未処理のシナリオが存在するか否かを判断する（ステップＳ２５）。
未処理のシナリオが存在する場合（ステップＳ２５のＹｅｓ）、ステップＳ２１に移行し、未処理のシナリオを選択し、選択したシナリオについてステップＳ２２以降の処理を引き続き行う。
【０１８１】
一方、ステップＳ２０にて選択した機能に、未処理のシナリオが存在しない場合（ステップＳ２５のＮｏ）、ＬＳＩ２０の設計仕様に、未処理の機能が存在するか否かを判断する（ステップＳ２６）。
【０１８２】
未処理の機能が存在する場合（ステップＳ２６のＹｅｓ）、ステップＳ２０に移行し、未処理の機能を選択し、選択した機能についてステップＳ２１以降の処理を引き続き行う。
【０１８３】
一方、未処理の機能が存在しない場合（ステップＳ２６のＮｏ）、処理を終了する。
以上で、検証用シナリオ生成処理の説明を終了する。
次に、ステップＳ１１のラベルの付与の処理（ラベル付与処理）を詳しく説明する。
【０１８４】
図１６は、ラベル付与処理を示すフローチャートである。
まず、ＬＳＩ２０の設計仕様を参照し、機能を１つ選択する（ステップＳ３１）。
次に、選択した機能からシナリオを１つ選択する（ステップＳ３２）。
【０１８５】
次に、選択したシナリオに付属するメッセージ・シーケンス・チャートを１つ選択する（ステップＳ３３）。
次に、選択したメッセージ・シーケンス・チャートに、ステップＳ３１にて選択した機能名（現在選択されている機能名）およびステップＳ３２にて選択したシナリオ名（現在選択されているシナリオ名）をラベルとして付与する（ステップＳ３４）。また、既にラベルが付与されている場合は、ラベルを追加する。
【０１８６】
なお、ラベルには、機能名・シナリオ名に加え、メッセージ・シーケンス・チャート名を付するようにしてもよい。
次に、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断する（ステップＳ３５）。
【０１８７】
当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在する場合（ステップＳ３５のＹｅｓ）、ステップＳ３３に移行し、当該シナリオ内の未処理のメッセージ・シーケンス・チャートを選択し、選択したメッセージ・シーケンス・チャートについてステップＳ３４以降の処理を引き続き行う。
【０１８８】
一方、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在しない場合（ステップＳ３５のＮｏ）、未処理のシナリオが存在するか否かを判断する（ステップＳ３６）。
【０１８９】
未処理のシナリオが存在する場合（ステップＳ３６のＹｅｓ）、ステップＳ３２に移行し、未処理のシナリオを選択し、選択したシナリオについてステップＳ３３以降の処理を引き続き行う。
【０１９０】
一方、未処理のシナリオが存在しない場合（ステップＳ３６のＮｏ）、未処理の機能が存在するか否かを判断する（ステップＳ３７）。
未処理の機能が存在する場合（ステップＳ３７のＹｅｓ）、ステップＳ３１に移行し、未処理の機能を選択し、選択した機能についてステップＳ３２以降の処理を引き続き行う。
【０１９１】
一方、未処理の機能が存在しない場合（ステップＳ３７のＮｏ）、処理を終了する。
以上で、ラベル付与処理の説明を終了する。
次に、図１３のステップＳ２に示すシナリオ優先度付与処理を説明する。
【０１９２】
図１７は、シナリオ優先度付与処理を示すフローチャートである。
まず、パラメータｉ＝１にセットする（ステップＳ４１）。
次に、入力されたパターンの中から、優先順位の最も低い項目を選択する（ステップＳ４２）。例えば、入力されたパターンが、（基本動作＞例外動作）である場合は、例外動作を選択する。
【０１９３】
次に、選択した項目を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する（ステップＳ４３）。
次に、取得した全ての検証用シナリオの優先度をｉとする（ステップＳ４４）。
【０１９４】
次に、パラメータｉを更新（ｉ＝ｉ＋１）する（ステップＳ４５）。
次に、優先順位の項目が残っているか否かを判断する（ステップＳ４６）。
残っている場合（ステップＳ４６のＹｅｓ）、ステップＳ４２に移行し、未処理の項目のうち最も優先順位の低い項目を選択し、ステップＳ４３以降の処理を引き続き行う。
【０１９５】
一方、残っていない場合（ステップＳ４６のＮｏ）、処理を終了する。
以上で、シナリオ優先度付与処理の説明を終了する。
次に、図１３のステップＳ３に示すパラメータ優先度付与処理を説明する。
【０１９６】
図１８は、パラメータ優先度付与処理を示すフローチャートである。
まず、ユーザにより入力されたパターンに含まれる制約条件として与えられているパラメータ値のパラメータ名を全て抽出する（ステップＳ５１）。
【０１９７】
次に、制約条件に違反するパラメータ値と検証用シナリオの組み合わせを優先度付与対象から除外する（ステップＳ５２）。前述したように、例えば、メッセージ・シーケンス・チャートに設定されている制約条件と、制約条件として入力されたパラメータ値の論理積を利用する場合において、その演算結果に矛盾が生じる場合は、入力されたパラメータ値と、そのメッセージ・シーケンス・チャートを含む検証用シナリオの組み合わせを削除する。
【０１９８】
次に、ユーザにより入力されたシナリオを検証する検証用シナリオに対し、抽出したパラメータ名に対応するパラメータ値と優先度の組み合わせを求める（ステップＳ５３）。具体的には、パラメータ名に対応するパラメータの最大値、最小値、典型値、境界値等を抽出する。なお、典型値が得られないときは、中央値を抽出する。
【０１９９】
そして、抽出した値に前述した優先度ルールを適用して優先度を求める。ここで、優先度ルールが重複して適用される値が存在する場合、優先度が最大のものを適用する。
例えば、最大値が「６３」である場合、この値は境界値にも該当する。この場合、最大値の優先度ルールを適用した場合、優先度は「１０」であり、境界値の優先度ルールを適用した場合、優先度は「４」である。このため、優先度を「１０」とする。その後、処理を終了する。
【０２００】
以上でパラメータ優先度付与処理の説明を終了する。
なお、本実施の形態では、制約条件に違反する検証用シナリオを削除する処理（ステップＳ５２）を、パラメータ名を抽出する処理（ステップＳ５１）とパラメータ値と優先度の組み合わせを求める処理（ステップＳ５３）の間に行うようにした。しかし、これに限らず、当該処理をステップＳ５３の後に行うようにしてもよい。
【０２０１】
以下、具体例を用いて設計検証装置１０の処理を説明する。
＜具体例＞
次に、ラベル付与処理の具体例を説明する。
【０２０２】
図１９は、ＬＳＩの設計仕様のデータ構造の具体例を示す図である。
図１９に示すＬＳＩ２０の設計仕様は、ＡＴＭ（Automatic Teller Machine）取引に関する機能を表している。
【０２０３】
この設計仕様は、ＡＴＭカードおよびＰＩＮ（Personal Identification Number）を用いてＡＴＭの将来的なユーザを認証する簡単化された記述を提供する。
具体的には、機能ブロック５１にはＡＴＭ取引開始機能が設定されている。
【０２０４】
図１９に示すＬＳＩ２０の設計仕様には、２つのシナリオが用意されている。
第１のシナリオは、機能ブロック５１に対応付けられている機能、シナリオブロック５１ａに対応付けられているシナリオ、シナリオブロック５１ａに対応付けられているシナリオを実現するための検証用シナリオを開始、進行するパスに関する。
【０２０５】
この検証用シナリオは、ＭＳＣブロック５１１ａ、５１２ａに対応付けられているメッセージ・シーケンス・チャートによって実現される。
ここで、ＭＳＣブロック５１２ａに対応付けられているメッセージ・シーケンス・チャートには、事前条件として「０＜Ｖ＜１５」が設定されており、事後条件として「ＩＮＴ１＝０」が設定されている。
【０２０６】
この第１のシナリオは、将来的なユーザによって提供されるＰＩＮを受け付けるＡＴＭと関連付けされている。
第２のシナリオは、機能ブロック５１に対応付けられている機能、シナリオブロック５１ｂに対応付けられているシナリオ、シナリオブロック５１ｂに対応付けられているシナリオを実現するための検証用シナリオを開始、進行するパスに関する。
【０２０７】
この検証用シナリオは、ＭＳＣブロック５１１ｂ、５１２ｂに対応付けられているメッセージ・シーケンス・チャートによって実現される。
ここで、ＭＳＣブロック５１２ｂに対応付けられているメッセージ・シーケンス・チャートには、事前条件として「Ｖ＝０、Ｖ≧１５」が設定されており、事後条件として「ＩＮＴ１＝１ｏｒ２」が設定されている。
【０２０８】
この第２のシナリオは、将来的なユーザによって提供されるＰＩＮを拒否するＡＴＭと関連付けされている。
以下、第１のシナリオをシナリオ「成功」と言い、第２のシナリオをシナリオ「失敗」という。
【０２０９】
図２０は、メッセージ・シーケンス・チャートの具体例を示す図である。
図２０（ａ）〜図２０（ｃ）は、それぞれ、検証用シナリオに関するメッセージ・シーケンス・チャートを示す図である。
【０２１０】
図２０（ａ）に示すメッセージ・シーケンス・チャート４０ｂは、ＭＳＣブロック５１１ａに対応付けられているメッセージ・シーケンス・チャートの識別名「問い合わせ」に関するメッセージ・シーケンス・チャート（以下、単にメッセージ・シーケンス・チャート「問い合わせ」という）である。
【０２１１】
図２０（ａ）に示すオブジェクトは、ユーザインタフェース（Ｉ／Ｆ）４１ａ、ＡＴＭ４２ａおよびデータベース４３ａによって表される。
各オブジェクトはまた、ユーザインタフェースライン４４ａ、ＡＴＭライン４５ａおよびデータベースライン４６ａを含むオブジェクトラインを含む。
【０２１２】
前述したルールを利用して、メッセージ・シーケンス・チャート４０ｂは、以下の処理を行う。
まず、ＡＴＭ４２ａはカード挿入依頼メッセージ（Ｉｎｓｅｒｔ＿Ｃａｒｄ）をユーザインタフェース４１ａに送信する（ステップＳ６１）。
【０２１３】
カード挿入依頼メッセージの受信後、ユーザインタフェース４１ａは、カード挿入メッセージ（Ｃａｒｄ＿Ｉｎｓｅｒｔｅｄ）をＡＴＭ４２ａに送信する（ステップＳ６２）。
カード挿入メッセージの送信後、ユーザインタフェース４１ａは、入力されたパスワード（ＰＩＮ）をＡＴＭ４２ａに送信する（ステップＳ６３）。
【０２１４】
ＡＴＭ４２ａが、パスワードを受信した後、ＡＴＭ４２ａは認証依頼（ＰＩＮ＿ｖｅｒｉｆｙ）メッセージをデータベース４３ａに送信する（ステップＳ６４）。
図２０（ｂ）に示すメッセージ・シーケンス・チャート４０ｃは、ＭＳＣブロック５１２ａに対応付けられているメッセージ・シーケンス・チャートの識別名「認証成功」に関するメッセージ・シーケンス・チャート（以下、単にメッセージ・シーケンス・チャート「認証成功」という）である。
【０２１５】
メッセージ・シーケンス・チャート４０ｃは、ユーザインタフェース４１ａ、ＡＴＭ４２ａおよびデータベース４３ａに関するメッセージ・シーケンス・チャートにおいて用いられる同一のオブジェクトの表示を含む。
【０２１６】
前述したルールを利用して、メッセージ・シーケンス・チャート４０ｃは、以下の処理を行う。
すなわち、データベース４３ａは、「０＜Ｖ＜１５」をＡＴＭ４２ａに送信する（ステップＳ６５）。ＡＴＭ４２ａがユーザデータを受信した後、ＡＴＭ４２ａは、メニュー表示をユーザインタフェース４１ａに送信する（ステップＳ６６）。また、「ＩＮＴ１＝０」をユーザインタフェース４１ａに送信する（ステップＳ６７）。
【０２１７】
図２０（ｃ）に示すメッセージ・シーケンス・チャート４０ｄは、ＭＳＣブロック５１２ｂに対応付けられているメッセージ・シーケンス・チャートの識別名「認証失敗」に関するメッセージ・シーケンス・チャート（以下、単にメッセージ・シーケンス・チャート「認証失敗」という）である。
【０２１８】
メッセージ・シーケンス・チャート４０ｄは、ユーザインタフェース４１ａ、ＡＴＭ４２ａおよびデータベース４３ａに関連するメッセージ・シーケンス・チャートで用いられる同一のオブジェクトの表現を含む。
【０２１９】
前述したルールを利用して、メッセージ・シーケンス・チャート４０ｄは、以下の処理を行う。
データベース４３ａは、「Ｖ＝０、Ｖ≧１５」をＡＴＭ４２ａに送信する（ステップＳ６８）。ＡＴＭ４２ａがエラーを受信した後、ＡＴＭ４２ａは、エラーメッセージをユーザインタフェース４１ａに送信する（ステップＳ６９）。また、「ＩＮＴ１＝１ｏｒ２」をユーザインタフェース４１ａに送信する（ステップＳ７０）。
【０２２０】
図２１〜図２３は、ＬＳＩの設計仕様にラベルを付与する具体例を示す図である。
まず、ＬＳＩ２０の設計仕様を参照し、機能ブロック５１に対応付けられている機能「ＡＴＭ取引開始」を選択する。
【０２２１】
次に、選択した機能からシナリオブロック５１ａに対応付けられているシナリオ「成功」を選択する。
次に、選択したシナリオ「成功」に対応付けられているメッセージ・シーケンス・チャート「問い合わせ」を選択する。
【０２２２】
次に、選択したメッセージ・シーケンス・チャート「問い合わせ」にラベルを付与する。
前述したように、ラベルとして、現在選択されている機能名および現在選択されているシナリオ名を付与する。またラベルは、機能名・シナリオ名：シナリオの種類の順に付与する。従って、図２１に示す例では、「ＡＴＭ取引開始・成功：基本動作」のラベル５１１ａ１を付与する。
【０２２３】
図２１は、ここまでの例を示している。
次に、当該シナリオブロック５１ａ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、未処理のメッセージ・シーケンス・チャート「認証成功」が存在する。従って、このメッセージ・シーケンス・チャート「認証成功」を選択する。
【０２２４】
次に、選択したメッセージ・シーケンス・チャート「認証成功」に「ＡＴＭ取引開始・成功：基本動作」のラベル５１２ａ１を付与する。
次に、当該シナリオブロック５１ａ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、当該シナリオブロック５１ａ内に未処理のメッセージ・シーケンス・チャートは存在しない。
【０２２５】
従って、機能ブロック５１内に未処理のシナリオが存在するか否かを判断すると、シナリオブロック５１ｂの未処理のシナリオ「失敗」が存在する。
そこで、このシナリオ「失敗」を選択する。
【０２２６】
次に、選択したシナリオ「失敗」に対応付けられているメッセージ・シーケンス・チャート「問い合わせ」を選択する。
次に、選択したメッセージ・シーケンス・チャート「問い合わせ」に「ＡＴＭ取引開始・失敗：例外動作」のラベルを付与する。ここでは、既にラベル５１１ａ１が付与されているので、「ＡＴＭ取引開始・失敗：例外動作」のラベルをラベル５１１ａ１に追加する。
【０２２７】
図２２ではここまでの例を示している。
次に、当該シナリオ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、未処理のメッセージ・シーケンス・チャート「認証失敗」が存在する。従って、このメッセージ・シーケンス・チャート「認証失敗」を選択する。
【０２２８】
次に、選択したメッセージ・シーケンス・チャート「認証失敗」に「ＡＴＭ取引開始・失敗：例外動作」のラベル５１２ｂ１を付与する。
次に、当該シナリオブロック５１ｂ内に未処理のメッセージ・シーケンス・チャートが存在するか否かを判断すると、当該シナリオブロック５１ｂ内に未選択のメッセージ・シーケンス・チャートは存在しない。
【０２２９】
従って、機能ブロック５１内に未処理のシナリオが存在するか否かを判断すると、未処理のシナリオは存在しない。
従って、処理を終了する。
【０２３０】
図２３は、ここまでの処理を示している。
図２４は、ラベルを付与したＬＳＩの設計仕様のデータ構造例を示す図である。
ラベルを付与したＬＳＩ２０のデータ６０は、ＸＭＬ形式で表現されている。
【０２３１】
記述６１は、メッセージ・シーケンス・チャート４０ｂに関する記述部分を示している。また、記述６２は、メッセージ・シーケンス・チャート４０ｃに関する記述部分を示している。また、記述６３は、メッセージ・シーケンス・チャート４０ｄに関する記述部分を示している。
【０２３２】
ここで、記述６１ａ、６２ａ、６３ａは、それぞれ、ラベル付与処理によって追記された行である。ラベル付与処理によって追記された行には、ラベル名であることを識別するＸＭＬタグ＜label name＞が付されている。また、タグ内の内容は、それぞれ付与されたラベルの内容を示している。
【０２３３】
なお、前述したように、ラベルには、機能名・シナリオ名：シナリオの種類に加え、メッセージ・シーケンス・チャート名を付与するようにしてもよい。これにより、優先順位のパターンとしてメッセージ・シーケンス・チャート名が入力された場合においてもシナリオに優先順位を付与することができる。
【０２３４】
図２５は、ＬＳＩの設計仕様にラベルを付与する他の具体例を示す図である。
図２５に示すラベル５１１ａ１、５１２ａ１、５１２ｂ１には、いずれも機能名・シナリオ名：シナリオの種類に加え、メッセージ・シーケンス・チャート名が付与されている。
【０２３５】
次に、ステップＳ１４の、メッセージ・シーケンス・チャートを有限ステートマシンに変換する処理を、具体例を用いて説明する。
図２６は、有限ステートマシンに変換する処理を説明するメッセージ・シーケンス・チャートを示す図である。
【０２３６】
有向グラフを有限ステートマシンに変換するため、有向グラフの備える各メッセージ・シーケンス・チャートによって規定されるイベントを用いて、有限ステートマシンのステートを特定する。
【０２３７】
メッセージ・シーケンス・チャートは可能なイベント順序を規定し、各オブジェクトにおいて完了されたイベントは状態に対応する。例えば、初期状態はいずれのオブジェクトにおいても完了されないイベントに対応する。最終状態は、各オブジェクトにおいて完了した全てのイベントに対応する。
【０２３８】
ここで、メッセージ・シーケンス・チャート７０を検討すると、メッセージ・シーケンス・チャート７０の一部が、オブジェクトの一部のイベント群を考慮することによって有限ステートマシンに投影される。
【０２３９】
図２６に示すオブジェクトは、送信オブジェクト７１、長距離送信オブジェクト７２、受信オブジェクト７３および長距離受信オブジェクト７４によって表される。
例えば、メッセージ・シーケンス・チャート７０では、有限ステートマシンが、送信オブジェクト７１と受信オブジェクト７３に対して生成される。図示されるように、送信オブジェクト７１は送信イベントｔ１〜ｔ５を有している。受信オブジェクト７３は、受信イベントｒ１〜ｒ６を有している。
【０２４０】
ここで、送信オブジェクト７１と受信オブジェクト７３は、メッセージを交換することなく、２つの同期エッジによって関連付けされる。
図２７は、図２６に示すメッセージ・シーケンス・チャートに関連する状態マトリックスを示す図である。
【０２４１】
状態マトリックス８０を利用して、有限ステートマシンの生成方法をさらに説明する。
２つのみしかオブジェクトが存在しない場合、メッセージ・シーケンス・チャート７０の有限ステートマシンは、２次元の状態マトリックス８０として可視化することができる。
【０２４２】
状態マトリックス８０の各ブロックは、送信オブジェクト７１が送信イベントｔｉを終了させ、受信オブジェクト７３が受信イベントｒｊを終了させた状態に対応している。
このため、状態マトリックス８０の各ブロックは、状態（ｔｉ，ｒｊ）を規定する。
【０２４３】
ここで、状態マトリックス８０の原点は、左上隅に設けられている。初期状態は、記号⊥を用いて各オブジェクトに対して示される。
状態マトリックス８０の左上隅の状態が初期状態であるため、状態遷移は各状態から右下にトレースすることによって特定される。最終状態は、右下隅に示す状態となる。
【０２４４】
送信オブジェクト７１と受信オブジェクト７３とが２つの同期エッジによっては関連付けされていない場合、状態マトリックス８０は、（ｎ×ｍ）の完全な２次元の状態マトリックスとなる（ただし、ｎは、送信オブジェクト７１により送信されるメッセージの個数であり、ｍは、受信オブジェクト７３によって受信されるメッセージの個数である）。
【０２４５】
しかしながら、メッセージ・シーケンス・チャート７０の同期エッジの存在は、状態マトリックス８０に示されるような有効な状態の個数を減少させる。
同期エッジにより、状態マトリックス８０に示される一部の状態は有効とはならず、２次元マトリックスから「クロスアウト（cross out）」させることが可能である。
【０２４６】
例えば、送信イベントｔ３が送信オブジェクト７１から受信オブジェクト７３への同期エッジに対応する送信イベントであると仮定する。
受信イベントｒ３は、同一の同期エッジに関連する対応する受信イベントである。受信イベントｒ２の後に発生する受信オブジェクト７３におけるいずれのイベントも、送信イベントｔ３の後に発生する必要がある。従って、受信イベントｒ３〜ｒ６は送信イベントｔ３の前に発生することはできない。
【０２４７】
このオブジェクトを利用して、無効状態に対応する状態マトリックス８０の領域８１は、クロスアウトされる。同様のオブジェクトを用いて、メッセージ・シーケンス・チャート７０の第２同期エッジに関連する領域８２をクロスアウトする。
【０２４８】
残りのマトリックスは、メッセージ・シーケンス・チャート７０を正確に表している。送信イベントｔ２や受信イベントｒ１等の状態は、送信オブジェクト７１が送信イベントｔ２を終了させ、受信オブジェクト７３が受信イベントｒ１を終了させた状態を表す。
【０２４９】
図２８は、状態マトリックスに関する状態図を示す図である。
状態図９０に示す１つのステート９１は、図２７に示した状態マトリックス８０の１つの領域に対応している。
【０２５０】
ステート９１内の値は、状態を示している。
状態図９０の各水平方向への遷移は、メッセージの受信に対応している。このため有限ステートマシンによるメッセージの送信として実現される。
【０２５１】
同様に、状態図９０の各垂直方向への遷移は、メッセージの送信に対応している。このため、有限ステートマシンによるメッセージの受信待機として実現される。
現在、状態図９０の水平方向への遷移と垂直方向への遷移の両方が行われうる状態（ｉ，ｊ）であるとき、水平方向への遷移は適切なメッセージを送信することにより行われる。
【０２５２】
その後、垂直方向への遷移が予想されるメッセージが受信されたか判断することによって試行される。後者の状態が満たされる場合、垂直方向への遷移が行われてもよく、次の状態は状態（ｉ＋１，ｊ＋１）となる。
【０２５３】
後者の状態が満たされていない場合、水平方向への遷移のみが行われ、次の状態は（ｉ＋１，ｊ）となる。
オブジェクトが永久に待機することがないように、メッセージの受信待機中にタイマが利用される。
【０２５４】
すなわち、適切なタイムアウト期間後に待機は終了する。垂直または水平のみの遷移しかある状態から行うことができない場合、これらの動作のみが生成される。
遷移方向が生成可能な有限ステートマシンに影響する１つの変数である一方、他の変数はあるステートに関する特定のタイプのイベントである。
【０２５５】
例えば、図２６に示す送信オブジェクト７１と受信オブジェクト７３において、オブジェクトラインに関連する各イベントは３つのタイプのうちの１つである。送信オブジェクト７１では、これらのタイプはメッセージ送信イベント、タイマ始動イベントおよびタイムアウト信号受信イベントである。
【０２５６】
受信オブジェクト７３では、これらのタイプは、メッセージ受信イベント、タイマ始動イベントおよびタイムアウト信号受信イベントである。各オブジェクトのこれら３つのタイプのイベントは、有限ステートマシンの各ステートに対して生成されるコードが当該状態の正確な組み合わせに依存するため、有限ステートマシン変換中に考慮される９つの組み合わせを生じさせる。
【０２５７】
これらの技術を利用して、有限ステートマシンがメッセージ・シーケンス・チャートに対して生成される。
シナリオに対する有限ステートマシンを生成するため、有限ステートマシンがパスに沿って各メッセージ・シーケンス・チャートに対して生成され、必要に応じて合成される。例えば、１つのメッセージ・シーケンス・チャートの終わりの次の状態は、パスに沿った次のメッセージ・シーケンス・チャートの開始状態となる。
【０２５８】
信号および変数宣言の全てを組み合わせることによって、有限ステートマシンを自動的に生成、編集することができる。また、生成、編集された有限ステートマシンを用いてテスト対象装置３００の動作をシミュレートすることができる。
【０２５９】
次に、ステップＳ１５に示す有限ステートマシンにラベルを付与する処理を具体的に説明する。
図２９は、有限ステートマシンにラベルを付与する具体例を示す図である。
【０２６０】
まず、前述した方法にて生成した有限ステートマシン９０ａのステート１つ１つに対し、対応するメッセージ・シーケンス・チャートのデータ・イベント・メッセージをラベルとして付与する。
【０２６１】
図２９では、メッセージ・シーケンス・チャート「問い合わせ」から有限ステートマシンのステートＳｔ１、Ｓｔ２、Ｓｔ３、Ｓｔ４が生成されている。
ここで、メッセージ・シーケンス・チャート「問い合わせ」には、「・ＡＴＭ取引開始・成功：基本動作」のラベルと「・ＡＴＭ取引開始・失敗：例外動作」のラベルが付与されている。
【０２６２】
従って、これらステートＳｔ１、Ｓｔ２、Ｓｔ３、Ｓｔ４それぞれにも、「・ＡＴＭ取引開始・成功：基本動作」のラベルと「・ＡＴＭ取引開始・失敗：例外動作」のラベルを付与する。
【０２６３】
図３０は、有限ステートマシンにラベルの付与が終了したときの状態を示す図である。
図３０では、メッセージ・シーケンス・チャート「認証成功」からステートＳｔ５、Ｓｔ６が生成されている。
【０２６４】
ここで、メッセージ・シーケンス・チャート「認証成功」には、「・ＡＴＭ取引開始・成功：基本動作」のラベルが付与されている。
従って、これらステートＳｔ５、Ｓｔ６それぞれにも、「・ＡＴＭ取引開始・成功：基本動作」のラベルを付与する。
【０２６５】
また、メッセージ・シーケンス・チャート「認証失敗」からステートＳｔ７、Ｓｔ８が生成されている。
ここで、メッセージ・シーケンス・チャート「認証失敗」には、「・ＡＴＭ取引開始・失敗：例外動作」のラベルが付与されている。
【０２６６】
従って、これらステートＳｔ７、Ｓｔ８それぞれにも、「・ＡＴＭ取引開始・失敗：例外動作」のラベルを付与する。
次に、ステップＳ１８のメッセージ・シーケンス・チャートの制約から有限ステートマシンの状態を刈る処理を、具体例を用いて説明する。
【０２６７】
図３１は、状態マトリックスに関する状態図を示す図である。
同期イベントは、実際の動作イベントの部分的順序付けを外部または他の装置により限定するのに利用されているだけであるため、状態図９０から削除してもよい。同期イベントを削除することにより、図３１に示される簡単化された状態図９２が得られる。
【０２６８】
図３２は、有限ステートマシンのデータ構造例を示す図である。
有限ステートマシンのデータ１１０は、ＸＭＬ形式で表現されている。
記述１１０ａは、有限ステートマシン９０ａの識別子に関する記述部分を示している。当該記述１１０ａには、有限ステートマシンであることを識別する有限ステートマシンタグ＜fsn name＞が付されている。また、タグ内の内容は、それぞれ付与されたラベルの内容を示している。
【０２６９】
また、記述１１１〜１１８は、それぞれ各ステートＳｔ１〜Ｓｔ８に関する記述部分を示している。
また、記述１１９は、各ステートＳｔ１〜Ｓｔ８に関する遷移方向を示している。
【０２７０】
次に、図１９に示すＬＳＩ２０の設計仕様および図３０に示すラベル付与済みの有限ステートマシン９０ａを用いてシナリオ毎の検証用シナリオを生成する具体例を説明する。
まず、図１９に示す設計仕様から機能ブロック５１に対応付けられている機能「ＡＴＭ取引開始」を選択する。
【０２７１】
次に、選択した機能「ＡＴＭ取引開始」からシナリオ「成功」を選択する。
次に、選択したシナリオ「成功」と同じラベルを備える有限ステートマシンを抽出する。
【０２７２】
具体的には、図３０に示す有限ステートマシン９０ａを抽出する。
次に、選択したシナリオと同じラベルを持つ有限ステートマシンの部分を抽出する。
図３０に示すように、シナリオ「成功」は、「ＡＴＭ取引開始・成功：基本動作」のラベルを備えているため、このラベルと同じラベルを備えるステートＳｔ１、Ｓｔ２、Ｓｔ３、Ｓｔ４、Ｓｔ５、Ｓｔ６を抽出する。
【０２７３】
次に、抽出した有限ステートマシンの部分を、シナリオ「成功」を検証する検証用シナリオとして検証用シナリオ格納部１２に格納する。
次に、選択した機能に未処理のシナリオが残っているか否かを判断すると、シナリオ「失敗」が残っている。
【０２７４】
従って、選択した機能「ＡＴＭ取引開始」からシナリオ「失敗」を選択する。
次に、選択したシナリオ「失敗」と同じラベルを備える有限ステートマシンを抽出する。
【０２７５】
具体的には、図３０に示す有限ステートマシン９０ａを抽出する。
次に、選択したシナリオと同じラベルを持つ有限ステートマシンの部分を抽出する。
図３０に示すように、シナリオ「失敗」は、「ＡＴＭ取引開始・失敗：例外動作」のラベルを備えているため、このラベルと同じラベルを備えるステートＳｔ１、Ｓｔ２、Ｓｔ３、Ｓｔ４、Ｓｔ７、Ｓｔ８を抽出する。
【０２７６】
次に、抽出した部分有限ステートマシンを、シナリオ「失敗」を検証する検証用シナリオとして検証用シナリオ格納部１２に格納する。
次に、選択した機能に未処理のシナリオが残っているか否かを判断すると、残っていない。
【０２７７】
次に、未処理の機能が残っているか否かを判断すると、残っていない。
従って、処理を終了する。
図３３は、検証用シナリオ格納部に格納されている検証用シナリオを示す図である。
【０２７８】
図３３に示すように、シナリオ「成功」を検証する検証用シナリオＳｃ１およびシナリオ「失敗」を検証する検証用シナリオＳｃ２が格納されている。
次に、検証用シナリオ生成処理におけるステップＳ２４の有限ステートマシンの部分から検証用シナリオを生成する方法を詳しく説明する。
【０２７９】
＜検証用シナリオの生成＞
前述した具体例では、有限ステートマシンの部分から検証用シナリオを容易に作成することができた。
【０２８０】
しかしながら、有限ステートマシンの部分のステートがループしている場合等がある。  この場合、検証用シナリオ生成部１１は、有限ステートマシンの部分を、いくつかの構成単位に「切断」または分割した、検証用シナリオを生成する。
【０２８１】
例えば、有限ステートマシンの部分は、パスにおいて再出現するステートに従って切断されてもよい。代わりに、または加えて、「少なくとも最小数または最大数以下のステートが各検証用シナリオにおいて特定されることを要求する」という制約を有する複数の検証用シナリオに切断されてもよい。
【０２８２】
例えば、以下の有限ステートマシンの部分が抽出されたものとする。
Ｓｔ２→Ｓｔ４→Ｓｔ６→Ｓｔ７→Ｓｔ２→Ｓｔ３→Ｓｔ６→Ｓｔ７→Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ７→Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ２
有限ステートマシンの部分を分割する１つの論理的方法は、再出現するステートを切断することである。
【０２８３】
例えば、ステートＳｔ２は、この長い有限ステートマシンの部分を４つの検証用シナリオに切断するのに利用される。
（１）Ｓｔ２→Ｓｔ４→Ｓｔ６→Ｓｔ７
（２）Ｓｔ２→Ｓｔ３→Ｓｔ６→Ｓｔ７
（３）Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ７
（４）Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ２
より長い検証用シナリオを生成するため、検証用シナリオ生成部１１は、ステートＳｔ２を用いて切断処理を実行すると共に、各検証用シナリオが少なくとも５つのステートを含むことを要求することができる。
【０２８４】
これらの制約を用いて、以下の２つの検証用シナリオが特定される。
（５）Ｓｔ２→Ｓｔ４→Ｓｔ６→Ｓｔ７→Ｓｔ２→Ｓｔ３→Ｓｔ６→Ｓｔ７
（６）Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ７→Ｓｔ２→Ｓｔ３→Ｓｔ５→Ｓｔ２
次に、シナリオ優先度付与処理の具体例を説明する。
【０２８５】
まず、パラメータｉ＝１に設定する。
次に、パターンの中から、優先順位の最も低い項目を選択する。
ここでは、パターンに機能「ＡＴＭ取引開始」の有するシナリオの基本動作を例外動作よりも優先するパターン（基本動作＞例外動作）が設定されているものとする。従って、優先順位の最も低い例外動作をパターンから選択する。
【０２８６】
次に、検証用シナリオ格納部１２を参照し、例外動作を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する。
図３３に示すように、本具体例では、例外動作を含むラベルが全てのステートに付与されている検証用シナリオＳｃ２を取得する。
【０２８７】
そして、取得した検証用シナリオＳｃ２の優先度を「（ｉ＝）１」に設定する。また、パラメータｉ＝１＋１＝２とする。
優先順位項目がパターンに残っているか否かを判断すると、まだ残っているので、次に優先順位の低い基本動作を選択する。
【０２８８】
次に、検証用シナリオ格納部１２を参照し、基本動作を含むラベルが全てのステートに付与されている検証用シナリオを全て取得する。
図３３に示すように、本具体例では、基本動作を含むラベルが全てのステートに付与されている検証用シナリオＳｃ１を取得する。
【０２８９】
そして、取得した検証用シナリオＳｃ１の優先度を「（ｉ＝）２」に設定する。また、パラメータｉ＝２＋１＝３とする。
優先順位項目が残っているか否かを判断すると、もう残っていないので、処理を終了する。
【０２９０】
図３４および図３５は、優先度が付与された検証用シナリオのデータ構造を示す図である。
図３４は、検証用シナリオＳｃ１のデータ構造を示している。
【０２９１】
３行目は、＜fsm name=“ＡＴＭ取引開始ＦＳＭ” type=“scenario” priority=“2”＞と記述されている。この「type=“scenario”」が検証用シナリオであることを示している。また、「priority=“2”」が、検証用シナリオＳｃ１の優先度を示している。
【０２９２】
図３５は、検証用シナリオＳｃ２のデータ構造を示している。
３行目は、＜fsm name=“ＡＴＭ取引開始有限ＦＳＭ” type=“scenario” priority=“1”＞と記述されている。この「type=“scenario”」が検証用シナリオであることを示している。また、「priority=“1”」が、検証用シナリオＳｃ２の優先度を示している。
【０２９３】
次に、検証用シナリオＳｃ１、Ｓｃ２と、図１１に示すレジスタブロック２５ａおよびポートブロック２６ａを用いてパラメータ優先度付与処理の具体例を説明する。
図３６および図３７は、パラメータ優先度付与処理の具体例を示す図である。
【０２９４】
具体例では、パターンの項目として、機能「ＡＴＭ取引開始」が有するシナリオ「成功」およびシナリオ「失敗」が入力されているものとする。
また、具体例では、シナリオブロック５１ａ１に対応付けられているシナリオ「成功」の事前条件としてパラメータ値「Ｖ＝１４」が入力されており、事後条件としてパラメータ値「ＩＮＴ１＝０」が入力されている。
【０２９５】
また、検証用シナリオ生成処理によって、シナリオ「成功」を検証する検証用シナリオＳｃ１が生成されている。従って、図３６では、シナリオブロック５１ａ１が有するＭＳＣブロックとして、検証用シナリオＳｃ１を示す検証用シナリオ：「問い合わせ」「認証成功」に対応するＭＳＣブロック５１３ａを図示している。
【０２９６】
また、シナリオブロック５１ｂ１に対応付けられているシナリオ「失敗」の事前条件としてパラメータ値「Ｖ＝１３７」が入力されており、事後条件としてパラメータ値「ＩＮＴ１＝２」が入力されている。
【０２９７】
また、検証用シナリオ生成処理によって、シナリオ「失敗」を検証する検証用シナリオＳｃ２が生成されている。従って、図３６では、シナリオブロック５１ｂ１が有するＭＳＣブロックとして、検証用シナリオＳｃ２を示す検証用シナリオ：「問い合わせ」「認証失敗」に対応するＭＳＣブロック５１３ｂを図示している。
【０２９８】
また、シナリオブロック５１ｂ２に対応付けられているシナリオ「失敗」の事前条件としてパラメータ値「Ｖ＝０」が入力されており、事後条件としてパラメータ値「ＩＮＴ１＝２」が入力されている。
【０２９９】
これは、同じシナリオ「失敗」について、異なる事前条件、事後条件が入力されていることを示している。
また、検証用シナリオ生成処理によって、シナリオ「失敗」を検証する検証用シナリオＳｃ２が生成されている。従って、図３６では、シナリオブロック５１ｂ２が有するＭＳＣブロックとして、検証用シナリオＳｃ２を示す検証用シナリオ：「問い合わせ」「認証失敗」に対応するＭＳＣブロック５１３ｂを図示している。
【０３００】
まず、制約条件として与えられているパラメータ値のパラメータ名を全て抽出する。本具体例では、レジスタ「Ｖ」およびポート「ＩＮＴ１」を抽出する。
次に、レジスタ「Ｖ」およびポート「ＩＮＴ１」に対応するパラメータ値と優先度の組み合わせを生成する。
【０３０１】
本具体例では、レジスタ「Ｖ」に対応するパラメータ値は、パラメータ値「Ｖ＝１４」、「Ｖ＝１３７」、「Ｖ＝０」である。また、パラメータ名「ポート」に対応するパラメータ値は、パラメータ値「ＩＮＴ１＝０」、「ＩＮＴ１＝２」、「ＩＮＴ１＝２」である。
【０３０２】
次に、制約条件に違反する検証用シナリオを除外する処理を行う。
ここで、前述したように、シナリオ「成功」には、事前条件として「０＜Ｖ＜１５」、事後条件として「ＩＮＴ１＝０」が設定されている。「Ｖ＝１４」と「０＜Ｖ＜１５」の論理積を取ると、「Ｖ＝１４」となる。また、「ＩＮＴ１＝０」と「ＩＮＴ１＝０」の論理積を取ると、「ＩＮＴ１＝０」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオＳｃ１の組み合わせは除外しない。
【０３０３】
また、シナリオ「失敗」には、事前条件として「Ｖ＝０、Ｖ≧１５」、事後条件として「ＩＮＴ１＝１ｏｒ２」が設定されている。「Ｖ＝１３７」と「Ｖ＝０、Ｖ≧１５」の論理積を取ると、「Ｖ＝１３７」となる。また、「ＩＮＴ１＝２」と「ＩＮＴ１＝１ｏｒ２」の論理積を取ると、「ＩＮＴ１＝２」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオＳｃ２の組み合わせは除外しない。
【０３０４】
さらに、「Ｖ＝０」と「Ｖ＝０、Ｖ≧１５」の論理積を取ると、「Ｖ＝０」となる。また、「ＩＮＴ１＝２」と「ＩＮＴ１＝１ｏｒ２」の論理積を取ると、「ＩＮＴ１＝２」となる。従って、制約条件に違反していないため、当該パラメータと検証用シナリオＳｃ２の組み合わせは除外しない。
【０３０５】
ここで、レジスタブロック２５ａおよびポートブロック２６ａを参照すると、レジスタ「Ｖ」に対応するパラメータ値「Ｖ＝１４」は、典型値に一致する。従って、優先度は「１」となる。また、ポート「ＩＮＴ１」に対応するパラメータ値「ＩＮＴ１＝０」は、最小値に一致する。従って、優先度は「１０」となる。レジスタ「Ｖ」に対応するパラメータ値「Ｖ＝１３７」は、最大値に一致する。従って、優先度は「１０」となる。また、ポート「ＩＮＴ１」に対応するパラメータ値「ＩＮＴ１＝２」は、過去の設計事例でバグが発生した値に一致するものとする。この場合、優先度は「７」となる。レジスタ「Ｖ」に対応するパラメータ値「Ｖ＝０」は、最小値に一致する。従って、優先度は「１０」となる。また、ポート「ＩＮＴ１」に対応するパラメータ値「ＩＮＴ１＝２」は、過去の設計事例でバグが発生した値に一致するものとする。この場合、優先度は「７」となる。
【０３０６】
図３７は、ここまでの例を示している。
パラメータ値の右側に求められた優先度を図示している。また、図３７では、検証用シナリオの右側に、検証用シナリオの優先度も図示している。
【０３０７】
次に、優先順位決定処理を行う。
まず、事前条件としてパラメータ値「Ｖ＝１４」が入力されており、事後条件としてパラメータ値「ＩＮＴ１＝０」が入力されているシナリオ「成功」について説明する。
【０３０８】
ユーザの入力により与えられた検証用シナリオＳｃ１の優先度は「２」である。また、ユーザの入力により与えられた事前条件のパラメータ値「Ｖ＝１４」の優先度は「１」である。事後条件のパラメータ値「ＩＮＴ１＝０」の優先度は「１０」である。従って、これらを全て加算すると、優先度「１３」が得られる。
【０３０９】
次に、事前条件としてパラメータ値「Ｖ＝１３７」が入力されており、事後条件としてパラメータ値「ＩＮＴ１＝２」が入力されているシナリオ「成功」について説明する。
ユーザの入力により与えられた検証用シナリオＳｃ２の優先度は「１」である。また、ユーザの入力により与えられた事前条件のパラメータ値「Ｖ＝１３７」の優先度は「１０」である。事後条件のパラメータ値「ＩＮＴ１＝２」の優先度は「７」である。従って、これらを全て加算すると、優先度「１８」が得られる。
【０３１０】
次に、シナリオ「失敗」について説明する。
ユーザの入力により与えられた検証用シナリオＳｃ２の優先度は「１」である。また、ユーザの入力により与えられた事前条件のパラメータ値「Ｖ＝０」の優先度は「１０」である。事後条件のパラメータ値「ＩＮＴ１＝２」の優先度は「７」である。従って、これらを全て加算すると、優先度「１８」が得られる。
【０３１１】
次に、出力されるシナリオ名のイメージを説明する。
図３８は、優先順位リストの具体例を示す図である。
優先順位リスト１９ａには、優先順位、シナリオ、検証用シナリオ、パラメータ名、パラメータ値、優先度の欄が設けられている。横方向に並べられた情報同士が互いに関連付けられている。
【０３１２】
優先順位の欄には、優先順位を識別する値が設定されている「１」が最も優先順位が高く、「２」、「３」と数が大きくなるに連れ、優先順位は低くなる。
シナリオの欄には、パターンの項目としてユーザによって入力されたシナリオ名が設定されている。
【０３１３】
検証用シナリオの欄には、検証対象の検証用シナリオを識別する情報が設定されている。
パラメータ名の欄には、パターンの項目としてユーザによって入力された制約条件としてのパラメータ値に対応するパラメータ名が設定されている。
【０３１４】
パラメータ値の欄には、パターンの項目としてユーザによって入力された制約条件としてのパラメータ値が設定されている。
優先度の欄には、検証順位決定部１８により決定された優先度が記載されている。
【０３１５】
ユーザは、この優先順位リスト１９ａを参照することにより、入力されたシナリオおよびパラメータ値の組み合わせの優先順位を把握することができる。
以上述べたように、設計検証装置１０によれば、ＬＳＩ２０の設計または検証状況に応じたシナリオおよびパラメータ値を入力することで、当該シナリオおよびパラメータ値を効率的に検証できる優先順位リスト１９ａを提供することができる。
【０３１６】
ユーザは、優先順位リスト１９ａの優先順位の順番に検証用シナリオを検証することにより、ユーザが入力したシナリオに対し、検証漏れや重複検証を抑制することができる。具体的には、シナリオに対し、制約条件を与えているので、重複するシナリオは制約条件を評価した時点で取り除かれる。一方、制約条件を満たす組み合わせについては全て出力されるので漏れがない。
【０３１７】
なお、入力されるパターンの項目としては特に限定されないが、例えば以下に示す例が挙げられる。
（１）検証を開始して間もない場合は、シナリオの基本パス、代替パス、例外パスの順に検証用シナリオに優先順位を付けるのが好ましい。従って、パターンの項目として「基本動作＞代替動作＞例外動作」を入力するのが好ましい。
（２）不具合修正後のリグレッションテストの場合は、不具合を発見したシナリオを最優先に検証し、その次に修正した箇所を直接検証するシナリオを検証し、その他のシナリオを検証するのが好ましい。従って、パターンの項目として「不具合を発見したシナリオ名＞修正した箇所を直接検証するシナリオ名＞その他のシナリオ名」を入力するのが好ましい。
（３）設計最終段階では、例外ケースを集中的に確認したいことが多い。この場合には、シナリオの例外パスを優先的に検証し、その次に代替パス、基本パスを検証するのが好ましい。従って、パターンの項目として「例外動作＞代替動作＞基本動作」を入力するのが好ましい。
（４）設計の途中で機能に仕様変更があったとき、その機能が関わる箇所のシナリオを優先的に検証するのが好ましい。従って、パターンの項目として「その機能が関わる箇所のシナリオ」を入力するのが好ましい。
【０３１８】
また、検証用シナリオを生成する際、以下の処理を行った。
検証用シナリオ生成部１１が、ＬＳＩ２０の設計仕様が備える複数のシナリオが備えるメッセージ・シーケンス・チャートそれぞれにラベルを関連付けた検証用シナリオを生成するようにした。これにより、１つのシナリオが備えるメッセージ・シーケンス・チャートを特定することができる。
【０３１９】
そして、メッセージ・シーケンス・チャートから有限ステートマシンの生成を行った。ただし、有限ステートマシンを生成する際、各ステートに対応するメッセージ・シーケンス・チャートのラベルを付与するようにした。これにより、１つのシナリオが備えるステートを特定することができる。
【０３２０】
そして、ＬＳＩ２０の設計仕様の各シナリオに対応する有限ステートマシンを抽出し、抽出した各有限ステートマシンの検証用シナリオを生成するようにした。
これにより、入力されるパターンの入力に対応する（設計・検証の段階に応じた）検証用シナリオを生成することができる。
【０３２１】
そして、シナリオ優先度付与部１３が、ユーザが指定した優先順位のパターンに応じて、検証用シナリオに優先度を付与するようにした。
また、シナリオ優先度付与部１３は、パターンに応じて、パターンにより示される検証対象部位に関連する全ての検証用シナリオに同じ優先度を付与するようにした。
【０３２２】
これにより、設計検証に用いる全ての検証用シナリオに同じ優先度が付与される。従って、検証漏れをなくすことができるため、処理を簡易なものとすることができる。
また、シナリオ優先度付与部１３は、処理優先度情報を有するパターンに応じて、検証用シナリオに処理優先度情報に応じた優先度を付与するようにした。これにより、より細かい優先度を付与する処理を実行できる。
【０３２３】
なお、本実施の形態では、検証用シナリオと、パラメータそれぞれの優先度の論理式によって検証順位を決定するにしたが、例えば、パラメータの優先度のみに基づいて検証順位を決定するようにしてもよい。
【０３２４】
なお、設計検証装置１０が行った処理が、複数の装置によって分散処理されるようにしてもよい。
例えば、１つの装置が、検証用シナリオ生成処理を行って検証用シナリオを生成しておき、他の装置が、その検証用シナリオを用いてシナリオ優先度付与処理以降の処理を行うようにしてもよい。
【０３２５】
また、他の例として、１つの装置が、検証用シナリオ生成処理およびシナリオ優先度付与処理を行って優先度が付与された検証用シナリオを生成しておき、他の装置が、その優先度が付与された検証用シナリオを用いてパラメータ優先度付与処理以降の処理を行うようにしてもよい。
【０３２６】
以上、本発明の設計検証プログラム、設計検証方法および設計検証装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０３２７】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、設計検証装置１０が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０３２８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０３２９】
設計検証プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０３３０】
以上の第１〜第２の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの優先度を決定する優先度決定部と、
前記優先度決定部により決定された優先度に基づいて選択された前記検証用情報の検証順位を決定する検証順位決定部と、
前記優先度決定部により選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する出力部と、
を有することを特徴とする設計検証装置。
【０３３１】
（付記２）  前記優先順位決定部は、前記パラメータと、前記処理手順が備える処理単位の実行を制約する条件との論理式を求め、その結果に応じて前記パラメータの優先度を決定することを特徴とする付記１記載の設計検証装置。
【０３３２】
（付記３）  前記パラメータは、前記設計仕様が備えるレジスタまたはポートへの入力値であり、前記優先度決定部は、前記パラメータが前記レジスタまたはポートに応じて予め設定された値に一致する場合、それ以外の値である場合に比べ前記パラメータの優先度を高くすることを特徴とする付記１記載の設計検証装置。
【０３３３】
（付記４）  前記処理手順の優先度に応じて前記検証用情報に優先度を付与する優先度付与部をさらに有し、
前記検証順位決定部は、前記優先度付与部によって付与された前記優先度と、前記優先度決定部により決定された前記優先度とに応じて前記検証順位を決定することを特徴とする付記１記載の設計検証装置。
【０３３４】
（付記５）  前記検証用情報には、前記処理手順が備える処理単位それぞれに前記設計仕様の検証対象部位を識別する識別情報が関連付けられており、
前記優先度付与部は、前記識別情報に応じて、前記識別情報により示される前記検証対象部位に関連する全ての前記検証用情報に同じ優先度を付与することを特徴とする付記４記載の設計検証装置。
【０３３５】
（付記６）  前記優先度付与部は、複数の前記識別情報および前記識別情報により示される前記検証対象部位の処理優先度情報に応じて、前記検証用情報に前記処理優先度情報に応じた前記優先度を付与することを特徴とする付記５記載の設計検証装置。
【０３３６】
（付記７）  前記優先度付与部は、前記識別情報の前記検証対象部位を優先的に処理する前記優先度を付与することを特徴とする付記５記載の設計検証装置。
（付記８）  前記検証用情報を生成する生成部をさらに有することを特徴とする付記５記載の設計検証装置。
【０３３７】
（付記９）  前記処理単位は、オブジェクト間で送受信される信号の関係を示すシーケンスを備えており、前記生成部は、前記シーケンスそれぞれに、前記識別情報を関連付けることを特徴とする付記８記載の設計検証装置。
【０３３８】
（付記１０）  前記生成部は、前記シーケンスに対応したステートマシンを生成し、生成した前記ステートマシンのステートそれぞれに当該ステートマシンの元となる前記シーケンスが備える前記識別情報を付与することを特徴とする付記９記載の設計検証装置。
【０３３９】
（付記１１）  前記識別情報は、前記検証対象部位を示す機能、前記処理手順、前記シーケンスのうちの少なくとも１つの情報を有しており、
前記生成部は、同じ前記識別情報を備える前記ステートマシンを抽出し、抽出した前記ステートマシンの部分を前記検証用情報とすることを特徴とする付記１０記載の設計検証装置。
【０３４０】
（付記１２）  前記シーケンスの制約に基づいて、前記シーケンスそれぞれの処理に対応したステートの数を減らすことを特徴とする付記１０記載の設計検証装置。
（付記１３）  設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの優先度を決定し、
決定された前記優先度に基づいて選択された前記検証用情報の検証順位を決定し、
選択された前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
処理をプロセッサを用いて行うことを特徴とする設計検証方法。
【０３４１】
（付記１４）  コンピュータに、
設計対象の設計仕様が備える処理手順の検証要求に応じて、前記処理手順を検証する検証用情報の少なくとも１つを選択し、選択した前記検証用情報が有する前記処理手順の実行を制約する条件を示すパラメータに応じて前記パラメータの第１の優先度を決定し、
決定した前記第１の優先度に基づいて、選択した前記検証用情報の検証順位を決定し、
選択した前記検証用情報を識別する情報を、前記検証順位を明示して出力する、
処理を該コンピュータが備えるプロセッサを用いて実行させることを特徴とする設計検証プログラム。
【符号の説明】
【０３４２】
１、１０  設計検証装置
１ａ  生成部
１ｂ  優先度付与部
１ｃ  検証用情報格納部
１ｄ  パラメータ条件格納部
１ｅ  優先度決定部
１ｆ  検証順位決定部
１ｇ、１９ａ  出力部
２  設計仕様
２ａ、２ｂ  機能
３  構造体
３ａ、３ｂ  検証用情報
４ａ、４ｂ  情報
５  出力結果
１１  検証用シナリオ生成部
１２  検証用シナリオ格納部
１３  シナリオ優先度付与部
１４  優先度付与済みシナリオ格納部
１５  パラメータ優先度付与部
１６  優先度ルール格納部
１７  パラメータ格納部
１８  検証順位決定部
１９ａ  優先順位リスト
２０  ＬＳＩ
２０ａ、２０ｂ  処理手順
２１、５１  機能ブロック
２１ａ、２１ｂ、５１ａ、５１ｂ、５１ａ１、５１ｂ１、５１ｂ２  シナリオブロック
２７、６０、１１０  データ
２７ａ〜２７ｄ、６１〜６３、６１ａ〜６３ａ、１１０ａ、１１１〜１１９  記述
３０  有向グラフ
３１  初期状態ブロック
３２〜３４、４０、４０ａ〜４０ｅ、７０  メッセージ・シーケンス・チャート（ＭＳＣ）
３４  ｈメッセージ・シーケンス・チャート（ｈＭＳＣ）
４１、４２、４３  ハードウェア（ＨＷ）
４１ａ  ユーザインタフェース
４２ａ  ＡＴＭ
４３ａ  データベース
４４、４５、４６  オブジェクトライン
４４ａ  ユーザインタフェースライン
４５ａ  ＡＴＭライン
４６ａ  データベースライン
４７、４８  ボックス
７１  送信オブジェクト
７２  長距離送信オブジェクト
７３  受信オブジェクト
７４  長距離受信オブジェクト
８０  状態マトリックス
８１、８２  領域
９０、９２  状態図
９０ａ  有限ステートマシン
９１、Ｓｔ１〜Ｓｔ８  ステート
１００  システム
２００  信号インタフェース
２１１ａ、２１２ａ、５１１ａ、５１１ｂ、５１２ａ、５１２ｂ、５１３ａ、５１３ｂ  ＭＳＣブロック
３００  テスト対象装置
４００  ネットワーク
５１１ａ１、５１２ａ１、５１２ｂ１  ラベル
Ｓｃ１、Ｓｃ２  検証用シナリオ
ｅ１、ｅ２、ｅ３  イベント
ｍ、ｍ１〜ｍ９  データ・イベント・メッセージ
ｒ１〜ｒ６、ｒｊ  受信イベント
ｔ１〜ｔ５、ｔｉ  送信イベント
【図１】
0005540887.tif 000002
【図２】
0005540887.tif 000003
【図３】
0005540887.tif 000004
【図４】
0005540887.tif 000005
【図５】
0005540887.tif 000006
【図６】
0005540887.tif 000007
【図７】
0005540887.tif 000008
【図８】
0005540887.tif 000009
【図９】
0005540887.tif 000010
【図１０】
0005540887.tif 000011
【図１１】
0005540887.tif 000012
【図１２】
0005540887.tif 000013
【図１３】
0005540887.tif 000014
【図１４】
0005540887.tif 000015
【図１５】
0005540887.tif 000016
【図１６】
0005540887.tif 000017
【図１７】
0005540887.tif 000018
【図１８】
0005540887.tif 000019
【図１９】
0005540887.tif 000020
【図２０】
0005540887.tif 000021
【図２１】
0005540887.tif 000022
【図２２】
0005540887.tif 000023
【図２３】
0005540887.tif 000024
【図２４】
0005540887.tif 000025
【図２５】
0005540887.tif 000026
【図２６】
0005540887.tif 000027
【図２７】
0005540887.tif 000028
【図２８】
0005540887.tif 000029
【図２９】
0005540887.tif 000030
【図３０】
0005540887.tif 000031
【図３１】
0005540887.tif 000032
【図３２】
0005540887.tif 000033
【図３３】
0005540887.tif 000034
【図３４】
0005540887.tif 000035
【図３５】
0005540887.tif 000036
【図３６】
0005540887.tif 000037
【図３７】
0005540887.tif 000038
【図３８】
0005540887.tif 000039