(57)【要約】【課題】検証作業の効率化を図ること。【解決手段】検証支援装置１００は、検証対象１０１の機能を表すユースケースＵごとに、ユースケースの事前条件ｐｒｅｃと、ユースケースの事後条件ｐｏｓｔｃと、を記憶する。次に、検証支援装置１００は、事後条件ｐｏｓｔｃ＃１と、ユースケースＵ＃１とは異なるユースケースの事前条件ｐｒｅｃとに基づいて、ユースケース群からユースケースＵ＃１の次に検証する第２のユースケースを選択する。検証支援装置１００は、選択した第２のユースケースを出力する。出力結果を閲覧した検証者Ａは、入力値を“１”から“２”に変更するように入力元を操作して、第２のユースケースが表す機能の検証を行う。【選択図】図１
2014206793.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する、
処理を実行させることを特徴とする検証支援プログラム。
【請求項２】
前記第２のユースケースを選択する処理は、
前記ユースケース群から前記第１のユースケースの事後条件と一致する事前条件を有する第２のユースケースを選択する、
ことを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記コンピュータに、
前記ユースケース群から選択されていない未選択のユースケースのうちに前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがあるか否かを判断し、
前記第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断した場合、前記複数のユースケースから前記第１のユースケースの次に検証するユースケース候補を選択し、
前記ユースケース群から選択されていない未選択のユースケースのうちに前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがあるか否かを判断する、処理を実行させ、
前記第２のユースケースを選択する処理は、
前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがあると判断した場合、前記ユースケース候補を前記第２のユースケースとして選択することを特徴とする請求項２に記載の検証支援プログラム。
【請求項４】
前記コンピュータに、
前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記複数のユースケースから選択されていない未選択のユースケースを前記ユースケース候補として選択する、
処理を実行させることを特徴とする請求項３に記載の検証支援プログラム。
【請求項５】
前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記ユースケース群から選択されたユースケースの選択順序を示す情報を出力する、
処理を実行させることを特徴とする請求項３または４に記載の検証支援プログラム。
【請求項６】
前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記ユースケース群から選択されたユースケースに特定のユースケースが含まれるか否かを判断し、
前記ユースケース群から選択されたユースケースに前記特定のユースケースが含まれないと判断した場合、前記検証対象の仕様が異常であることを示す情報を出力する、
処理を実行させることを特徴とする請求項３〜５のいずれか一つに記載の検証支援プログラム。
【請求項７】
前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断した場合、前記複数のユースケースに特定のユースケースが含まれるか否かを判断する、処理を実行させ、
前記第２のユースケースを選択する処理は、
前記複数のユースケースに前記特定のユースケースが含まれると判断した場合、前記特定のユースケースを前記第２のユースケースとして選択することを特徴とする請求項３〜６のいずれか一つに記載の検証支援プログラム。
【請求項８】
前記第２のユースケースを選択する処理は、
前記複数のユースケースに前記特定のユースケースが含まれないと判断した場合、前記複数のユースケースの各々の事後条件と特定のユースケースの事前条件とに基づいて、前記複数のユースケースから前記第２のユースケースを選択することを特徴とする請求項７に記載の検証支援プログラム。
【請求項９】
前記コンピュータに、
前記入力値および前記出力値の初期値と、前記ユースケース群の各々のユースケースの事前条件とに基づいて、前記ユースケース群から最初に検証するユースケースを選択する、
処理を実行させることを特徴とする請求項１〜８のいずれか一つに記載の検証支援プログラム。
【請求項１０】
検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部と、
前記記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する選択部と、
を有することを特徴とする検証支援装置。
【請求項１１】
コンピュータが、
検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する、
処理を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【０００２】
ユースケースは、ハードウェアやソフトウェアの機能を表すものである。ユースケースを用いて、ハードウェアやソフトウェアの検証を行う技術がある。関連する先行技術として、たとえば、ユースケース図から抽出したユースケース間の関係を示す関連情報に関連付けられるユースケースからなる記述集合が、有向閉路を形成するか否かを判定して、ユースケースの優先度を設定するものがある。また、あるユースケースのコンテキストに合う初期状態から、あるユースケースのシステム応答に対応する１つの最終の状態へ、遷移の１セットをユースケースに関係づける技術がある。（たとえば、下記特許文献１、２を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２５２４８９号公報
【特許文献２】特表２００７−５２８０６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、ハードウェアやソフトウェアといった検証対象の機能を表すユースケースを実行する度に検証対象の状態が変化するため、次に検証するユースケースに合わせて検証対象の状態を変更することになり、検証作業に時間がかかる。
【０００５】
１つの側面では、本発明は、検証作業の効率化を図ることができる検証支援プログラム、検証支援装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、検証対象の機能を表すユースケースごとに、ユースケースが表す機能の実行前に検証対象に入力する入力値および検証対象が出力する出力値が満たすべき事前条件と、ユースケースが表す機能の実行後に入力値および出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、第１のユースケースとは異なるユースケースの事前条件とに基づいて、ユースケース群から第１のユースケースの次に検証する第２のユースケースを選択する検証支援プログラム、検証支援装置、および検証支援方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、検証作業の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる検証支援装置の動作例を示す説明図である。
【図２】図２は、検証支援装置のハードウェア構成の一例を示すブロック図である。
【図３】図３は、ユースケース図の一例を示す説明図である。
【図４】図４は、単機能単位ユースケースの使用例を示す説明図である。
【図５】図５は、検証支援装置の機能例を示すブロック図である。
【図６】図６は、事前条件および事後条件の抽出例を示す説明図である。
【図７】図７は、ユースケース検証順序の決定の一例における１段階目を示す説明図である。
【図８】図８は、ユースケース検証順序の決定の一例における２段階目を示す説明図である。
【図９】図９は、ユースケース検証順序の決定の一例における３段階目を示す説明図である。
【図１０】図１０は、ユースケース検証順序の決定の一例における４段階目を示す説明図である。
【図１１】図１１は、ユースケース検証順序の決定の他の例を示す説明図である。
【図１２】図１２は、テストパターン生成処理手順の一例を示すフローチャートである。
【図１３】図１３は、事前条件および事後条件抽出処理手順の一例を示すフローチャートである。
【図１４】図１４は、ユースケース検証順序の決定処理手順の一例を示すフローチャート（その１）である。
【図１５】図１５は、ユースケース検証順序の決定処理手順の一例を示すフローチャート（その２）である。
【図１６】図１６は、ユースケースグループ化処理手順の一例を示すフローチャートである。
【図１７】図１７は、ユースケース検証順序の決定処理手順の他の例を示すフローチャート（その１）である。
【図１８】図１８は、ユースケース検証順序の決定処理手順の他の例を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示の検証支援プログラム、検証支援装置、および検証支援方法の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる検証支援装置の動作例を示す説明図である。検証支援装置１００は、検証者による検証作業を支援するコンピュータである。ここで、検証者による検証対象の検証手順について説明する。
【００１１】
検証対象となるソフトウェア、ハードウェア、またはソフトウェアとハードウェアを含むシステムは、日々大規模化しているため、検証対象の開発全体における、検証に占める割合が上昇する傾向にある。検証者による検証対象の検証を行う際に、検証者は、テストパターンに従って検証を行う。ここで、テストパターンとは、検証対象の機能について予め定められた仕様を満たすか否かを検証する検証項目の検証順序を記述した情報である。
【００１２】
検証対象が巨大なシステムであるほど、人手によるテストパターンの生成には時間がかかる。そこで、テストパターンの生成を支援する技術として、たとえば、仕様書の一つであるユースケース図から、検証対象の機能を表すユースケースに関する検証項目を抽出する技術がある。ユースケースとは、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）における概念の一つであり、検証対象に対する要件を特定するために使用される。ユースケースについては、図３にて後述する。
【００１３】
しかしながら、検証対象は、検証対象がある条件を満たすときに限り、あるユースケースの機能を実行する機能を有する場合がある。この場合、テストパターンに従って、あるユースケースの機能を検証する場合、検証者は、検証対象のある条件を満たすように、検証対象の状態を設定した後に検証することになり、検証作業の手間が増大化する。また、抽出したユースケースに関する検証項目から、検証者がテストパターンを生成する場合、検証項目の漏れや、検証者による検証項目のばらつきが発生する場合がある。
【００１４】
そこで、本実施の形態にかかる検証支援装置１００は、検証対象の機能を表すユースケース間の事前条件と事後条件とのマッチングを行って連続実行するユースケースを選択する。これにより、検証支援装置１００は、次に検証するユースケースに合わせて検証対象の状態を変更することになるため、検証作業の手間を削減し、検証作業の効率化を図ることができる。ここで、本実施の形態にかかるユースケースは、検証対象に対する１入力に対して１出力を行う機能を表すことを前提とする。
【００１５】
図１に示す検証支援装置１００は、検証対象１０１の機能を表すユースケースＵごとに、ユースケースの事前条件ｐｒｅｃと、ユースケースの事後条件ｐｏｓｔｃと、を記憶する。ここで、ユースケースの事前条件ｐｒｅｃとは、ユースケースが表す機能の実行前に検証対象１０１に入力する入力値および検証対象１０１が出力する出力値が満たすべき条件である。また、ユースケースの事後条件ｐｏｓｔｃとは、ユースケースが表す機能の実行後に入力値および出力値が満たすべき条件である。
【００１６】
図１の例では、検証支援装置１００は、ユースケースＵ＃１〜ユースケースＵ＃３それぞれの事前条件ｐｒｅｃ＃１〜事前条件ｐｒｅｃ＃３と、事後条件ｐｏｓｔｃ＃１〜事後条件ｐｏｓｔｃ＃３とを記憶する。また、検証対象１０１に入力値を入力する入力元と、検証対象１０１が出力する値を受け付ける出力先については、図３にて後述する。
【００１７】
たとえば、事前条件ｐｒｅｃ＃１は、ユースケースＵ＃１が表す機能の実行前に検証対象１０１に入力する入力値“０”と、ユースケースＵ＃１が表す機能の実行前に検証対象１０１が出力する出力値“Ｈ”と、になる。また、事後条件ｐｏｓｔｃ＃１は、ユースケースＵ＃１が表す機能の実行後の入力値“１”と、ユースケースＵ＃１が表す機能の実行後の出力値“Ｌ”である。
【００１８】
ここで、図１に示す検証支援装置１００は、（１）が示すように、ユースケース群Ｕ＃１〜Ｕ＃３から第１のユースケースとしてユースケースＵ＃１を選択し、検証者ＡがユースケースＵ＃１が表す機能の検証を行った後であるとする。次に、検証支援装置１００は、（２）が示すように、事後条件ｐｏｓｔｃ＃１と、ユースケースＵ＃１とは異なるユースケースの事前条件ｐｒｅｃとに基づいて、ユースケース群からユースケースＵ＃１の次に検証する第２のユースケースを選択する。
【００１９】
たとえば、検証支援装置１００は、事後条件ｐｏｓｔｃ＃１に一致する事前条件ｐｒｅｃを有するユースケースを第２のユースケースとして選択する。図１の例では、検証支援装置１００は、事後条件ｐｏｓｔｃ＃１となる、入力値が“１”となる１つ目の条件と、出力値が“Ｌ”となる２つ目の条件と、に一致する事前条件ｐｒｅｃ＃２を有するユースケースＵ＃２を第２のユースケースとして選択する。
【００２０】
また、たとえば、検証支援装置１００は、事後条件ｐｏｓｔｃ＃１に一致する割合が最も多い事前条件ｐｒｅｃを有するユースケースを第２のユースケースとして選択してもよい。図１の例にて、ユースケース群のうちにユースケースＵ＃２がなく、事後条件ｐｏｓｔｃ＃１となる、２つの条件のうちいずれか一方が一致する条件を有する事前条件ｐｒｅｃを有するユースケースがあるとする。このとき、検証支援装置１００は、前述のユースケースを第２のユースケースとして選択する。
【００２１】
続けて、検証支援装置１００は、選択した第２のユースケースを出力する。出力結果を閲覧した検証者Ａは、（３）が示すように、入力値を“１”から“２”に変更するように入力元を操作して、第２のユースケースが表す機能の検証を行う。以下、図２〜図１８を用いて、検証支援装置１００について説明する。
【００２２】
（検証支援装置１００のハードウェア）
図２は、検証支援装置のハードウェア構成の一例を示すブロック図である。図２において、検証支援装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を含む。また、検証支援装置１００は、ディスクドライブ２０４と、ディスク２０５と、通信インターフェース２０６と、を含む。また、検証支援装置１００は、ディスプレイ２０７と、キーボード２０８と、マウス２０９とを含む。また、ＣＰＵ２０１〜マウス２０９はバス２１０によってそれぞれ接続される。
【００２３】
ＣＰＵ２０１は、検証支援装置１００の全体の制御を司る演算処理装置である。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される揮発性メモリである。
【００２４】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ２０４には、たとえば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ２０４が磁気ディスクドライブである場合、ディスク２０５には、磁気ディスクを採用することができる。また、ディスクドライブ２０４が光ディスクドライブである場合、ディスク２０５には、光ディスクを採用することができる。また、ディスクドライブ２０４がソリッドステートドライブである場合、ディスク２０５には、半導体素子メモリを採用することができる。
【００２５】
通信インターフェース２０６は、ネットワーク２１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース２０６は、通信回線を通じてネットワーク２１１となるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどに接続され、ネットワーク２１１を介して他の装置に接続される。通信インターフェース２０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００２６】
ディスプレイ２０７は、マウスカーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する装置である。ディスプレイ２０７には、たとえば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２７】
キーボード２０８は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う装置である。また、キーボード２０８は、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２０９は、マウスカーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う装置である。マウス２０９は、ポインティングデバイスとして同様に機能を有するものであれば、トラックボールやジョイスティックなどであってもよい。
【００２８】
図３は、ユースケース図の一例を示す説明図である。ユースケース図は、検証対象１０１となるシステムの機能的要求を特定するために使用される図である。ユースケース図は、検証対象１０１にはどのようなアクターが存在するのか、また、それぞれのアクターはどういった操作をするのかを記述する。アクターが行う操作がユースケースとなる。
【００２９】
アクターは、検証対象１０１を利用する外部装置や、人である。ユースケースは、アクターに提供するサービスである。また、ユースケース図には、複数のユースケースを含む場合があり、関係するユースケースが接続される。
【００３０】
また、本実施の形態では、検証対象１０１に何らかの値を入力する入力元となるアクターを、「入力アクター」と称する。同様に、検証対象１０１が出力する何らかの値を受け付ける出力先となるアクターを、「出力アクター」と称する。
【００３１】
たとえば、図３の例では、２Ｄ＿３Ｄ画像処理システムのユースケース図を示す。２Ｄ＿３Ｄ画像処理システムは、入力アクターとなるホストＣＰＵに、“図を描画する”というサービスを提供する。また、２Ｄ＿３Ｄ画像処理システムは、出力アクターとなるＶＲＡＭに描画結果を出力する。さらに、“図を描画する”ユースケースは、“初期化する”ユースケースと、“レンダリング機能を利用する”ユースケースとを含む。
【００３２】
図４は、単機能単位ユースケースの使用例を示す説明図である。図４では、シーケンス動作から、単機能単位ユースケースを抽出した例を示す。単機能単位ユースケースとは、各ユースケースにおける入出力アクターを一対一まで細分化したものである。単機能単位のユースケースを用いることにより、一般的なユースケースよりも細かい単位で表現することが可能になる。
【００３３】
図４の例で示すシーケンス動作４０１は、入力端子ＩＮＰＵＴ１〜入力端子ＩＮＰＵＴ３と、出力端子ＯＵＴＰＵＴ１〜出力端子ＯＵＴＰＵＴ５とのシーケンスを示す。単機能単位ユースケーステーブル４０２は、シーケンス動作４０１から、単機能単位ユースケースを抽出して、テーブルとして纏めたものである。
【００３４】
単機能単位ユースケーステーブル４０２は、ユースケース名と、入力イベントと、入出力アクター以外の事前条件と、出力イベントと、いう４つのフィールドを含む。ユースケース名フィールドには、ユースケースの名称が格納される。単機能単位ユースケーステーブル４０２は、レコード４０２−１〜４０２−６を有する。入力イベントフィールドには、入力アクターが入力値を入力するという入力イベントを示す情報が格納される。入出力アクター以外の事前条件フィールドには、該当のユースケースが実行できるための入出力アクター以外の事前条件が格納される。出力イベントフィールドには、検証対象１０１が出力値を出力するという出力イベントを示す情報が格納される。
【００３５】
たとえば、レコード４０２−１は、ユースケース名が“Ｕ１”であり、入力イベントが“入力端子ＩＮＰＵＴ１を０→１に変化させる”であり、入出力アクター以外の事前条件が“内部電源モードがＡである”であることを示す。さらに、レコード４０２−１は、出力イベントが“出力端子ＯＵＴＰＵＴ１がＨ→Ｌに変化する”であることを示す。
【００３６】
（検証支援装置１００の機能）
次に、検証支援装置１００の機能について説明する。図５は、検証支援装置の機能例を示すブロック図である。検証支援装置１００は、記憶部５０１と、判断部５０２と、ユースケース候補選択部５０３と、選択部５０４と、出力部５０５と、を含む。制御部となる判断部５０２〜出力部５０５は、記憶装置に記憶されたプログラムをＣＰＵ２０１が実行することにより、判断部５０２〜出力部５０５の機能を実現する。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などである。または、通信インターフェース２０６を経由して他のＣＰＵが実行することにより、判断部５０２〜出力部５０５の機能を実現してもよい。
【００３７】
また、検証支援装置１００は、記憶部５０１にアクセス可能である。記憶部５０１は、ＲＡＭ２０３、ディスク２０５といった記憶装置に格納される。
【００３８】
記憶部５０１は、検証対象１０１の機能を表すユースケースごとに、ユースケースの事前条件と、ユースケースの事後条件と、を記憶する。ユースケースの事前条件と、ユースケースの事後条件と、の具体例については、図６にて後述する。
【００３９】
判断部５０２は、ユースケース群から選択されていない未選択のユースケースのうちに第１のユースケースの事後条件と一致する事前条件を有するユースケースがあるか否かを判断する。ここで、選択されていない未選択のユースケースとは、ユースケース群のうちの、選択部５０４が選択したユースケースと、ユースケース候補選択部５０３が選択したユースケースと、とは異なるユースケースである。
【００４０】
また、判断部５０２は、ユースケース群から選択されていない未選択のユースケースのうちに第１のユースケースの事後条件を含む事前条件を有するユースケースがあるか否かを判断してもよい。たとえば、第１のユースケースの事後条件が１つの出力値の条件であり、１つ目の出力値ＯＵＴＰＵＴ１が“Ｌ”であるとする。そして、未選択のユースケースとして、あるユースケースの事前条件が２つの出力値の条件であり、１つ目の出力値ＯＵＴＰＵＴ１が“Ｌ”であり、２つ目の出力値ＯＵＴＰＵＴ２が“Ｈ”であるとする。このとき、あるユースケースの事前条件は、第１のユースケースの事後条件を含んでいるため、判断部５０２は、第１のユースケースの事後条件を含む事前条件を有するユースケースがあると判断する。
【００４１】
また、判断部５０２は、利用者が指定した初期状態を第１のユースケースの事後条件で更新した条件と一致する事前条件を有するユースケースがあるか否かを判断してもよい。
【００４２】
また、判断部５０２は、未選択のユースケースのうちに、ユースケース候補選択部５０３が選択したユースケース候補の事後条件と一致する事前条件を有するユースケースがあるか否かを判断してもよい。
【００４３】
また、判断部５０２が未選択のユースケースのうちに第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断したとする。この場合、判断部５０２は、さらに、ユースケース群から選択されたユースケースに特定のユースケースが含まれるか否かを判断してもよい。
【００４４】
ここで、特定のユースケースとは、ユースケース群のうちの検証者により指定されたユースケースであって、検証作業の最後に実行すべきであり、目的となるユースケースである。以下、特定のユースケースを、「目的のユースケース」と呼称する。たとえば、検証対象１０１が、図３に示した２Ｄ＿３Ｄ画像処理システムである場合、ユースケースとして、図３に示した以外に、“終了する”というユースケースがあるとする。このとき、検証者は、“終了する”というユースケースを目的のユースケースに指定する。
【００４５】
また、判断部５０２は、未選択のユースケースのうちに第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断した場合、複数のユースケースに目的のユースケースが含まれるか否かを判断してもよい。なお、判断結果は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４６】
また、判断部５０２が未選択のユースケースのうちに第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断したとする。この場合、ユースケース候補選択部５０３は、複数のユースケースから第１のユースケースの次に検証するユースケース候補を選択する。複数のユースケースがユースケースＵ＃２とユースケースＵ＃３であれば、ユースケース候補選択部５０３は、たとえば、ユースケースＵ＃２をユースケース候補として選択する。
【００４７】
また、判断部５０２が未選択のユースケースのうちに、ユースケース候補選択部５０３が選択したユースケース候補の事後条件と一致する事前条件を有するユースケースがないと判断したとする。この場合、ユースケース候補選択部５０３は、複数のユースケースから選択されていない未選択のユースケースをユースケース候補として選択してもよい。
【００４８】
たとえば、複数のユースケースがユースケースＵ＃２とユースケースＵ＃３であり、ユースケース候補選択部５０３が、ユースケースＵ＃２をユースケース候補として選択したとする。そして、判断部５０２が未選択のユースケースのうちにユースケース＃２の事後条件と一致する事前条件を有するユースケースがないと判断したとする。このとき、ユースケース候補選択部５０３は、ユースケースＵ＃３をユースケース候補として選択する。なお、選択結果は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４９】
選択部５０４は、記憶部５０１を参照して、ユースケース群から選択された第１のユースケースの事後条件と、第１のユースケースとは異なるユースケースの事前条件とに基づいて、第１のユースケースの次に検証する第２のユースケースを選択する。たとえば、選択部５０４は、第１のユースケースの事後条件に一致する割合が最も多い事前条件ｐｒｅｃを有するユースケースを第２のユースケースとして選択してもよい。
【００５０】
また、選択部５０４は、ユースケース群から第１のユースケースの事後条件と一致する事前条件を有する第２のユースケースを選択してもよい。たとえば、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあれば、選択部５０４は、複数のユースケースのうちのいずれかを第２のユースケースとして選択する。また、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあり、また、複数のユースケースが同時に起こるユースケースであれば、選択部５０４は、複数のユースケース全てを第２のユースケースとして選択してもよい。同時に起こるユースケースであるか否かの判断の例については、図８にて後述する。
【００５１】
また、判断部５０２が未選択のユースケースのうちに第１のユースケースの事後条件と一致する事前条件を有するユースケースがあると判断したとする。この場合、選択部５０４は、第１のユースケースの事後条件と一致する事前条件を有する第２のユースケースを選択してもよい。具体的な選択例としては、図７等で後述する。
【００５２】
また、選択部５０４は、判断部５０２が未選択のユースケースのうちにユースケース候補の事後条件と一致する事前条件を有するユースケースがあると判断した場合、前述のユースケース候補を第２のユースケースとして選択してもよい。
【００５３】
また、選択部５０４は、判断部５０２が複数のユースケースに目的のユースケースが含まれると判断した場合、目的のユースケースを第２のユースケースとして選択してもよい。
【００５４】
また、選択部５０４は、判断部５０２が複数のユースケースに目的のユースケースが含まれないと判断した場合、複数のユースケースの各々の事後条件と目的のユースケースの事前条件とに基づいて、複数のユースケースから第２のユースケースを選択してもよい。複数のユースケースの各々の事後条件と目的のユースケースの事前条件とに基づいて、第２のユースケースを選択する例については、図１１にて後述する。
【００５５】
また、選択部５０４は、入力値および出力値の初期値と、ユースケース群の各々のユースケースの事前条件とに基づいて、ユースケース群から最初に検証するユースケースを選択してもよい。入力値および出力値の初期値は、検証者が指定する。具体的に、選択部５０４は、入力値および出力値の初期値が事前条件を全て満たすユースケースを選択してもよいし、入力値および出力値の初期値が事前条件のうちの条件を満たす数が最大のユースケースを選択してもよい。なお、選択結果は、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５６】
出力部５０５は、判断部５０２が第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、ユースケース群から選択されたユースケースの選択順序を示す情報を出力する。具体的な出力例は、図１０にて後述する。
【００５７】
また、出力部５０５は、判断部５０２が第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、ユースケース群から選択されたユースケースの選択順序を示す情報を出力してもよい。ユースケース群から選択されたユースケースの選択順序を示す情報が、図１にて説明したテストパターンとなる。
【００５８】
また、判断部５０２が、第１のユースケースの事後条件と一致する事前条件を有するユースケースがなく、ユースケース群から選択されたユースケースに目的のユースケースが含まれないと判断したとする。このとき、出力部５０５は、検証対象１０１の仕様が異常であることを示す情報を出力してもよい。検証対象１０１の仕様が異常であることを示す情報は、たとえば、単に、“異常です”という文字列でもよいし、目的のユースケースがユースケースＵ＃ｘであれば“目的のユースケースＵ＃ｘに到達しません”という文字列でもよい。
【００５９】
出力する情報の出力先として、たとえば、出力部５０５は、出力する情報をディスプレイ２０７へ表示したり、通信インターフェース２０６による外部装置へ送信したりする。また、出力部５０５は、出力する情報を、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶することとしてもよい。
【００６０】
図６は、事前条件および事後条件の抽出例を示す説明図である。検証支援装置１００は、単機能単位ユースケーステーブル４０２から、ユースケースＵの事前条件および事後条件を抽出する。検証支援装置１００は、単機能単位ユースケーステーブル４０２のレコードごとに、ユースケースの事前条件および事後条件を抽出する。図６の例では、検証支援装置１００は、レコード４０２−１〜レコード４０２−６から、ユースケースＵ＃１〜ユースケースＵ＃６の事前条件および事後条件を抽出する。
【００６１】
具体的に、事前条件に関して、検証支援装置１００は、入力イベントが起こる前の入力アクターの入力値を事前条件に追加する。また、検証支援装置１００は、出力イベントが起こる前の出力アクターの出力値を事前条件に追加する。さらに、検証支援装置１００は、入出力アクター以外の事前条件を事前条件に追加する。
【００６２】
また、事後条件に関して、検証支援装置１００は、入力イベントが起きた後の入力アクターの入力値を事後条件に追加する。また、検証支援装置１００は、出力イベントが起きた後の出力アクターの出力値を事後条件に追加する。
【００６３】
図６で示すユースケースＵ＃１〜ユースケースＵ＃６は、入力アクター、入力イベント、入出力アクター以外の事前条件、出力アクター、および出力イベントを含まなくてもよいし、含んでもよい。入力アクター、入力イベント、入出力アクター以外の事前条件、出力アクター、および出力イベントは、図８にて後述するユースケースをグループ化するときに参照される情報である。したがって、検証支援装置１００は、ユースケースをグループ化する際には、ユースケースに、入力アクター、入力イベント、入出力アクター以外の事前条件、出力アクター、および出力イベントを含める。
【００６４】
なお、図６に示すユースケースの事前条件および事後条件は、ある値と一致するか否かの条件を示したが、たとえば、ある値以下であるといった、値の範囲を指定する条件でもよい。
【００６５】
図７〜図１０において、ユースケースの接続例の一例を示す。図７〜図１０において、初期状態は利用者により指定される。また、目的のユースケースは、利用者によりＵ＃６に指定されたものとする。
【００６６】
図７は、ユースケース検証順序の決定の一例における１段階目を示す説明図である。検証支援装置１００は、利用者が指定する初期状態を、前提条件７０１に設定する。前提条件７０１は、「内部電源状態＝＝Ａ＆＆ＩＮＰＵＴ１＝＝０＆＆ＩＮＰＵＴ２＝＝０＆＆ＩＮＰＵＴ３＝＝０＆＆ＯＵＴＰＵＴ１＝＝Ｈ＆＆ＯＵＴＰＵＴ２＝＝Ｈ＆＆ＯＵＴＰＵＴ３＝＝Ｈ＆＆ＯＵＴＰＵＴ４＝＝Ｌ＆＆ＯＵＴＰＵＴ５＝＝Ｌ」となる。
【００６７】
検証支援装置１００は、ユースケースＵ＃１〜ユースケースＵ＃６から、前提条件７０１を全て満たす事前条件を有するユースケースを検出する。図７の例では、前提条件７０１を全て満たす事前条件を有するユースケースは、ユースケースＵ＃１となる。検出したユースケースが１つとなるため、検証支援装置１００は、ユースケースＵ＃１をテストパターンｔｐの初期状態の次に実行するユースケースとして選択する。
【００６８】
ユースケースを選択した後、検証支援装置１００は、前提条件７０１を更新する。具体的に、検証支援装置１００は、選択したユースケースの事後条件で前提条件７０１を更新し、前提条件７０２とする。前提条件７０２は、前提条件７０１から比較して、ＩＮＰＵＴ１の値と、ＯＵＴＰＵＴ１の値とが更新される。図７〜図１０では、更新された値に、ハッチを付与して示す。
【００６９】
前提条件７０２は、「内部電源状態＝＝Ａ＆＆ＩＮＰＵＴ１＝＝１＆＆ＩＮＰＵＴ２＝＝０＆＆ＩＮＰＵＴ３＝＝０＆＆ＯＵＴＰＵＴ１＝＝Ｌ＆＆ＯＵＴＰＵＴ２＝＝Ｈ＆＆ＯＵＴＰＵＴ３＝＝Ｈ＆＆ＯＵＴＰＵＴ４＝＝Ｌ＆＆ＯＵＴＰＵＴ５＝＝Ｌ」となる。
【００７０】
図８は、ユースケース検証順序の決定の一例における２段階目を示す説明図である。検証支援装置１００は、ユースケースＵ＃２〜ユースケースＵ＃６から、前提条件７０２を全て満たす事前条件を有するユースケースを検出する。図８の例では、前提条件７０２を全て満たす事前条件を有するユースケースは、ユースケースＵ＃２とユースケースＵ＃３となる。
【００７１】
前提条件７０２を全て満たす事前条件を有する複数のユースケースがある場合、検証支援装置１００は、複数のユースケースが、入出力アクター以外の事前条件と入力イベントとが同一であり、出力イベントが異なるという条件を満たすか否かを判断する。前述の条件を満たす場合、複数のユースケースが同時に起こるものであるため、検証支援装置１００は、複数のユースケースをグループ化して、１つのユースケースとして扱う。
【００７２】
ここで、ユースケースＵ＃２とユースケースＵ＃３とは、入出力アクター以外の事前条件と入力イベントとが同一であり、出力イベントが異なるため、グループ化することができる。
【００７３】
なお、入出力アクター以外の事前条件と入力イベントとが同一であり、出力アクターが共通で出力イベントが異なるユースケースは、同時に起こると矛盾が発生するため、検証支援装置１００は、該当のユースケースをグループ化しない。
【００７４】
検証支援装置１００は、ユースケースＵ＃２とユースケースＵ＃３とをグループ化したユースケースＵｇ＃１を、テストパターンｔｐのユースケースＵ＃１の次に実行するユースケースとして選択する。ユースケースを選択した後、検証支援装置１００は、前提条件７０２を更新する。具体的に、検証支援装置１００は、選択したユースケースの事後条件で前提条件７０２を更新し、前提条件８０１とする。前提条件８０１は、前提条件７０２から比較して、ＩＮＰＵＴ２の値と、ＯＵＴＰＵＴ２の値と、ＯＵＴＰＵＴ３の値とが更新される。
【００７５】
前提条件８０１は、「内部電源状態＝＝Ａ＆＆ＩＮＰＵＴ１＝＝１＆＆ＩＮＰＵＴ２＝＝１＆＆ＩＮＰＵＴ３＝＝０＆＆ＯＵＴＰＵＴ１＝＝Ｌ＆＆ＯＵＴＰＵＴ２＝＝Ｌ＆＆ＯＵＴＰＵＴ３＝＝Ｌ＆＆ＯＵＴＰＵＴ４＝＝Ｌ＆＆ＯＵＴＰＵＴ５＝＝Ｌ」となる。
【００７６】
図９は、ユースケース検証順序の決定の一例における３段階目を示す説明図である。検証支援装置１００は、ユースケースＵ＃４〜ユースケースＵ＃６から、前提条件８０１を全て満たす事前条件を有するユースケースを検出する。図９の例では、前提条件８０１を全て満たす事前条件を有するユースケースは、ユースケースＵ＃４とユースケースＵ＃５となる。ここで、ユースケースＵ＃４とユースケースＵ＃５とは、入出力アクター以外の事前条件と入力イベントとが同一であり、出力イベントが異なるため、グループ化することができる。
【００７７】
検証支援装置１００は、ユースケースＵ＃４とユースケースＵ＃５とをグループ化したユースケースＵｇ＃２を、テストパターンｔｐのユースケースＵｇ＃１の次に実行するユースケースとして選択する。ユースケースを選択した後、検証支援装置１００は、前提条件８０１を更新する。具体的に、検証支援装置１００は、選択したユースケースの事後条件で前提条件８０１を更新し、前提条件９０１とする。前提条件９０１は、前提条件８０１から比較して、ＩＮＰＵＴ３の値と、ＯＵＴＰＵＴ４の値と、ＯＵＴＰＵＴ５の値とが更新される。
【００７８】
前提条件９０１は、「内部電源状態＝＝Ａ＆＆ＩＮＰＵＴ１＝＝１＆＆ＩＮＰＵＴ２＝＝１＆＆ＩＮＰＵＴ３＝＝１＆＆ＯＵＴＰＵＴ１＝＝Ｌ＆＆ＯＵＴＰＵＴ２＝＝Ｌ＆＆ＯＵＴＰＵＴ３＝＝Ｌ＆＆ＯＵＴＰＵＴ４＝＝Ｈ＆＆ＯＵＴＰＵＴ５＝＝Ｈ」となる。
【００７９】
図１０は、ユースケース検証順序の決定の一例における４段階目を示す説明図である。検証支援装置１００は、ユースケースＵ＃６から、前提条件９０１を全て満たす事前条件を有するユースケースを検出する。前提条件９０１を満たすユースケースはユースケースＵ＃６になる。検証支援装置１００は、ユースケースＵ＃６を、テストパターンｔｐのユースケースＵｇ＃２の次に実行するユースケースとして選択する。
【００８０】
ユースケースを選択した後、検証支援装置１００は、前提条件９０１を更新する。具体的に、検証支援装置１００は、選択したユースケースの事後条件で前提条件９０１を更新し、前提条件１００１とする。前提条件１００１は、前提条件９０１から比較して、内部電源状態の値が更新される。
【００８１】
前提条件１００１は、「内部電源状態＝＝Ｂ＆＆ＩＮＰＵＴ１＝＝１＆＆ＩＮＰＵＴ２＝＝１＆＆ＩＮＰＵＴ３＝＝１＆＆ＯＵＴＰＵＴ１＝＝Ｌ＆＆ＯＵＴＰＵＴ２＝＝Ｌ＆＆ＯＵＴＰＵＴ３＝＝Ｌ＆＆ＯＵＴＰＵＴ４＝＝Ｈ＆＆ＯＵＴＰＵＴ５＝＝Ｈ」となる。
【００８２】
ユースケースＵ＃６を選択することにより、目的のユースケースに到達したため、検証支援装置１００は、検証支援装置１００は、テストパターンを出力する。図１０の例では、検証支援装置１００は、“初期状態→Ｕ＃１→Ｕ＃２＆Ｕ＃３→Ｕ＃４＆Ｕ＃５→Ｕ＃６”を出力する。また、検証支援装置１００は、テストパターンと併せて、入力イベントの変更順序を出力してもよい。たとえば、図１０の例では、検証支援装置１００は、“入力端子ＩＮＰＵＴ１を０→１に変化させる”、“入力端子ＩＮＰＵＴ２を０→１に変化させる”、“入力端子ＩＮＰＵＴ３を０→１に変化させる”、という文字列を順に出力する。
【００８３】
次に、図１１において、ユースケースの検証順序の決定の他の例を示す。図１１において、初期状態は利用者により指定される。また、目的のユースケースは、利用者によりＵ＃６に指定されたものとする。
【００８４】
図１１は、ユースケース検証順序の決定の他の例を示す説明図である。図１１では、ユースケースＵ＃１〜ユースケースＵ＃８がある状態において、ユースケース検証順序の決定の他の例について説明する。ユースケースＵ＃１〜ユースケースＵ＃６については、図６で事前条件および事後条件を抽出したユースケースＵ＃１〜ユースケースＵ＃６と同一である。ユースケースＵ＃７と、ユースケースＵ＃８とについては、図１１の（Ａ）で示す通りである。
【００８５】
次に、図１１の（Ｂ）を用いて、ユースケースＵ＃１〜ユースケースＵ＃８の検証順序の決定例について説明する。初めに、検証支援装置１００は、初期状態と、全てのユースケースとをノードに設定する。図１１の例では、検証支援装置１００は、初期状態を、ノードｎＩｎｉに設定する。さらに、検証支援装置１００は、ユースケースＵ＃１〜ユースケースＵ＃８を、それぞれ、ノードｎＵ＃１〜ノードｎＵ＃８に設定する。
【００８６】
次に、検証支援装置１００は、初期状態のノードと、入力値および出力値の初期値と一致する事前条件を有するユースケースのノードと、をエッジで接続する。図１１の例では、検証支援装置１００は、ノードｎＩｎｉと、ノードｎＵ＃１とをエッジｅ１で接続する。また、このとき、初期値と一致する事前条件を有するユースケースが複数あれば、検証支援装置１００は、初期状態のノードと一致する事前条件を有する複数のユースケースのノードそれぞれをエッジで接続する。また、このとき、検証支援装置１００は、初期値と一致する事前条件を有する複数のユースケースに対して、ユースケースをグループ化してもよい。グループ化を行う条件は、図８に記述した。グループ化されたユースケースのノードは、１つのノードとして扱う。
【００８７】
続けて、検証支援装置１００は、エッジで接続したユースケースノードの事後条件と一致する事前条件を有するユースケースのノードと、をエッジで接続する。このとき、エッジで接続したユースケースノードの事後条件と一致する事前条件を有するユースケースが複数あれば、検証支援装置１００は、エッジで接続したユースケースのノードと複数のユースケースのノードそれぞれをエッジで接続する。検証支援装置１００は、目的のユースケースのノードに接続するまで、エッジでノードを接続することを繰り返す。
【００８８】
図１１の例では、検証支援装置１００は、ノードｎＵ＃１と、ノードｎＵ＃２とをエッジで接続する。さらに、検証支援装置１００は、ノードｎＵ＃１と、ノードｎＵ＃３とをエッジで接続する。
【００８９】
また、検証支援装置１００は、エッジで接続したユースケースノードの事後条件と一致する事前条件を有する複数のユースケースに対して、ユースケースをグループ化してもよい。グループ化されたユースケースのノードは、グループ化して１つのノードとして扱う。図１１の例では、検証支援装置１００は、ユースケースＵ＃２と、ユースケースＵ＃３とをグループ化し、ノードｎＵ＃２とノードｎＵ＃３とをグループ化して１つのノードｎＵｇ＃１として扱う。そして、検証支援装置１００は、ノードｎＵ＃１とノードｎＵｇ＃１とを、エッジｅ２で接続する。
【００９０】
同様に、検証支援装置１００は、ノードｎＵｇ＃１と、ノードｎＵ＃４とノードｎＵ＃５とをグループ化したノードｎＵｇ＃２とを、エッジｅ３で接続する。さらに、検証支援装置１００は、ノードｎＵｇ＃１と、ノードｎＵ＃７とを、エッジｅ４で接続する。さらに、検証支援装置１００は、ノードｎＵ＃７と、ノードｎＵ＃８とを、エッジｅ５で接続する。さらに、検証支援装置１００は、ノードｎＵ＃８と、ノードｎＵｇ＃２とを、エッジｅ６で接続する。さらに、検証支援装置１００は、ノードｎＵｇ＃２と、ノードｎＵ＃６を、エッジｅ７で接続する。
【００９１】
各ノードをエッジで接続した後、検証支援装置１００は、初期状態のノードｎＩｎｉをユースケースの検証順序が確定したことを示す確定状態に設定し、ノードｎＵ＃１〜ノードｎＵ＃８をユースケースの検証順序が確定していないことを示す未確定状態に設定する。各ノードの確定状態となった順序が、対応するユースケースの検証順序を表すことになる。検証支援装置１００は、確定状態のノードとエッジで接続されたノードを確定状態に設定していく。
【００９２】
図１１の（Ｂ）は、ノードｎＵｇ＃１が確定状態に設定された状態を示す。確定状態のノードとエッジで接続されたノードが複数ある場合、検証支援装置１００は、接続されたノードのコストを算出し、コストが最小となるノードを確定状態に設定する。ここで、ノードのコストは、目的のユースケースへの近さを示しており、具体的には、目的のユースケースの事前条件のうちの、接続されたノードの事後条件により満たされない条件の数となる。
【００９３】
たとえば、ノードｎＵｇ＃２のコストと、ノードｎＵ＃７のコストの算出例を示す。目的のユースケースとなるユースケースＵ＃６の事前条件は、１つ目の条件“内部電源モード＝＝Ａ”と、２つ目の条件“ＯＵＴＰＵＴ４＝＝Ｈ”と、３つ目の条件“ＯＵＴＰＵＴ５＝＝Ｈ”と、がある。ここで、ノードｎＵｇ＃２のコストは、ノードｎＵｇ＃２の事後条件により、２つ目の条件と３つ目の条件とが満たされることから、３−２＝１となる。一方、ノードｎＵ＃７のコストは、ノードｎＵ＃７の事後条件により、２つ目の条件が満たされることから、３−１＝２となる。したがって、検証支援装置１００は、コストが小さいノードｎＵｇ＃２を確定状態に設定する。
【００９４】
ノードｎＵｇ＃２を確定状態に設定した後、検証支援装置１００は、目的のユースケースのノードであるノードｎＵ＃６を確定状態に設定する。目的のユースケースに到達したため、検証支援装置１００は、ユースケースの検証順序として、初期状態→Ｕ＃１→Ｕ＃２＆Ｕ＃３→Ｕ＃４＆Ｕ＃５→Ｕ＃６を出力する。
【００９５】
次に、図１２〜図１８を用いて、検証支援装置１００が実行するフローチャートについて説明する。
【００９６】
図１２は、テストパターン生成処理手順の一例を示すフローチャートである。テストパターン生成処理は、テストパターンを生成する処理である。検証支援装置１００は、事前条件および事後条件抽出処理を実行する（ステップＳ１２０１）。事前条件および事後条件抽出処理の詳細は、図１３にて後述する。次に、検証支援装置１００は、抽出されたユースケース群から、目的のユースケースの指定を受け付ける（ステップＳ１２０２）。続けて、検証支援装置１００は、初期状態の指定を受け付ける（ステップＳ１２０３）。ステップＳ１２０２とステップＳ１２０３の処理について、検証支援装置１００は、検証支援装置１００の利用者によるキーボード２０８やキーボード２０８の操作結果から、目的のユースケースの指定や初期状態の指定を受け付ける。
【００９７】
次に、検証支援装置１００は、ユースケース検証順序の決定処理を実行する（ステップＳ１２０４）。ユースケース検証順序の決定処理の詳細として、図１４および図１５を用いて一つの例を示し、図１７および図１８を用いて他の例を示す。ステップＳ１２０４の処理終了後、検証支援装置１００は、テストパターン生成処理を終了する。テストパターン生成処理を実行することにより、検証支援装置１００は、ユースケースの検証順序を示すテストパターンを生成することができる。
【００９８】
図１３は、事前条件および事後条件抽出処理手順の一例を示すフローチャートである。事前条件および事後条件抽出処理は、単機能単位ユースケーステーブル４０２からユースケースの事前条件と事後条件とを抽出する処理である。
【００９９】
検証支援装置１００は、単機能単位ユースケーステーブル４０２の先頭のレコードを選択する（ステップＳ１３０１）。次に、検証支援装置１００は、選択したレコードから抽出したユースケース名と、空の事前条件と、空の事後条件とを含むユースケースを生成する（ステップＳ１３０２）。また、図１６に示すユースケースグループ化処理を実行する場合、検証支援装置１００は、生成したユースケースに、選択したレコードの入力アクター、入力イベント、入出力アクター以外の事前条件、出力アクター、および出力イベントを含める。
【０１００】
続けて、検証支援装置１００は、選択したレコードから抽出した入力イベントが起こる前の入力アクターの入力値を事前条件に追加する（ステップＳ１３０３）。次に、検証支援装置１００は、選択したレコードから抽出した出力イベントが起こる前の出力アクターの出力値を事前条件に追加する（ステップＳ１３０４）。続けて、検証支援装置１００は、選択したレコードから抽出した入出力アクター以外の事前条件を事前条件に追加する（ステップＳ１３０５）。
【０１０１】
次に、検証支援装置１００は、選択したレコードから抽出した入力イベントが起きた後の入力アクターの入力値を事後条件に追加する（ステップＳ１３０６）。続けて、検証支援装置１００は、選択したレコードから抽出した出力イベントが起きた後の出力アクターの出力値を事後条件に追加する（ステップＳ１３０７）。
【０１０２】
次に、検証支援装置１００は、単機能単位ユースケーステーブル４０２の全てのレコードを選択したか否かを判断する（ステップＳ１３０８）。選択していないレコードがある場合（ステップＳ１３０８：Ｎｏ）、検証支援装置１００は、次のレコードを選択する（ステップＳ１３０９）。そして、検証支援装置１００は、ステップＳ１３０２の処理に移行する。
【０１０３】
全てのレコードを選択した場合（ステップＳ１３０８：Ｙｅｓ）、検証支援装置１００は、事前条件および事後条件抽出処理を終了する。事前条件および事後条件抽出処理を実行することにより、検証支援装置１００は、ユースケースの事前条件と事後条件を抽出することができる。
【０１０４】
図１４は、ユースケース検証順序の決定処理手順の一例を示すフローチャート（その１）である。また、図１５は、ユースケース検証順序の決定処理手順の一例を示すフローチャート（その２）である。図１４および図１５で示すユースケース検証順序の決定処理は、ユースケースの検証順序を決定する処理である。
【０１０５】
検証支援装置１００は、初期状態を前提条件に設定する（ステップＳ１４０１）。次に、検証支援装置１００は、選択されていないユースケース群のうちの、前提条件が全ての事前条件を満たすユースケース群を検出する（ステップＳ１４０２）。続けて、検証支援装置１００は、ユースケースグループ化処理を実行する（ステップＳ１４０３）。ユースケースグループ化処理は、図１６にて後述する。
【０１０６】
ステップＳ１４０３、または図１５に示すステップＳ１５０３の処理終了後、検証支援装置１００は、検出したユースケースがあるか否かを判断する（ステップＳ１４０４）。検出したユースケースがない場合（ステップＳ１４０４：Ｎｏ）、検証支援装置１００は、図１５に示すステップＳ１５０１の処理に移行する。
【０１０７】
検出したユースケースがある場合（ステップＳ１４０４：Ｙｅｓ）、検証支援装置１００は、テストパターンの最後尾で検証するユースケースがユースケース候補か否かを判断する（ステップＳ１４０５）。ユースケース候補は、後述するステップＳ１４０９の処理にて設定する。テストパターンの最後尾で検証するユースケースがユースケース候補である場合（ステップＳ１４０５：Ｙｅｓ）、検証支援装置１００は、検証支援装置１００は、ユースケース候補を、テストパターンの最後尾で検証するユースケースとして選択する（ステップＳ１４０６）。
【０１０８】
ステップＳ１４０６の処理終了後、またはテストパターンの最後尾で検証するユースケースがユースケース候補でない場合（ステップＳ１４０５：Ｎｏ）、検証支援装置１００は、検出したユースケースの個数が次のいずれに一致するかを判断する（ステップＳ１４０７）。検出したユースケースの個数が１つである場合（ステップＳ１４０７：１つ）、検証支援装置１００は、検出したユースケースを、テストパターン内の最後尾で検証するユースケースの次に検証するユースケースとして選択する（ステップＳ１４０８）。
【０１０９】
一方、検出したユースケースの個数が複数である場合（ステップＳ１４０７：複数）、検証支援装置１００は、検出したユースケースのうちのいずれかを、テストパターンの最後尾で検証するユースケースの次に検証するユースケース候補として選択する（ステップＳ１４０９）。
【０１１０】
ステップＳ１４０８、またはステップＳ１４０９の実行終了後、検証支援装置１００は、選択したユースケースの事後条件で前提条件を更新する（ステップＳ１４１０）。次に、検証支援装置１００は、選択したユースケースが目的のユースケースか否かを判断する（ステップＳ１４１１）。選択したユースケースが目的のユースケースでない場合（ステップＳ１４１１：Ｎｏ）、検証支援装置１００は、ステップＳ１４０２の処理に移行する。
【０１１１】
選択したユースケースが目的のユースケースである場合（ステップＳ１４１１：Ｙｅｓ）、検証支援装置１００は、検証支援装置１００は、入力イベントの状態遷移と、テストパターンとを出力する（ステップＳ１４１２）。ステップＳ１４１２の処理終了後、検証支援装置１００は、ユースケース検証順序の決定処理を終了する。
【０１１２】
図１５において、検証支援装置１００は、全てのユースケースを選択したか否かを判断する（ステップＳ１５０１）。まだ選択していないユースケースがある場合（ステップＳ１５０１：Ｎｏ）、検証支援装置１００は、テストパターンの最後尾で検証するユースケース候補を解除する（ステップＳ１５０２）。次に、検証支援装置１００は、前提条件を、ユースケース候補が解除された状態に更新する（ステップＳ１５０３）。
【０１１３】
ここで、ステップＳ１５０２とステップＳ１５０３の処理の具体例を示す。まず、テストパターンの最後尾のユースケースがユースケースＵ＃１であり、ステップＳ１４０２の処理にて、検証支援装置１００が、ユースケースＵ＃２とユースケースＵ＃３を検出したとする。そして、ステップＳ１４０９の処理にて、検証支援装置１００が、ユースケースＵ＃２を、テストパターンの最後尾で検証するユースケースＵ＃１の次に検証するユースケース候補として選択したとする。続けて、検証支援装置１００は、ステップＳ１４１１の処理にて、Ｎｏのルートを実行し、再びステップＳ１４０２の処理を実行する。ステップＳ１４０２の処理を実行した結果、ユースケースを検出しなかった場合、検証支援装置１００は、ステップＳ１４０４の処理にて、Ｎｏのルートを実行する。
【０１１４】
続けて、検証支援装置１００は、ユースケースＵ＃２が選択されていないため、ステップＳ１５０１の処理にて、Ｎｏのルートを実行し、ステップＳ１５０２の処理にて、ユースケースＵ＃２を解除する。次に、検証支援装置１００は、ステップＳ１５０３の処理にて、前提条件を、ユースケースＵ＃２を解除した状態、すなわち、前提条件がユースケースＵ＃１の事後状態で更新された状態に更新する。
【０１１５】
ステップＳ１５０３の処理実行後、検証支援装置１００は、ステップＳ１４０４の処理に移行する。一方、全てのユースケースを選択した場合（ステップＳ１５０１：Ｙｅｓ）、目的のユースケースに到達しなかったため、検証支援装置１００は、検証対象１０１の仕様が異常である旨を出力する（ステップＳ１５０４）。ステップＳ１５０４の処理終了後、検証支援装置１００は、ユースケース検証順序の決定処理を終了する。ユースケース検証順序の決定処理を実行することにより、検証支援装置１００は、ユースケースの効率的な検証順序を提供することができる。
【０１１６】
図１６は、ユースケースグループ化処理手順の一例を示すフローチャートである。ユースケースグループ化処理は、ステップＳ１４０２にて検出したユースケースを対象にてグループ化する処理である。
【０１１７】
検証支援装置１００は、検出したユースケースのうちの、入力アクターの事前条件、事後条件、および入出力アクター以外の事前条件が同一のユースケースをグループ化する（ステップＳ１６０１）。次に、検証支援装置１００は、グループ化したユースケースの出力アクターが全て異なるか否かを判断する（ステップＳ１６０２）。グループ化したユースケースの出力アクターが同一のものがある場合（ステップＳ１６０２：Ｎｏ）、検証支援装置１００は、出力アクターが同一のユースケースをグループから除外する（ステップＳ１６０３）。
【０１１８】
ステップＳ１６０３の処理終了後、またはグループ化したユースケースの出力アクターが全て異なる場合（ステップＳ１６０２：Ｙｅｓ）、検証支援装置１００は、ユースケースグループ化処理を終了する。ユースケースグループ化処理を実行することにより、検証支援装置１００は、複数のユースケースをグループ化することができる。
【０１１９】
図１７は、ユースケース検証順序の決定処理手順の他の例を示すフローチャート（その１）である。また、図１８は、ユースケース検証順序の決定処理手順の他の例を示すフローチャート（その２）である。図１７および図１８で示すユースケース検証順序の決定処理は、ダイクストラ法を利用して、ユースケースの検証順序を決定する処理である。
【０１２０】
検証支援装置１００は、初期状態と、全てのユースケースとをノードに設定する（ステップＳ１７０１）。次に、検証支援装置１００は、初期状態と、ユースケースの事前条件と事後条件とから、ノード同士をエッジで接続する（ステップＳ１７０２）。具体的な接続の方法は、図１１にて示した。
【０１２１】
ステップＳ１７０２の処理終了後、検証支援装置１００は、初期状態のノードを確定状態に設定するとともに、各ユースケースのノードを未確定状態に設定する（ステップＳ１７０３）。次に、検証支援装置１００は、初期状態のノードのコストを０に設定する（ステップＳ１７０４）。続けて、検証支援装置１００は、目的のユースケースの事前条件と、各ユースケースの事後条件とから、各ユースケースのノードのコストを算出する（ステップＳ１７０５）。各ユースケースのノードのコストの算出例については、図１１にて説明した。
【０１２２】
ステップＳ１７０５の処理終了後、検証支援装置１００は、確定状態のノードにエッジで接続された未確定状態のノードに目的のユースケースのノードが含まれるか否かを判断する（ステップＳ１８０１）。確定状態のノードにエッジで接続された未確定状態のノードに目的のユースケースのノードが含まれない場合（ステップＳ１８０１：Ｎｏ）、検証支援装置１００は、確定状態のノードにエッジで接続された未確定状態のノードのうち、コストが最小のノードを選択する（ステップＳ１８０２）。続けて、検証支援装置１００は、選択したノードを確定状態に設定する（ステップＳ１８０３）。続けて、検証支援装置１００は、目的のユースケースの事前条件と、各ユースケースの事後条件とから、新たに確定状態に設定したノードにエッジで接続されたノードのコストを算出する（ステップＳ１８０４）。
【０１２３】
次に、検証支援装置１００は、未確定状態のノードがあるか否かを判断する（ステップＳ１８０５）。未確定状態のノードがある場合（ステップＳ１８０５：Ｙｅｓ）、検証支援装置１００は、続けて、未確定状態のノードがある状態が所定回数続いたか否かを判断する（ステップＳ１８０６）。所定回数は、検証支援装置１００の開発者や利用者により指定される値である。たとえば、ユースケースの数が多い場合、所定回数は大きい値が指定され、ユースケースの数が少ない場合、所定回数は小さい値が指定される。
【０１２４】
未確定状態のノードがある状態が所定回数続いていない場合（ステップＳ１８０６：Ｎｏ）、検証支援装置１００は、ステップＳ１８０１の処理に移行する。未確定状態のノードがある状態が所定回数続いた場合（ステップＳ１８０６：Ｙｅｓ）、目的のユースケースのノードに到達しなかったことになるため、検証支援装置１００は、検証対象１０１の仕様が異常である旨を出力する（ステップＳ１８０７）。ステップＳ１８０７の処理終了後、検証支援装置１００は、ユースケース検証順序の決定処理を終了する。
【０１２５】
確定状態のノードにエッジで接続された未確定状態のノードに目的のユースケースのノードが含まれる場合（ステップＳ１８０１：Ｙｅｓ）、検証支援装置１００は、目的のユースケースのノードを選択する（ステップＳ１８０８）。次に、検証支援装置１００は、選択したノードを確定状態に設定する（ステップＳ１８０９）。
【０１２６】
ステップＳ１８０９の処理終了後、または、全てのノードが確定状態である場合（ステップＳ１８０５：Ｎｏ）、検証支援装置１００は、確定状態に設定したノードの選択順序をテストパターンに設定する（ステップＳ１８１０）。続けて、検証支援装置１００は、入力イベントの状態遷移と、テストパターンとを出力する（ステップＳ１８１１）。ステップＳ１８１１の処理終了後、検証支援装置１００は、ユースケース検証順序の決定処理を終了する。
【０１２７】
ユースケース検証順序の決定処理を実行することにより、検証支援装置１００は、ユースケースの検証順序を示すテストパターンを生成することができる。図１７および図１８が示すユースケース検証順序の決定処理では、ダイクストラ法を採用したが、Ａ＊アルゴリズムを採用してもよい。
【０１２８】
さらに、図１７および図１８が示すユースケース検証順序の決定処理を実行することにより、検証支援装置１００は、図１４および図１５が示すユースケース検証順序の決定処理より、検証するユースケースが少ないテストパターンを生成することができる。
【０１２９】
また、本実施の形態にかかるユースケース検証順序の決定処理では、テストパターンを生成し終えた後に、未選択のユースケースがある場合がある。このとき、検証支援装置１００は、未選択のユースケースに対して、ユースケース検証順序の決定処理を実行してもよい。
【０１３０】
なお、本実施のユースケース検証順序の決定処理は、初期状態から開始して目的のユースケースまでの検証順序を、ユースケースを選択することにより決定した。逆に、検証支援装置１００は、目的のユースケースから開始して初期状態までユースケースを選択していき、選択順序の逆を検証順序としてもよい。
【０１３１】
以上説明したように、検証支援装置１００によれば、検証対象の機能を表すユースケース間の事前条件と事後条件とのマッチングを行って連続実行するユースケースを選択する。これにより、検証支援装置１００は、次に検証するユースケースに合わせて検証対象の状態を変更することになるため、検証作業の手間を削減し、検証作業の効率化を図ることができる。
【０１３２】
また、検証支援装置１００によれば、ユースケース群から第１のユースケースの事後条件と一致する事前条件を有する第２のユースケースを選択してもよい。これにより、検証支援装置１００は、あるユースケースの機能を検証した後、入力値および出力値を変えずに、そのまま次のユースケースの機能を検証することができるため、検証者は効率的に検証作業を行うことができる。
【０１３３】
また、検証支援装置１００によれば、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあれば、複数のユースケースから第１のユースケースの次に検証するユースケース候補を選択してもよい。そして、検証支援装置１００は、ユースケース候補の事後条件と一致する事前条件を有するユースケースがあると判断した場合、ユースケース候補を前記第２のユースケースとして選択してもよい。これにより、検証支援装置１００は、ユースケースを多く検証することができるテストパターンを生成することができる。
【０１３４】
また、検証支援装置１００によれば、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあれば、複数のユースケースから第１のユースケースの次に検証するユースケース候補を選択してもよい。そして、検証支援装置１００は、ユースケース候補の事後条件と一致する事前条件を有するユースケースがないと判断した場合、複数のユースケースから選択されていない未選択のユースケースをユースケース候補として選択してもよい。これにより、検証支援装置１００は、ユースケース候補の事後条件と一致する事前条件を有するユースケースがないこと判断しない場合に比べ、ユースケースをより多く検証することができるテストパターンを生成する可能性が高くなる。
【０１３５】
また、検証支援装置１００によれば、第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、ユースケース群から選択されたユースケースの選択順序を示す情報となるテストパターンを出力してもよい。これにより、検証者は、出力されたテストパターンに沿って検証作業を行うことにより、効率的に検証作業を行うことができる。
【０１３６】
また、検証支援装置１００によれば、第１のユースケースの事後条件と一致する事前条件を有するユースケースがなく、かつ選択されたユースケースに目的のユースケースが含まれなければ検証対象１０１の仕様が異常であることを示す情報を出力してもよい。この場合、目的のユースケースを実行する状態になることがないということになるため、検証者は、検証対象１０１の仕様に異常があることを知ることができる。
【０１３７】
また、検証支援装置１００によれば、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがある場合に、複数のユースケースに特定のユースケースが含まれれば、特定のユースケースを前記第２のユースケースとして選択してもよい。これにより、検証支援装置１００は、目的のユースケースに到達するまでに検証するユースケースの数が少ないテストパターンを生成することができる。検証するユースケースの数が少ないテストパターンの使用例としては、たとえば、検証作業にかけられる時間が短く、最低限の検証を行いたい場合である。また、検証対象１０１が複数あれば、検証するユースケースの数が少ないテストパターンを複数用意して、それぞれの検証対象１０１に対して、それぞれのテストパターンを並列に行うことにより、検証作業にかかる時間を短くすることができる。
【０１３８】
また、第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあり、複数のユースケースに特定のユースケースが含まれなかったとする。このとき、検証支援装置１００によれば、複数のユースケースの各々の事後条件と特定のユースケースの事前条件とに基づいて、複数のユースケースから前記第２のユースケースを選択してもよい。これにより、検証支援装置１００は、目的のユースケースに到達するまでに検証するユースケースの数が少ないテストパターンを生成することができる。
【０１３９】
また、検証支援装置１００によれば、入力値および出力値の初期値と、ユースケース群の各々のユースケースの事前条件とに基づいて、ユースケース群から最初に検証するユースケースを選択してもよい。これにより、検証支援装置１００は、最初に検証するユースケースを検証者が指定しなくてよくなり、検証作業の効率化を図ることができる。
【０１４０】
また、検証支援装置１００は、仕様から自動でテストパターンを生成することができるため、検証作業の工数を削減することができる。また、検証支援装置１００は、仕様から自動でテストパターンを生成するため、検証漏れや検証ミスをなくすことができる。さらに、検証支援装置１００は、テストパターンを生成した後、選択しなかったユースケースにてテストパターンを生成することを繰り返すことにより、最終的には全てのユースケースを選択することにより、テストの網羅率を向上させることができる。
【０１４１】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４３】
（付記１）コンピュータに、
検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する、
処理を実行させることを特徴とする検証支援プログラム。
【０１４４】
（付記２）前記第２のユースケースを選択する処理は、
前記ユースケース群から前記第１のユースケースの事後条件と一致する事前条件を有する第２のユースケースを選択する、
ことを特徴とする付記１に記載の検証支援プログラム。
【０１４５】
（付記３）前記コンピュータに、
前記ユースケース群から選択されていない未選択のユースケースのうちに前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがあるか否かを判断し、
前記第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断した場合、前記複数のユースケースから前記第１のユースケースの次に検証するユースケース候補を選択し、
前記ユースケース群から選択されていない未選択のユースケースのうちに前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがあるか否かを判断する、処理を実行させ、
前記第２のユースケースを選択する処理は、
前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがあると判断した場合、前記ユースケース候補を前記第２のユースケースとして選択することを特徴とする付記２に記載の検証支援プログラム。
【０１４６】
（付記４）前記コンピュータに、
前記ユースケース候補の事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記複数のユースケースから選択されていない未選択のユースケースを前記ユースケース候補として選択する、
処理を実行させることを特徴とする付記３に記載の検証支援プログラム。
【０１４７】
（付記５）前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記ユースケース群から選択されたユースケースの選択順序を示す情報を出力する、
処理を実行させることを特徴とする付記３または４に記載の検証支援プログラム。
【０１４８】
（付記６）前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有するユースケースがないと判断した場合、前記ユースケース群から選択されたユースケースに特定のユースケースが含まれるか否かを判断し、
前記ユースケース群から選択されたユースケースに前記特定のユースケースが含まれないと判断した場合、前記検証対象の仕様が異常であることを示す情報を出力する、
処理を実行させることを特徴とする付記３〜５のいずれか一つに記載の検証支援プログラム。
【０１４９】
（付記７）前記コンピュータに、
前記第１のユースケースの事後条件と一致する事前条件を有する複数のユースケースがあると判断した場合、前記複数のユースケースに特定のユースケースが含まれるか否かを判断する、処理を実行させ、
前記第２のユースケースを選択する処理は、
前記複数のユースケースに前記特定のユースケースが含まれると判断した場合、前記特定のユースケースを前記第２のユースケースとして選択することを特徴とする付記３〜６のいずれか一つに記載の検証支援プログラム。
【０１５０】
（付記８）前記第２のユースケースを選択する処理は、
前記複数のユースケースに前記特定のユースケースが含まれないと判断した場合、前記複数のユースケースの各々の事後条件と特定のユースケースの事前条件とに基づいて、前記複数のユースケースから前記第２のユースケースを選択することを特徴とする付記７に記載の検証支援プログラム。
【０１５１】
（付記９）前記コンピュータに、
前記入力値および前記出力値の初期値と、前記ユースケース群の各々のユースケースの事前条件とに基づいて、前記ユースケース群から最初に検証するユースケースを選択する、
処理を実行させることを特徴とする付記１〜８のいずれか一つに記載の検証支援プログラム。
【０１５２】
（付記１０）検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する、
処理を実行させる検証支援プログラムを記録したことを特徴とする記録媒体。
【０１５３】
（付記１１）検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部と、
前記記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する選択部と、
を有することを特徴とする検証支援装置。
【０１５４】
（付記１２）検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部と、
前記記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する選択部と、
を有するコンピュータを含むことを特徴とする検証支援装置。
【０１５５】
（付記１３）コンピュータが、
検証対象の機能を表すユースケースごとに、前記ユースケースが表す機能の実行前に前記検証対象に入力する入力値および前記検証対象が出力する出力値が満たすべき事前条件と、前記ユースケースが表す機能の実行後に前記入力値および前記出力値が満たすべき事後条件と、を記憶する記憶部を参照して、ユースケース群から選択された第１のユースケースの事後条件と、前記第１のユースケースとは異なるユースケースの事前条件とに基づいて、前記ユースケース群から前記第１のユースケースの次に検証する第２のユースケースを選択する、
処理を実行することを特徴とする検証支援方法。
【符号の説明】
【０１５６】
Ｕ  ユースケース
ｐｒｅｃ  事前条件
ｐｏｓｔｃ  事後条件
１００  検証支援装置
１０１  検証対象
５０１  記憶部
５０２  判断部
５０３  ユースケース候補選択部
５０４  選択部
５０５  出力部
【図１】
2014206793.tif 000003
【図２】
2014206793.tif 000004
【図３】
2014206793.tif 000005
【図４】
2014206793.tif 000006
【図５】
2014206793.tif 000007
【図６】
2014206793.tif 000008
【図７】
2014206793.tif 000009
【図８】
2014206793.tif 000010
【図９】
2014206793.tif 000011
【図１０】
2014206793.tif 000012
【図１１】
2014206793.tif 000013
【図１２】
2014206793.tif 000014
【図１３】
2014206793.tif 000015
【図１４】
2014206793.tif 000016
【図１５】
2014206793.tif 000017
【図１６】
2014206793.tif 000018
【図１７】
2014206793.tif 000019
【図１８】
2014206793.tif 000020