JP5228794B2 - モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム - Google Patents

モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム Download PDF

Info

Publication number
JP5228794B2
JP5228794B2 JP2008275828A JP2008275828A JP5228794B2 JP 5228794 B2 JP5228794 B2 JP 5228794B2 JP 2008275828 A JP2008275828 A JP 2008275828A JP 2008275828 A JP2008275828 A JP 2008275828A JP 5228794 B2 JP5228794 B2 JP 5228794B2
Authority
JP
Japan
Prior art keywords
property
model
precondition
checking
model checking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008275828A
Other languages
English (en)
Other versions
JP2010102650A (ja
Inventor
憲二 大木
一樹 宗像
忠弘 上原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008275828A priority Critical patent/JP5228794B2/ja
Publication of JP2010102650A publication Critical patent/JP2010102650A/ja
Application granted granted Critical
Publication of JP5228794B2 publication Critical patent/JP5228794B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、システム開発のテスト工程においてモデル検査を用いる際に、モデル検査を実施するための入力データを正しく、かつ容易に作成するための技術に関する。
図18は、従来のテストの工程(図18A)とモデル検査の工程(図18B)を比較した図である。従来の図18Aのようなテストでは、仕様書や設計書(S1)を参照してテスト項目を抽出し(S2)、抽出した項目に基づいてテストケース(S3)とテストに必要なデータを作成(S4)する。その後、テストケースとテストデータを対象のシステムに入力してテストを行い(S5)、結果報告書(S6)を取得する。このように図18Aのテストでは、基本的にテストケースやテストデータの作成を人手で行うためテスト前準備に時間がかかるとともに、テストケースやテストデータに誤りがあると、テスト漏れ、テストミスが発生し、テスト時間が増えてしまう原因になる。
そこで、作業時間を短縮するためにモデル検査を用いる提案がされている。モデル検査とは、テスト対象であるシステムの振舞いを設計書・仕様書から取り出し、モデル検査の専用言語で記述したソフトウェア(擬似システム)を作成し、擬似システムにテストデータを入力することで実施するテストのことである。設計書・仕様書に基づき、状態遷移の各状態が取りうる全ての組み合わせを抽出し、これらの組み合わせに対してテストデータを入力する。図18Bに示すように、仕様書や設計書(S1)を参照してプロパティを作成し(S7)、作成したプロパティに基づいて入力データを作成する(S8)。その後、入力データを対象のシステムに入力してモデル検査を行い(S9)、結果報告書(S10)を取得する。モデル検査を用いると、テストケースの作成をする必要がなく、テストを完全自動化することができる。
例えば、仕様書には「ログインに成功したら初期画面が表示される」という条件と振る舞い(プロパティ)が記載されている場合に、モデル検査において「ログインが成功したのに初期画面が表示されなかった」ことが検出される。この時の状態遷移上のたどったパスをエラーが存在するとして利用者に提示する。ここで、あるIDと当該IDに対応しないパスワード(誤ったパスワード)をテストデータとして用意してモデル検査を実行した場合には、ログインに成功することはないので、「ログインに成功する」という条件が発生せず、上述のプロパティに対するエラーは提示されない。したがって、利用者はこのエラーに気づかないままモデル検査を完了させてしまうという問題がある。
また、システム開発のテスト工程においてモデル検査を実施するためには、正しい入力データ(環境ドライバやスタブの一部など)を入力しなければならない。ところが、モデル検査はプログラムのあらゆる状態を網羅的に検査し、プログラムが満たすべき性質(プロパティ)を満たすかどうか調べる検査であるため、モデル検査を行うためのプロパティや入力データセットなどの必要な環境を、設計書などに従い人間が用意している。しかし、モデル検査にとって検査により調べたい対象はあくまでもプログラムであり、同時に入力として与えられたプロパティや入力データセットは仕様に過ぎない。そのため、プロパティや入力データといった仕様自体が適切でなかった場合、モデル検査の結果は意味のないものとなってしまう。
このように、プロパティに着目してデータを用意しようとした場合、検査したいプロパティの数だけ入力データを考えなければないため、全ての項目について検討するには多くの時間を要してしまうという問題がある。また、モデル検査時の計算量増加の要因にもなるとともに、完全なデータを準備するのは困難である。
特許文献1によれば、パラメータごとの設定条件を記述可能な仕様記述言語を導入し、これを用いて試験データの仕様記述を行う。試験データの作成はtdgenがこの仕様記述に基づいて行う。また、試験データの解析はtdanaが受信したデータをこの仕様記述言語に変換し、被試験項目を満足するか否か検査する。このように通信ソフトウェアの試験に用いる試験データの仕様記述において、被試験項目に対する仕様記述のみを行う。また、この被試験項目のみを記述した仕様から試験データを作成する方法、並びに試験データの解析において被試験項目のみを検査する方法が提案されている。
しかしながら、特許文献1ではテストデータの仕様を記述して、その仕様に対してテストデータの自動生成や検査を行っているため、テストデータがテストデータの仕様と直接関連づけられていない場合に対応できない。例えば「購入額が○○円以上の場合ならば・・・を満たす」という性質を調べたい場合、購入額が○○円以上になるための具体的なデータ(商品Aが○個など)が必要となる場合があるが、これを生成するためには「商品Aが○個の場合・・・」というデータの仕様を記述しなければならない。
また、特許文献1には仕様からテストデータを作成する技術が開示されているが、テスト漏れが存在する旨を提示するということについて開示されていない。
特開平6−205083号公報
上記のような実情に鑑みてなされたものであり、仕様書/設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成する環境生成支援装置、環境生成支援方法、環境生成支援プログラムを提供することを目的とする。
態様のひとつである環境生成支援処理は、プロパティ変換、モデル検査器インタフェース処理、入力データ真偽判定を実行する。プロパティ変換は、メモリに記録されたプロパティテーブルから、性質を示す述語(ak−>F(bk))が「いつでも」成り立つことを示す時相演算子Gと、性質を示す述語(bk)が「いつか」成り立つことを示す時相演算子Fを用いて、線形時相論理式G(ak−>F(bk))で記述されたプロパティを取得する。そして、前記線形時相論理式G(ak−>F(bk))から前記akを抽出して前記時相演算子Fと反転論理notにより前記akをnot(F ak)と変換するとともに、事前条件として前記akと、プレモデル検査用プロパティとして前記not(F ak)を前記プロパティテーブルに記録する。
モデル検査器インタフェース処理は、プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記not(F ak)で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録する。
入力データ真偽判定は、前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果と、前記事前条件とを比較して前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する。
設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成することができる。
また前記プロパティ変換処理と前記モデル検査器インタフェース処理の換わりに、CTL用のプロパティ変換とCTL用のモデル検査器インタフェース処理にしてもよい。
CTL用のプロパティ変換は、メモリに記録された前記プロパティテーブルから、性質を示す述語(ak−>AF(bk))がこれから先どんなパスをとっても常に成立することを示す時相演算子AGと、性質を示す述語(bk)がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子AFを用いて、分岐時相論理式AG(ak−>AF(bk))で記述されたプロパティを取得する。そして、前記AG(ak−>AF(bk))から前記akを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子EFによりEF akと変換するとともに、前記事前条件として前記akと、前記プレモデル検査用プロパティとして前記EF akを前記プロパティテーブルに記録するする。
CTL用のモデル検査器インタフェース処理は、前記モデル検査器に、前記プロパティとして前記EF akで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録する。
設計書などに記述された内容をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出して、検出結果に基づいてモデル検査を実施するための入力データを作成することができる。
以下図面に基づいて、本発明の実施形態について詳細を説明する。
(実施例1)
図1は、モデル検査を行うための環境生成支援装置1とモデル検査器2の構成を示す図である。
環境生成支援装置1は、プロパティ解析部3、プロパティ変換部4、モデル検査器インタフェース部5、入力データ真偽判定部6、プロパティテーブル7、モデル検査結果格納テーブル8を備えている。プロパティ解析部3、プロパティ変換部4、モデル検査器インタフェース部5、入力データ真偽判定部6はCPUやプログラマブルデバイスを用いて実現できる。プロパティテーブル7、モデル検査結果格納テーブル8はメモリに記録されている。
プロパティ解析部3は、論理式で記述されたプロパティ9を読み込み、プロパティを解析する(例えば、含意論理演算子を含むかを調べる)。プロパティ9について説明する。図2は、設計書(または仕様書)に記載された内容に基づいてプロパティを作成した場合の例である。本例では破線範囲に記載されている購入ボタン押下時処理の内容である「購入金額が5000円以上の場合1割引が適用される」「購入金額が5000円未満の場合割引は無し」「購入個数が5個以上の場合送料が無料になる」をプロパティ記述に変換する。図2の例ではプロパティをLTL(線形時相論理式)で記載している。
「購入金額が5000円以上の場合1割引が適用される」は、「G(sum>=5000−>F discount=0.1)」のように記述する。
「購入金額が5000円未満の場合割引は無し」は、「G(sum<5000−>F discount=0)」のように記述する。
「購入個数が5個以上の場合送料が無料になる」は、「G(num>=5−>F postage=0)」のように記述する。
なお、図2に示す「p1」「p2」「p3」・・・は各プロパティの識別番号を示している。
次に、プロパティ解析部3に、プロパティ(上記「G(sum>=5000−>F discount=0.1)」「G(sum<5000−>F discount=0)」「G(num>=5−>F postage=0)」など)が入力されると、プロパティが所定の論理式で記載されているかを判定し、該論理式で記載されているプロパティをプロパティ変換部4に転送する。ここで、上記Gは「いつでも」を示す時相演算子であり、例えば、「G(sum>=5000−>F discount=0.1)」の「(sum>=5000−>F discount=0.1)」の部分は性質を表す述語である。また、Fは「いつか」を示す時相演算子である。
プロパティ変換部4は、所定の論理形式で記載されているプロパティを、プレモデル検査用プロパティ12に変換する。例えば「○○が成り立ったら△△がいつか成り立つ」というプロパティに対して、「○○がいつまで経っても成り立たない」というプロパティを生成する。
プレモデル検査用プロパティ12への変換について説明する。図3は、式1に示すLTLで示された上記プロパティ「G(sum>=5000−>F discount=0.1)」「G(sum<5000−>F discount=0)」「G(num>=5−>F postage=0)」を、式2に示す論理式に変換した場合の例である。
pk:G(ak−>F(bk)) 式1
k=1・・・n
not(F a1),・・・,not(Fan) 式2
「G(sum>=5000−>F discount=0.1)」を、「not(F sum>=5000)」に変換する。
「G(sum<5000−>F discount=0)」を、「not(F sum<5000)」に変換する。
「G(num>=5−>F postage=0)」を、「not(F num>=5)」に変換する。なお、「not」は反転論理を示す。
変換後、「not(F sum>=5000) and not(F sum<5000) and not (F num>=5)」のように各変換したプロパティを「and」する。なお、複数のプロパティを取り扱うことができるモデル検査器であれば必ずしも「and」する必要はない。なお、「and」は論理積を示す。
次に、プレモデル検査用プロパティ12をモデル検査器インタフェース部5に転送する。
モデル検査器インタフェース部5は、プレモデル検査用プロパティとともに入力データ10とプログラム11をモデル検査器2に転送する。
また、モデル検査器2で実行した実行結果13を受信し、実行結果を入力データ真偽判定部6に転送する。図4は、モデル検査器インタフェース部5が入力データ10、プログラム11、プレモデル検査用プロパティ12などのデータをモデル検査器2に入力する。そして、モデル検査器2が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部5に出力することを示す図である。図4に示す例では、1000円のメロンと300円のバナナを購入するときの合計金額を示すプログラム11を「sum=1000*melon+300*banana」として示し、メロン4個とバナナ0個を購入したときのデータを「melon=4」「banana=0」として示している。また、プレモデル検査用プロパティ12は図3で生成したものを使用している。
モデル検査器2はモデル検査を実施して実行結果を出力する。例えば、JPF(Java Path Finder)と呼ばれるモデル検査器の場合であれば、実行時のプログラム変数の状態変化を監視するリスナという概念を用いて、状態(変数(melon、banana)と変数値(4、0)の状態)をプロパティごとに網羅的に検査する。状態を網羅的に検査し終える(true)か、状態変化時に性質を満たしていないとき(false)に実行を終了する。調べたい性質それぞれに対してその時点までのプログラムのパスを出力する。
図4ではモデル検査器2はfalseに至るまでのプログラムパスとエラー(「error1」「error2」の内容)を出力している。「sum=4000」「num=4」がモデル検査器2に入力されたとき、プレモデル検査用プロパティ12「not(F sum>=5000) and not(F sum<5000) and not (F num>=5)」の条件に合わない結果が検出されたためエラーが出力される。つまり、「sum=4000」「num=4」という結果をプログラムのどこかで算出したためプレモデル検査用プロパティ12の記述に沿わない結果を得たため「error1」の内容として出力されている。なお、falseに至るまでのプログラムのパスは、「error1」の内容を検出するまでに実行されたプログラムを構成するプログラムモジュールの実行の順番を示したものである。
入力データ真偽判定部6は、各プロパティに対して用意した入力データの判定をする。図5はモデル検査器2の出力である実行結果(出力レポート)に基づいてモデル検査器インタフェース部5により作成されたモデル検査結果格納テーブル(メモリ内に記録)の「状態S」を入力データ真偽判定部6に入力する。そして、入力データ真偽判定部6によりプロパティの真偽を判定して判定結果を出力することを示している。モデル検査結果格納テーブルの「エラーID」は「状態S」に対して設けられた識別番号である。「状態S」はプレモデル検査用プロパティ12に沿わない実行結果である。
例えば、図5に示すように実行結果としてメロン4個を購入した場合にエラーが発生し、状態S「sum=4000」「num=4」が入力データ真偽判定部6に入力される。次に、各変換後プロパティ「not(F sum>=5000)」「not(F sum<5000)」「not(F num>=5)」に対応する各「事前条件」と「状態S」とを比較する。「事前条件」は変換後プロパティに基づいて予め作成され、プロパティテーブルに記録されている。図5では「sum>=5000」「sum<5000」「num>=5」が記録されている。
状態Sが「sum=4000」「num=4」であるとき、「sum>=5000」に示された条件を満たしていないため「判定結果」として「NG」が記録される。次に、状態Sと「sum<5000」とを比較すると条件を満たしているため「判定結果」として「OK」が記録される。次に、状態Sと「num>=5」とを比較すると条件を満たしていないため「判定結果」として「NG」が記録される。このように全ての変換後プロパティに対して判定を行い、判定結果をモニタやプリンタなどの出力装置に出力する。
プロパティテーブル7、モデル検査結果格納テーブル8はメモリに記録されている。プロパティテーブル7はプロパティ解析部3、プロパティ変換部4、モデル検査器インタフェース部5、入力データ真偽判定部6と接続され、モデル検査結果格納テーブル8はモデル検査器インタフェース部5、入力データ真偽判定部6と接続されている。
環境生成支援装置1の動作について説明する。
図6はプロパティ解析の動作を示すフローチャートである。
ステップS61では、仕様書/設計書に基づいて作成したプロパティの総数mをメモリに設定する。また、予め決められた論理式(例えばLTL:線形時相論理式)で記載されているプロパティの総数をカウントするプロパティ総数カウンタに「1」を設定する(k=1)。
ステップS62では、仕様書/設計書に基づいてLTLで記述されたプロパティを読み込みパースする。LTL自体は、構文や意味が厳密に定められている既知の論理体系である。
ステップS63では、プロパティが所定の論理式で記載されていればステップS64に移行し、記載されていなければステップS65に移行する。例えば、記述したプロパティがG(r1−>F(r2))のようにLTL記述されているかを判定する。ここで、r1、r2は任意の命題論理式である。
ステップS64では、プロパティと、そのプロパティに対応するプロパティ識別番号pk(kはプロパティ総数カウンタ値)をプロパティテーブル7の「プロパティID」「プロパティ記述内容」へ格納する。プロパティテーブル7(図5参照)は「プロパティID」「プロパティ記述内容」「事前条件」「変換後プロパティ」「判定結果」などの記録領域を有する。
ステップS65ではプロパティ総数カウンタ値kに「1」を加算する。
ステップS66では、プロパティ総数カウンタ値kとプロパティの総数mを比較し、k>mであればステップS67に移行し、k>mでない場合はステップS62に移行する。
ステップS67ではプロパティテーブルに何も記録されていないか(空であるか)判定し、空であれば処理を完了し、空でなければプロパティ変換処理を行う。
図7はプロパティ変換の動作を示すフローチャートである。
ステップS71では、プロパティ解析されたプロパティの行数mm(プロパティテーブル7に記録したプロパティの総数)をメモリに設定する。また、プロパティの行数をカウントするプロパティ行数カウンタkkに「1」を設定する(kk=1)。
ステップS72では、プロパティテーブル7からプロパティを読み込む。
ステップS73では、プロパティの内容として記載されているG(r1−>F(r2))からr1を抽出する。例えば、プロパティ識別番号「p1」に対応する「G(sum>=5000−>F discount=0.1)」であれば、「sum>=5000」を抽出する。
ステップS74では、r1をプロパティテーブル7の「事前条件」へ記録する。例えば、ステップS73の例であれば「sum>=5000」を記録する。
ステップS75では、r1をnot(F r1)に変換する。例えば、「事前条件」が「sum>=5000」であれば、「not(F sum>=5000)」のように変換する。
ステップS76では、not(F r1)をプロパティテーブル7の「変換後プロパティ」に記録する。
ステップS77ではプロパティ行数カウンタkkの値に「1」を加算する。
ステップS78では、プロパティ行数カウンタkkとプロパティの行数mmの関係がkk>mmであればモデル検査器インタフェース処理を行い、この関係が成り立たない場合ステップS73に移行する。
図8はモデル検査器インタフェース処理の動作を示すフローチャートである。
ステップS81では、プロパティテーブル7から変換後プロパティを読み込む。プレモデル検査用プロパティ12を作成する。例えば、上記説明した「not(F sum>=5000) and not(F sum<5000) and not (F num>=5)」を作成する。
ステップS82では、プレモデル検査用プロパティをプログラム11、入力データ10と共にモデル検査器2へ転送する。
ステップS83はモデル検査器2がモデル検査を実施していることを示している。
ステップS84ではモデル検査器2から実行結果(trueまたはfalse+false時の状態)を受け取る。n個のエラー状態に対してn個の状態が出力される。なお、実行結果のフォーマットはモデル検査器2ごとに異なる。
ステップS85では、実行結果に基づいてエラー時の状態を取得する。例えば、図5の実行結果に示す「sum=4000、num=4」を取得する。
ステップS86では、モデル検査結果格納テーブル8に固有の「エラーID」と「状態S」を記録する。例えば、図5に示す実行結果の「error1」に示される「sum=4000,num=4」を、モデル検査結果格納テーブル8の識別番号を示す「エラーID」の「e1」に対応する「状態S」に記録する。その後、データ真偽判定処理を行う。
図9はデータ真偽判定の動作を示すフローチャートである。
ステップS91では、モデル検査結果格納テーブル8の中身が空であるかを判定する。空であればステップS912に移行する。空でない場合はステップS92に移行する。
ステップS92では、モデル検査結果格納テーブル8の行数nをメモリに設定する。また、モデル検査結果カウンタjに「1」をセットする。
ステップS93では、モデル検査結果格納テーブル8のj行目の「状態S」を取得する。
ステップS94(ループ開始)では、プロパティテーブル7の総行数をメモリに設定する。また、「事前条件」を読み出すために事前条件読み出しカウンタiに「1」をセットする。
ステップS95では、プロパティテーブル7から「事前条件」を読み込む。
ステップS96では、「状態S」が「事前条件」を満たしているかどうかを調べる。
ステップS97では、「状態S」が「事前条件」を満たしている場合はステップS98に移行する。満たしていない場合にはステップS99に移行する。
ステップS98では、プロパティテーブル7内の対応する「判定結果」に「OK」を書きこむ。
ステップS99(ループ終了)では、現在の「状態S」とプロパティテーブル7内の全ての「事前条件」を比べ終わったかを判定し、判定が終わっていればステップS95に移行する。
図5に示す例であれば、ステップS94〜S99の処理は、モデル検査結果格納テーブル8の「エラーID」に記録されている「ei」(iは整数)に対応する「状態S」と、プロパティテーブル7の全ての「事前条件」を順番に比較する。そして、条件を満たしているか否かの判定をしている。「e1」(事前条件読み出しカウンタi=1)であれば「sum=4000、num=4」を入力したときの結果とプロパティテーブル7の全ての「事前条件」を順番に比較している。
ステップS910では、モデル検査結果カウンタjの値を「1」増加させる(j=j+1)。
ステップS911では、モデル検査結果格納テーブル8の行数nとモデル検査結果カウンタjを比較してj>nであれば全ての「状態S」に対して判定が完了したとしてステップS912に移行する。j>nを満たさない場合にはステップS93に移行する。図5の例で「e1」に対する判定が完了していれば、「e2」に対応する「状態S」を取得してステップS94に移行する。
ステップS912では、プロパティテーブル7内の判定結果に「OK」が書かれていない行に「NG」を書き込む。
ステップS913では、プロパティテーブル7の内容を利用者に分かるように出力する。
上記のように、プロパティに対して本番モデル検査を行う前に、プロパティの変換を行い、プレモデル検査を行うことにより、仕様書/設計書に記述された性質をプロパティ化してモデル検査を行う際に、必要なデータの不足を検出することが可能になる。
また、各プロパティに対してデータセットを用意しないで、少ないデータセットからモデル検査を行うことが可能となる。
さらに、用いるデータセットの数が少ないとモデル検査時に生成される状態空間が小さくなり、モデル検査の計算量削減に効果がある。
(実施例2)
実施例2ではプロパティをCTL(分岐時相論理式)で記載した場合について説明する。
図10は、設計書の破線範囲に記載されている内容をCTLで記述したときの図である。ここで、AGはこれから先どんなパスをとっても常に論理式が成立することを示している。AFはこれから先どんなパスをとってもいずれ論理式が成立することを示している。
「購入金額が5000円以上の場合1割引が適用される」は、「AG(sum>=5000−>AF discount=0.1)」のように記述する。
「購入金額が5000円未満の場合割引は無し」は、「AG(sum<5000−>AF discount=0)」のように記述する。
「購入個数が5個以上の場合送料が無料になる」は、「AG(num>=5−>AF postage=0)」のように記述する。
なお、図10に示す「p1」「p2」「p3」・・・は各プロパティの識別番号を示している。
プロパティ解析部3に、上記プロパティ(上記「AG(sum>=5000−>AF discount=0.1)」「AG(sum<5000−>AF discount=0)」「AG(num>=5−>AF postage=0)」など)が入力されると、プロパティが所定の論理式で記載されているかを判定し、該論理式で記載されているプロパティをプロパティ変換部4に転送する。
プレモデル検査用プロパティ12への変換について説明する。図11は、式3に示すCTLで示された上記プロパティ「AG(sum>=5000−>AF discount=0.1)」「AG(sum<5000−>AF discount=0)」「AG(num>=5−>AF postage=0)」を、式4に示す論理式に変換した場合の例である。
pk:AG(ak−>AF(bk)) 式3
k=1・・・n
EF a1,・・・,EF an 式4
「AG(sum>=5000−>AF discount=0.1)」を、「EF sum>=5000」に変換する。
「AG(sum<5000−>AF discount=0)」を、「EF sum<5000」に変換する。
「AG(num>=5−>AF postage=0)」を、「EF num>=5」に変換する。ここで、EFはあるパスをとるといずれ論理式が成立することを示している。
変換後、「EF sum>=5000 and EF sum<5000 and EF num>=5」のように各変換したプロパティを「and」する。なお、複数のプロパティを取り扱うことができるモデル検査器であれば必ずしも「and」する必要はない。
次に、プレモデル検査用プロパティ12をモデル検査器インタフェース部5に転送する。
モデル検査器インタフェース部5は、プレモデル検査用プロパティとともに入力データ10とプログラム11をモデル検査器2に転送する。
また、モデル検査器2で実行した実行結果13を受信し、実行結果を入力データ真偽判定部6に転送する。
図12は、モデル検査器インタフェース部5が入力データ10、プログラム11、プレモデル検査用プロパティ12などのデータをモデル検査器2に入力する。そして、モデル検査器2が入力データに基いて検査を実行し、実行した結果をモデル検査器インタフェース部5に出力することを示す図である。図12に示す例では、1000円のメロンと300円のバナナを購入するときの合計金額を示すプログラム11を「sum=1000*melon+300*banana」として示し、メロン4個とバナナ0個を購入したときのデータを「melon=4」「banana=0」として示している。また、プレモデル検査用プロパティ12は図11で生成したものを使用している。
モデル検査器2はモデル検査を実施して実行結果を出力する。CTLの場合、例えばSMV(Symbolic Model Verifier)などのモデル検査器を用いる場合であれば、プレモデル検査の結果でfalseのときデータは正しくなかった、trueの場合データは正しかったと判定する。図12ではCTLのモデル検査器2はtrueに至るまでのプログラムパスとエラー(「error1」「error2」の内容)を出力している。
「sum=4000」「num=4」がモデル検査器2に入力されたとき、プレモデル検査用プロパティ12「EF sum>=5000 and EF sum<5000 and EF num>=5」の条件に合わない結果が検出されたためエラーが出力される。つまり、「sum=4000」「num=4」という結果をプログラムのどこかで算出したためプレモデル検査用プロパティ12の記述に沿わない結果を得たため「error1」の内容として出力されている。
入力データ真偽判定部6は、各プロパティに対して用意した入力データの正しさを判定する。図13はモデル検査器2の出力である実行結果(出力レポート)に基づいてモデル検査器インタフェース部5により作成されたモデル検査結果格納テーブル(メモリ内に記録)を入力データ真偽判定部6に入力する。そして、入力データ真偽判定部6によりプロパティの真偽を判定して判定結果を出力することを示している。モデル検査結果格納テーブルの「エラーID」は「状態S」に対して設けられた識別番号である。「状態S」はプレモデル検査用プロパティ12に沿わない実行結果である。
例えば、図13に示すように判定結果としてメロン4個を購入した場合にエラーが発生し、状態S「sum=4000」「num=4」が入力データ真偽判定部6に入力される。次に、各変換後プロパティ「AG(sum>=5000−>AF discount=0.1)」「AG(sum<5000−>AF discount=0)」「AG(num>=5−>AF postage=0)」に対応する各「事前条件」と「状態S」とを比較する。「事前条件」は変換後プロパティに基づいて予め作成され、プロパティテーブルに記録されている。図13では「sum>=5000」「sum<5000」「num>=5」が記録されている。
状態Sが「sum=4000」「num=4」であるとき、「sum>=5000」に示された条件を満たしていないため「判定結果」として「NG」が記録される。次に、状態Sと「sum<5000」とを比較すると条件を満たしているため「判定結果」として「OK」が記録される。次に、状態Sと「num>=5」とを比較すると条件を満たしていないため「判定結果」として「NG」が記録される。このように全ての変換後プロパティに対して判定を行い、判定結果を出力する。
図14はプロパティ解析の動作を示すフローチャートである。
ステップS141では、仕様書/設計書に基づいて作成したプロパティの総数mをメモリに設定する。また、CTLで記載されているプロパティの総数をカウントするプロパティ総数カウンタに「1」を設定する(k=1)。
ステップS142では、仕様書/設計書に基づいてCTLで記述されたプロパティを読み込みパースする。CTL自体は、構文や意味が厳密に定められている既知の論理体系である。
ステップS143では、プロパティがCTL論理式で記載されていればステップS144に移行し、記載されていればステップS145に移行する。例えば、記述したプロパティがAG(r1−>AF(r2))のようにCTL記述されているかを判定する。ここで、r1、r2は任意の命題論理式である。
ステップS144では、プロパティと、そのプロパティに対応するプロパティ識別番号pk(kはプロパティ総数カウンタ値)をプロパティテーブル7の「プロパティID」「プロパティ記述内容」へ格納する。プロパティテーブル7(図14参照)は「プロパティID」「プロパティ記述内容」「事前条件」「変換後プロパティ」「判定結果」などの記録領域を有する。
ステップS145ではプロパティ総数カウンタ値kに1を加算する。
ステップS146では、プロパティ総数カウンタ値kとプロパティの総数mを比較し、k>mであればステップS147に移行し、k>mでない場合はステップS142に移行する。
ステップS147ではプロパティテーブルが空であるかを判定し、空であれば処理を完了し、空でなければプロパティ変換処理を行う。
図15はプロパティ変換の動作を示すフローチャートである。
ステップS151では、プロパティ解析されたプロパティの行数mm(プロパティテーブル7に記録したプロパティの総数)をメモリに設定する。また、プロパティの行数をカウントするプロパティ行数カウンタkkに「1」を設定する(l=1)。
ステップS152では、プロパティテーブル7からプロパティを読み込む。
ステップS153では、プロパティ記述内容AG(r1−>AF(r2))からr1を抽出する。例えば、プロパティ識別番号「p1」に対応する「AG(sum>=5000−>AF discount=0.1)」であれば、「sum>=5000」を抽出する。
ステップS154では、r1をプロパティテーブル7の「事前条件」へ格納する。
ステップS155では、r1をnot(EF r1)に変換する。例えば、「事前条件」が「sum>=5000」であれば、「EF sum>=5000」のように変換する。
ステップS156では、EF r1をプロパティテーブル7の「変換後プロパティ」に格納する。
ステップS157ではプロパティ行数カウンタkkの値に「1」を加算する。
ステップS158では、プロパティ行数カウンタkkとプロパティの行数mmの関係がkk>mmであればモデル検査器インタフェース処理を行い、この関係が成り立たない場合ステップS153に移行する。
図16はモデル検査器インタフェース処理の動作を示すフローチャートである。
ステップS161では、プロパティテーブル7から変換後プロパティを読み込む。プレモデル検査用プロパティ12を作成する。例えば、上記説明した「EF sum>=5000 and EF sum<5000 and EF num>=5」を作成する。
ステップS162では、プレモデル検査用プロパティ12をプログラム11、入力データ10と共にモデル検査器2へ転送する。
ステップS163ではモデル検査器2がモデル検査を実施する。
ステップS164ではモデル検査器2から実行結果(CTLモデル検査器でEFを調べた場合true+true時の状態またはfalse)を受け取る。n個のtrue結果に対してn個の状態が出力される。なお、実行結果のフォーマットはモデル検査器ごとに異なる。
ステップS165では、実行結果を元にエラー時の状態を取得する。例えば、図13の実行結果に示す「sum=4000、num=4」を取得する。
ステップS166では、モデル検査結果格納テーブル8に固有の「エラーID」と「状態S」を記録する。例えば、図13に示す実行結果の「error1」に示される「sum=4000,num=4」を、モデル検査結果格納テーブル8の識別番号を示す「エラーID」に「e1」として記録し、「状態S」に「sum=4000,num=4」を記録する。その後、データ真偽判定処理を行う。データ真偽判定は図9に示したフローチャートと同じ動作をする。
(本発明の実施形態がコンピュータプログラムとして実現される場合の構成)
図17は、上記本発明の実施形態の装置を実現できるコンピュータのハードウェア構成の一例を示す図である。図17において、環境生成支援する装置170は、CPU171、ROM172、RAM173、ハードディスクドライブ(HDD)174、フレキシブルディスクドライブ(FDD)175、入力インタフェース(入力I/F)176、通信インタフェース(通信I/F)177、出力インタフェース(出力I/F)179、グラッフィック処理部1710などを備えている。また、上記各構成部はバス1711によってそれぞれ接続されている。
CPU171は、ROM172、RAM173、HDD174、FDD175に格納されているプログラムやデータに応じた処理を実行し、装置170の全体の制御などをする。ROM172は、CPU171が実行する基本的なプログラム(ブートプログラムなど)やデータを記録する。RAM173は、CPU171が実行途中のプログラムやデータを記録し、ワークエリアなどとして使用される。
HDD174には、CPU171が実行するOS(Operation System)やアプリケーションプログラムなどが記録され、CPU171の制御にしたがいハードディスクにデータのリード/ライトを実行する。FDD175は、CPU171の制御にしたがってFD175aに対するデータのリード/ライトを制御する。FD175aは、FDD175の制御で書き込まれたデータを記憶したり、FD175aに記憶されたデータを装置170に読み取らせたりする。また、着脱可能な記録媒体としてFD175aのほか、コンピュータで読み取り可能な記録媒体として、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(DigitalVersatileDisc)、DVD−RAM(RandomAccessMemory)、CD−ROM(CompactDiscReadOnlyMemory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Opticaldisk)などがある。
入力I/F176は、マウスやキーボードが接続され、ユーザが入力した情報を受信し、バス1711を介してCPU171に送信する。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスは、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
通信I/F177は、必要に応じ、他のコンピュータとの間のLAN接続やインターネット接続や無線接続のためのインタフェースである。通信回線を通じてインターネットなどのネットワークを介して他の装置に接続される。そして、ネットワーク178と内部のインタフェースは、外部装置からのデータの入出力を制御する。例えば、モデムやLANアダプタなどを採用することができる。
出力I/F179は、プリンタなどの出力装置179aを制御するために備えられる。また、グラフィック処理部1710には、ディスプレイなどの表示装置1710aが接続される。グラフィック処理部1710は、CPU171からの描画命令に従って表示装置1710aの画面上に操作情報、論理シミュレーション後のログやカバレッジの集計結果、信号波形等を表示する。例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。なお、グラフィック処理部1710を介さずに、出力I/F179から表示装置と接続してもよい。
このようなハードウェア構成を有するコンピュータを1台または2台以上用いることによって、上記説明した各種処理機能(実施例1、2で説明した処理(フローチャートなど))が実現される。その場合システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、LTL、CTL両方を記述できるCTL*という論理式を用いてもよい。
また、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。
以上実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換処理と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
を実行させることを特徴とする環境生成支援プログラム。
(付記2)
コンピュータに、
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するCTL用のプロパティ変換処理と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するCTL用のモデル検査器インタフェース処理と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
を実行させることを特徴とする環境生成支援プログラム。
(付記3)
前記プロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ak−>F(bk))が「いつでも」成り立つことを示す時相演算子Gと、性質を示す述語(bk)が「いつか」成り立つことを示す時相演算子Fを用いて、線形時相論理式G(ak−>F(bk))で記述されたプロパティを取得し、前記線形時相論理式G(ak−>F(bk))から前記akを抽出して前記時相演算子Fと反転論理notにより前記akをnot(F ak)に変換するとともに、事前条件として前記akと、プレモデル検査用プロパティとして前記not(F ak)を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース処理は、
入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記not(F ak)で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記1に記載の環境生成支援プログラム。
(付記4)
前記CTL用のプロパティ変換処理は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ak−>AF(bk))がこれから先どんなパスをとっても常に成立することを示す時相演算子AGと、性質を示す述語(bk)がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子AFを用いて、分岐時相論理式AG(ak−>AF(bk))で記述されたプロパティを取得し、前記AG(ak−>AF(bk))から前記akを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子EFによりEF akに変換するとともに、前記事前条件として前記akと、前記プレモデル検査用プロパティとして前記EF akを前記プロパティテーブルに記録し、
前記CTL用のモデル検査器インタフェース処理は、
前記モデル検査器に、前記プロパティとして前記EF akで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記2に記載の環境生成支援プログラム。
(付記5)
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換部と、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、
を備えることを特徴とする環境生成支援装置。
(付記6)
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するCTL用のプロパティ変換部と、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録するCTL用のモデル検査器インタフェース部と、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、を備えことを特徴とする環境生成支援装置。
(付記7)
メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件に変換してプレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するプロパティ変換し、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
(付記8)
メモリに記録されたプロパティテーブルから、分岐時相論理式で記述されたプロパティを取得し、前記分岐時相論理式から事前条件を抽出し、時相演算子により前記事前条件を変換して前記プレモデル検査用プロパティと前記事前条件を前記プロパティテーブルに記録するCTL用のプロパティ変換をし、
前記モデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
ことを特徴とする環境生成支援方法。
(付記9)
前記プロパティ変換部は、
メモリに記録されたプロパティテーブルから、性質を示す述語(ak−>F(bk))が「いつでも」成り立つことを示す時相演算子Gと、性質を示す述語(bk)が「いつか」成り立つことを示す時相演算子Fを用いて、線形時相論理式G(ak−>F(bk))で記述されたプロパティを取得し、前記G(ak−>F(bk))から前記akを抽出して前記時相演算子Fと反転論理notにより前記akをnot(F ak)に変換するとともに、事前条件として前記akと、プレモデル検査用プロパティとして前記not(F ak)を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース部は、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記not(F ak)で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記5に記載の環境生成支援装置。
(付記10)
前記CTL用のプロパティ変換部は、
メモリに記録された前記プロパティテーブルから、性質を示す述語(ak−>AF(bk))がこれから先どんなパスをとっても常に成立することを示す時相演算子AGと、性質を示す述語(bk)がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子AFを用いて、分岐時相論理式AG(ak−>AF(bk))で記述されたプロパティを取得し、前記AG(ak−>AF(bk))から前記akを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子EFによりEF akに変換するとともに、前記事前条件として前記akと、前記プレモデル検査用プロパティとして前記EF akを前記プロパティテーブルに記録し、
前記CTL用のモデル検査器インタフェース部は、
前記モデル検査器に、前記プロパティとして前記EF akで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記6に記載の環境生成支援装置。
(付記11)
前記プロパティ変換は、
メモリに記録されたプロパティテーブルから、性質を示す述語(ak−>F(bk))が「いつでも」成り立つことを示す時相演算子Gと、性質を示す述語(bk)が「いつか」成り立つことを示す時相演算子Fを用いて、線形時相論理式G(ak−>F(bk))で記述されたプロパティを取得し、前記G(ak−>F(bk))から前記akを抽出して前記時相演算子Fと反転論理notにより前記akをnot(F ak)に変換するとともに、事前条件として前記akと、プレモデル検査用プロパティとして前記not(F ak)を前記プロパティテーブルに記録し、
前記モデル検査器インタフェース処理は、
プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記not(F ak)で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記7に記載の環境生成支援方法。
(付記12)
前記CTL用のプロパティ変換は、
メモリに記録されたプロパティテーブルから、性質を示す述語(ak−>AF(bk))がこれから先どんなパスをとっても常に成立することを示す時相演算子AGと、性質を示す述語(bk)がこれから先どんなパスをとってもいずれ論理式が成立ことを示す時相演算子AFを用いて、分岐時相論理式AG(ak−>AF(bk))で記述されたプロパティを取得し、前記AG(ak−>AF(bk))から前記akを抽出し、あるパスをとるといずれ論理式が成立することを示す時相演算子EFによりEF akに変換するとともに、前記事前条件として前記akと、前記プレモデル検査用プロパティとして前記EF akを前記プロパティテーブルに記録し、
前記CTL用のモデル検査器インタフェース処理は、
前記モデル検査器に、プロパティとして前記EF akで示されたプレモデル検査用プロパティを入力し、前記モデル検査を実施した実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
ことを特徴とする付記8に記載の環境生成支援方法。
(付記13)
前記プロパティ変換処理は、
複数の前記not(F ak)を論理積することを特徴とする付記3に記載の環境生成支援プログラム。
(付記14)
前記CTL用のプロパティ変換処理は、
複数の前記EF akを論理積することを特徴とする付記4に記載の環境生成支援プログラム。
(付記15)
前記プロパティ変換部は、
複数の前記not(F ak)を論理積することを特徴とする付記9に記載の環境生成支援装置。
(付記16)
前記CTL用のプロパティ変換部は、
複数の前記EF akを論理積することを特徴とする付記10に記載の環境生成支援装置。
(付記17)
前記プロパティ変換は、
複数の前記not(F ak)を論理積することを特徴とする付記11に記載の環境生成支援方法。
(付記18)
前記CTL用のプロパティ変換は、
複数の前記EF akを論理積することを特徴とする付記12に記載の環境生成支援方法。
モデル検査を行うための環境生成支援装置とモデル検査器の構成を示す図である。 設計書(または仕様書)に記載された内容に基づいてプロパティを作成した場合の例を示す図である。 LTLで示されたプロパティを変換した例を示す図である。 モデル検査器インタフェース部が入力データ、プログラム、プレモデル検査用プロパティなどのデータをモデル検査器に入力し、モデル検査器が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部に出力することを示す図である。 入力データ真偽判定部により、モデル検査器の出力である実行結果に基づいてプロパティの真偽を判定して判定結果を出力することを示す図である。 LTLで記述したプロパティのプロパティ解析の動作を示すフローチャートである。 LTLで記述したプロパティのプロパティ変換の動作を示すフローチャートである。 LTLで記述したプロパティのモデル検査器インタフェース処理の動作を示すフローチャートである。 プロパティのデータ真偽判定の動作を示すフローチャートである。 設計書の破線範囲に記載されている内容をCTLで記述したときの図である。 CTLで示されたプロパティを変換した場合の例を示す図である。 モデル検査器インタフェース部が入力データ、プログラム、プレモデル検査用プロパティなどのデータをモデル検査器に入力し、モデル検査器が入力データに基づいて検査を実行し、実行した結果をモデル検査器インタフェース部に出力することを示す図である。 入力データ真偽判定部により、モデル検査器の出力である実行結果に基づいてプロパティの真偽を判定して判定結果を出力することを示す図である。 CTLで記述したプロパティのプロパティ解析の動作を示すフローチャートである。 CTLで記述したプロパティのプロパティ変換の動作を示すフローチャートである。 CTLで記述したプロパティのモデル検査器インタフェース処理の動作を示すフローチャートである。 本発明の実施形態がコンピュータプログラムとして実現される場合の構成を示す図である。 従来のテストの工程(A)とモデル検査の工程(B)を比較した図である。
符号の説明
1 環境生成支援装置
2 モデル検査器
3 プロパティ解析部
4 プロパティ変換部
5 モデル検査器インタフェース部
6 入力データ真偽判定部
7 プロパティテーブル
8 モデル検査結果格納テーブル
9 プロパティ
10 入力データ
11 プログラム
12 プレモデル検査用プロパティ
13 実行結果
170 装置
171 CPU
172 ROM
173 RAM
174 ハードディスクドライブ(HDD)
175 フレキシブルディスクドライブ(FDD)
175a 記録媒体(FD)
176 入力インタフェース(入力I/F)
177 通信インタフェース(通信I/F)
178 ネットワーク
179 出力インタフェース(出力I/F)
1710 グラッフィック処理部
1710a 表示装置

