(57)【特許請求の範囲】
【請求項１】
検査の対象であるプログラムの実行文の実行回数をそれぞれ表す複数の探索深度のうち、前記プログラムの初期状態から前記プログラムの検査仕様を満たすことを示す仕様充足状態へ状態を遷移するために要する最短探索深度を状態遷移モデルを用いて算出する最短探索深度算出部と、
前記プログラムの検査にあたって、前記複数の探索深度の各々について前記初期状態から前記仕様充足状態へ状態を遷移することが可能であるかの検査をプロパティ検証により実行し、前記複数の探索深度の各々についての前記検査に要した時間である深度別検査時間を測定する到達可能性検査部と、
前記到達可能性検査部が前記複数の探索深度の各々についての前記検査を完了する毎に、前記最短探索深度算出部が算出した前記最短探索深度と前記到達可能性検査部が測定した前記深度別検査時間とを用いて、前記最短探索深度まで前記検査を完了するために要する予想時間を仕様到達予想時間として算出する予想検査時間算出部と
を備え、
前記状態遷移モデルは、
前記プログラムがとりうる複数の状態を備え、前記初期状態から前記仕様充足状態までの経路上に前記複数の状態があるというコントロールフローグラフで表わされた状態遷移モデルであって、前記複数の状態に加え、前記初期状態から前記仕様充足状態までの遷移の途中で前記経路を分岐させる分岐条件を備え、
前記初期状態から前記仕様充足状態までの間には、前記分岐条件があるために複数の経路が存在し、
前記最短探索深度算出部は、
前記状態遷移モデルを前記分岐条件を無視した有向グラフとして扱うことにより、前記複数の経路の中から前記プログラムの前記初期状態から前記仕様充足状態までの最短経路を前記プログラムの前記実行回数が最小となる前記最短探索深度として求め、
前記予想検査時間算出部は、
前記到達可能性検査部が前記複数の探索深度のうち探索深度ｎについての前記検査を完了したときに、次の探索深度ｎ＋１から前記最短探索深度までの前記検査に要する予想時間を前記仕様到達予想時間として算出し、
前記仕様到達予想時間の算出にあたって、前記到達可能性検査部が前記探索深度ｎについての前記検査を完了したときに、当該検査から前記探索深度ｎ＋１についての前記検査が完了するまでに要する予想深度別検査時間を、前記探索深度ｎについての前記深度別検査時間と前記探索深度ｎよりも前の探索深度ｎ−１についての前記深度別検査時間との差分から算出し、
前記探索深度ｎ＋１から前記最短探索深度までの各々についての前記予想深度別検査時間を合計することにより前記仕様到達予想時間を算出し、
前記到達可能性検査部は、
前記探索深度ｎについての前記検査を完了したときに、前記仕様到達予想時間が前記プログラムの前記検査に対する検査制限時間のうち残りの時間である残検査制限時間を超過する場合には、前記プログラムの前記検査を途中で終了する
検査時間制御装置。
【請求項２】
請求項１に記載の検査時間制御装置であって、
前記予想検査時間算出部は、
これから前記検査が行われるべき探索深度ｘについての前記予想深度別検査時間をｇ（ｘ）、前記探索深度ｎについての前記深度別検査時間をｆ（ｎ）、前記探索深度ｎ−１についての前記深度別検査時間をｆ（ｎ−１）と表すとき、
ｇ（ｘ）＝｛ｆ（ｎ）−ｆ（ｎ−１）｝×（ｘ−ｎ）＋ｆ（ｎ）
で表される式を用いて、前記探索深度ｘについての前記予想深度別検査時間ｇ（ｘ）を算出する
検査時間制御装置。
【請求項３】
請求項１または請求項２に記載の検査時間制御装置であって、
前記予想検査時間算出部は、
前記到達可能性検査部が前記探索深度ｎについての前記検査を完了したときに、最初の探索深度０から前記探索深度ｎまでの各々についての前記深度別検査時間を合計した時間を、前記検査制限時間から減算することによって前記残検査制限時間を算出する
検査時間制御装置。
【請求項４】
請求項１から請求項３までのいずれかに記載の検査時間制御装置であって、
前記プログラムと前記検査仕様から前記状態遷移モデルを作成する状態遷移モデル作成部をさらに備える
検査時間制御装置。
【請求項５】
請求項１から請求項４のいずれかに記載の検査時間制御装置であって、
前記状態遷移モデルを保存している記憶装置をさらに備え、
前記最短探索深度算出部は、
前記最短探索深度を前記記憶装置から読み出した前記状態遷移モデルを用いて算出し、算出した前記最短探索深度を前記記憶装置に保存し、
前記到達可能性検査部は、
前記探索深度ｎ−１についての前記検査を完了したときに測定した前記探索深度ｎ−１についての前記深度別検査時間と、前記探索深度ｎについての前記検査を完了したときに測定した前記探索深度ｎについての前記深度別検査時間とを前記記憶装置に保存し、
前記予想検査時間算出部は、
前記最短探索深度算出部によって前記記憶装置に保存された前記最短探索深度と、前記到達可能性検査部によって前記記憶装置にそれぞれ保存された前記探索深度ｎについての前記深度別検査時間および前記探索深度ｎ−１についての前記深度別検査時間とを用いて前記仕様到達予想時間を算出する
検査時間制御装置。
【請求項６】
検査時間制御装置によって実行される検査時間制御方法であって、
前記検査時間制御装置は、
最短探索深度算出部と、
到達可能性検査部と、
予想検査時間算出部と
を備え、
当該検査時間制御方法は、
検査の対象であるプログラムの実行文の実行回数をそれぞれ表す複数の探索深度のうち、前記プログラムの初期状態から前記プログラムの検査仕様を満たすことを示す仕様充足状態へ状態を遷移するために要する最短探索深度を前記最短探索深度算出部が状態遷移モデルを用いて算出する最短探索深度算出ステップと、
前記プログラムの検査にあたって、前記複数の探索深度の各々について前記初期状態から前記仕様充足状態へ状態を遷移することが可能であるかの検査を前記到達可能性検査部がプロパティ検証により実行する検査実行ステップと、
前記複数の探索深度の各々についての前記検査に要した時間である深度別検査時間を前記到達可能性検査部が測定する深度別検査時間測定ステップと、
前記検査実行ステップで前記到達可能性検査部が前記複数の探索深度の各々についての前記検査を完了する毎に、前記最短探索深度算出ステップで前記最短探索深度算出部が算出した前記最短探索深度と前記深度別検査時間測定ステップで前記到達可能性検査部が測定した前記深度別検査時間とを用いて、前記最短探索深度まで前記検査を完了するために要する予想時間を仕様到達予想時間として前記予想検査時間算出部が算出する予想検査時間算出ステップと
前記検査実行ステップで前記仕様到達予想時間が前記プログラムの前記検査に対する検査制限時間のうち残りの時間である残検査制限時間を超過する場合には、前記到達可能性検査部が前記プログラムの前記検査を途中で終了する検査終了ステップと
を備え、
前記状態遷移モデルは、
前記プログラムがとりうる複数の状態を備え、前記初期状態から前記仕様充足状態までの経路上に前記複数の状態があるというコントロールフローグラフで表わされた状態遷移モデルであって、前記複数の状態に加え、前記初期状態から前記仕様充足状態までの遷移の途中で前記経路を分岐させる分岐条件を備え、
前記初期状態から前記仕様充足状態までの間には、前記分岐条件があるために複数の経路が存在し、
前記最短探索深度算出ステップで前記最短探索深度算出部は、
前記状態遷移モデルを前記分岐条件を無視した有向グラフとして扱うことにより、前記複数の経路の中から前記プログラムの前記初期状態から前記仕様充足状態までの最短経路を前記プログラムの前記実行回数が最小となる前記最短探索深度として求め、
前記予想検査時間算出ステップで前記予想検査時間算出部は、
前記検査実行ステップで前記到達可能性検査部が前記複数の探索深度のうち探索深度ｎについての前記検査を完了したときに、次の探索深度ｎ＋１から前記最短探索深度までの前記検査に要する予想時間を前記仕様到達予想時間として算出し、
前記仕様到達予想時間の算出にあたって、前記検査実行ステップで前記到達可能性検査部が前記探索深度ｎについての前記検査を完了したときに、当該検査から前記探索深度ｎ＋１についての前記検査が完了するまでに要する予想深度別検査時間を、前記探索深度ｎについての前記深度別検査時間と前記探索深度ｎよりも前の探索深度ｎ−１についての前記深度別検査時間との差分から算出し、
前記探索深度ｎ＋１から前記最短探索深度までの各々についての前記予想深度別検査時間を合計することにより前記仕様到達予想時間を算出し、
前記検査終了ステップで前記到達可能性検査部は、
前記探索深度ｎについての前記検査を完了したときに、前記仕様到達予想時間が前記残検査制限時間を超過する場合には、前記プログラムの前記検査を途中で終了する
検査時間制御方法。
【請求項７】
請求項６に記載の検査時間制御方法であって、
前記予想検査時間算出ステップで前記予想検査時間算出部は、
これから前記検査が行われるべき探索深度ｘについての前記予想深度別検査時間をｇ（ｘ）、前記探索深度ｎについての前記深度別検査時間をｆ（ｎ）、前記探索深度ｎ−１についての前記深度別検査時間をｆ（ｎ−１）と表すとき、
ｇ（ｘ）＝｛ｆ（ｎ）−ｆ（ｎ−１）｝×（ｘ−ｎ）＋ｆ（ｎ）
で表される式を用いて、前記探索深度ｘについての前記予想深度別検査時間ｇ（ｘ）を算出する
検査時間制御方法。
【請求項８】
請求項６または請求項７に記載の検査時間制御方法であって、
前記検査終了ステップで前記予想検査時間算出部は、
前記検査実行ステップで前記到達可能性検査部が前記探索深度ｎについての前記検査を完了したときに、最初の探索深度０から前記探索深度ｎまでの各々についての前記深度別検査時間を合計した時間を、前記検査制限時間から減算することによって前記残検査制限時間を算出する
検査時間制御方法。
【請求項９】
請求項６から請求項８までのいずれかに記載の検査時間制御方法であって、
前記検査時間制御装置は、
状態遷移モデル作成部を更に備え、
前記最短探索深度算出ステップで前記状態遷移モデル作成部は、
前記プログラムと前記検査仕様から前記状態遷移モデルを作成する
検査時間制御方法。
【請求項１０】
請求項６から請求項９のいずれかに記載の検査時間制御方法であって、
前記検査時間制御装置は、
前記状態遷移モデルを保存している記憶装置をさらに備え、
前記最短探索深度算出ステップで前記最短探索深度算出部は、
前記最短探索深度を前記記憶装置から読み出した前記状態遷移モデルを用いて算出し、
算出した前記最短探索深度を前記記憶装置に保存し、
前記深度別検査時間測定ステップで前記到達可能性検査部は、
前記探索深度ｎ−１についての検査を完了したときに測定した前記探索深度ｎ−１についての前記深度別検査時間を前記記憶装置に保存し、
前記探索深度ｎについての検査を完了したときに測定した前記探索深度ｎについての前記深度別検査時間を前記記憶装置に保存し、
前記予想検査時間算出ステップで前記予想検査時間算出部は、
前記最短探索深度算出ステップで前記記憶装置に保存された前記最短探索深度と、前記深度別検査時間測定ステップで前記記憶装置にそれぞれ保存された前記探索深度ｎについての前記深度別検査時間および前記探索深度ｎ−１についての前記深度別検査時間とを用いて前記仕様到達予想時間を算出する
検査時間制御方法。
【請求項１１】
処理部を備えるコンピュータに実行させるコンピュータプログラムであって、
前記処理部は、
最短探索深度算出部と、
到達可能性検査部と、
予想検査時間算出部と
を備え、
当該コンピュータプログラムは、
検査の対象であるプログラムの実行文の実行回数をそれぞれ表す複数の探索深度のうち、前記プログラムの初期状態から前記プログラムの検査仕様を満たすことを示す仕様充足状態へ状態を遷移するために要する最短探索深度を前記最短探索深度算出部に状態遷移モデルを用いて算出させる最短探索深度算出ステップと、
前記プログラムの検査にあたって、前記複数の探索深度の各々について前記初期状態から前記仕様充足状態へ状態を遷移することが可能であるかの検査をプロパティ検証により前記到達可能性検査部に実行させる検査実行ステップと、
前記複数の探索深度の各々についての前記検査に要した時間である深度別検査時間を前記到達可能性検査部に測定させる深度別検査時間測定ステップと、
前記検査実行ステップで前記到達可能性検査部が前記複数の探索深度の各々についての前記検査を完了する毎に、前記最短探索深度算出ステップで前記最短探索深度算出部が算出した前記最短探索深度と前記深度別検査時間測定ステップで前記到達可能性検査部が測定した前記深度別検査時間とを用いて、前記最短探索深度まで前記検査を完了するために要する予想時間を仕様到達予想時間として前記予想検査時間算出部に算出させる予想検査時間算出ステップと
前記検査実行ステップで前記仕様到達予想時間が前記プログラムの前記検査に対する検査制限時間のうち残りの時間である残検査制限時間を超過する場合には、前記到達可能性検査部に前記プログラムの前記検査を途中で終了させる検査終了ステップと
を備え、
前記状態遷移モデルは、
前記プログラムがとりうる複数の状態を備え、前記初期状態から前記仕様充足状態までの経路上に前記複数の状態があるというコントロールフローグラフで表わされた状態遷移モデルであって、前記複数の状態に加え、前記初期状態から前記仕様充足状態までの遷移の途中で前記経路を分岐させる分岐条件を備え、
前記初期状態から前記仕様充足状態までの間には、前記分岐条件があるために複数の経路が存在し、
前記最短探索深度算出ステップでは前記最短探索深度算出部に、
前記状態遷移モデルを前記分岐条件を無視した有向グラフとして扱うことにより、前記複数の経路の中から前記プログラムの前記初期状態から前記仕様充足状態までの最短経路を前記プログラムの前記実行回数が最小となる前記最短探索深度として求めさせ、
前記予想検査時間算出ステップでは前記予想検査時間算出部に、
前記検査実行ステップで前記到達可能性検査部が前記複数の探索深度のうち探索深度ｎについての前記検査を完了したときに、次の探索深度ｎ＋１から前記最短探索深度までの前記検査に要する予想時間を前記仕様到達予想時間として算出させ、
前記仕様到達予想時間の算出にあたって、前記検査実行ステップで前記到達可能性検査部が前記探索深度ｎについての前記検査を完了したときに、当該検査から前記探索深度ｎ＋１についての前記検査が完了するまでに要する予想深度別検査時間を、前記探索深度ｎについての前記深度別検査時間と前記探索深度ｎよりも前の探索深度ｎ−１についての前記深度別検査時間との差分から算出させ、
前記探索深度ｎ＋１から前記最短探索深度までの各々についての前記予想深度別検査時間を合計することにより前記仕様到達予想時間を算出させ、
前記検査終了ステップでは前記到達可能性検査部に、
前記探索深度ｎについての前記検査を完了したときに、前記仕様到達予想時間が前記残検査制限時間を超過する場合には、前記プログラムの前記検査を途中で終了させる
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム検証に関し、特にモデル検査手法のプログラム検証に関する。
【背景技術】
【０００２】
ソフトウェアの検証方法として、形式的手法を応用したモデル検査手法が用いられている。モデル検査手法とは、Ｋｒｉｐｋｅ構造の状態遷移において、計算木論理（ＣＴＬ：Ｃｏｍｐｕｔａｔｉｏｎ  Ｔｒｅｅ  Ｌｏｇｉｃ）で表された仕様を証明する状態集合が存在するか否かを検査する手法である。
【０００３】
従来のモデル検査方法について説明する。図１の従来のモデル検査装置は、検査対象プログラム１が検査仕様２を満たすことを証明するためのモデル検査（以下、検査）を、検査制限時間３の範囲内で行う。図２は、検査対象プログラム１の例を示している。図３は、検査仕様２の例を示している。
図２の検査対象プログラム１および、図３の検査仕様２を参照すると、検査仕様２は、検証プログラム１において、ｍａｉｎ関数が、ＩＮＴ範囲として取り得る任意の値からなるｘを引数として受け取るとき、「Ｌ９のａｓｓｅｒｔ関数が実行されることがある。」ことを表す。なお、検査対象プログラム１と、検査仕様２と、検査制限時間３とは、従来の方法により外部から入力される。
【０００４】
［従来装置の構成の説明］
従来のモデル検査装置の構成を説明する。図１は従来のモデル検査装置の構成を示している。図１のモデル検査装置は、検査処理部１０と記憶装置２０を備える。
検査処理部１０及び記憶装置２０は、図４に示すようなコンピュータにより実現される。図４を参照すると、検査処理部１０と記憶装置２０は、処理部１００、記憶部２００、入力部３００、出力部４００、通信部５００をそれぞれ備える。それぞれの部位間は電気的に接続されている。処理部１００はＭＰＵ（Micro Processing Unit）等で、記憶部２００はＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等で、入力部３００はキーボードやマウス等で、出力部４００は液晶ディスプレイ等で、通信部５００はＬＡＮ（Local Area Network）ポート等で、それぞれ実現される。検査処理部１０と記憶装置２０は、通信部５００を介して接続されている。あるいは、検査処理部１０と記憶装置２０は、一つのコンピュータの中で実現される。従来のモデル検査装置の各機能は、検査対象プログラム１、検査仕様２、検査制限時間３に基づいて、記憶部２００のＲＡＭやＲＯＭに保存された処理用プログラムを、処理部１００のＭＰＵ等が実行することによって実現される。
【０００５】
（検査処理部の説明）
まず、検査処理部１０について説明する。検査処理部１０は、記号モデル作成部１１と、検査制御部１２と、到達可能性検査部１３と、検査結果出力部１４を備える。
【０００６】
まず、記号モデル作成部１１について説明する。記号モデル作成部１１は、検査対象プログラム１と検査仕様２からＫｒｉｐｋｅ構造で構成する記号モデルを作成する。記号モデル作成部１１は、非特許文献１に記載されているような従来の技術で、記号モデルの作成を行う。記号モデル作成部１１は、作成した記号モデルを記憶装置２０の記号モデル記憶部２２へ保存する。
【０００７】
図５は、記号モデル作成部１１が、図２の検査対象プログラム１と図３の検査仕様２に基づいて作成したＫｒｉｐｋｅ構造で構成する記号モデルの例を示している。Ｋｒｉｐｋｅ構造で構成する記号モデルは、状態の有限集合Ｖ、状態間の遷移関係Ｒ、初期状態の集合Ｖ０、検査仕様２の仕様を充足する仕様充足状態（以下、到達状態）の集合である到達状態集合Ｉとして、図５の式１のように定義できる。図３の検査対象プログラム１を記号モデルに変換した時の状態集合Ｖは、図５の式２のように表すことができる。式２において、右辺の前項は、プログラム１におけるラベルの集合をあらわしている。式２において、次項は、プログラム中の引数ｘを表している。状態間の遷移関係Ｒは、遷移前のラベル位置を表すｐｃ、遷移前の引数ｘの値を表すｄ、プログラム実行文の実行による遷移後のラベル位置を表すｐｃ’と、プログラム実行文の実行による遷移後の引数ｘの値を表すｄとして、図５の式３で表すことができる。初期状態の集合Ｉは、図５の式４で表すことができる。検査仕様２の到達状態の集合Ｉは、図５の式５で表すことができる。
【０００８】
次に、検査制御部１２について説明する。検査制御部１２は、記号モデル作成部１１が記号モデル記憶部２２に保存した記号モデルを読み込み、検査制限時間３内で検査対象プログラム１の検査の実行するよう到達可能性検査部１３へ命令する。検査制御部１２は、検査制限時間３を外部から入力する。
【０００９】
次に、到達可能性検査部１３について説明する。到達可能性検査部１３は、検査制御部１２からの命令に従って、検査対象プログラム１が検査仕様２を満たすか否かの検査を検査制限時間３内で実行する。
【００１０】
図６は、図５の式１から式５で表すＫｒｉｐｋｅ構造の記号モデルを状態遷移図で表したものである。図６について説明する。四角は、検査対象プログラム１における各状態を表す。矢印は、各状態間の遷移を表す。四角内には、各状態における検査対象プログラム１のプログラム実行文のラベルと引数ｘとの組が示されている。矢印が表す遷移は、検査対象プログラム１のプログラム実行文の実行によって発生する。遷移は、プログラム実行文の実行前のラベルと引数ｘの値の組を表す状態から、プログラム実行文の実行後に変化したラベルと引数ｘの値の組を表す状態への移行を表す。
【００１１】
図６を参照して、検査における状態間の遷移について説明する。例として、初期状態群集合Ｖ０において、ラベル（以下、Ｌ）が０で引数ｘが０である状態からの遷移を説明する。図２より、Ｌ０は、引数ｘを設定する処理を行うので、プログラム実行文のＬ０を実行すると、状態は（Ｌ０，０）から（Ｌ１，０）へ遷移する。（Ｌ１，０）は、Ｌ１において、引数ｘが０であることを意味する。図２より、Ｌ１は、引数ｘが０であるか否かを判定する処理を行う。引数ｘは０であるので、プログラム実行文Ｌ１を実行すると、状態は（Ｌ１，０）から（Ｌ６，０）へ遷移する。次に、図２より、Ｌ６は、引数ｘに３を加える処理を行う。そのため、プログラム実行文Ｌ６を実行すると、状態は（Ｌ６，０）から（Ｌ６，３）へ遷移する。このようにして、プログラム実行文を実行して状態遷移を行った結果、図３の検査仕様２が示す到達状態集合Ｉ「Ｌ９のａｓｓｅｒｔ関数が実行される」へ遷移することができれば、検査対象プログラム１が、検査仕様２を満たしていることが証明できる。
【００１２】
到達可能性検査部１３が実行する検査の方法を説明する。到達可能性検査部１３は、初期状態集合Ｖ０からｎ回の遷移で到達できる各状態において、検査仕様２の到達状態集合Ｉが含まれているか否かを検査する。ここで、「初期状態集合Ｖ０からｎ回の遷移で到達できる各状態」を探索深度ｎとよぶ。プログラム実行文が実行されると、状態遷移が発生する。例えば、プログラム実行文が３回実行されると、初期状態から３回の状態遷移が発生する。この場合の各状態を探索深度３であるということができる。検査対象プログラム１の各プログラム実行文が実行される時にどのような引数を取るかによって、状態遷移で到達できる状態は変化する。到達可能性検査部１３は、初期状態集合Ｖ０から探索深度ｎで到達できる各状態に、到達状態集合Ｉが含まれているかを検査する。
【００１３】
検査開始にあたって、到達可能性検査部１３は、記号モデル作成部１１が記号モデル記憶部２２に保存した記号モデルを読み込む。到達可能性検査部１３は、初期状態として探索深度を０として検査を開始する。
到達可能性検査部１３は、初期状態Ｖ０から探索深度ｎの遷移で到達することができる状態に、検査仕様２の到達状態集合Ｉが含まれていることが証明できた場合、検査対象プログラム１は、検査仕様２を満たすことを検査結果５に記録して検査結果出力部１４へ出力する。
一方、到達可能性検査部１３は、初期状態Ｖ０から探索深度ｎの遷移で到達することができる状態に、検査仕様２の到達状態集合Ｉが含まれておらず、探索深度ｎで新たに到達できる状態が他に存在しないときには、到達可能性検査部１３は、探索深度をｎ＋１に増やして検査を継続する。このように、到達可能性検査部１３は、検査仕様２が証明されるまで探索深度を１づつ増加させて検査を繰り返す。到達可能性検査部１３が行うこのような検査は、従来のプロパティ検証技術であって、特許文献１や非特許文献２に記載されている。
【００１４】
また、到達可能性検査部１３は、検査の開始からの経過した検査経過時間を測定している。到達可能性検査部１３は、検査が完了する前に検査経過時間が検査制限時間３を経過してしまう場合は、検査経過時間が検査制限時間３の経過した時点で検査を終了する。この場合、到達可能性１３は、検査制限時間３内で検査が完了しなかったことを検査結果５に記録して検査結果出力部１４へ出力する。
【００１５】
次に、検査結果出力部１４について説明する。検査結果出力部１４は、到達可能性検査部１３から入力した検査結果５を、検査の結果として外部装置へ出力する。
【００１６】
（記憶装置の説明）
次に、記憶装置２０について説明する。記憶装置２０は、記号モデル記憶部２２を備える。
【００１７】
記号モデル記憶部２２について説明する。記号モデル記憶部２２は、記号モデル作成部１１が出力する記号モデルを保存する。
【００１８】
以上が、従来のモデル検査装置の構成説明である。
【００１９】
［従来装置の動作方法の説明］
次に、図７を使用して従来のモデル検査装置の動作方法を説明する。図７は、従来のモデル検査装置の動作方法を示している。
【００２０】
（ステップＡ０１）
検査処理部１０の記号モデル作成部１１は、外部から、検査対象プログラム１と検査仕様２を入力する。記号モデル作成部１１は、検査対象プログラム１および検査仕様２に基づいて、記号モデルを作成する。記号モデル作成部１１は、作成した記号モデルを記憶装置２０の記号モデル記憶部２２へ保存する。
【００２１】
（ステップＡ０２）
検査処理部１０の検査制御部１２は、外部から検査制限時間３を入力する。検査制御部１２は、記憶装置２０の記号モデル記憶部２２から記号モデルを読み込む。検査制御部１２は、検査対象プログラム１が検査仕様２を満たすか否かの検査を検査制限時間３で実行するように到達可能性検査部１３へ検査実行を命令する。
【００２２】
（ステップＡ０３）
到達可能性検査部１３は、検査制御部１２からの検査実行の命令に従い、検査検査の開始にあたって、初期状態として探索深度ｎ＝０と設定する。
【００２３】
（ステップＡ０４）
到達可能性検査部１３は、初期状態集合Ｖ０から探索深度ｎの状態遷移で到達可能な各状態において、検査仕様２の到達状態集合Ｉが含まれているかの検査を実行する。また、到達可能性検査部１３は、検査の開始と同時に検査の経過時間の測定を開始する。到達能性検査部１３は、検査開始からの経過時間が検査制限時間３に到達した時点で検査を終了する。
【００２４】
（ステップＡ０５）
到達可能性検査部１３は、初期状態集合Ｖ０から探索深度ｎの状態遷移で到達可能な全ての状態において、到達状態集合Ｉが含まれているかを判定する。到達状態集合Ｉが含まれている場合は、ステップＡ０６へ進む。到達状態集合Ｉが含まれていない場合は、ステップＡ０７へ進む。
【００２５】
（ステップＡ０６）
探索深度ｎにおいて到達状態集合Ｉが含まれている場合、到達可能性検査部１３は、検査対象プログラム１が検査仕様２を満たすことを検査結果５に記録して、検査結果出力部１４へ出力する。検査結果出力部１４は、検査結果５を入力し、検査結果５を外部へ出力する。到達可能性検査部１３は、検査制御部１２へ検査対象プログラム１の検査完了を通知して検査を完了する。
【００２６】
（ステップＡ０７）
探索深度ｎにおいて到達状態集合Ｉが含まれていない場合、到達可能性検査部１３は、検査を継続する。到達可能性検査部１３は、探索深度ｎ＝ｎ＋１としてステップＡ０４へ戻る。
【００２７】
以上が、従来の記号モデル検査装置における動作方法の説明である。このようにして、到達可能性検査部１３は、探索深度ｎで到達状態集合Ｉに到達することができるかを、探索深度０回から開始してｎを増やしながら検査を繰り返す。
【００２８】
以上が、従来のモデル検査装置の説明である。
【００２９】
従来のモデル検査手法は、検査時間の長短が把握できないという課題がある。これは、検査を開始する時点で検査仕様の証明に必要な探索深度が不明なことによる。実際に検査を行ってみないことには、どの探索深度まで検査を繰り返せば検査仕様が証明できるかが不明であるため検査時間が把握できない。
また、従来のモデル検査手法では、検査時間が非常に長くなるという課題がある。探索深度が深くなるほど状態数が指数的に増加する状態爆発の問題によって、検査そのものが完了しないという状況に至ることがある。
このため、従来のモデル検査手法においては、あらかじめ制限時間を設けており、制限時間内に検査が完了しない場合には、検査開始からの経過時間が制限時間に達した時点で、検査を途中で終了するという方法がとられている。
しかし、このような方法は、仮に検査が膨大な時間を要するものであったとしても、制限時間の上限値まで検査を続ける以外に、検査が完了するか否かの判定がつかないという課題も存在する。つまり、元々、膨大な時間が掛かる可能性が高い検査であるにもかかわらず、実際に膨大な時間をかけて制限時間を使い切ってみて初めて、検証が完了しないことがわかるということである。特許文献２ならびに特許文献３には、モデル検査手法における検査時間を制御する例が開示されている。
【特許文献１】特開２００３−０３０２７０号公報
【特許文献２】特開２００４−００５６７４号公報
【特許文献３】特開平１０−０６３５３７号公報
【非特許文献１】「抽象化を用いた検証ツールの調査」田辺良則、高井利憲、高橋孝一  産業技術総合研究所システム検証研究センター  テクニカルレポート  ＰＳ−２００３−００７，２００３
【非特許文献２】「論理関数処理に基づく形式的検証手法」平石裕実、浜口清治、情報処理  Ｖｏｌ．３５（８），１９９４
【発明の開示】
【発明が解決しようとする課題】
【００３０】
本発明の目的は、検査対象のプログラムに割り当てられた検査制限時間内に当該プログラムの検査が完了しないことを、検査制限時間が経過するより以前に検知し、検知した時点で検査を終了することが可能な検査時間制御装置を提供することである。
【課題を解決するための手段】
【００３１】
本発明の検査時間制御装置は、検査の対象であるプログラムの実行文を実行した回数を表す探索深度のうち、プログラムの初期状態からプログラムの検査仕様を満たすことを示す仕様充足状態へ状態を遷移するために要する最短探索深度を算出する最短探索深度算出部と、プログラムにおいて、探索深度毎に仕様充足状態へ状態を遷移することが可能であるかの検査を実行し、探索深度の各々における検査に要した深度別検査時間を出力する到達可能性検査部と、到達可能性検査部が各探索深度について検査を完了する毎に、最短探索深度まで検査を完了するために要する予想時間である仕様到達予想時間を算出する予想検査時間算出部を備え、到達可能性検査部は、プログラムの検査に対する検査制限時間のうち残りの残検査制限時間を仕様到達予想時間が超過する場合には、検査を途中で終了する。
【００３２】
本発明の検査時間制御方法は、
検査の対象であるプログラムの実行文を実行した回数を表す探索深度のうち、プログラムの初期状態からプログラムの検査仕様を満たすことを示す仕様充足状態へ状態を遷移するために要する最短探索深度を算出する最短探索深度算出ステップと、
プログラムにおいて、探索深度毎に仕様充足状態へ状態を遷移することが可能であるかの検査を実行する検査実行ステップと、
探索深度の各々における検査に要した深度別検査時間を出力する深度別検査時間出力ステップと、
到達可能性検査部が各探索深度について検査を完了する毎に、最短探索深度まで検査を完了するために要する予想時間である仕様到達予想時間を算出する予想時間算出ステップと、
到達可能性検査部は、プログラムの検査に対する検査制限時間のうち残りの残検査制限時間を仕様到達予想時間が超過する場合には、検査を途中で終了する検査終了ステップとを備える。
【００３３】
本発明のプログラムは、上述の検査時間制御方法をコンピュータによって実現する。
【発明の効果】
【００３４】
本発明によれば、検査対象のプログラムに割り当てられた検査制限時間内に当該プログラムの検査が完了しないことを、検査性制限時間が経過するより以前に検知し、検知した時点で検査を終了することが可能となるため、検査制限時間を使い切っても当該プログラムの検査が完了しない状態を未然に防ぐことができ、検査時間の効率化を図ることができる。
【発明を実施するための最良の形態】
【００３５】
添付図面を参照して、本発明による検査時間制御装置を実施するための最良の形態としての一実施例を、以下に説明する。
【００３６】
図８は、本発明の本実施例の検査時間制御装置を示している。図８のモデル検査時間制御装置は、検査対象プログラム１が検査仕様２を満たすことを証明するためのモデル検査（以下、検査）を、検査制限時間３の範囲内で行う。
本実施例の説明において、検査対象プログラム１および検査仕様２は、従来のモデル検査装置の説明と同様のものである。図２は、検査対象プログラム１の例を示している。図３は、検査仕様２の例を示している。従来のモデル検査装置の説明と同様に、図２の検査対象プログラム１および、図３の検査仕様２を参照すると、検査仕様２は、検証プログラム１において、ｍａｉｎ関数が、ＩＮＴ範囲として取り得る任意値からなるｘを引数として受け取るとき、「Ｌ９のａｓｓｅｒｔ関数が実行されることがある。」ことを表す。なお、検査対象プログラム１と、検査仕様２と、検査制限時間３とは、外部装置から、モデル検査時間制御装置の構成部位へ入力される。
【００３７】
［構成の説明］
図８を使用して、本実施例のモデル時間制御装置の構成を説明する。本実施例のモデル検査時間制御装置は、検査処理部１０と、記憶装置２０と、深度算出部３０と、時間算出部４０とを備える。検査処理部１０、記憶装置２０、深度算出部３０及び時間算出部４０は、図９に示すような従来のコンピュータにより実現される。検査処理部１０、記憶装置２０、深度算出部３０及び時間算出部４０は、処理部１００、記憶部２００、入力部３００、出力部４００、通信部５００をそれぞれ備える。処理部１００はＭＰＵ（Micro Processing Unit）等で、記憶部２００はＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等で、入力部３００はキーボードやマウス等で、出力部４００は液晶ディスプレイ等で、通信部５００はＬＡＮ（Local Area Netword）ポート等で、それぞれ実現される。本発明のモデル検査時間制御装置の各機能は、外部から入力される、検査対象プログラム１、検査仕様２、検査制限時間３に基づいて、記憶部２００のＲＡＭやＲＯＭ等に保存された処理用プログラムを、処理部１００のＭＰＵ等が実行することによって実現する。検査処理部１０と、記憶装置２０と、深度算出部３０と、時間算出部４０の各部位は、有線通信技術あるいは無線通信技術によって接続されている。これらは、直接的に接続されていてもよいし、ネットワークを介して接続されていてもよい。これらは、従来のデータ通信技術によって実現される。また、検査処理部１０と、記憶装置２０と、深度算出部３０と、時間算出部４０の各部位は、一つのコンピュータの中で実現されてもよい。
【００３８】
（検査処理部の説明）
まず、検査処理部１０について説明する。検査処理部１０は、記号モデル作成部１１と、検査制御部１２と、到達可能性検査部１３と、検査結果出力部１４を備える。
【００３９】
まず、記号モデル作成部１１について説明する。記号モデル作成部１１は、検査対象プログラム１と検査仕様２からＫｒｉｐｋｅ構造で構成する記号モデルを作成する。記号モデル作成部１１は、非特許文献１に記載されているような従来の技術で、記号モデルの作成を行う。記号モデル作成部１１は、作成した記号モデルを記憶装置２０の記号モデル記憶部２２へ保存する。図５は、記号モデル作成部１１が、図２の検査対象プログラム１と図３の検査仕様２に基づいて作成したＫｒｉｐｋｅ構造で構成する記号モデルの例を示している。図５に示した、Ｋｒｉｐｋｅ構造で構成する記号モデルの例に関する説明は、前述した従来のモデル検査装置の説明と同様であるので省略する。
【００４０】
次に、検査制御部１２について説明する。検査制御部１２は、記号モデル作成部１１が記号モデル記憶部２２に保存した記号モデルを読み込み、検査制限時間３内で検査対象プログラム１の検査の実行するよう到達可能性検査部１３へ命令する。検査制御部１２は、検査制限時間３を外部から入力する。
また、時間算出部４０の予想検査時間算出部４１が当該検査は検査制限時間３内に完了しないと判定し、予想検査時間算出部４１が後述する検査完了不可通知を出力した場合には、検査制御部１２は、検査完了不可通知を入力して、到達可能性検査部１３へ検査終了命令を行う。この場合、到達可能性検査部１３は、検査終了令を受けて当該検査を終了する。
【００４１】
次に、到達可能性検査部１３について説明する。到達可能性検査部１３は、検査制御部１２からの命令に従って、検査対象プログラム１が検査仕様２を満たすか否かの検査を検査制限時間３内で実行する。図６は、図５の式１から式５で表すＫｒｉｐｋｅ構造の記号モデルを状態遷移図で表したものである。図６についての説明と、プログラム実行文を実行することによる状態間の遷移ついての説明と、到達可能性検査部１３の検査方法についての説明は、前述した従来のモデル検査装置の説明と同様であるので省略する。到達可能性検査部１３が行う検査は、従来のプロパティ検証技術であって、特許文献１や非特許文献２に記載されている。
【００４２】
検査を実行した結果、初期状態集合Ｖ０から探索深度ｎの状態遷移で到達することができる状態に、検査仕様２の仕様を充足する仕様充足状態（以下、到達状態）の集合である到達状態集合Ｉが含まれている場合、到達可能性検査部１３は、検査対象プログラム１が検査仕様２を満たすことを検査結果５に記録して検査結果出力部１４へ出力する。
一方、初期状態集合Ｖ０から探索深度ｎの状態遷移で到達することができる状態に、検査仕様２の到達状態集合Ｉがふくまれておらず、探索深度ｎの状態遷移で新たに到達できる状態が他に存在しない場合、到達可能性検査部１３は、探索深度をｎ＋１に増やして検査を継続する。
また、検査制御部１２から検査終了命令を受けた場合、到達可能性検査部１３は、検査終了命令を受けた時点で検査を終了する。この場合、到達可能性検査部１３は、検査終了命令により検査を終了したこと記録した検査結果５を検査結果出力部１４へ出力する。
【００４３】
到達可能性検査部１３は、検査開始からの経過時間を測定する。検査が完了する前に、検査開始からの経過時間が検査制限時間３に到達した場合、到達可能性検査部１３は、その時点で検査を終了する。到達可能性検査部１３は、検査制限時間３を使い切ったため検査を終了したことを記録した検査結果５を検査結果出力部１４へ出力する。
さらに、本実施例において到達可能性検査部１３は、探索深度ｎ毎の検査に要した探索時間を測定する。到達可能性検査部１３は、探索深度ｎにおける検査処理を完了する毎に、探索深度ｎにおいて検査に要した探索時間を、探索深度ｎに対応させて、記憶装置２０の探索時間記憶部２４へ保存する。
【００４４】
次に、検査結果出力部１４の説明をする。検査結果出力部１４は、到達可能性検査部１３から入力する検査結果５を、検査の結果として外部装置へ出力する。なお、検査結果５の形式については、本実施例において特に限定しない。これらは従来のデータ形式により技術により実現されるものである。
【００４５】
（深度算出部の説明）
次に、深度算出部３０について説明する。深度算出部３０は、状態遷移モデル作成部３１と最短探索深度算出部３２を備える。
【００４６】
まず、状態遷移モデル作成部３１について説明する。状態遷移モデル作成部３１は、検査対象プログラム１と検査仕様２を読み込み、コントロールフローグラフで表す状態遷移モデルを作成する。状態遷移モデル作成部３１が検査対象プログラム１から状態遷移モデルを作成する処理は、コンパイラなどで一般的に使用されるプログラムからコントロールフローグラフを作成するための従来技術によって行われる。状態遷移モデル作成部３１は、作成した状態遷移モデルを、記憶装置２０の状態遷移モデル記憶部２１へ保存する。
【００４７】
次に、最短探索深度算出部３２について説明する。最短探索深度算出部３２は、状態遷移モデル作成部３１が作成した状態遷移モデルから最短探索深度Ｎを算出する。最短探索深度算出部３２は、状態遷移モデル記憶部２１から状態遷移モデルを読み込む。最短探索深度算出部３２は、状態遷移モデル上で条件分岐の条件を無視した有効グラフとして、初期状態から検査仕様２が示す到達状態への最短経路の状態遷移数を求める。最短探索深度Ｎは、初期状態集合Ｖ０から検査仕様２の要求する到達状態へ到達するために最低必要な探索深度を意味する。最短探索深度算出部３２は、ダイクストラ法等の従来技術により有効グラフにおける最短経路を算出する。最短探索深度算出部３２は、算出した最短探索深度Ｎを記憶装置２０の最短探索深度記憶部２３に保存する。
【００４８】
図１０を使用して、本実施例における最短探索深度Ｎの算出方法を説明する。図１０は、状態遷移モデル作成部３１が図２の検査対象プログラム１と検査仕様２から作成した状態遷移モデルを表している。図１０に示されている四角は、検査対象プログラム１において取りうる各状態である。各状態は、検査対象プログラム１の各プログラム実行文のラベル（Ｌ０〜Ｌ９）位置を表している。また、図１０に示されている状態から状態への矢印は、状態から状態への状態遷移を表す。状態から状態への状態遷移は、検査対象プログラム１において、プログラム実行文を実行することによって発生する。プログラム実行文の実行によって、プログラム実行文を実行前のラベル位置の状態から、プログラム実行文を実行後のラベル位置の状態へ状態遷移する。検査対象プログラム１内のＩＦ文は、遷移における遷移条件として表されている。検査仕様２の「ａｓｓｅｒｔ関数が実行されることがある。」は、「開始時の状態Ｌ０から状態Ｌ９へ到達する経路が存在する。」ことを意味する。
【００４９】
次に、図１０において、初期状態（図１０においてＬ０）から検査対象プログラム１の検査仕様２が示す到達状態（図１０においてＬ９）へ状態遷移するために最低限必要なプログラム実行回数の算出について説明する。最短探索深度算出部３２は、分岐条件の条件を無視した有効グラフとして、プログラム開始位置Ｌ０から検査仕様２が示す到達状態であるＬ９への最短経路をもとめる。この最短経路は、検査対象プログラム１において、初期状態から検査仕様２が示す到達状態に到達するまでに最低限必要な状態遷移数であり、検査対象プログラム１における最低限必要なプログラム実行文の実行回数である。検査対象プログラム１の各状態における条件分岐がいかなるものであろうとも、この状態遷移数より少ない状態遷移数で初期状態から検査仕様２が示す到達状態へ到達することはできない。同様に、この実行回数より少ないプログラム実行文の実行回数で、初期状態から検査仕様２が示す到達状態へ到達することはできない。このプログラム実行文の実行回数である状態遷移数が最短探索深度Ｎとなる。
図１０において、分岐条件の条件を無視した有効グラフとして考える場合、初期状態のＬ０から検査仕様２が示す到達状態のＬ９への最短経路は、Ｌ０からＬ１、Ｌ６、Ｌ７、Ｌ８、Ｌ９と遷移する経路となる。この最短経路は、状態間を５回遷移している。これにより、検査対象プログラム１において初期状態から検査仕様２が示す到達状態への最短探索深度Ｎは「Ｎ＝５」となる。
【００５０】
（時間算出部の説明）
次に、時間算出部４０の説明をする。時間算出部４０は、予想検査時間算出部４１を備える。
【００５１】
予想検査時間算出部４１について説明する。予想検査時間算出部４１は、最短探索深度Ｎまでの検査が検査制限時間３内に完了する否かを判定する。
以下に、予想検査時間算出部４１が行う判定方法を説明する。まず、予想検査時間算出部４１は、到達可能性検査部１３が探索深度ｎの検査を完了する毎に、仕様到達予想時間を算出する。仕様到達予想時間とは、到達可能性検査部１３が探索深度ｎの検査を完了した時点で、探索深度ｎ＋１から最短探索深度Ｎまでの検査に必要と予想する残り時間である。予想検査時間算出部４１は、記憶装置２０の探索時間記憶部２４に保存された探索深度毎の探索時間と、記憶装置２０の最短探索深度記憶部２３に保存された最短探索深度Ｎとに基づいて、仕様到達予想時間を算出する。
【００５２】
次に、予想検査時間算出部４１は、検査制限時間３から、検査開始から現在までの経過時間を減算した残りの検査制限時間３（以下、残検査制限時間）を算出する。検査開始から現在まで経過した経過時間は、探索深度ｎ＝０とした検査初期状態から探索深度ｎの探索が完了した現在までの各探索深度毎の探索時間の累計により求められる。予想検査時間算出部４１は、記憶装置２０の探索時間記憶部２４に保存された探索深度毎の探索時間を合計し、検査開始から現在までに経過した経過時間を求める。この経過時間を検査制限時間３から減算して残検査制限時間を算出する。
【００５３】
次に、予想検査時間算出部４１は、残検査制限時間を仕様到達予想時間が超過するか否かを判定する。予想検査時間算出部４１は、残検査制限時間から仕様到達予測時間を減算する。予想検査時間算出部４１は、残検査制限時間から仕様到達予測時間を減算結果が０より大きい場合、仕様到達予想時間は残検査制限時間を超過せず、当該検査は検査制限時間３内に完了すると判定する。一方、予想検査時間算出部４１は、残検査制限時間から仕様到達予測時間を減算結果が０以下である場合、仕様到達予想時間は残検査制限時間を超過し、当該検査は検査制限時間３内に完了しないと判定する。
予想検査時間算出部４１は、当該検査が検査制限時間３内に完了しないと判定した場合、検査完了不可通知を検査制御部１２へ出力する。検査制御部１２は、検査完了不可通知を受けて到達可能性検査部１３へ当該検査の終了を命令する。一方、予想検査時間算出部４１は、当該検査が検査制限時間３内に完了すると判定した場合、特に命令は出力せず検査を続行する。
なお、予想検査時間算出部４１による、仕様到達予測時間の算出方法、検査制限時間３内に検査が完了するか否かの判定方法、検査の終了または続行の命令方法はこれに限定しない。例えば、予想検査時間算出部４１は、当該検査が検査制限時間３内に完了すると判定した場合に、検査続行命令を出力し、検査制御部１２は検査続行命令に従って到達可能性検査部１３へ検査の続行を命令してもよい。また、予想検査時間算出部４１は、仕様到達予測時間を算出のみを実行し、検査を終了するか続行するかの判定は、検査制御部１２が行ってもよい。
【００５４】
図１１の式６は、本実施例において予想検査時間算出４１が、仕様到達予想時間を算出するための算出式である。モデル検査では、探索深度が増加するにつれ、探索時間が指数関数的に増加する（参考文献：特許文献２）。指数関数的に増加する探索深度毎の探索時間の類推は、指数近似法で計算することができる。しかし、指数近似法は、探索深度ｎが少ない段階では誤差が大きく、本来、制限時間内で検査が完了することが可能な検査対象プログラム１の検査まで、タイムアウトすると誤判定してしまう可能性がある。そこで、実施例においては、探索深度ｎと探索深度ｎ−１の差分である探索時間の増加率に基づいた、図１１の式６を使用して仕様到達予想時間を算出することで誤判定を防ぐ。なお、仕様到達予測時間の算出式はこれの例に限定しない。各探索深度毎の探索時間に基づいて算出する方法や、探索深度ｎでの探索時間と探索深度ｎ−１での探索時間との差分に基づいて算出する方法等、他の算出式を用いて計算することも可能である。
【００５５】
図１２は、ある検査対象プログラム１と検査仕様２において、最短探索深度Ｎ＝１５である場合に、探索深度ｎ＝１〜８の各段階で、図１１の式６を用いて残りの探索深度毎の予想探索時間を算出した例を表している。この残りの探索深度毎の予想探索時間を合計した値が仕様到達予想時間であり、検査仕様２が示す到達状態集合Ｉが含まれる最短探索深度Ｎ＝１５の到達可能性の検査完了に必要な残り時間である。
【００５６】
図１２の項目を説明する。「探索深度ｎ」は、各探索深度を示している。「探索深度ｎでの探索時間」は、各探索時間において実際に検査に要した探索時間を示している。図１２を参照すると、当該検査対象プログラム１において、探索深度ｎ＝１の時に１３秒、探索深度ｎ＝２の時に２２秒、探索深度ｎ＝３の時に３２秒、探索深度ｎ＝４の時に４１秒、の探索時間を要したことが確認できる。この探索深度ｎでの探索時間は、到達可能性検査部１３によって、各探索深度毎の検査が完了する毎に、探索時間記憶部２４へ保存された時間である。「探索深度ｎまでの経過時間」は、検査開始（初期状態のため探索深度ｎ＝０）から、探索深度ｎの検査完了までに経過した時間である。「探索深度ｎまでの経過時間」は、各探索深度毎の探索時間の累計を示している。図１２を参照すると、検査の開始から探索深度６における検査の完了までに６３８秒を要したことが確認できる。これは、探索深度０から探索深度５までの各探索深度での探索時間の累計時間である。「探索深度ｎにおいて予想した探索深度別の予想探索時間」は、予想検査時間算出部４１が、ある探索深度ｎの検査が完了した時点において、図１１の式６を用いて探索深度ｎ＋１から最短探索深度Ｎ＝１５までの各探索深度における予想探索時間を算出した結果を示している。図１２を参照すると、現在が探索深度ｎ＝４の検査が完了した状態とすると、予想検査時間算出部４１が、探索深度ｎ＝５では５０秒、探索深度ｎ＝６では５９秒の探索時間を要すると予想していることが確認できる。「仕様到達予想時間」は、予想検査時間算出部４１が、各探索深度ｎの検査が完了したときに算出した、探索深度ｎ＋１から最短探索深度Ｎ＝１５までの各探索深度毎の予想探索時間を累計したものである。図１２を参照すると、予想検査時間算出部４１は、探索深度ｎ＝４の検査が完了した時点での仕様到達予想時間を１，０４５秒と予想していることが確認できる。
【００５７】
図１２を参照して、予想検査時間算出部４１による判定方法の例を説明する。図１２に示した検査の例において、検査制限時間３が、１０，０００秒であったとする。図１２より、到達可能性検査部１３が探索深度ｎ＝５の検査を完了した時点で、予想検査時間算出部４１は、最短探索深度Ｎ＝１５までの仕様到達予想時間を５，６７５秒と算出している。次に、予想検査時間算出部４１は、検査制限時間３から現在までの経過時間を減算して残検査制限時間を算出する。予想検査時間算出部４１は、図１２より、残検査制限時間を「１０，０００秒−２３４＝９，７６６秒」と算出する。次に、予想検査時間算出部４１は、残検査制限時間から仕様予想到達時間を減算して、仕様到達予想時間が残検査制限時間を超過していないかを判定する。予想検査時間算出部４１は、図１２より、「９，７６６秒−５６７５秒＝４，０９１秒」であるので、この時点ではまだ仕様到達予想時間が残検査制限時間を超過するとは判定しない。そのため、到達可能性検査部１３は、探索深度ｎ＝ｎ＋１（この場合は探索深度６）として検査を継続する。
【００５８】
さらに検査が継続され、到達可能性検査部１３は、探索深度６の検査を完了する。図１２より、到達可能性検査部１３は探索深度ｎ＝６の検査に４０４秒要している。予想検査時間算出部４１は、図１１の式６を用いて仕様到達予想時間を算出する。図１２より、予想検査時間算出部４１は、到達可能性検査部１３が探索深度ｎ＝６の検査を完了した時点で、最短探索深度Ｎ＝１５までの仕様到達予想時間を１６，３２６秒と算出している。次に、予想検査時間算出部４１は、検査制限時間３から現在までの経過時間を減算した時間を減算して残検査制限時間を算出する。予想検査時間算出部４１は、残検査制限時間を「１０，０００秒−６３８秒＝９，３６２秒」と算出する。次に、予想検査時間算出部４１は、残検査制限時間から仕様予想到達時間を減算して、仕様到達予想時間が残検査制限時間を超過していないかを判定する。予想検査時間算出部４１は、図１２より、「９，３６２秒−１６，３２６秒＝−６，９６４秒」であるので、仕様到達予想時間が残検査制限時間を超過すると判定する。これにより、予想検査時間算出部４１は、この時点で当該検査は検査制限時間３内で完了しないと判定する。判定結果に伴い、予想検査時間算出部４１は、検査制御部１２へ検査完了不可通知を出力する。なお、予想検査時間算出部４１による、残検査制限時間を仕様到達予想時間が超過するかを判定するための計算方法はこの例に限定しない。
【００５９】
図１３は、図１２をグラフに表したものである。図１３において、縦軸は探索時間、横軸は探索深度である。「Ａ」は、探索深度ｎ毎の実探索時間を示している。「Ａ」を参照すると、探索深度ｎが増加するにつれて、実探索時間は指数関数的に増加することが確認できる。「Ｂ」は、探索深度ｎ＝７において算出した、残りの各探索深度における予想探索時間を表している。同様に「Ｃ」は探索深度ｎ＝６において、「Ｄ」は探索深度ｎ＝４において、「Ｅ」は探索深度ｎ＝２において、それぞれ算出した、残りの各探索深度における予想探索時間を示している。予想検査時間算出部４１は、「Ｂ」から「Ｄ」の各探索深度ｎの段階において、探索予想時間を「Ａ」の実探索時間より短い値に算出していることが確認できる。図１１の式６を用いることにより、制限時間内で検査が完了する検査を、制限時間内で完了しない検査と誤って判定することを防ぐことができる。
【００６０】
（記憶装置の説明）
次に、記憶装置２０の説明をする。記憶装置２０は、状態遷移モデル記憶部２１と、記号モデル記憶部２２と、最短探索深度記憶部２３と、探索時間記憶部２４とを備える。
【００６１】
まず、状態遷移モデル記憶部２１について説明する。状態遷移モデル記憶部２１は、深度算出部３０の状態遷移モデル作成部３１が出力する状態遷移モデルを保存する。状態遷移モデル記憶部２１は、最短深度算出部３２の要求に応じて状態遷移モデルを出力する。
【００６２】
次に、記号モデル記憶部２２について説明する。記号モデル記憶部２２は、検査処理部１０の記号モデル作成部１１の出力する記号モデルを保存する。記号モデル記憶部２２は、検査制御部１２の要求に応じて記号モデルを出力する。
【００６３】
次に、最短探索深度記憶部２３について説明する。最短探索深度記憶部２３は、深度算出部３０の最短探索深度算出部３２の出力する最短探索深度Ｎを保存する。最短探索深度記憶部２３は、予想検査時間算出部４１の要求に応じて最短探索深度Ｎを出力する。
【００６４】
次に、探索時間記憶部２４について説明する。探索時間記憶部２４は、検査処理部１０の到達可能性検査部１３が出力する探索深度ｎでの探索時間を探索深度ｎに対応させて保存する。探索時間記憶部２４は、予想検査時間算出部４１の要求に応じて探索深度ｎでの探索時間を出力する。
【００６５】
以上が、本実施例における構成の説明である。
状態遷移モデル作成部３１は、検査対象プログラム１と検査仕様２に基づいて状態遷移モデルを作成する。最短探索深度算出部３２は、状態遷移モデルに基づいて最短探索深度Ｎを算出する。最短探索深度Ｎが算出されることで、当該検査がどの探索深度まで検査が行われることによって完了するのかを判断できる。
さらに、到達可能性検査部１３は、探索深度ｎの検査が完了する毎に、探索深度毎の探索時間を出力する。予想検査時間算出部４１は、探索深度毎の探索時間に基づいて、仕様到達予想時間する。予想検査時間算出部４１は、図１１の式６によって適切な仕様到達予測時間を算出することができる。
加えて、予想検査時間算出部４１は、探索深度毎の探索時間の合計することで検査開始からの経過時間を算出する。予想検査時間算出部４１は、検査制限時間３から、検査開始からの経過時間を減算して残検査制限時間を求める。予想検査時間算出部４１は、残検査制限時間から仕様到達予測時間を減算することで、検査が検査制限時間３内に完了可能か否かを容易に判定できる。
これによって、検査が検査制限時間３内に完了しないと判定した場合にはその時点で検査を終了することが可能となり、検査制限時間３が全て経過してようやく検査が完了しないことが判明するという状態を防ぐことが可能となる。
【００６６】
［動作の説明］
次に、図１４を使用して本発明の本実施例における動作を説明する。図１４は本発明の本実施例における動作方法を示している。図１４において、ステップＡ０１からステップＡ０７については、前述した従来のモデル検査装置の動作方法と同様である。ステップＢ０１からステップＢ０８が、本実施例に特有の動作方法である。
【００６７】
（ステップＢ０１）
深度算出部３０の状態モデル作成部３１は、検査対象プログラム１と検査仕様２を読み込み、状態遷移モデルを作成する。状態モデル作成部３１は、作成した状態遷移モデルを記憶装置２０の状態遷移モデル記憶部２１へ保存する。なお、状態モデルの作成命令は外部から入力されても検査制御部１２から入力されてもよい。状態モデルの作成命令を出力する動作主体と動作方法については本実施例において特に限定はしない。
【００６８】
（ステップＢ０２）
深度算出部３０の最短探索深度算出部３２は、記憶装置２０の状態遷移モデル記憶部２１から状態遷移モデルを読み込む。最短探索深度算出部３２は、状態遷移モデルにおいて、初期状態から検査仕様２が示す到達状態への最短探索深度Ｎを求める。最短探索深度算出部３２は、求めた最短探索深度Ｎを、記憶装置２０の最短探索深度記憶部２３へ保存する。
【００６９】
（ステップＡ０１）
検査処理部１０の記号モデル作成部１１は、外部から、検査対象プログラム１と検査仕様２を入力する。記号モデル作成部１１は、検査対象プログラム１および検査仕様２に基づいて、記号モデルを作成する。記号モデル作成部１１は、作成した記号モデルを記憶装置２０の記号モデル記憶部２２へ保存する。なお、記号モデルの作成命令は外部から入力されても検査制御部１２から入力されてもよい。記号モデルの作成命令を出力する動作主体と動作方法については本実施例において特に限定はしない。
【００７０】
（ステップＡ０２）
検査処理部１０の検査制御部１２は、外部から検査制限時間３を入力する。検査制御部１２は、記憶装置２０の記号モデル記憶部２２から記号モデルを読み込む。検査制御部１２は、検査対象プログラム１が検査仕様２を満たすか否かの検査を検査制限時間３で実行するように到達可能性検査部１３へ検査実行を命令する。なお、本実施例において、検査制御部１２への検査開始命令は外部から入力されるものとする。検査開始命令を出力する動作主体と動作方法については本実施例において特に限定はしない。
【００７１】
（ステップＡ０３）
到達可能性検査部１３は、検査制御部１２からの検査実行の命令に従い、検査検査の開始にあたって、初期状態として探索深度ｎ＝０と設定する。
【００７２】
（ステップＡ０４）
到達可能性検査部１３は、初期状態集合Ｖ０から探索深度ｎの状態遷移で到達可能な各状態において、検査仕様２の到達状態集合Ｉが含まれているかの検査を実行する。また、到達可能性検査部１３は、検査の開始と同時に検査の経過時間の測定を開始する。到達能性検査部１３は、検査開始からの経過時間が検査制限時間３に到達した時点で検査を終了する。さらに、到達可能性検査部１３は、検査を開始すると探索深度ｎ毎の探索時間を測定する。
【００７３】
（ステップＡ０５）
到達可能性検査部１３は、初期状態集合Ｖ０から探索深度ｎの状態遷移において、到達状態集合Ｉが含まれているか否かを判定する。探索深度ｎにおいて到達状態集合Ｉが含まれている場合は、ステップＡ０６へ進む。探索深度ｎにおいて到達状態集合Ｉが含まれていない場合は、ステップＢ０３へ進む。
【００７４】
（ステップＡ０６）
探索深度ｎにおいて到達状態集合Ｉが含まれている場合、到達可能性検査部１３は、検査対象プログラム１が検査仕様２を満たすことを検査結果５に記録して、検査結果出力部１４へ出力する。検査結果出力部１４は、検査結果５を入力し、検査結果５を外部へ出力する。到達可能性検査部１３は、検査制御部１２へ検査対象プログラム１の検査完了を通知して検査を完了する。
また、検査が検査制限時間３内に完了しないと判定し検査を終了した場合、到達可能性検査部１３は、検査完了不可通知により検査を終了したことを記録した検査結果５を検査結果出力部１４へ出力する。検査結果出力部１４は、検査結果５を入力し、検査結果５を外部へ出力する。到達可能性検査部１３は、検査制御部１２へ検査対象プログラム１の検査完了を通知して検査を完了する。
【００７５】
（ステップＢ０３）
到達可能性検査部１３は、探索深度ｎにおける検査が完了する毎に、探索深度ｎの探索に要した時間と探索深度ｎの組を、記憶装置２０の探索時間記憶部２４へ保存する。
【００７６】
（ステップＢ０４）
時間算出部４０の予想検査時間算出部４１は、記憶装置２０の探索時間記憶部２４に保存されている、探索深度ｎ＝０から探索深度ｎまでの各探索深度ｎ毎の探索時間と、最短探索深度記憶部２３に保存されている最短探索深度Ｎと、を読み込み、図１１の式６に基づいて、探索深度ｎ＋１から最短探索深度Ｎまでの各探索深度における予想深度別探索時間を算出する。
【００７７】
（ステップＢ０５）
予想検査時間算出部４１は、探索深度ｎ＋１から最短探索深度Ｎまでの各探索深度における予想深度別探索時間の総和をとることで、仕様到達予想時間を算出する。
【００７８】
（ステップＢ０６）
予想検査時間算出部４１は、探索深度０から探索深度ｎまでの探索深度毎の探索時間を合計して、検査開始からの経過時間を算出する。予想検査時間算出部４１は、検査制限時間３から、検査開始からの経過時間を減算した残検査制限時間を算出する。予想検査時間算出部４１は、残検査制限時間から仕様到達予想時間を減算して、仕様到達予想時間が残検査制限時間を超過していないかを判定する。判定の結果、仕様到達予想時間が残検査制限時間を超過している場合、予想検査時間算出部４１は、検査が検査制限時間３内に完了しないと判定し、ステップＢ０７へ進む。仕様到達予測時間が残検査制限時間を超えていない場合、検査は続行されるため、ステップＡ０７へ進む。
【００７９】
（ステップＡ０７）
探索深度ｎにおいて到達状態集合Ｉが含まれていない場合、到達可能性検査部１３は、探索深度ｎ＝ｎ＋１として、検査を続行するためにステップＡ０４へ戻る。
【００８０】
（ステップＢ０７）
予想検査時間算出部４１は、検査が検査制限時間３内に完了しないと判定し、検査処理部１０の検査制御部１２へ、検査完了不可通知を出力する。検査制御部１２は、予想検査時間算出部４１が出力する検査完了不可通知を入力し、到達可能性検査部１３へ検査終了を命令する。到達可能性検査部１３は、検査制御部１２から検査終了の命令を入力し、当該検査を終了する。予想検査時間算出部４１は、検査結果５を出力するために、ステップＡ０６へ進む。
【００８１】
以上が、本実施例における動作方法の説明である。このようにして、到達可能性検査部１３が探索深度ｎの検査を完了する度に、予想検査時間算出部４１は、当該検査が検査制限時間３内で完了するか否かを判定することで、検査制限時間３が経過するまで待たずとも、当該検査が検査制限時間３内で完了しないことを検知することが可能となる。これによって、モデル検査時間制御装置は、検査制限時間３を使い切るまで検査を続行する必要が無いため、検査の効率化を計ることができる。
また、到達可能性検査部１３が探索深度ｎの検査が完了する毎に、探索深度ｎの探索時間を探索時間記憶部２４へ保存し、予想検査時間算出部４１は、探索時間記憶部２４に保存された探索深度ｎの探索時間と探索深度ｎ−１の探索時間との差分に基づいて、仕様到達予想時間を算出するため、本来、検査制限時間３内で検査が完了する検査を、検査制限時間３内に検査が完了しないと誤って判定することを防ぐことができる。
【００８２】
以上が、本発明の本実施例の説明である。本発明により、検査対象プログラム１に割り当てられた検査制限時間３に検査対象プログラム１の検査が完了しないことを、検査性制限時間が経過するより以前に検知して、検査を終了することが可能となるため、検査制限時間３を使い切っても検査対象プログラム１の検査が完了しない状態を未然に防ぐことができ、検査に要する時間の効率化を図ることができる。
【図面の簡単な説明】
【００８３】
【図１】従来のモデル検査装置の構成を表すブロック図である。
【図２】検査対象プログラム１の例の図である。
【図３】検査仕様２の例の図である。
【図４】従来のモデル検査装置における、各構成部位の構成図である。
【図５】検査対象プログラム１と検査仕様２から作成したＫｒｉｐｋｅ構造の記号モデルの図である。
【図６】図５のＫｒｉｐｋｅ構造の記号モデルから作成した状態遷移図である。
【図７】従来のモデル検査装置における動作方法のフローチャートである。
【図８】本発明のモデル検査時間制御装置の構成を表すブロック図である。
【図９】本発明のモデル検査制御装置における、各構成部位の構成図である。
【図１０】検査対象プログラム１を、コントロールフローグラフで表した状態遷移図である。
【図１１】本発明のおける、予想探索時間の算出式を表した図である。
【図１２】本発明における、探索深度毎に予想探索時間と仕様到達予想時間を、図１１の算出式を用いて算出した表である。
【図１３】本発明における、探索深度と探索時間との関係を表したグラフである。
【図１４】本発明のモデル検査時間制御装置における動作方法のフローチャートである。
【符号の説明】
【００８４】
１  検査対象プログラム
２  検査仕様
３  検査制限時間
５  検査結果
１０  検査処理部
１１  記号モデル作成部
１２  検査制御部
１３  到達可能性検査部
１４  検査結果出力部
２０  記憶装置
２１  状態遷移モデル記憶部
２２  記号モデル記憶部
２３  最短探索深度記憶部
２４  探索時間記憶部
３０  深度算出部
３１  状態遷移モデル作成部
３２  最短探索深度算出部
４０  時間算出部
４１  予想検査時間算出部
１００  処理部
２００  記憶部
３００  入力部
４００  出力部
５００  通信部
【図１】
0004947427.tif 000002
【図２】
0004947427.tif 000003
【図３】
0004947427.tif 000004
【図４】
0004947427.tif 000005
【図５】
0004947427.tif 000006
【図６】
0004947427.tif 000007
【図７】
0004947427.tif 000008
【図８】
0004947427.tif 000009
【図９】
0004947427.tif 000010
【図１０】
0004947427.tif 000011
【図１１】
0004947427.tif 000012
【図１２】
0004947427.tif 000013
【図１３】
0004947427.tif 000014
【図１４】
0004947427.tif 000015