(57)【要約】【課題】必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成する環境生成支援装置、環境生成支援方法、環境生成支援プログラムを提供する。【解決手段】プロパティテーブルから、時相論理式で記述されたプロパティを取得し、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））からａｋを抽出して時相演算子Ｆと反転論理ｎｏｔによりａｋをｎｏｔ（Ｆ  ａｋ）に変換するプロパティ変換処理と、モデル検査器に、プレモデル検査用プロパティを入力し、モデル検査器がモデル検査を実施したのち実行結果を取得するモデル検査器インタフェース処理と、実行結果に示されるプレモデル検査用プロパティに沿わない結果と、事前条件とを比較して事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、を実行する。【選択図】図１
2010102650.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換処理と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
を実行させることを特徴とする環境生成支援プログラム。
【請求項２】
コンピュータに、
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換処理と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するＣＴＬ用のモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、  を実行させることを特徴とする環境生成支援プログラム。
【請求項３】
前記プロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語（ａｋ−＞Ｆ（ｂｋ））が「いつでも」成り立つことを示す時相演算子Ｇと、性質を示す述語（ｂｋ）が「いつか」成り立つことを示す時相演算子Ｆを用いて、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））で記述されたプロパティを取得し、前記線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））から前記ａｋを抽出して前記時相演算子Ｆと反転論理ｎｏｔにより前記ａｋをｎｏｔ（Ｆ  ａｋ）に変換するとともに、事前条件として前記ａｋと、プレモデル検査用プロパティとして前記ｎｏｔ（Ｆ  ａｋ）を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース処理は、
入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記ｎｏｔ（Ｆ  ａｋ）で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする請求項１に記載の環境生成支援プログラム。
【請求項４】
前記ＣＴＬ用のプロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ａｋ−＞ＡＦ（ｂｋ）)がこれから先どんなパスをとっても常に成立することを示す時相演算子ＡＧと、性質を示す述語（ｂｋ）がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子ＡＦを用いて、分岐時相論理式ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)で記述されたプロパティを取得し、前記ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)から前記ａｋを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子ＥＦによりＥＦ  ａｋに変換するとともに、前記事前条件として前記ａｋと、前記プレモデル検査用プロパティとして前記ＥＦ  ａｋを前記プロパティテーブルに記録し、
前記ＣＴＬ用のモデル検査器インタフェース処理は、
前記モデル検査器に、前記プロパティとして前記ＥＦ  ａｋで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする請求項２に記載の環境生成支援プログラム。
【請求項５】
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換部と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、
を備えることを特徴とする環境生成支援装置。
【請求項６】
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換部と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するＣＴＬ用のモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、を備えことを特徴とする環境生成支援装置。
【請求項７】
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換し、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
【請求項８】
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換をし、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム開発のテスト工程においてモデル検査を用いる際に、モデル検査を実施するための入力データを正しく、かつ容易に作成するための技術に関する。
【背景技術】
【０００２】
図１８は、従来のテストの工程（図１８Ａ）とモデル検査の工程（図１８Ｂ）を比較した図である。従来の図１８Ａのようなテストでは、仕様書や設計書（Ｓ１）を参照してテスト項目を抽出し（Ｓ２）、抽出した項目に基づいてテストケース（Ｓ３）とテストに必要なデータを作成（Ｓ４）する。その後、テストケースとテストデータを対象のシステムに入力してテストを行い（Ｓ５）、結果報告書（Ｓ６）を取得する。このように図１８Ａのテストでは、基本的にテストケースやテストデータの作成を人手で行うためテスト前準備に時間がかかるとともに、テストケースやテストデータに誤りがあると、テスト漏れ、テストミスが発生し、テスト時間が増えてしまう原因になる。
【０００３】
そこで、作業時間を短縮するためにモデル検査を用いる提案がされている。モデル検査とは、テスト対象であるシステムの振舞いを設計書・仕様書から取り出し、モデル検査の専用言語で記述したソフトウェア（擬似システム）を作成し、擬似システムにテストデータを入力することで実施するテストのことである。設計書・仕様書に基づき、状態遷移の各状態が取りうる全ての組み合わせを抽出し、これらの組み合わせに対してテストデータを入力する。図１８Ｂに示すように、仕様書や設計書（Ｓ１）を参照してプロパティを作成し（Ｓ７）、作成したプロパティに基づいて入力データを作成する（Ｓ８）。その後、入力データを対象のシステムに入力してモデル検査を行い（Ｓ９）、結果報告書（Ｓ１０）を取得する。モデル検査を用いると、テストケースの作成をする必要がなく、テストを完全自動化することができる。
【０００４】
例えば、仕様書には「ログインに成功したら初期画面が表示される」という条件と振る舞い（プロパティ）が記載されている場合に、モデル検査において「ログインが成功したのに初期画面が表示されなかった」ことが検出される。この時の状態遷移上のたどったパスをエラーが存在するとして利用者に提示する。ここで、あるＩＤと当該ＩＤに対応しないパスワード（誤ったパスワード）をテストデータとして用意してモデル検査を実行した場合には、ログインに成功することはないので、「ログインに成功する」という条件が発生せず、上述のプロパティに対するエラーは提示されない。したがって、利用者はこのエラーに気づかないままモデル検査を完了させてしまうという問題がある。
【０００５】
また、システム開発のテスト工程においてモデル検査を実施するためには、正しい入力データ(環境ドライバやスタブの一部など)を入力しなければならない。ところが、モデル検査はプログラムのあらゆる状態を網羅的に検査し、プログラムが満たすべき性質(プロパティ)を満たすかどうか調べる検査であるため、モデル検査を行うためのプロパティや入力データセットなどの必要な環境を、設計書などに従い人間が用意している。しかし、モデル検査にとって検査により調べたい対象はあくまでもプログラムであり、同時に入力として与えられたプロパティや入力データセットは仕様に過ぎない。そのため、プロパティや入力データといった仕様自体が適切でなかった場合、モデル検査の結果は意味のないものとなってしまう。
【０００６】
このように、プロパティに着目してデータを用意しようとした場合、検査したいプロパティの数だけ入力データを考えなければないため、全ての項目について検討するには多くの時間を要してしまうという問題がある。また、モデル検査時の計算量増加の要因にもなるとともに、完全なデータを準備するのは困難である。
【０００７】
特許文献１によれば、パラメータごとの設定条件を記述可能な仕様記述言語を導入し、これを用いて試験データの仕様記述を行う。試験データの作成はｔｄｇｅｎがこの仕様記述に基づいて行う。また、試験データの解析はｔｄａｎａが受信したデータをこの仕様記述言語に変換し、被試験項目を満足するか否か検査する。このように通信ソフトウェアの試験に用いる試験データの仕様記述において、被試験項目に対する仕様記述のみを行う。また、この被試験項目のみを記述した仕様から試験データを作成する方法、並びに試験データの解析において被試験項目のみを検査する方法が提案されている。
【０００８】
しかしながら、特許文献１ではテストデータの仕様を記述して、その仕様に対してテストデータの自動生成や検査を行っているため、テストデータがテストデータの仕様と直接関連づけられていない場合に対応できない。例えば「購入額が○○円以上の場合ならば・・・を満たす」という性質を調べたい場合、購入額が○○円以上になるための具体的なデータ（商品Ａが○個など）が必要となる場合があるが、これを生成するためには「商品Ａが○個の場合・・・」というデータの仕様を記述しなければならない。
【０００９】
また、特許文献１には仕様からテストデータを作成する技術が開示されているが、テスト漏れが存在する旨を提示するということについて開示されていない。
【特許文献１】特開平６−２０５０８３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記のような実情に鑑みてなされたものであり、仕様書／設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成する環境生成支援装置、環境生成支援方法、環境生成支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
態様のひとつである環境生成支援処理は、プロパティ変換、モデル検査器インタフェース処理、入力データ真偽判定を実行する。プロパティ変換は、メモリに記録されたプロパティテーブルから、性質を示す述語（ａｋ−＞Ｆ（ｂｋ））が「いつでも」成り立つことを示す時相演算子Ｇと、性質を示す述語（ｂｋ）が「いつか」成り立つことを示す時相演算子Ｆを用いて、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））で記述されたプロパティを取得する。そして、前記線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））から前記ａｋを抽出して前記時相演算子Ｆと反転論理ｎｏｔにより前記ａｋをｎｏｔ（Ｆ  ａｋ）と変換するとともに、事前条件として前記ａｋと、プレモデル検査用プロパティとして前記ｎｏｔ（Ｆ  ａｋ）を前記プロパティテーブルに記録する。
【００１２】
モデル検査器インタフェース処理は、プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記ｎｏｔ（Ｆ  ａｋ）で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録する。
【００１３】
入力データ真偽判定は、前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果と、前記事前条件とを比較して前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する。
【００１４】
設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成することができる。
【００１５】
また前記プロパティ変換処理と前記モデル検査器インタフェース処理の換わりに、ＣＴＬ用のプロパティ変換とＣＴＬ用のモデル検査器インタフェース処理にしてもよい。
ＣＴＬ用のプロパティ変換は、メモリに記録された前記プロパティテーブルから、性質を示す述語(ａｋ−＞ＡＦ（ｂｋ）)がこれから先どんなパスをとっても常に成立することを示す時相演算子ＡＧと、性質を示す述語（ｂｋ）がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子ＡＦを用いて、分岐時相論理式ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)で記述されたプロパティを取得する。そして、前記ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)から前記ａｋを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子ＥＦによりＥＦ  ａｋと変換するとともに、前記事前条件として前記ａｋと、前記プレモデル検査用プロパティとして前記ＥＦ  ａｋを前記プロパティテーブルに記録するする。
【００１６】
ＣＴＬ用のモデル検査器インタフェース処理は、前記モデル検査器に、前記プロパティとして前記ＥＦ  ａｋで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録する。
【発明の効果】
【００１７】
設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成することができる。
【発明を実施するための最良の形態】
【００１８】
以下図面に基づいて、本発明の実施形態について詳細を説明する。
（実施例１）
図１は、モデル検査を行うための環境生成支援装置１とモデル検査器２の構成を示す図である。
【００１９】
環境生成支援装置１は、プロパティ解析部３、プロパティ変換部４、モデル検査器インタフェース部５、入力データ真偽判定部６、プロパティテーブル７、モデル検査結果格納テーブル８を備えている。プロパティ解析部３、プロパティ変換部４、モデル検査器インタフェース部５、入力データ真偽判定部６はＣＰＵやプログラマブルデバイスを用いて実現できる。プロパティテーブル７、モデル検査結果格納テーブル８はメモリに記録されている。
【００２０】
プロパティ解析部３は、論理式で記述されたプロパティ９を読み込み、プロパティを解析する（例えば、含意論理演算子を含むかを調べる）。プロパティ９について説明する。図２は、設計書（または仕様書）に記載された内容に基づいてプロパティを作成した場合の例である。本例では破線範囲に記載されている購入ボタン押下時処理の内容である「購入金額が５０００円以上の場合１割引が適用される」「購入金額が５０００円未満の場合割引は無し」「購入個数が５個以上の場合送料が無料になる」をプロパティ記述に変換する。図２の例ではプロパティをＬＴＬ（線形時相論理式）で記載している。
【００２１】
「購入金額が５０００円以上の場合１割引が適用される」は、「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」のように記述する。
「購入金額が５０００円未満の場合割引は無し」は、「Ｇ（ｓｕｍ＜５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０）」のように記述する。
「購入個数が５個以上の場合送料が無料になる」は、「Ｇ（ｎｕｍ＞＝５−＞Ｆ  ｐｏｓｔａｇｅ＝０）」のように記述する。
なお、図２に示す「ｐ１」「ｐ２」「ｐ３」・・・は各プロパティの識別番号を示している。
【００２２】
次に、プロパティ解析部３に、プロパティ（上記「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」「Ｇ（ｓｕｍ＜５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０）」「Ｇ（ｎｕｍ＞＝５−＞Ｆ  ｐｏｓｔａｇｅ＝０）」など）が入力されると、プロパティが所定の論理式で記載されているかを判定し、該論理式で記載されているプロパティをプロパティ変換部４に転送する。ここで、上記Ｇは「いつでも」を示す時相演算子であり、例えば、「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」の「（ｓｕｍ＞＝５０００−>Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」の部分は性質を表す述語である。また、Ｆは「いつか」を示す時相演算子である。
【００２３】
プロパティ変換部４は、所定の論理形式で記載されているプロパティを、プレモデル検査用プロパティ１２に変換する。例えば「○○が成り立ったら△△がいつか成り立つ」というプロパティに対して、「○○がいつまで経っても成り立たない」というプロパティを生成する。
【００２４】
プレモデル検査用プロパティ１２への変換について説明する。図３は、式１に示すＬＴＬで示された上記プロパティ「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」「Ｇ（ｓｕｍ＜５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０）」「Ｇ（ｎｕｍ＞＝５−>Ｆ  ｐｏｓｔａｇｅ＝０）」を、式２に示す論理式に変換した場合の例である。
【００２５】
ｐｋ：Ｇ（ａｋ−＞Ｆ（ｂｋ））                            式１
ｋ＝１・・・ｎ 
ｎｏｔ（Ｆ  ａ１），・・・，ｎｏｔ（Ｆａｎ）                式２ 
「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」を、「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）」に変換する。
「Ｇ（ｓｕｍ＜５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０）」を、「ｎｏｔ（Ｆ  ｓｕｍ＜５０００）」に変換する。
「Ｇ（ｎｕｍ＞＝５−>Ｆ  ｐｏｓｔａｇｅ＝０）」を、「ｎｏｔ（Ｆ  ｎｕｍ＞＝５）」に変換する。なお、「ｎｏｔ」は反転論理を示す。
【００２６】
変換後、「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）  ａｎｄ  ｎｏｔ（Ｆ  ｓｕｍ＜５０００）  ａｎｄ  ｎｏｔ  （Ｆ  ｎｕｍ＞＝５）」のように各変換したプロパティを「ａｎｄ」する。なお、複数のプロパティを取り扱うことができるモデル検査器であれば必ずしも「ａｎｄ」する必要はない。なお、「ａｎｄ」は論理積を示す。
【００２７】
次に、プレモデル検査用プロパティ１２をモデル検査器インタフェース部５に転送する。
モデル検査器インタフェース部５は、プレモデル検査用プロパティとともに入力データ１０とプログラム１１をモデル検査器２に転送する。
【００２８】
また、モデル検査器２で実行した実行結果１３を受信し、実行結果を入力データ真偽判定部６に転送する。図４は、モデル検査器インタフェース部５が入力データ１０、プログラム１１、プレモデル検査用プロパティ１２などのデータをモデル検査器２に入力する。そして、モデル検査器２が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部５に出力することを示す図である。図４に示す例では、１０００円のメロンと３００円のバナナを購入するときの合計金額を示すプログラム１１を「ｓｕｍ＝１０００＊ｍｅｌｏｎ＋３００＊ｂａｎａｎａ」として示し、メロン４個とバナナ０個を購入したときのデータを「ｍｅｌｏｎ＝４」「ｂａｎａｎａ＝０」として示している。また、プレモデル検査用プロパティ１２は図３で生成したものを使用している。
【００２９】
モデル検査器２はモデル検査を実施して実行結果を出力する。例えば、ＪＰＦ（Java Path Finder）と呼ばれるモデル検査器の場合であれば、実行時のプログラム変数の状態変化を監視するリスナという概念を用いて、状態（変数（ｍｅｌｏｎ、ｂａｎａｎａ）と変数値（４、０）の状態）をプロパティごとに網羅的に検査する。状態を網羅的に検査し終える（ｔｒｕｅ）か、状態変化時に性質を満たしていないとき（ｆａｌｓｅ）に実行を終了する。調べたい性質それぞれに対してその時点までのプログラムのパスを出力する。
【００３０】
図４ではモデル検査器２はｆａｌｓｅに至るまでのプログラムパスとエラー（「ｅｒｒｏｒ１」「ｅｒｒｏｒ２」の内容）を出力している。「ｓｕｍ＝４０００」「ｎｕｍ＝４」がモデル検査器２に入力されたとき、プレモデル検査用プロパティ１２「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）  ａｎｄ  ｎｏｔ（Ｆ  ｓｕｍ＜５０００）  ａｎｄ  ｎｏｔ  （Ｆ  ｎｕｍ＞＝５）」の条件に合わない結果が検出されたためエラーが出力される。つまり、「ｓｕｍ＝４０００」「ｎｕｍ＝４」という結果をプログラムのどこかで算出したためプレモデル検査用プロパティ１２の記述に沿わない結果を得たため「ｅｒｒｏｒ１」の内容として出力されている。なお、ｆａｌｓｅに至るまでのプログラムのパスは、「ｅｒｒｏｒ１」の内容を検出するまでに実行されたプログラムを構成するプログラムモジュールの実行の順番を示したものである。
【００３１】
入力データ真偽判定部６は、各プロパティに対して用意した入力データの判定をする。図５はモデル検査器２の出力である実行結果（出力レポート）に基づいてモデル検査器インタフェース部５により作成されたモデル検査結果格納テーブル（メモリ内に記録）の「状態Ｓ」を入力データ真偽判定部６に入力する。そして、入力データ真偽判定部６によりプロパティの真偽を判定して判定結果を出力することを示している。モデル検査結果格納テーブルの「エラーＩＤ」は「状態Ｓ」に対して設けられた識別番号である。「状態Ｓ」はプレモデル検査用プロパティ１２に沿わない実行結果である。
【００３２】
例えば、図５に示すように実行結果としてメロン４個を購入した場合にエラーが発生し、状態Ｓ「ｓｕｍ＝４０００」「ｎｕｍ＝４」が入力データ真偽判定部６に入力される。次に、各変換後プロパティ「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）」「ｎｏｔ（Ｆ  ｓｕｍ＜５０００）」「ｎｏｔ（Ｆ  ｎｕｍ＞＝５）」に対応する各「事前条件」と「状態Ｓ」とを比較する。「事前条件」は変換後プロパティに基づいて予め作成され、プロパティテーブルに記録されている。図５では「ｓｕｍ＞＝５０００」「ｓｕｍ＜５０００」「ｎｕｍ＞＝５」が記録されている。
【００３３】
状態Ｓが「ｓｕｍ＝４０００」「ｎｕｍ＝４」であるとき、「ｓｕｍ＞＝５０００」に示された条件を満たしていないため「判定結果」として「ＮＧ」が記録される。次に、状態Ｓと「ｓｕｍ＜５０００」とを比較すると条件を満たしているため「判定結果」として「ＯＫ」が記録される。次に、状態Ｓと「ｎｕｍ＞＝５」とを比較すると条件を満たしていないため「判定結果」として「ＮＧ」が記録される。このように全ての変換後プロパティに対して判定を行い、判定結果をモニタやプリンタなどの出力装置に出力する。
【００３４】
プロパティテーブル７、モデル検査結果格納テーブル８はメモリに記録されている。プロパティテーブル７はプロパティ解析部３、プロパティ変換部４、モデル検査器インタフェース部５、入力データ真偽判定部６と接続され、モデル検査結果格納テーブル８はモデル検査器インタフェース部５、入力データ真偽判定部６と接続されている。
【００３５】
環境生成支援装置１の動作について説明する。
図６はプロパティ解析の動作を示すフローチャートである。
ステップＳ６１では、仕様書／設計書に基づいて作成したプロパティの総数ｍをメモリに設定する。また、予め決められた論理式（例えばＬＴＬ：線形時相論理式）で記載されているプロパティの総数をカウントするプロパティ総数カウンタに「１」を設定する（ｋ＝１）。
【００３６】
ステップＳ６２では、仕様書／設計書に基づいてＬＴＬで記述されたプロパティを読み込みパースする。ＬＴＬ自体は、構文や意味が厳密に定められている既知の論理体系である。
【００３７】
ステップＳ６３では、プロパティが所定の論理式で記載されていればステップＳ６４に移行し、記載されていなければステップＳ６５に移行する。例えば、記述したプロパティがＧ（ｒ１−＞Ｆ（ｒ２））のようにＬＴＬ記述されているかを判定する。ここで、ｒ１、ｒ２は任意の命題論理式である。
【００３８】
ステップＳ６４では、プロパティと、そのプロパティに対応するプロパティ識別番号ｐｋ（ｋはプロパティ総数カウンタ値）をプロパティテーブル７の「プロパティＩＤ」「プロパティ記述内容」へ格納する。プロパティテーブル７（図５参照）は「プロパティＩＤ」「プロパティ記述内容」「事前条件」「変換後プロパティ」「判定結果」などの記録領域を有する。
【００３９】
ステップＳ６５ではプロパティ総数カウンタ値ｋに「１」を加算する。
ステップＳ６６では、プロパティ総数カウンタ値ｋとプロパティの総数ｍを比較し、ｋ＞ｍであればステップＳ６７に移行し、ｋ＞ｍでない場合はステップＳ６２に移行する。
【００４０】
ステップＳ６７ではプロパティテーブルに何も記録されていないか（空であるか）判定し、空であれば処理を完了し、空でなければプロパティ変換処理を行う。
図７はプロパティ変換の動作を示すフローチャートである。
【００４１】
ステップＳ７１では、プロパティ解析されたプロパティの行数ｍｍ（プロパティテーブル７に記録したプロパティの総数）をメモリに設定する。また、プロパティの行数をカウントするプロパティ行数カウンタｋｋに「１」を設定する（ｋｋ＝１）。
【００４２】
ステップＳ７２では、プロパティテーブル７からプロパティを読み込む。
ステップＳ７３では、プロパティの内容として記載されているＧ（ｒ１−＞Ｆ（ｒ２））からｒ１を抽出する。例えば、プロパティ識別番号「ｐ１」に対応する「Ｇ（ｓｕｍ＞＝５０００−＞Ｆ  ｄｉｓｃｏｕｎｔ＝０．１）」であれば、「ｓｕｍ＞＝５０００」を抽出する。
【００４３】
ステップＳ７４では、ｒ１をプロパティテーブル７の「事前条件」へ記録する。例えば、ステップＳ７３の例であれば「ｓｕｍ＞＝５０００」を記録する。
ステップＳ７５では、ｒ１をｎｏｔ（Ｆ  ｒ１）に変換する。例えば、「事前条件」が「ｓｕｍ＞＝５０００」であれば、「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）」のように変換する。
【００４４】
ステップＳ７６では、ｎｏｔ（Ｆ  ｒ１）をプロパティテーブル７の「変換後プロパティ」に記録する。
ステップＳ７７ではプロパティ行数カウンタｋｋの値に「１」を加算する。
【００４５】
ステップＳ７８では、プロパティ行数カウンタｋｋとプロパティの行数ｍｍの関係がｋｋ＞ｍｍであればモデル検査器インタフェース処理を行い、この関係が成り立たない場合ステップＳ７３に移行する。
【００４６】
図８はモデル検査器インタフェース処理の動作を示すフローチャートである。
ステップＳ８１では、プロパティテーブル７から変換後プロパティを読み込む。プレモデル検査用プロパティ１２を作成する。例えば、上記説明した「ｎｏｔ（Ｆ  ｓｕｍ＞＝５０００）  ａｎｄ  ｎｏｔ（Ｆ  ｓｕｍ＜５０００）  ａｎｄ  ｎｏｔ  （Ｆ  ｎｕｍ＞＝５）」を作成する。
【００４７】
ステップＳ８２では、プレモデル検査用プロパティをプログラム１１、入力データ１０と共にモデル検査器２へ転送する。
ステップＳ８３はモデル検査器２がモデル検査を実施していることを示している。
【００４８】
ステップＳ８４ではモデル検査器２から実行結果（ｔｒｕｅまたはｆａｌｓｅ＋ｆａｌｓｅ時の状態）を受け取る。ｎ個のエラー状態に対してｎ個の状態が出力される。なお、実行結果のフォーマットはモデル検査器２ごとに異なる。
【００４９】
ステップＳ８５では、実行結果に基づいてエラー時の状態を取得する。例えば、図５の実行結果に示す「ｓｕｍ＝４０００、ｎｕｍ＝４」を取得する。
ステップＳ８６では、モデル検査結果格納テーブル８に固有の「エラーＩＤ」と「状態Ｓ」を記録する。例えば、図５に示す実行結果の「ｅｒｒｏｒ１」に示される「ｓｕｍ＝４０００，ｎｕｍ＝４」を、モデル検査結果格納テーブル８の識別番号を示す「エラーＩＤ」の「ｅ１」に対応する「状態Ｓ」に記録する。その後、データ真偽判定処理を行う。
【００５０】
図９はデータ真偽判定の動作を示すフローチャートである。
ステップＳ９１では、モデル検査結果格納テーブル８の中身が空であるかを判定する。空であればステップＳ９１２に移行する。空でない場合はステップＳ９２に移行する。
【００５１】
ステップＳ９２では、モデル検査結果格納テーブル８の行数ｎをメモリに設定する。また、モデル検査結果カウンタｊに「１」をセットする。
ステップＳ９３では、モデル検査結果格納テーブル８のｊ行目の「状態Ｓ」を取得する。
【００５２】
ステップＳ９４（ループ開始）では、プロパティテーブル７の総行数をメモリに設定する。また、「事前条件」を読み出すために事前条件読み出しカウンタｉに「１」をセットする。
【００５３】
ステップＳ９５では、プロパティテーブル７から「事前条件」を読み込む。
ステップＳ９６では、「状態Ｓ」が「事前条件」を満たしているかどうかを調べる。
ステップＳ９７では、「状態Ｓ」が「事前条件」を満たしている場合はステップＳ９８に移行する。満たしていない場合にはステップＳ９９に移行する。
【００５４】
ステップＳ９８では、プロパティテーブル７内の対応する「判定結果」に「ＯＫ」を書きこむ。
ステップＳ９９（ループ終了）では、現在の「状態Ｓ」とプロパティテーブル７内の全ての「事前条件」を比べ終わったかを判定し、判定が終わっていればステップＳ９５に移行する。
【００５５】
図５に示す例であれば、ステップＳ９４〜Ｓ９９の処理は、モデル検査結果格納テーブル８の「エラーＩＤ」に記録されている「ｅｉ」（ｉは整数）に対応する「状態Ｓ」と、プロパティテーブル７の全ての「事前条件」を順番に比較する。そして、条件を満たしているか否かの判定をしている。「ｅ１」（事前条件読み出しカウンタｉ＝１）であれば「ｓｕｍ＝４０００、ｎｕｍ＝４」を入力したときの結果とプロパティテーブル７の全ての「事前条件」を順番に比較している。
【００５６】
ステップＳ９１０では、モデル検査結果カウンタｊの値を「１」増加させる（ｊ＝ｊ＋１）。
ステップＳ９１１では、モデル検査結果格納テーブル８の行数ｎとモデル検査結果カウンタｊを比較してｊ＞ｎであれば全ての「状態Ｓ」に対して判定が完了したとしてステップＳ９１２に移行する。ｊ＞ｎを満たさない場合にはステップＳ９３に移行する。図５の例で「ｅ１」に対する判定が完了していれば、「ｅ２」に対応する「状態Ｓ」を取得してステップＳ９４に移行する。
【００５７】
ステップＳ９１２では、プロパティテーブル７内の判定結果に「ＯＫ」が書かれていない行に「ＮＧ」を書き込む。
ステップＳ９１３では、プロパティテーブル７の内容を利用者に分かるように出力する。
【００５８】
上記のように、プロパティに対して本番モデル検査を行う前に、プロパティの変換を行い、プレモデル検査を行うことにより、仕様書／設計書に記述された性質をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出することが可能になる。
【００５９】
また、各プロパティに対してデータセットを用意しないで、少ないデータセットからモデル検査を行うことが可能となる。
さらに、用いるデータセットの数が少ないとモデル検査時に生成される状態空間が小さくなり、モデル検査の計算量削減に効果がある。
【００６０】
（実施例２）
実施例２ではプロパティをＣＴＬ（分岐時相論理式）で記載した場合について説明する。
図１０は、設計書の破線範囲に記載されている内容をＣＴＬで記述したときの図である。ここで、ＡＧはこれから先どんなパスをとっても常に論理式が成立することを示している。ＡＦはこれから先どんなパスをとってもいずれ論理式が成立することを示している。
【００６１】
「購入金額が５０００円以上の場合１割引が適用される」は、「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１）」のように記述する。
「購入金額が５０００円未満の場合割引は無し」は、「ＡＧ（ｓｕｍ＜５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０）」のように記述する。
【００６２】
「購入個数が５個以上の場合送料が無料になる」は、「ＡＧ（ｎｕｍ＞＝５−＞ＡＦ  ｐｏｓｔａｇｅ＝０）」のように記述する。
なお、図１０に示す「ｐ１」「ｐ２」「ｐ３」・・・は各プロパティの識別番号を示している。
【００６３】
プロパティ解析部３に、上記プロパティ（上記「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１）」「ＡＧ（ｓｕｍ＜５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０）」「ＡＧ（ｎｕｍ＞＝５−＞ＡＦ  ｐｏｓｔａｇｅ＝０）」など）が入力されると、プロパティが所定の論理式で記載されているかを判定し、該論理式で記載されているプロパティをプロパティ変換部４に転送する。
【００６４】
プレモデル検査用プロパティ１２への変換について説明する。図１１は、式３に示すＣＴＬで示された上記プロパティ「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１）」「ＡＧ（ｓｕｍ＜５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０）」「ＡＧ（ｎｕｍ＞＝５−＞ＡＦ  ｐｏｓｔａｇｅ＝０）」を、式４に示す論理式に変換した場合の例である。
【００６５】
ｐｋ：ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)                式３
ｋ＝１・・・ｎ 
ＥＦ  ａ１,・・・,ＥＦ  ａｎ                          式４ 
「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１）」を、「ＥＦ  ｓｕｍ＞＝５０００」に変換する。
「ＡＧ（ｓｕｍ＜５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０）」を、「ＥＦ  ｓｕｍ＜５０００」に変換する。
「ＡＧ（ｎｕｍ＞＝５−＞ＡＦ  ｐｏｓｔａｇｅ＝０）」を、「ＥＦ  ｎｕｍ＞＝５」に変換する。ここで、ＥＦはあるパスをとるといずれ論理式が成立することを示している。
変換後、「ＥＦ  ｓｕｍ＞＝５０００  ａｎｄ  ＥＦ  ｓｕｍ＜５０００  ａｎｄ  ＥＦ  ｎｕｍ＞＝５」のように各変換したプロパティを「ａｎｄ」する。なお、複数のプロパティを取り扱うことができるモデル検査器であれば必ずしも「ａｎｄ」する必要はない。
【００６６】
次に、プレモデル検査用プロパティ１２をモデル検査器インタフェース部５に転送する。
モデル検査器インタフェース部５は、プレモデル検査用プロパティとともに入力データ１０とプログラム１１をモデル検査器２に転送する。
【００６７】
また、モデル検査器２で実行した実行結果１３を受信し、実行結果を入力データ真偽判定部６に転送する。
図１２は、モデル検査器インタフェース部５が入力データ１０、プログラム１１、プレモデル検査用プロパティ１２などのデータをモデル検査器２に入力する。そして、モデル検査器２が入力データに基いて検査を実行し、実行した結果をモデル検査器インタフェース部５に出力することを示す図である。図１２に示す例では、１０００円のメロンと３００円のバナナを購入するときの合計金額を示すプログラム１１を「ｓｕｍ＝１０００＊ｍｅｌｏｎ＋３００＊ｂａｎａｎａ」として示し、メロン４個とバナナ０個を購入したときのデータを「ｍｅｌｏｎ＝４」「ｂａｎａｎａ＝０」として示している。また、プレモデル検査用プロパティ１２は図１１で生成したものを使用している。
【００６８】
モデル検査器２はモデル検査を実施して実行結果を出力する。ＣＴＬの場合、例えばＳＭＶ（Symbolic Model Verifier）などのモデル検査器を用いる場合であれば、プレモデル検査の結果でｆａｌｓｅのときデータは正しくなかった、ｔｒｕｅの場合データは正しかったと判定する。図１２ではＣＴＬのモデル検査器２はｔｒｕｅに至るまでのプログラムパスとエラー（「ｅｒｒｏｒ１」「ｅｒｒｏｒ２」の内容）を出力している。
「ｓｕｍ＝４０００」「ｎｕｍ＝４」がモデル検査器２に入力されたとき、プレモデル検査用プロパティ１２「ＥＦ  ｓｕｍ＞＝５０００  ａｎｄ  ＥＦ  ｓｕｍ＜５０００  ａｎｄ  ＥＦ  ｎｕｍ＞＝５」の条件に合わない結果が検出されたためエラーが出力される。つまり、「ｓｕｍ＝４０００」「ｎｕｍ＝４」という結果をプログラムのどこかで算出したためプレモデル検査用プロパティ１２の記述に沿わない結果を得たため「ｅｒｒｏｒ１」の内容として出力されている。
【００６９】
入力データ真偽判定部６は、各プロパティに対して用意した入力データの正しさを判定する。図１３はモデル検査器２の出力である実行結果（出力レポート）に基づいてモデル検査器インタフェース部５により作成されたモデル検査結果格納テーブル（メモリ内に記録）を入力データ真偽判定部６に入力する。そして、入力データ真偽判定部６によりプロパティの真偽を判定して判定結果を出力することを示している。モデル検査結果格納テーブルの「エラーＩＤ」は「状態Ｓ」に対して設けられた識別番号である。「状態Ｓ」はプレモデル検査用プロパティ１２に沿わない実行結果である。
【００７０】
例えば、図１３に示すように判定結果としてメロン４個を購入した場合にエラーが発生し、状態Ｓ「ｓｕｍ＝４０００」「ｎｕｍ＝４」が入力データ真偽判定部６に入力される。次に、各変換後プロパティ「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１）」「ＡＧ（ｓｕｍ＜５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０）」「ＡＧ（ｎｕｍ＞＝５−＞ＡＦ  ｐｏｓｔａｇｅ＝０）」に対応する各「事前条件」と「状態Ｓ」とを比較する。「事前条件」は変換後プロパティに基づいて予め作成され、プロパティテーブルに記録されている。図１３では「ｓｕｍ＞＝５０００」「ｓｕｍ＜５０００」「ｎｕｍ＞＝５」が記録されている。
【００７１】
状態Ｓが「ｓｕｍ＝４０００」「ｎｕｍ＝４」であるとき、「ｓｕｍ＞＝５０００」に示された条件を満たしていないため「判定結果」として「ＮＧ」が記録される。次に、状態Ｓと「ｓｕｍ＜５０００」とを比較すると条件を満たしているため「判定結果」として「ＯＫ」が記録される。次に、状態Ｓと「ｎｕｍ＞＝５」とを比較すると条件を満たしていないため「判定結果」として「ＮＧ」が記録される。このように全ての変換後プロパティに対して判定を行い、判定結果を出力する。
【００７２】
図１４はプロパティ解析の動作を示すフローチャートである。
ステップＳ１４１では、仕様書／設計書に基づいて作成したプロパティの総数ｍをメモリに設定する。また、ＣＴＬで記載されているプロパティの総数をカウントするプロパティ総数カウンタに「１」を設定する（ｋ＝１）。
【００７３】
ステップＳ１４２では、仕様書／設計書に基づいてＣＴＬで記述されたプロパティを読み込みパースする。ＣＴＬ自体は、構文や意味が厳密に定められている既知の論理体系である。
【００７４】
ステップＳ１４３では、プロパティがＣＴＬ論理式で記載されていればステップＳ１４４に移行し、記載されていればステップＳ１４５に移行する。例えば、記述したプロパティがＡＧ（ｒ１−＞ＡＦ（ｒ２））のようにＣＴＬ記述されているかを判定する。ここで、ｒ１、ｒ２は任意の命題論理式である。
【００７５】
ステップＳ１４４では、プロパティと、そのプロパティに対応するプロパティ識別番号ｐｋ（ｋはプロパティ総数カウンタ値）をプロパティテーブル７の「プロパティＩＤ」「プロパティ記述内容」へ格納する。プロパティテーブル７（図１４参照）は「プロパティＩＤ」「プロパティ記述内容」「事前条件」「変換後プロパティ」「判定結果」などの記録領域を有する。
【００７６】
ステップＳ１４５ではプロパティ総数カウンタ値ｋに１を加算する。
ステップＳ１４６では、プロパティ総数カウンタ値ｋとプロパティの総数ｍを比較し、ｋ＞ｍであればステップＳ１４７に移行し、ｋ＞ｍでない場合はステップＳ１４２に移行する。
【００７７】
ステップＳ１４７ではプロパティテーブルが空であるかを判定し、空であれば処理を完了し、空でなければプロパティ変換処理を行う。
図１５はプロパティ変換の動作を示すフローチャートである。
【００７８】
ステップＳ１５１では、プロパティ解析されたプロパティの行数ｍｍ（プロパティテーブル７に記録したプロパティの総数）をメモリに設定する。また、プロパティの行数をカウントするプロパティ行数カウンタｋｋに「１」を設定する（ｌ＝１）。
【００７９】
ステップＳ１５２では、プロパティテーブル７からプロパティを読み込む。
ステップＳ１５３では、プロパティ記述内容ＡＧ（ｒ１−＞ＡＦ（ｒ２））からｒ１を抽出する。例えば、プロパティ識別番号「ｐ１」に対応する「ＡＧ（ｓｕｍ＞＝５０００−＞ＡＦ  ｄｉｓｃｏｕｎｔ＝０．１)」であれば、「ｓｕｍ＞＝５０００」を抽出する。
【００８０】
ステップＳ１５４では、ｒ１をプロパティテーブル７の「事前条件」へ格納する。
ステップＳ１５５では、ｒ１をｎｏｔ（ＥＦ  ｒ１）に変換する。例えば、「事前条件」が「ｓｕｍ＞＝５０００」であれば、「ＥＦ  ｓｕｍ＞＝５０００」のように変換する。
【００８１】
ステップＳ１５６では、ＥＦ  ｒ１をプロパティテーブル７の「変換後プロパティ」に格納する。
ステップＳ１５７ではプロパティ行数カウンタｋｋの値に「１」を加算する。
【００８２】
ステップＳ１５８では、プロパティ行数カウンタｋｋとプロパティの行数ｍｍの関係がｋｋ＞ｍｍであればモデル検査器インタフェース処理を行い、この関係が成り立たない場合ステップＳ１５３に移行する。
【００８３】
図１６はモデル検査器インタフェース処理の動作を示すフローチャートである。
ステップＳ１６１では、プロパティテーブル７から変換後プロパティを読み込む。プレモデル検査用プロパティ１２を作成する。例えば、上記説明した「ＥＦ  ｓｕｍ＞＝５０００  ａｎｄ  ＥＦ  ｓｕｍ＜５０００  ａｎｄ  ＥＦ  ｎｕｍ＞＝５」を作成する。
【００８４】
ステップＳ１６２では、プレモデル検査用プロパティ１２をプログラム１１、入力データ１０と共にモデル検査器２へ転送する。
ステップＳ１６３ではモデル検査器２がモデル検査を実施する。
【００８５】
ステップＳ１６４ではモデル検査器２から実行結果（ＣＴＬモデル検査器でＥＦを調べた場合ｔｒｕｅ＋ｔｒｕｅ時の状態またはｆａｌｓｅ）を受け取る。ｎ個のｔｒｕｅ結果に対してｎ個の状態が出力される。なお、実行結果のフォーマットはモデル検査器ごとに異なる。
【００８６】
ステップＳ１６５では、実行結果を元にエラー時の状態を取得する。例えば、図１３の実行結果に示す「ｓｕｍ＝４０００、ｎｕｍ＝４」を取得する。
ステップＳ１６６では、モデル検査結果格納テーブル８に固有の「エラーＩＤ」と「状態Ｓ」を記録する。例えば、図１３に示す実行結果の「ｅｒｒｏｒ１」に示される「ｓｕｍ＝４０００，ｎｕｍ＝４」を、モデル検査結果格納テーブル８の識別番号を示す「エラーＩＤ」に「ｅ１」として記録し、「状態Ｓ」に「ｓｕｍ＝４０００，ｎｕｍ＝４」を記録する。その後、データ真偽判定処理を行う。データ真偽判定は図９に示したフローチャートと同じ動作をする。
【００８７】
（本発明の実施形態がコンピュータプログラムとして実現される場合の構成）
図１７は、上記本発明の実施形態の装置を実現できるコンピュータのハードウェア構成の一例を示す図である。図１７において、環境生成支援する装置１７０は、ＣＰＵ１７１、ＲＯＭ１７２、ＲＡＭ１７３、ハードディスクドライブ（ＨＤＤ）１７４、フレキシブルディスクドライブ（ＦＤＤ）１７５、入力インタフェース（入力Ｉ／Ｆ）１７６、通信インタフェース（通信Ｉ／Ｆ）１７７、出力インタフェース（出力Ｉ／Ｆ）１７９、グラッフィック処理部１７１０などを備えている。また、上記各構成部はバス１７１１によってそれぞれ接続されている。
【００８８】
ＣＰＵ１７１は、ＲＯＭ１７２、ＲＡＭ１７３、ＨＤＤ１７４、ＦＤＤ１７５に格納されているプログラムやデータに応じた処理を実行し、装置１７０の全体の制御などをする。ＲＯＭ１７２は、ＣＰＵ１７１が実行する基本的なプログラム（ブートプログラムなど）やデータを記録する。ＲＡＭ１７３は、ＣＰＵ１７１が実行途中のプログラムやデータを記録し、ワークエリアなどとして使用される。
【００８９】
ＨＤＤ１７４には、ＣＰＵ１７１が実行するＯＳ（Operation System）やアプリケーションプログラムなどが記録され、ＣＰＵ１７１の制御にしたがいハードディスクにデータのリード／ライトを実行する。ＦＤＤ１７５は、ＣＰＵ１７１の制御にしたがってＦＤ１７５ａに対するデータのリード／ライトを制御する。ＦＤ１７５ａは、ＦＤＤ１７５の制御で書き込まれたデータを記憶したり、ＦＤ１７５ａに記憶されたデータを装置１７０に読み取らせたりする。また、着脱可能な記録媒体としてＦＤ１７５ａのほか、コンピュータで読み取り可能な記録媒体として、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(DigitalVersatileDisc)、ＤＶＤ−ＲＡＭ(RandomAccessMemory)、ＣＤ−ＲＯＭ(CompactDiscReadOnlyMemory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Opticaldisk)などがある。
【００９０】
入力Ｉ／Ｆ１７６は、マウスやキーボードが接続され、ユーザが入力した情報を受信し、バス１７１１を介してＣＰＵ１７１に送信する。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００９１】
通信Ｉ／Ｆ１７７は、必要に応じ、他のコンピュータとの間のＬＡＮ接続やインターネット接続や無線接続のためのインタフェースである。通信回線を通じてインターネットなどのネットワークを介して他の装置に接続される。そして、ネットワーク１７８と内部のインタフェースは、外部装置からのデータの入出力を制御する。例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００９２】
出力Ｉ／Ｆ１７９は、プリンタなどの出力装置１７９ａを制御するために備えられる。また、グラフィック処理部１７１０には、ディスプレイなどの表示装置１７１０ａが接続される。グラフィック処理部１７１０は、ＣＰＵ１７１からの描画命令に従って表示装置１７１０ａの画面上に操作情報、論理シミュレーション後のログやカバレッジの集計結果、信号波形等を表示する。例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。なお、グラフィック処理部１７１０を介さずに、出力Ｉ／Ｆ１７９から表示装置と接続してもよい。
【００９３】
このようなハードウェア構成を有するコンピュータを１台または２台以上用いることによって、上記説明した各種処理機能（実施例１、２で説明した処理（フローチャートなど））が実現される。その場合システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００９４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９６】
なお、ＬＴＬ、ＣＴＬ両方を記述できるＣＴＬ＊という論理式を用いてもよい。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
【００９７】
以上実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータに、
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換処理と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
を実行させることを特徴とする環境生成支援プログラム。
（付記２）
コンピュータに、
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換処理と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するＣＴＬ用のモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
を実行させることを特徴とする環境生成支援プログラム。
（付記３）
前記プロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語（ａｋ−＞Ｆ（ｂｋ））が「いつでも」成り立つことを示す時相演算子Ｇと、性質を示す述語（ｂｋ）が「いつか」成り立つことを示す時相演算子Ｆを用いて、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））で記述されたプロパティを取得し、前記線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））から前記ａｋを抽出して前記時相演算子Ｆと反転論理ｎｏｔにより前記ａｋをｎｏｔ（Ｆ  ａｋ）に変換するとともに、事前条件として前記ａｋと、プレモデル検査用プロパティとして前記ｎｏｔ（Ｆ  ａｋ）を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース処理は、
入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記ｎｏｔ（Ｆ  ａｋ）で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記１に記載の環境生成支援プログラム。
（付記４）
前記ＣＴＬ用のプロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ａｋ−＞ＡＦ（ｂｋ）)がこれから先どんなパスをとっても常に成立することを示す時相演算子ＡＧと、性質を示す述語（ｂｋ）がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子ＡＦを用いて、分岐時相論理式ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)で記述されたプロパティを取得し、前記ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)から前記ａｋを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子ＥＦによりＥＦ  ａｋに変換するとともに、前記事前条件として前記ａｋと、前記プレモデル検査用プロパティとして前記ＥＦ  ａｋを前記プロパティテーブルに記録し、
前記ＣＴＬ用のモデル検査器インタフェース処理は、
前記モデル検査器に、前記プロパティとして前記ＥＦ  ａｋで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記２に記載の環境生成支援プログラム。
（付記５）
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換部と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、
を備えることを特徴とする環境生成支援装置。
（付記６）
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換部と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するＣＴＬ用のモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、を備えことを特徴とする環境生成支援装置。
（付記７）
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換し、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
（付記８）
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するＣＴＬ用のプロパティ変換をし、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
（付記９）
前記プロパティ変換部は、
メモリに記録されたプロパティテーブルから、性質を示す述語（ａｋ−＞Ｆ（ｂｋ））が「いつでも」成り立つことを示す時相演算子Ｇと、性質を示す述語（ｂｋ）が「いつか」成り立つことを示す時相演算子Ｆを用いて、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））で記述されたプロパティを取得し、前記Ｇ（ａｋ−＞Ｆ（ｂｋ））から前記ａｋを抽出して前記時相演算子Ｆと反転論理ｎｏｔにより前記ａｋをｎｏｔ（Ｆ  ａｋ）に変換するとともに、事前条件として前記ａｋと、プレモデル検査用プロパティとして前記ｎｏｔ（Ｆ  ａｋ）を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース部は、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記ｎｏｔ（Ｆ  ａｋ）で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記５に記載の環境生成支援装置。
（付記１０）
前記ＣＴＬ用のプロパティ変換部は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ａｋ−＞ＡＦ（ｂｋ）)がこれから先どんなパスをとっても常に成立することを示す時相演算子ＡＧと、性質を示す述語（ｂｋ）がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子ＡＦを用いて、分岐時相論理式ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)で記述されたプロパティを取得し、前記ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)から前記ａｋを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子ＥＦによりＥＦ  ａｋに変換するとともに、前記事前条件として前記ａｋと、前記プレモデル検査用プロパティとして前記ＥＦ  ａｋを前記プロパティテーブルに記録し、
前記ＣＴＬ用のモデル検査器インタフェース部は、
前記モデル検査器に、前記プロパティとして前記ＥＦ  ａｋで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記６に記載の環境生成支援装置。
（付記１１）
前記プロパティ変換は、
メモリに記録されたプロパティテーブルから、性質を示す述語（ａｋ−＞Ｆ（ｂｋ））が「いつでも」成り立つことを示す時相演算子Ｇと、性質を示す述語（ｂｋ）が「いつか」成り立つことを示す時相演算子Ｆを用いて、線形時相論理式Ｇ（ａｋ−＞Ｆ（ｂｋ））で記述されたプロパティを取得し、前記Ｇ（ａｋ−＞Ｆ（ｂｋ））から前記ａｋを抽出して前記時相演算子Ｆと反転論理ｎｏｔにより前記ａｋをｎｏｔ（Ｆ  ａｋ）に変換するとともに、事前条件として前記ａｋと、プレモデル検査用プロパティとして前記ｎｏｔ（Ｆ  ａｋ）を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース処理は、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記ｎｏｔ（Ｆ  ａｋ）で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記７に記載の環境生成支援方法。
（付記１２）
前記ＣＴＬ用のプロパティ変換は、
メモリに記録されたプロパティテーブルから、性質を示す述語(ａｋ−＞ＡＦ（ｂｋ）)がこれから先どんなパスをとっても常に成立することを示す時相演算子ＡＧと、性質を示す述語（ｂｋ）がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子ＡＦを用いて、分岐時相論理式ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)で記述されたプロパティを取得し、前記ＡＧ（ａｋ−＞ＡＦ（ｂｋ）)から前記ａｋを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子ＥＦによりＥＦ  ａｋに変換するとともに、前記事前条件として前記ａｋと、前記プレモデル検査用プロパティとして前記ＥＦ  ａｋを前記プロパティテーブルに記録し、
前記ＣＴＬ用のモデル検査器インタフェース処理は、
前記モデル検査器に、プロパティとして前記ＥＦ  ａｋで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記８に記載の環境生成支援方法。
（付記１３）
前記プロパティ変換処理は、
複数の前記ｎｏｔ（Ｆ  ａｋ）を論理積することを特徴とする付記３に記載の環境生成支援プログラム。
（付記１４）
前記ＣＴＬ用のプロパティ変換処理は、
複数の前記ＥＦ  ａｋを論理積することを特徴とする付記４に記載の環境生成支援プログラム。
（付記１５）
前記プロパティ変換部は、
複数の前記ｎｏｔ（Ｆ  ａｋ）を論理積することを特徴とする付記９に記載の環境生成支援装置。
（付記１６）
前記ＣＴＬ用のプロパティ変換部は、
複数の前記ＥＦ  ａｋを論理積することを特徴とする付記１０に記載の環境生成支援装置。
（付記１７）
前記プロパティ変換は、
複数の前記ｎｏｔ（Ｆ  ａｋ）を論理積することを特徴とする付記１１に記載の環境生成支援方法。
（付記１８）
前記ＣＴＬ用のプロパティ変換は、
複数の前記ＥＦ  ａｋを論理積することを特徴とする付記１２に記載の環境生成支援方法。
【図面の簡単な説明】
【００９８】
【図１】モデル検査を行うための環境生成支援装置とモデル検査器の構成を示す図である。
【図２】設計書（または仕様書）に記載された内容に基づいてプロパティを作成した場合の例を示す図である。
【図３】ＬＴＬで示されたプロパティを変換した例を示す図である。
【図４】モデル検査器インタフェース部が入力データ、プログラム、プレモデル検査用プロパティなどのデータをモデル検査器に入力し、モデル検査器が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部に出力することを示す図である。
【図５】入力データ真偽判定部により、モデル検査器の出力である実行結果に基づいてプロパティの真偽を判定して判定結果を出力することを示す図である。
【図６】ＬＴＬで記述したプロパティのプロパティ解析の動作を示すフローチャートである。
【図７】ＬＴＬで記述したプロパティのプロパティ変換の動作を示すフローチャートである。
【図８】ＬＴＬで記述したプロパティのモデル検査器インタフェース処理の動作を示すフローチャートである。
【図９】プロパティのデータ真偽判定の動作を示すフローチャートである。
【図１０】設計書の破線範囲に記載されている内容をＣＴＬで記述したときの図である。
【図１１】ＣＴＬで示されたプロパティを変換した場合の例を示す図である。
【図１２】モデル検査器インタフェース部が入力データ、プログラム、プレモデル検査用プロパティなどのデータをモデル検査器に入力し、モデル検査器が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部に出力することを示す図である。
【図１３】入力データ真偽判定部により、モデル検査器の出力である実行結果に基づいてプロパティの真偽を判定して判定結果を出力することを示す図である。
【図１４】ＣＴＬで記述したプロパティのプロパティ解析の動作を示すフローチャートである。
【図１５】ＣＴＬで記述したプロパティのプロパティ変換の動作を示すフローチャートである。
【図１６】ＣＴＬで記述したプロパティのモデル検査器インタフェース処理の動作を示すフローチャートである。
【図１７】本発明の実施形態がコンピュータプログラムとして実現される場合の構成を示す図である。
【図１８】従来のテストの工程（Ａ）とモデル検査の工程（Ｂ）を比較した図である。
【符号の説明】
【００９９】
１      環境生成支援装置
２      モデル検査器
３      プロパティ解析部
４      プロパティ変換部
５      モデル検査器インタフェース部
６      入力データ真偽判定部
７      プロパティテーブル
８      モデル検査結果格納テーブル
９      プロパティ
１０      入力データ
１１      プログラム
１２      プレモデル検査用プロパティ
１３      実行結果
１７０      装置
１７１      ＣＰＵ
１７２      ＲＯＭ
１７３      ＲＡＭ
１７４      ハードディスクドライブ（ＨＤＤ）
１７５      フレキシブルディスクドライブ（ＦＤＤ）
１７５ａ      記録媒体（ＦＤ）
１７６      入力インタフェース（入力Ｉ／Ｆ）
１７７      通信インタフェース（通信Ｉ／Ｆ）
１７８      ネットワーク
１７９      出力インタフェース（出力Ｉ／Ｆ）
１７１０      グラッフィック処理部
１７１０ａ      表示装置
【図１】
2010102650.tif 000003
【図２】
2010102650.tif 000004
【図３】
2010102650.tif 000005
【図５】
2010102650.tif 000006
【図６】
2010102650.tif 000007
【図７】
2010102650.tif 000008
【図８】
2010102650.tif 000009
【図９】
2010102650.tif 000010
【図１０】
2010102650.tif 000011
【図１１】
2010102650.tif 000012
【図１３】
2010102650.tif 000013
【図１４】
2010102650.tif 000014
【図１５】
2010102650.tif 000015
【図１６】
2010102650.tif 000016
【図１７】
2010102650.tif 000017
【図１８】
2010102650.tif 000018
【図４】
2010102650.tif 000019
【図１２】
2010102650.tif 000020