Claims (4)

  1. コンピュータに、
    メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件変換してプレモデル検査用プロパティを生成し、前記事前条件と前記プレモデル検査用プロパティを前記プロパティテーブルに記録するプロパティ変換処理と、
    プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース処理と、
    前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定処理と、
    を実行させることを特徴とする環境生成支援プログラム。
  2. 前記プロパティ変換処理は、
    メモリに記録された前記プロパティテーブルから、性質を示す述語(ak−>F(bk))が「いつでも」成り立つことを示す時相演算子Gと、性質を示す述語(bk)が「いつか」成り立つことを示す時相演算子Fを用いて、線形時相論理式G(ak−>F(bk))で記述されたプロパティを取得し、前記線形時相論理式G(ak−>F(bk))から前記akを抽出して前記時相演算子Fと反転論理notにより前記akをnot(F ak)に変換するとともに、事前条件として前記akと、プレモデル検査用プロパティとして前記not(F ak)を前記プロパティテーブルに記録し、
    前記モデル検査器インタフェース処理は、
    入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、プロパティとして前記not(F ak)で示された前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリの前記モデル検査結果格納テーブルに記録する、
    ことを特徴とする請求項1に記載の環境生成支援プログラム。
  3. メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件変換してプレモデル検査用プロパティを生成し、前記事前条件と前記プレモデル検査用プロパティを前記プロパティテーブルに記録するプロパティ変換部と、
    プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録するモデル検査器インタフェース部と、
    前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する入力データ真偽判定部と、
    を備えることを特徴とする環境生成支援装置。
  4. メモリに記録されたプロパティテーブルから、線形時相論理式で記述されたプロパティを取得し、前記線形時相論理式から事前条件を抽出して時相演算子と反転論理に基づいて前記事前条件変換してプレモデル検査用プロパティを生成し、前記事前条件と前記プレモデル検査用プロパティを前記プロパティテーブルに記録するプロパティ変換し、
    プログラム、入力データ、プロパティを入力してモデル検査を実施するモデル検査器に、前記プレモデル検査用プロパティを入力し、前記モデル検査器が前記モデル検査を実施したのち実行結果を取得してメモリのモデル検査結果格納テーブルに記録し、
    前記実行結果に示される前記プレモデル検査用プロパティに沿わない結果が前記事前条件を満たしているかを判定し、判定結果を出力装置に出力する、
    ことを特徴とする環境生成支援方法。
