(57)【特許請求の範囲】
【請求項１】
仕様を所定の記述言語で記述した仕様モデルから複数の操作を抽出し、
該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、
該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、
該原因結果グラフから一連の操作をシナリオとして抽出する
各段階を含み、
該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含み、該各段階をコンピュータが実行することを特徴とするシナリオ生成方法。
【請求項２】
該原因結果グラフを生成する段階は、
該複数の操作記述にそれぞれ対応する複数の原因結果グラフを生成し、
該複数の原因結果グラフ同士を結合して該少なくとも１つの原因結果グラフを生成する
段階を含み、該複数の原因結果グラフは操作名、前提条件、制約、及び出力結果を含み、第１の原因結果グラフの操作名、前提条件、制約、及び出力結果の少なくとも何れか１つの内容が、第２の原因結果グラフの操作名、前提条件、制約、及び出力結果の少なくとも何れか１つの内容と一致する場合に、該一致する内容を共有させることにより該第１の原因結果グラフと該第２の原因結果グラフとを結合することを特徴とする請求項１記載のシナリオ生成方法。
【請求項３】
該抽出する段階は、所望の結果を示す制約に応じて、該所望の結果に帰結するような一連の操作を抽出することを特徴とする請求項１記載のシナリオ生成方法。
【請求項４】
該所定の記述言語はＵＭＬであり、該仕様モデルは少なくともクラス図を含むことを特徴とする請求項１記載のシナリオ生成方法。
【請求項５】
所定の記述言語で記述された仕様モデルから複数の操作を抽出し、
該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、
該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、
該原因結果グラフから一連の操作をシナリオとして抽出する
各段階をコンピュータが実行するように該コンピュータを制御し、該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含むことを特徴とするシナリオ生成プログラム。
【請求項６】
プログラムと所定の記述言語で記述された仕様モデルとを格納するメモリと、
該メモリの該プログラムを実行して該メモリの該仕様モデルを処理する処理ユニット
を含み、該処理ユニットは、
該仕様モデルから複数の操作を抽出し、
該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、
該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、
該原因結果グラフから一連の操作をシナリオとして抽出する
各段階を実行し、該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含むことを特徴とするシナリオ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に計算機利用設計に関し、詳しくはＬＳＩの機能を検証するためのシナリオを生成するシナリオ生成方法、シナリオ生成プログラム、及びシナリオ生成装置に関する。
【背景技術】
【０００２】
ＬＳＩ（大規模集積回路）の集積度向上に伴い、複雑なシステムをＳＯＣ（System on Chip）として１チップに実装することが可能になっている。ＳＯＣ（System on Chip）のように大規模で且つ複雑な機能を備えたＬＳＩの場合、その機能を検証する作業は、かなりの手間と時間とを要する大変なものとなる。
【０００３】
ＬＳＩの機能を検証するためには、仕様書に記載されるＬＳＩの機能を全て網羅的に検証する必要がある。仕様書には設計対象のＬＳＩの各操作が記載されており、操作の一連の繋がりとしてシナリオが定義される。ここで操作とは、仕様を細かく分解して得られる１つの動作のことであり、例えば録音用ＬＳＩを例とした場合、録音する、録音停止する、再生する、といった各動作が１つの操作に対応する。またシナリオとは、ＬＳＩの機能をテストするために意味のある一連の操作であり、検証対象ＬＳＩに対するテストプログラムであると考えてよい。録音用ＬＳＩの例の場合、電源オン→録音操作→停止操作といった一連の動作が、録音用ＬＳＩの基本的な録音機能を検証するためのシナリオとなる。
【０００４】
例えば操作を無意味に並べてもシナリオとして意味が無く、録音用ＬＳＩの例の場合、電源オフ→録音操作といった順番の操作には意味がない。従って、仕様書からＬＳＩの機能をテストするために意味のある一連の操作としてシナリオを抽出する必要がある。また仕様書にはシナリオの一部が記載されているものであるが、検証必要な全てのシナリオが記載されている分けではない。例えば録音用ＬＳＩの仕様書において、「録音するためには録音操作を実行し、その後、録音一時停止のためには一時停止操作を実行する」といったシナリオが記載されていても、録音操作→一時停止操作→一時停止リセット操作（録音再開）といった一連の作業が１つのシナリオとして記載されているとは限らない。
【０００５】
従って、ＬＳＩの機能を網羅的に検証するためには、仕様書に明示的に記載されているシナリオだけではなく、仕様書に明示的に記載されていないシナリオであって仕様書に記載の各操作を組み合わせることで構成可能な全てのシナリオを抽出する必要がある。即ち、仕様書に明示的に記載されているシナリオだけではなく、仕様書に直接には記載されていないシナリオを生成する必要がある。
【０００６】
仕様書は例えば日本語や英語等の自然言語で記載されている。従って、そのような仕様書の記載内容を計算機で処理可能な所定の表記に変換し、更にそのような表記から全てのシナリオを系統的に生成する手法が望まれる。
【非特許文献１】大石亮介、朱強、中田恒夫、峰正高、黒木健一郎、遠藤陽一、長谷川隆、「ＵＭＬを用いた上流検証手法」、ＤＡシンポジウム2004論文集、2004年7月
【非特許文献２】Q. Zhu, R. Oishi, T. Hasegawa, T. Nakata, "System-On-Chip Validation using UML and CML," CODES+ISSS 2004, 2004年9月
【非特許文献３】QIANG ZHU, TSUNEO NAKATA, MASATAKA MINE, KENICHIRO KUROKI, "System-On-Chip Verification Process Using UML," <<UML>>2004, 2004年11月
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上を鑑みて、本発明は、ＬＳＩの機能を網羅的に検証するために、仕様書から全てのシナリオを系統的に生成する方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
シナリオ生成方法は、仕様を所定の記述言語で記述した仕様モデルから複数の操作を抽出し、該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、該原因結果グラフから一連の操作をシナリオとして抽出する各段階を含み、該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含み、該各段階をコンピュータが実行することを特徴とする。
【０００９】
シナリオ生成プログラムは、所定の記述言語で記述された仕様モデルから複数の操作を抽出し、該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、該原因結果グラフから一連の操作をシナリオとして抽出する各段階をコンピュータが実行するように該コンピュータを制御し、該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含むことを特徴とする。
【００１０】
シナリオ生成装置は、プログラムと所定の記述言語で記述された仕様モデルとを格納するメモリと、該メモリの該プログラムを実行して該メモリの該仕様モデルを処理する処理ユニットを含み、該処理ユニットは、該仕様モデルから複数の操作を抽出し、該複数の操作にそれぞれ対応し各々が操作名と制約条件とを含む複数の操作記述を生成し、該複数の操作記述に基づいて該複数の操作を結合した少なくとも１つの原因結果グラフを生成し、該原因結果グラフから一連の操作をシナリオとして抽出する各段階を実行し、該制約条件は、該操作名の操作を開始する時に成立している必要がある条件である事前条件、該操作名の操作を終了する時に実現されているはずの条件である事後条件を少なくとも含むことを特徴とする。
【発明の効果】
【００１１】
本発明の少なくとも１つの実施例によれば、仕様書から抽出された複数の操作を、意味のある組み合わせで結合することで、意味のあるシナリオを含む原因結果グラフを作成する。ここで各操作記述は制約条件の下での入出力間の関係を規定したものであるので、入力と出力との関係はシナリオの一部として意味のある関係となっている。従って、操作記述に基づいて複数の操作を組み合わせて生成した原因結果グラフについても、原因と結果との関係は制約条件を満たす条件下で成立する関係であり、シナリオとして意味のある関係となっている。このようにして仕様書からシナリオを系統的に自動で生成することで、全てのシナリオを抽出することができる。
【発明を実施するための最良の形態】
【００１２】
本発明では、日本語や英語などの自然言語で記載された仕様書から各操作を抽出するためにＵＭＬ（Unified Modeling Language）を用いる。ＵＭＬは、オブジェクト指向によるシステム設計において、システムをモデル化して表現するための統一的な表記法として開発された言語である。ＵＭＬでは、システムの設計図を描くために様々なダイアグラムが規定されており、これら特有のダイアグラムが統一言語（表記法）として機能する。
【００１３】
まず仕様書からＵＭＬによるモデル化を行い、ＵＭＬモデルから各操作の名称及びその操作の制約条件を抽出する。このようにして抽出された各操作の名称及びその操作の制約条件からなる操作記述に基づいて、操作記述の関係式を生成する。この操作記述関係式は、「ある前提条件の下である操作を実行すると、ある制約の下である出力が得られる」等の当該操作の入力と出力との関係を述語論理で記述した論理式である。
【００１４】
次に、各操作に対して一対一に生成された操作記述関係式に基づいて、各操作記述関係式に一対一に対応する原因結果グラフを生成する。原因結果グラフは、「ある前提条件の下である操作を実行すると、ある制約の下である出力が得られる」等の原因と結果との関係を表す有向グラフである。更に複数の有向グラフを結合することで、結合された原因結果グラフを生成する。この結合された原因結果グラフは、「ある前提条件の下で第１の操作を実行すると、ある制約の下で第１の出力が得られ、更にこの第１の出力を前提条件として第２の操作を実行すると、第２の出力が得られる」等の複数の操作にまたがる原因と結果との関係を表すグラフである。仕様書から抽出された全ての操作に対して、全ての可能な（意味のある）組み合わせを生成することで、全てのシナリオを含む原因結果グラフの集合が作成される。最後に、所望の検証シナリオ（所望の結果に帰結するようなシナリオ）を得るために、原因結果グラフの集合の中から、所望の結果に帰結するような一連の操作を抽出する。これにより、所望の検証シナリオを得ることができる。
【００１５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１６】
図１は、本発明によるシナリオ生成方法の実施例の概要を示す図である。図１において、検証対象のＬＳＩについての仕様書１０が入力として与えられる。この仕様書１０は、日本語や英語等の自然言語で記述され、検証対象ＬＳＩの機能や構造等を規定したものであり、完成品としての当該ＬＳＩが満たしているべき要件を記載したものである。
【００１７】
仕様書１０に基づいて、ＵＭＬモデル１１を作成する。ＵＭＬでは、３種類の構造図、５種類の振る舞い図、及び２種類の実装図を用意してあり、これらのダイアグラムを用いて設計対象システムをモデル化することができる。一般に、重要なダイアグラムは３種類であり、構造図のうちのクラス図、及び振る舞い図のうちのシーケンス図とユースケース図とが主に使用される。ユースケース図では、機能を提供するシステム、システムが提供する機能、システムを利用する外部のエンティティ等を部品として表示して、システムの外部から見たときの振る舞いを表現する。クラス図は、対象システムをその構成要素としてのクラス群とクラス間の関係としてモデル化する図である。またシーケンス図は、オブジェクト間のメッセージ送信を時系列表現することにより、各クラスがどのように協調動作するのかというシステムの動的な振る舞いを規定する。ユースケース図、クラス図、シーケンス図等を自然言語で書かれた仕様書から抽出する動作は、人間が人手で行うことになる。
【００１８】
図１に示すようにクラス図１２は、一般にクラス名、属性、及び操作を含む。クラス図１２の一番上のボックスは名前コンパートメントと呼ばれ、クラスの名前やクラスの種別が示される。中央のボックスは属性コンパートメントと呼ばれ、そのクラスの属性のリストが含まれる。一番下のボックスは操作コンパートメントと呼ばれ、操作がリストされる。
【００１９】
このようにして生成されるＵＭＬのクラス図１２から各操作を抽出することで、複数の操作記述１３が生成される。この複数の操作記述１３の各々が１つの操作に対応する。１つの操作記述１３は、対応する操作の名称とともにその制約条件を含む。制約条件には、事前条件、事後条件、及び不変条件が含まれる。
【００２０】
事前条件とは、操作を開始する時に成立している必要がある条件である。例えば録音用ＬＳＩの場合、録音操作をするためには、メモリに空き領域があること等が事前条件として必要となる。事後条件とは、操作終了時に実現されているはずの条件である。例えば録音操作を実行した場合、メモリに音声データが格納され始めること等が事後条件として実現される。また不変条件とは、操作を実行している間に不変である成立必要な条件である。例えば、録音操作中には、電源がオンになっている必要があること等が不変条件として必要になる。
【００２１】
ＵＭＬでは、制約条件の表現のために特定の言語や表記法を指定していない。従って、ＵＭＬで抽出された操作についての制約条件は、自然言語で記述されているかも知れないし、或いはＯＣＬ（Object Constraint Language）により記述されているかも知れない。ＯＣＬはモデル記述のための形式言語であり、モデル要素や関係の間で満たすべき命題を式として定義することができる。本発明では、図１に操作記述例１３Ａとして示すように、ＯＣＬを用いて制約条件を記述することが好ましい。
【００２２】
図１の操作記述例１３Ａにおいて、"context A"は操作Ａについての制約条件であることを示す。"pre: B"は、事前条件Ｂが必要であることを示す。また"post: if C then D else E endif"は、制約Ｃが真であれば状態Ｄとなり、さもなければ状態Ｅとなることを示す。録音用ＬＳＩの例であれば、例えば制約「メモリ空き容量無し」が真であれば、「途中で録音中断」という状態となり、さもなければ「録音継続可能」な状態となる、といった事後条件が考えられる。
【００２３】
次に、複数の操作に一対一に対応する複数の操作記述１３から、複数の操作に一対一に対応する複数の操作記述関係式１４を生成する。この操作記述関係式は、「ある前提条件の下である操作を実行すると、ある制約の下である出力が得られる」等の当該操作の入力と出力との関係を述語論理で記述した論理式である。図１に示す操作記述関係式例１４Ａでは、"(A and B)"はＡとＢとが成立していること、即ち事前条件Ｂの下で操作Ａが実行されたことを示し、その結果（"=>"）、"(if C then D else E endif)"という命題が真になることが記述されている。即ち、事前条件Ｂの下で操作Ａが実行されると、制約Ｃが真であれば状態Ｄとなり、さもなければ状態Ｅとなることが示されている。
【００２４】
このような操作記述関係式１４を各操作に対して生成する動作は自動的（機械的）に実行することができる。即ち、操作記述１３をコンピュータにより解析・処理することにより、操作記述関係式１４を自動的に生成することができる。但し自動生成のためには、制約条件がＯＣＬ等により記述されていることが必要であり、もし制約条件が自然言語で記述されている場合には、予めＯＣＬ等による記述に変更しておく必要がある。
【００２５】
次に、各操作に対して一対一に生成された操作記述関係式１４に基づいて、各操作記述関係式に一対一に対応する原因結果グラフ１５を生成する。原因結果グラフ１５は、「ある前提条件の下である操作を実行すると、ある制約の下である出力が得られる」等の原因と結果との関係を表す有向グラフである。
【００２６】
更に複数の原因結果グラフ１５同士を結合することで、結合された原因結果グラフ１５を生成する。例えば、「ある前提条件の下で第１の操作を実行すると、ある制約の下で第１の出力が得られる」ことを表現する原因結果グラフ１５と、「第１の出力を前提条件として第２の操作を実行すると、第２の出力が得られる」ことを表現する原因結果グラフ１５とには、第１の出力が共通の構成要素として現れるので、これら２つの原因結果グラフ１５を結合できることが分かる。そこで、これら２つの原因結果グラフ１５を結合して、「ある前提条件の下で第１の操作を実行すると、ある制約の下で第１の出力が得られ、更にこの第１の出力を前提条件として第２の操作を実行すると、第２の出力が得られる」という複数の操作にまたがる原因と結果との関係を表すグラフが得られる。なおビジュアルなダイアグラムとして表現した場合に、原因結果グラフ１５は図１に示すようなノードと矢印とで構成されたグラフとなる。
【００２７】
操作記述関係式１４から原因結果グラフ１５を生成し更に結合する動作は、コンピュータにより自動的（機械的）に実行することができる。具体的には、ある原因結果グラフ１５のある１つのノード（例えば事前条件）に着目して、そのノードが他の原因結果グラフ１５に現れるか否かを他の全ての原因結果グラフ１５について検索して、その要素が現れる原因結果グラフ１５が見つかった場合には、その見つかった原因結果グラフ１５を着目原因結果グラフ１５に結合すればよい。この際、組み合わせには後述するように６つのパターンが存在する。着目する要素を順次次の要素に替えていき、更に着目する原因結果グラフを順次次の原因結果グラフに替えていくことにより、全ての操作の全ての組み合わせを包含した原因結果グラフ１５の集合を生成することができる。最終的に生成された原因結果グラフ１５の集合においては、単一の操作に対応する最小単位の原因結果グラフ１５がそのまま含まれていてもよい。
【００２８】
このように、仕様書から抽出された全ての操作に対応する全ての操作記述関係式１４に対して、全ての可能な（意味のある）組み合わせを生成することで、全てのシナリオを含む原因結果グラフ１５の集合が作成される。ここで、１つの操作記述関係式１４に対応する１つの原因結果グラフ１５は制約条件の下での入出力間の関係を規定したものであるので、入力と出力との関係はシナリオの一部として意味のある関係となっている。従って、複数の原因結果グラフ１５を組み合わせて生成した原因結果グラフ１５についても、原因と結果との関係は制約条件を満たす条件下で成立する関係であり、シナリオとして意味のある関係となっている。
【００２９】
最後に、所望の検証シナリオ（所望の結果に帰結するようなシナリオ）を得るために、検証シナリオ制約１６を入力する。この検証シナリオ制約１６は、所望の結果を表現したものである。検証シナリオ制約１６に至るような一連の操作を、原因結果グラフ１５の集合中から検索して取り出すことで、所望の検証シナリオ１７を得ることができる。
【００３０】
録音用ＬＳＩの例の場合、検証シナリオ制約１６としては、例えば「途中不要部分を除いた録音データ」である。「途中不要部分を除いた録音データ」という状態が真となるような原因結果グラフ１５を検索して抽出することで、例えば「録音操作を実行し、一時停止操作を実行し、一時停止操作をリセットし、その後録音停止動作を実行する」といった検証シナリオを抽出することができる。
【００３１】
図２は、操作記述１３と原因結果グラフ１５との関係を示す図である。図２にはある操作に対する操作記述１３を示し、またその操作記述１３に対応する原因結果グラフ１５を示す。操作記述１３は、例えば操作１３−１と、事前条件１３−２と、事後条件１３−３を含む。操作１３−１は操作名を指定し、事前条件１３−２は前提条件を指定し、事後条件１３−３には制約と出力結果とが指定される。
【００３２】
操作１３−１に指定される操作名が操作名２１として、原因結果グラフ１５の１構成要素となる。また事前条件１３−２に指定される前提条件が前提条件２２として、原因結果グラフ１５の１構成要素となる。また事後条件１３−３に指定される制約と出力結果とがそれぞれ制約２３と出力結果２４として、原因結果グラフ１５の構成要素となる。これら構成要素（ノード）間を、図示のように入力側（操作名、前提条件、制約）から出力側（出力結果）に向かう矢印で結合する。このようにして、操作記述１３（又は操作記述関係式１４）を原因結果グラフ１５として表すことができる。
【００３３】
図３乃至図８は、操作記述関係式１４を結合する際の６通りの組み合わせについて説明するための図である。
【００３４】
図３において、第１の操作３１は、操作名Ａ、前提条件Ｂ、及び出力結果Ｃにより表される。また第２の操作３２は、操作名Ｄ、前提条件Ｃ、及び出力結果Ｅにより表される。この場合、第１の操作３１の出力結果Ｃと第２の操作３２の前提条件Ｃとがともに内容がＣであり一致する。なお内容が一致するとは、そのカテゴリが操作名であるか、前提条件であるか、制約であるか、或いは出力結果であるかに関わらず、その実体的な内容が同一であることである。
【００３５】
従って、第１の操作３１の出力結果Ｃと第２の操作３２の前提条件Ｃとを結合して１つのノードとすることで、結合された原因結果グラフ３３を生成することができる。この原因結果グラフ３３は、前提条件Ｂの下で操作名Ａの操作を実行すると、出力結果Ｃが得られ、更にこの出力結果Ｃを前提条件として操作名Ｄの操作を実行すると、出力結果Ｅが得られることを示す。
【００３６】
図４において、第１の操作３４は、操作名Ａ、前提条件Ｂ、制約Ｆ、及び出力結果Ｃにより表される。また第２の操作３５は、操作名Ｄ、前提条件Ｆ、及び出力結果Ｅにより表される。この場合、第１の操作３４の制約Ｆと第２の操作３５の前提条件Ｆとがともに内容がＦであり一致する。
【００３７】
従って、第１の操作３４の制約Ｆと第２の操作３５の前提条件Ｆとを結合して１つのノードとすることで、結合された原因結果グラフ３６を生成することができる。この原因結果グラフ３６は、前提条件Ｂの下で操作名Ａの操作を実行すると、制約Ｆが真の場合に出力結果Ｃが得られ、更に前提条件Ｆとして操作名Ｄの操作を実行すると、出力結果Ｅが得られることを示す。
【００３８】
図５において、第１の操作３７は、操作名Ａ、前提条件Ｂ、及び出力結果Ｃにより表される。また第２の操作３８は、操作名Ｄ、前提条件Ｂ、及び出力結果Ｅにより表される。この場合、第１の操作３７の前提条件Ｂと第２の操作３８の前提条件Ｂとがともに内容がＢであり一致する。
【００３９】
従って、第１の操作３７の前提条件Ｂと第２の操作３８の前提条件Ｂとを結合して１つのノードとすることで、結合された原因結果グラフ３９を生成することができる。この原因結果グラフ３９は、前提条件Ｂの下で操作名Ａの操作を実行すると、出力結果Ｃが得られ、また前提条件Ｂの下で操作名Ｄの操作を実行すると、出力結果Ｅが得られることを示す。
【００４０】
図６において、第１の操作４１は、操作名Ａ、前提条件Ｂ、及び出力結果Ｃにより表される。また第２の操作４２は、操作名Ｄ、前提条件Ｆ、制約Ｃ、及び出力結果Ｅにより表される。この場合、第１の操作４１の出力結果Ｃと第２の操作４２の制約Ｃとがともに内容がＣであり一致する。
【００４１】
従って、第１の操作４１の出力結果Ｃと第２の操作４２の制約Ｃとを結合して１つのノードとすることで、結合された原因結果グラフ４３を生成することができる。この原因結果グラフ４３は、前提条件Ｂの下で操作名Ａの操作を実行すると、出力結果Ｃが得られ、更に前提条件Ｆの下で操作名Ｄの操作を実行すると、上記出力結果Ｃが制約として真である場合に、出力結果Ｅが得られることを示す。
【００４２】
図７において、第１の操作４４は、操作名Ａ、前提条件Ｂ、制約Ｇ、及び出力結果Ｃにより表される。また第２の操作４５は、操作名Ｄ、前提条件Ｆ、制約Ｇ、及び出力結果Ｅにより表される。この場合、第１の操作４４の制約Ｇと第２の操作４２の制約Ｇとがともに内容がＧであり一致する。
【００４３】
従って、第１の操作４４の制約Ｇと第２の操作４５の制約Ｇとを結合して１つのノードとすることで、結合された原因結果グラフ４６を生成することができる。この原因結果グラフ４６は、前提条件Ｂの下で操作名Ａの操作を実行すると、制約Ｇが真である場合に出力結果Ｃが得られ、更に前提条件Ｆの下で操作名Ｄの操作を実行すると、上記制約Ｇが真である場合に出力結果Ｅが得られることを示す。
【００４４】
図８において、第１の操作４７は、操作名Ａ、前提条件Ｂ、及び出力結果Ｃにより表される。また第２の操作４８は、操作名Ｄ、前提条件Ｆ、制約Ｂ、及び出力結果Ｅにより表される。この場合、第１の操作４７の前提条件Ｂと第２の操作４８の制約Ｂとがともに内容がＢであり一致する。
【００４５】
従って、第１の操作４７の前提条件Ｂと第２の操作４８の制約Ｂとを結合して１つのノードとすることで、結合された原因結果グラフ４９を生成することができる。この原因結果グラフ４９は、前提条件Ｂの下で操作名Ａの操作を実行すると、出力結果Ｃが得られ、更に前提条件Ｆの下で操作名Ｄの操作を実行すると、上記前提条件Ｂが制約として真である場合に、出力結果Ｅが得られることを示す。
【００４６】
２つの原因結果グラフ１５を組み合わせて１つの大きな原因結果グラフ１５を生成する場合、上に示したように図３乃至図８の６つのパターンのみが存在する。これらの６つのパターンに従って原因結果グラフ１５を組み合わせて大きな原因結果グラフ１５を作成していくことで、意味のあるシナリオに対応する原因結果グラフ１５の集合を生成することができる。
【００４７】
図９は、原因結果グラフからシナリオを抽出する処理について説明するための図である。図９に示す例において、原因結果グラフ１５は、操作Ａ、前提条件Ｂ、出力結果且つ前提条件Ｃ、操作Ｄ、制約且つ前提条件Ｅ、出力結果Ｆ、操作Ｇ、及び出力結果Ｈから構成される。このような原因結果グラフ１５が得られている状態で、シナリオ制約１６Ａが指定される。
【００４８】
シナリオ制約１６Ａは、「出力結果Ｆが真（＝１）」を要求するものであり、この要求に従って出力結果Ｆが真となるようなシナリオが生成される。この例の場合、検証シナリオ１７Ａとしては、まず操作Ａを実行しその後に操作Ｄを実行するという一連の操作が抽出される。
【００４９】
図１０は、原因結果グラフからシナリオを抽出する処理について説明するための図である。図１０に示す例において、原因結果グラフ１５は、操作Ａ、前提条件Ｂ、出力結果且つ前提条件Ｃ、操作Ｄ、制約且つ前提条件Ｅ、出力結果Ｆ、操作Ｇ、及び出力結果Ｈから構成される。このような原因結果グラフ１５が得られている状態で、シナリオ制約１６Ｂが指定される。
【００５０】
シナリオ制約１６Ｂは、「出力結果Ｆが真（＝１）且つ出力結果Ｈが真（＝１）」を要求するものであり、この要求に従って出力結果Ｆが真となり且つ出力結果Ｈが真となるようなシナリオが生成される。この例の場合、検証シナリオ１７Ｂとしては、まず操作Ａを実行しその後に操作Ｄを実行するという一連の操作と、操作Ｇを実行するという操作が抽出される。なお図１０において検証シナリオ１７Ｂの操作Ｇは、操作Ａ及び操作Ｄの一連の操作とは独立に図示されているが、これは、操作Ｇと、操作Ａ及び操作Ｄとの時間的な前後関係には何ら制限がないためである。即ち、操作Ｇは、操作Ａ及び操作Ｄとは独立に任意のタイミングで実行することができる。それに対して、操作Ｄは操作Ａの後に実行されなければならない。これは操作Ａの出力結果Ｃを前提条件として操作Ｄを実行する必要があるからである。
【００５１】
図９及び図１０に示すような検証シナリオの抽出は、シナリオ制約が要求する条件（例えば出力結果Ｆが真という条件）を示すノードから、原因結果グラフ１５を遡っていけばよい。即ち、出力結果Ｆを得るためには、操作Ｄを前提条件Ｃの下で実行する必要があり、前提条件Ｃを満足させるためには、操作Ａを実行する必要があることが分かる。このようにして、操作Ａを実行してその後に操作Ｄを実行するというシナリオを抽出することができる。
【００５２】
このような検証シナリオの抽出は、二分決定グラフ（Binary Decision Diagram）を利用して実行することができる。ＢＤＤでは、論理関数が充足可能かどうかを直ちに判定することが可能である。またその論理関数が充足可能である場合には、論理関数の値を１にするような入力値を求めることができる。従って、原因結果グラフ１５をＢＤＤで表現すれば、検証シナリオの抽出作業はＢＤＤにおける充足可能判定問題となり、コンピュータにより自動的（機械的）に容易に実行することができる。
【００５３】
図１１は、本発明によるシナリオ生成方法の処理の流れを示す図である。まずステップＳ１で、仕様書１０を分析する。前述のように仕様書１０は自然言語で記述されたものであるので、これを分析して、ＵＭＬ等の系統的な仕様記述言語で記述した仕様モデル１１を生成する。この部分は、人手による作業である。これ以降のステップは、コンピュータにより自動的に実行するステップである。
【００５４】
ステップＳ２において仕様モデル１１から操作を抽出する。前述のように操作記述には、対応する操作の名称とともにその制約条件を含む。操作記述は、所定の記述言語（例えばＯＣＬ）により記述される。
【００５５】
ステップＳ３において、全ての操作に対して原因結果グラフを作成する。具体的には、全ての操作記述から操作記述関係式を介して原因結果グラフを生成する。
【００５６】
ステップＳ４において、複数の原因結果グラフのうちで結合可能な操作の組み合わせがあるか否かを判定する。判定結果がｙｅｓの場合、ステップＳ５で結合可能な操作に対応する複数の原因結果グラフ同士を結合する。この結合の仕方には、図３乃至図８に説明した６通りのパターンのみが存在する。その後、ステップＳ４に戻り、結合可能か否かの判定と結合作業とを繰り返す。
【００５７】
ステップＳ４における結合可能判定の結果がｎｏ（結合可能な原因結果グラフが存在しない）場合には、ステップＳ６に進む。ステップＳ６では、二分決定グラフ法を用いてシナリオを生成する。即ち図９及び図１０において説明したように、検証シナリオ制約が真になるような原因結果グラフの入力値を特定することにより、検証シナリオを構成する一連の操作を抽出する。全ての所望の検証シナリオ制約に対して、対応する一連の操作を原因結果グラフから抽出することで、検証シナリオの集合１７が得られる。
【００５８】
なお上記説明において、複数の操作の結合処理は、複数の原因結果グラフを結合することにより実現している。しかし複数の操作の結合処理は、原因結果グラフの段階で必ずしも実行する必要はなく、可能であれば操作記述の段階或いは操作記述関係式の段階で実行してもよい。
【００５９】
このようにして検証シナリオの集合１７が得られると、各検証シナリオを用いて対象ＬＳＩの機能の検証を行うことができる。例えば実装レベルでの検証であれば、ＬＳＩテスタを制御するホストコンピュータに各検証シナリオを読み込み、ＬＳＩテスタを用いて検証対象ＬＳＩを検証シナリオ通りに動作させ、ＬＳＩの動作が期待通りであるか否か、即ちＬＳＩの機能が正常であるか否かをテストすることができる。
【００６０】
図１２は、本発明によるシナリオ生成方法を実行する装置の構成を示す図である。
【００６１】
図１２に示されるように、本発明によるシナリオ生成方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図１２の装置は、コンピュータ５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。
【００６２】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【００６３】
本発明によるシナリオ生成方法は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。
【００６４】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。
【００６５】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記各実施例で説明されたようにシナリオ生成方法を実行する。
【００６６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００６７】
【図１】本発明によるシナリオ生成方法の実施例の概要を示す図である。
【図２】操作記述と原因結果グラフとの関係を示す図である。
【図３】操作記述関係式を結合する際の第１の組み合わせについて説明するための図である。
【図４】操作記述関係式を結合する際の第２の組み合わせについて説明するための図である。
【図５】操作記述関係式を結合する際の第３の組み合わせについて説明するための図である。
【図６】操作記述関係式を結合する際の第４の組み合わせについて説明するための図である。
【図７】操作記述関係式を結合する際の第５の組み合わせについて説明するための図である。
【図８】操作記述関係式を結合する際の第６の組み合わせについて説明するための図である。
【図９】原因結果グラフからシナリオを抽出する処理について説明するための図である。
【図１０】原因結果グラフからシナリオを抽出する処理について説明するための図である。
【図１１】本発明によるシナリオ生成方法の処理の流れを示す図である。
【図１２】本発明によるシナリオ生成方法を実行する装置の構成を示す図である。
【符号の説明】
【００６８】
１０  仕様書
１１  ＵＭＬモデル
１２  クラス図
１３  操作記述
１４  操作記述関係式
１５  原因結果グラフ
１６  検証シナリオ制約
１７  検証シナリオ
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【図１】
0004445480.tif 000002
【図２】
0004445480.tif 000003
【図３】
0004445480.tif 000004
【図４】
0004445480.tif 000005
【図５】
0004445480.tif 000006
【図６】
0004445480.tif 000007
【図７】
0004445480.tif 000008
【図８】
0004445480.tif 000009
【図９】
0004445480.tif 000010
【図１０】
0004445480.tif 000011
【図１１】
0004445480.tif 000012
【図１２】
0004445480.tif 000013