JP2008275828A 2008-10-27 2008-10-27 モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム Expired - Fee Related JP5228794B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008275828A JP5228794B2 (ja) 2008-10-27 2008-10-27 モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008275828A JP5228794B2 (ja) 2008-10-27 2008-10-27 モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム

Publications (2)

Publication Number Publication Date
JP2010102650A JP2010102650A (ja) 2010-05-06
JP5228794B2 true JP5228794B2 (ja) 2013-07-03

Family

ID=42293222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008275828A Expired - Fee Related JP5228794B2 (ja) 2008-10-27 2008-10-27 モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム

Country Status (1)

Country Link
JP (1) JP5228794B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4498167B2 (ja) * 2005-02-18 2010-07-07 キヤノン株式会社 プロパティ生成方法、検証方法及び検証装置
JP2008071135A (ja) * 2006-09-14 2008-03-27 Nec Corp 検証処理装置

Also Published As

Publication number Publication date
JP2010102650A (ja) 2010-05-06

Similar Documents

Publication Publication Date Title
JP2023065366A (ja) ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成
JP4946651B2 (ja) 仕様検証プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、仕様検証装置、および仕様検証方法
JP5110640B2 (ja) アクセシビリティ情報を得る方法、コンピュータ・プログラム及びアクセシビリティ情報装置
US7512913B2 (en) Designing apparatus, designing method, and program thereof
JP2018147280A (ja) データ分析装置及びデータ分析方法
US20170147474A1 (en) Software testing coverage
JP5799823B2 (ja) テストデータ生成装置、テストデータ生成プログラムおよびテストデータ生成方法
JP4498167B2 (ja) プロパティ生成方法、検証方法及び検証装置
JP5672165B2 (ja) テストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置
Abdeen et al. An approach for performance requirements verification and test environments generation
JP5228794B2 (ja) モデル検査実施のための環境生成支援装置、環境生成支援方法、環境生成支援プログラム
JP5176869B2 (ja) テストケース生成プログラムとテストケース生成装置およびテストケース生成方法
US8015523B2 (en) Method and system for sequential netlist reduction through trace-containment
Sulaiman et al. Classification Trends Taxonomy of Model-based Testing for Software Product Line: A Systematic Literature Review
US20090276740A1 (en) Verification supporting apparatus, verification supporting method, and computer product
JP2010009384A (ja) 検証支援プログラム、検証支援装置、および検証支援方法
JP5321286B2 (ja) プログラムモデル検査方法、プログラムモデル検査プログラム
Dalal et al. Evaluating sequence-to-sequence learning models for if-then program synthesis
JP6841667B2 (ja) ソフトウェア性能測定システム及びプログラム
Heiskanen Robotic process automation in automated GUI testing of web applications
Nass On overcoming challenges with GUI-based test automation
JP5304470B2 (ja) モデル検査プログラム、モデル検査方法、モデル検査装置
TWI609578B (zh) 具有程式編譯功能之線上討論系統及其方法
Chuphal et al. Benchmarking Deep Learning Testing Techniques A Methodology and Its Application
JP5799589B2 (ja) 検証方法及び検証プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130304

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees