JP5708260B2 - プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置 - Google Patents

プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置 Download PDF

Info

Publication number
JP5708260B2
JP5708260B2 JP2011121058A JP2011121058A JP5708260B2 JP 5708260 B2 JP5708260 B2 JP 5708260B2 JP 2011121058 A JP2011121058 A JP 2011121058A JP 2011121058 A JP2011121058 A JP 2011121058A JP 5708260 B2 JP5708260 B2 JP 5708260B2
Authority
JP
Japan
Prior art keywords
state
sequence number
sequence
operation command
acquisition request
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
JP2011121058A
Other languages
English (en)
Other versions
JP2012248121A (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 JP2011121058A priority Critical patent/JP5708260B2/ja
Publication of JP2012248121A publication Critical patent/JP2012248121A/ja
Application granted granted Critical
Publication of JP5708260B2 publication Critical patent/JP5708260B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベース(DB)を利用するアプリケーションプログラムを検査対象とするプログラム・モデル検査において、プログラム・モデル検査装置の管理するプログラム状態の一部であるDB状態のバックトラック制御に関する。
アプリケーションプログラムのプログラム・モデル検査とは、アプリケーションプログラム(モデルに該当する)が仕様として満たすべき性質(プロパティと呼ばれる。以下プロパティと記す)を満足するか否かを、プログラムを実行させ網羅的に検査する手法をいう。予め用意したシナリオに基づいて、アプリケーションプログラムを実行し、その実行時のプログラム状態と、予め用意したプロパティとを比較し、両者が一致するか(プロパティが成立するか)を評価することで、アプリケーションプログラムが仕様を満たしているか否かを検査することができる。
ここで、ソフトウェア開発分野におけるモデルとは、開発するシステムの挙動や処理内容の記述であり、記述の詳細度レベルによって種々のモデルがある。例えば、概要設計のレベルでは、UML(Unified Modeling Language)を用いて、システムが処理する情報の静的構造や処理シーケンスを記述したモデルが利用される。また、開発仕様を厳密に記述する場合には、仕様記述言語を用いて開発仕様をモデルとして記述することも行われている。さらに、開発システムの動的な側面をモデル化する場合には、例えば、Promela等のモデル記述用の専用言語を用いて状態遷移等を記述することも行われている。Promelaで記述されたモデルに対しては、SPINモデルチェッカというツールを用いてモデル検査を実行することができる。
また、Java(登録商標)等の実行可能なプログラム言語を用いて記述されたソフトウェアは、最も記述が詳細なモデルであると見なされる。プログラムをモデルとするモデル検査は、上述のように特にプログラム・モデル検査と呼ばれるが、ここでは、以後単にモデル検査と表記する場合がある。Java(登録商標)で記述されたプログラムに対するモデル検査ツールには、例えば、JPF(Java(登録商標) Path Finder)がある。本発明の一実施形態では、モデル検査のうち、DBを利用するプログラムをモデルとした場合を対象とする。
次にDBデータのバックトラックについて説明する。
プログラム・モデル検査では、上述のようにドライバにシナリオを投入することによってプログラムを実行させた時に遷移する全ての状態において、予め設定されたプロパティが成立するかを検査する。この検査を実施するため、モデル検査では、状態を木構造で把握し、その木構造に対して、深さ優先探索法によって状態探索を行う。状態探索木の深さ優先探索法は、バックトラック法とも呼ばれ、状態探索の途中において、探索木のある枝の末端まで検査が終了したら、既に検査した探索木を辿って、未検査の枝への分岐点まで戻り、未調査の枝に対して検査を続行する。このように、探索木を未検査の枝への分岐点まで戻ることを、状態のバックトラックと呼ぶ。
一方、現在、多くのプログラムは、マスタデータや処理結果データや履歴等を記録するためにDBを利用している。モデル検査の対象がDBを利用するプログラムである場合、プログラム・モデル検査装置の管理する状態には、プログラム変数に加えて、DBデータが含まれる。従って、DBを利用するプログラムを対象とするモデル検査において、状態をバックトラックするために、DBデータをバックトラックする必要がある。
モデル検査のためにDBデータのバックトラックを実現する方法には、DBスタブを用いる方法と実際のDBMS(Database Management System:データベース管理システム)を利用する方法がある。DBスタブを用いる方式では、複雑なSQLに対応できない課題があり、現実的でない。
他方、実際のDBMSを利用して、バックトラックを行うデータベース制御装置が知られている(特許文献1)。
DBMSが管理しているデータには、テーブルにレコードとして格納されるデータと、シーケンス番号がある。シーケンス番号は、DBMSが生成する一連のユニークな番号を意味する。このシーケンス番号は、テーブルのプライマリーキーの値のように、テーブル内でユニークな値であることが要求される場合や、重複の無い連番が必要な場合などに、プログラムで利用されている。
シーケンス番号は、プログラムにおいて、DBMSに要求することにより、取得することができるため、DBを利用する処理を記述する際に便利である。このため、現在、広く利用されているOracle(登録商標)といったDBMSでは、シーケンス機能として提供されている。
シーケンス機能により採番されたシーケンス番号は、上述のようにユニークな番号であるため、DBデータのプライマリーキー等に格納されることが多い。モデル検査の状態探索においてDBデータをバックトラックする場合、シーケンス番号もバックトラックしなければならない。
しかしながら、DBMSが提供するシーケンス機能は、元来ユニークな値を提供することが目的であるため、シーケンス番号を逆戻りさせる機能が提供されていないDBMSが多く存在する。シーケンス番号を安易に逆戻りさせうる機能を提供すると、ユニークな値を提供するという、シーケンス機能の本来の機能を保証できなくなるからである。
このため、特許文献1では、DBMSを利用して通常のテーブルデータを効率的にバックトラックする方法を提示しているが、DBMSのシーケンス番号をバックトラックさせることはできない。
従って、特許文献1は、DBMSのシーケンス機能を利用するプログラムのモデル検査に適用することができない。
なお、モデル検査において、シーケンス番号データのバックトラックが出来ないことが原因となる具体的な不具合は、後述の実施例を説明する際に(図8、図28)事例を挙げて説明する。
特開2011−13792号公報
本プログラム、方法、及び装置は、上記実情に鑑みなされたものであり、DBを利用するアプリケーションプログラムを検査対象とするプログラム・モデル検査において、DBのシーケンス処理をも含めてバックトラックできる改善された技術を提供することを目的とする。
本プログラムの一観点によれば、プログラム・モデル検査装置用のDBシーケンス・バックトラック制御プログラムであって、アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶し、前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶された前記シーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、処理をコンピュータに実行させることを特徴とするプログラムが提供される。
開示のプログラム、方法、及び装置によれば、DBMSのシーケンス機能を用いたアプリケーションプログラムに対しても、シーケンス番号のバックトラックが可能であり、モデル検査を実施することができる。
本発明の一実施形態が組み込まれた機能ブロック図である。 商品購入Webアプリケーションの画面遷移の例を示す図である。 データベース内のデータの例を示す図である。 注文受付処理の前後のDBの状態を示す図である。 注文受付処理で発行されるSQLの例を示す図である。 シーケンス番号生成用のDB操作コマンドの例を示す図である。 アプリケーションプログラムの状態遷移の例を示す図である。 状態バックトラックの例を示す図である。 DBシーケンス・バックトラック制御装置のブロック図である。 DBシーケンス・バックトラック制御の処理フローを示す図である。 DBシーケンス・バックトラック制御の処理フローを示す図である。 プログラム・モデル検査装置の処理フローを示す図である。 DB操作コマンド解析・分離部のフロー図である。 シーケンス処理の判別ルールの例を示す図である。 DB操作コマンド解析・分離部の入力と出力の例を示す図(1)である。 DB操作コマンド解析・分離部の入力と出力の例を示す図(2)である。 DB操作コマンド置換部のフロー図である。 DB操作コマンド置換部の入力と出力の例を示す図である。 シーケンス管理部のデータ構造を示す図である。 シーケンス状態データの例を示す図である。 シーケンス状態スタックデータの例を示す図である。 シーケンス管理部の初期化フロー図である。 シーケンス管理部の動作フロー図である。 シーケンス管理部の管理データの変化の例を示す図である。 シーケンス・バックトラック部のフロー図である。 シーケンス・バックトラックの例を示す図である。 操作シナリオの例を示す図である。 操作と状態遷移の例を示す図である。 シーケンス・バックトラック不能による不具合の例を示す図である。 本実施形態に係るハードウエア構成を示す図である。
図1は、本発明の一実施例としてのDBシーケンス・バックトラック制御装置103が組み込まれたプログラム・モデル検査を実行する装置101のブロック図である。図1において、プログラム・モデル検査を実行する装置101は、DBMSを利用するモデル検査装置102と、一実施形態であるDBシーケンス・バックトラック制御装置103と、検査対象プログラム104と、DBMS105を含んでいる。利用者は、装置101の入出力装置(不図示)を介して、DBMSを利用したアプリケーションプログラムのプログラム・モデル検査を実行することができる。
装置101は、一台のコンピュータ上に実現しても良いし、あるいは、例えば、DBMSを別のコンピュータに配置することによって、複数台のコンピュータを用いて実現してもよい。
DBMSを利用するモデル検査装置102と、一実施形態であるDBシーケンス・バックトラック制御装置103と、検査対象プログラム104と、DBMS105は、CPU(Central Processing Unit)やプログラマブルなデバイス(FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)など機器に実装されたプログラムとして実現できる。また、種々のデータやプログラムは、例えばROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスクなどのメモリに記憶されてもよい。
[シーケンス番号を利用するアプリケーションプログラムの例]
ここでDBMSのシーケンス機能により、シーケンス番号を利用するアプリケーションプログラムの例を示す。
図2は、商品購入Webアプリケーションの画面遷移の例を示す。選択画面210において、発注ボタン211と注文ボタン212が表示されている。発注の場合には、発注ボタン211をマウスでクリックすると、注文画面220が表示される。ここで、必要な注文内容を入力し、注文ボタン221をクリックする。画面は、完了画面230に移る。この段階で、データベース(不図示)にデータが格納され、注文No232として「1」が表示され、先ほど入力した注文内容が表示される。また、選択画面210において、注文検索ボタン212をクリックした場合には、検索画面240、検索結果画面250と遷移する。このように、データベースを用いるアプリケーションプログラムの場合には、注文No(232)のように、アプリケーション側がユニークな番号を自動的に付与して、注文の内容が一意に特定できるようになっている。
図3は、データベース内のデータの例を示す図である。注文画面310にて注文内容を入力すると、アプリケーションプログラム320は、(1)注文情報を取得する。(2)DBMS330内の商品テーブル332に格納されている商品を確認する。(3)DBMSから、新たな注文Noを取得するためにシーケンス番号336として、「次値」の値である「2」を取得する。(4)次にDBMS330内の注文テーブル334内に新たなレコードとして、注文No(335)の欄に「2」を記入し、新たな注文データをINSERTし、格納する。このように、注文テーブル334内においては、注文No(335)が、注文のレコードを一意に特定するための主キーとして機能していることが分かる。また、アプリケーションプログラム320は、ユニークな注文NoをDBMSからシーケンス番号として取得していることが分かる。
図4は、注文受付処理の前後のDBの状態を示している。DBMS410は、注文受付前のDBの状態を示している。DBMS420は注文受付後のDBMSの状態を示している。注文受付後においては、注文テーブル424にNo2のレコードが追加されている。また、シーケンス番号の「注文No」の「現在」428の値が「2」に変化しているのが分かる。
図5は、注文受付処理で発行されるSQLの例を示している。4つのSQLコマンドが列記されている。このうち、No.3の「SELECT 注文No.NEXTVAL AS SEQ_NEXTVAL FROM DUAL」には、「注文No.NEXTVAL」がふくまれており、注文Noとして、次のシーケンス番号を取得するコマンドを意味している。
図6は、シーケンス番号生成用のDB操作コマンドの例を示している。シーケンス番号の名前として、「注文No」が定義されており、増分1、初期値0、最大値1000が指定されている。このシーケンス番号は、新しい値を取得する毎に、1ずつ増加する。そして、シーケンス番号を逆戻りさせるコマンドは用意されていないDBMSが多い。このようなDBMSでは、後述するようにバックトラックの際に、シーケンス番号を逆戻りさせることができないために、不都合が生じる。
図7は、アプリケーションプログラムの状態遷移の例を示す。以下のように、一連の操作をシナリオとして予め用意しておき、シナリオに沿ってアプリケーションプログラムを実行させる。
(1)(選択画面、発注ボタン)
(2)(注文画面、注文ボタン、顧客名:富士太郎、商品名:商品A、数量:10)
(3)(完了画面、戻るボタン)
(4)(選択画面、発注ボタン)
(5)(注文画面、注文ボタン顧客名:富士次郎 商品名:商品B、数量:20)
(6)(完了画面、戻るボタン)
(7)(選択画面、注文検索ボタン)
(8)(検索画面、検索ボタン、顧客名:富士、注文No:1)
(9)(検索結果画面、戻るボタン)
図7には、一連のシナリオ操作(1)乃至(9)を行った際のデータベースの内容710乃至734及び状態(初期状態、状態1、状態2)が、対応付けて示されている。単純化するために、状態として、DB状態だけを示している。
図7における具体的な状態遷移は以下のようになる。
<状態遷移>
操作(1):選択画面で、発注ボタンを押下すると、注文画面に遷移する。初期状態からDBデータは変化しないので、状態は変化しない。
操作(2):注文画面で、顧客名に“富士太郎”、商品名に“商品A”、数量に“10”を入力して、注文ボタンを押下する。注文受付処理が動作して、商品テーブルの在庫数が更新され、注文Noシーケンスから注文Noが採番され(注文Noは一つ増加する)注文テーブルに注文情報が追加される。DBデータが変化したので、初期状態から状態1となる。
操作(3):完了画面で、戻るボタンを押下する。選択画面に戻る。DBは更新されないので、状態1から変化しない。
操作(4):選択画面で、発注ボタンを押下すると、注文画面に遷移する。DBデータは変化しないので、状態1のままである。
操作(5):注文画面で、顧客名に“富士次郎”、商品名に“商品B”、数量に“20”を入力して、注文ボタンを押下する。注文受付処理が動作して、商品テーブルの在庫数が更新され、注文Noシーケンスから注文Noが採番され(注文Noは一つ増加する)、注文テーブルに注文情報が追加される。DBデータが変化するので、状態1から状態2となる。
操作(6):完了画面で、戻るボタンを押下して、選択画面に戻る。DBは更新されないので、状態1から変化しない。
操作(7):選択画面で、注文検索ボタンを押下して、検索画面に遷移する。DBは変化しないので、状態2のままである。
操作(8):検索画面で、顧客名に“富士”、注文Noに“1”を入力して、検索ボタンを押下する。検索結果画面に遷移する。DBデータの参照だけであり、DBは変化しないので、状態2から遷移しない。
操作(9):検索結果画面で、戻るボタンを押下して、選択画面に戻る。
上記操作(9)が終了した段階で、図7のシナリオでは、全ての操作で回数制限に達し、選択可能な操作が無くなる。このため、上記操作9の終了後、バックトラックが行われる。なお、上記シナリオは、注文1(注文データ1で注文)、注文2(注文データ2で注文)、検索1(検索データ1で検索)の操作を順に行ったものに該当する。
<状態のバックトラック>
上記操作(9)の後、状態2において、シナリオから選択可能な操作が無くなる。このため、プログラム・モデル検査装置は、別のシナリオで検査を続行するため、選択可能な操作が存在する、操作(3)の実行後までバックトラックする。別のシナリオの例は、例えば、注文1、検索、注文2の操作である。
図8は、状態バックトラックの例を示している。プログラム・モデル検査装置は、別のシナリオで検査を続行するため、選択可能な操作が存在する操作3の実行直後までバックトラックする。データベースのバックトラックの際には、データ自体と、シーケンス番号との両者を元に戻さなければならない。従って、DBMSの内容は、本発明の実施形態では、図8のDBMSの状態710に戻すことができる。参考のために、本実施形態を用いない場合のDBMSの状態810を示す。この場合には、シーケンス番号である注文No814の値が「2」となっており、状態1における正しい値「1」を示していない。これは、DBMSにおいてシーケンス番号を逆戻りさせることができないために生じた不都合である。本実施形態では、この不都合を回避していることがわかる。なお、本実施形態の詳細については、以下の実施例の項において説明する。
図9は、本発明の一実施形態としてのDBシーケンス・バックトラック制御装置のブロック図を示している。なお、図9では、DBシーケンス・バックトラック制御装置900に加えて、DMBS940を利用するプログラム・モデル検査装置950、検査対象アプリケーションプログラム930、及びDBMS940も併せて示されており、相互の関係が把握できるようになっている。
まず、DBシーケンス・バックトラック制御装置900について説明する。
DBシーケンス・バックトラック制御装置900は、検査対象アプリケーションプログラム930からDBMS940に向けて送出されるDB操作コマンドを受信する。DB操作コマンドは、まず、DB操作コマンド解析・分離部912に入力される。ここでは、DB操作コマンドが解析され、まず、シーケンス処理に係るDB操作コマンドと、その他のDB操作コマンドとに分離する。そして、シーケンス処理のDB操作コマンドから、シーケンス番号取得要求を抽出する。抽出されたシーケンス番号取得要求は、シーケンス管理部914に伝達される。そして、シーケンス番号取得要求が組み込まれたDB操作コマンドにはYESのマーキングを行う。このマーキングの処理については、図15を用いて後述する。そして、上述のその他のDB操作コマンドと、YESのマーキングされたDB操作コマンドは、DB操作コマンド置換部916に伝達される。(すなわち、シーケンス処理のDB操作コマンドのうち、シーケンス番号取得要求が組み込まれたDB操作コマンド以外のDB操作コマンドは、DB操作コマンド置換部916に伝達されない)
シーケンス管理部914は、シーケンス番号取得要求を受け取り、DMBS940に代わってシーケンス番号を生成し、出力する。シーケンス状態の履歴をアプリケーションプログラムの状態と対応付けて保存する。アプリケーションプログラムの状態は、DMBS940を利用するプログラム・モデル検査装置950から、状態IDとして提供される。また、シーケンス・バックトラック部920からの指示に基づいて、バックトラックしたシーケンス状態を状態収集部956に伝達する。また、DB操作コマンド置換部に、DB操作コマンドの置換を行うためのシーケンス番号を伝達する。
DB操作コマンド置換部916は、DB操作コマンド解析・分離部からのDB操作コマンドを受け取り、YESにマーキングされたDB操作コマンドである場合には、そのDB操作コマンドの中のシーケンス番号取得要求を、シーケンス管理部から出力されたシーケンス番号に置換する。そして、DB操作コマンドをDMBS940に転送する。
以上の操作によって、DBMS940には、シーケンス番号取得要求の存在しないDB操作コマンドが伝達されることになる。
シーケンス・バックトラック部920は、DBバックトラック部958によって指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、シーケンス状態の履歴に基づいて、シーケンス状態を指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる。
上述の一連の処理によって、DB操作コマンド置換部916からDBMS940に転送されるDB操作コマンドの中には、シーケンス番号取得に関連する要求(又はコマンド)が取り除かれることとなる。このことは、DBMS940のシーケンス機能を用いないことになる。このため、シーケンス取得に関連する要求(又はコマンド)に対しては、DBMS940に代わって、シーケンス管理部914が処理を行うこととなる。そして、シーケンス番号の逆戻りもシーケンス管理部914の管理する履歴を使うこととなるため、シーケンス状態のバックトラックが実現できることになる。
なお、シーケンス管理部914と、DB操作コマンド解析・分離部912と、DB操作コマンド置換部916とは、連携して、シーケンス番号処理部910を形成している。このシーケンス番号処理部910は、以下の処理を行っている。すなわち、アプリケーションプログラムからDMBS940に向けて発せられたDB操作コマンドを受け取り、DB操作コマンドのシーケンス番号取得要求に基づいて、DMBS940に代わってシーケンス番号を生成し、シーケンス番号取得要求の存在しないDB操作コマンドをDMBS940に伝達し、シーケンス状態の履歴をアプリケーションプログラムの状態と対応付けて記録することである。
次に、DMBS940を利用するプログラム・モデル検査装置950について説明する。
ドライバ953は、予め定められた一連の操作を記憶したシナリオに基づいて、検査対象アプリケーションプログラム930に指示を与える。すなわち、通常はオペレータが行う操作を、オペレータに代わって、シナリオに基づいてドライバ(953)が行う。
状態収集部956は、アプリケーションプログラムの状態や、シーケンス管理部からのシーケンス番号状態を収集して、状態管理部954に転送する。状態管理部954は、検査対象アプリケーションプログラム930の状態を監視し、状態が変化する場合には、状態IDを変更する。状態IDは、バックトラックの状態を特定する際に用いてもよい。また、状態管理部954は、アプリケーションの状態を評価器952に送る。
評価器952は、状態管理部954から送られたアプリケーションプログラムの状態がプロパティ管理部951から提供されるプロパティを満足するかをチェックする。このチェックにおいて、状態がプロパティを満足すれば、アプリケーションプログラム930は、仕様を満足していることが分かる。この点については、既に説明したとおりである。
バックトラック部955は、状態管理部954からの指示に基づいて、バックトラックを行うための制御を司る。バックトラックの指示をPG(プログラム)変数バックトラック部957とDBバックトラック部958に送る。
PG変数バックトラック部957は、アプリケーションプログラム930の変数をバックトラックすべき状態まで戻す機能を果たす。
DBバックトラック部958は、DBMS940に対して、データのバックトラックを指示する。これは、DBMS940に対して送った一連のDB操作コマンドの処理の逆の処理をDMBS940に指示することにより実現できる。加えて、シーケンス・バックトラック部に、シーケンス番号をバックトラックさせる指示を行う。シーケンス状態は、DMBS940に代わって、DBシーケンス・バックトラック部920及びシーケンス管理部914が管理しているため、DBMS940に何ら影響を与えずに、シーケンス状態のバックトラックを実現する。シーケンス番号のバックトラックについては、既に説明したとおりである。
なお、DB接続切換部941は、モデル検査を行わない場合に、アプリケーションプログラム930とDBMS940とを直接接続するためのスイッチである。
図10Aは、DBシーケンス・バックトラック制御の処理フローを示している。
ステップ1010において、アプリケーションプログラムからDMBS940に向けて発せられたDB操作コマンドを受け取り、DB操作コマンドのシーケンス番号取得要求に基づいて、DMBS940に代わってシーケンス番号を生成し、シーケンス番号取得要求の存在しないDB操作コマンドをDMBS940に伝達し、シーケンス状態の履歴をアプリケーションプログラムの状態と対応付けて記録する。
ステップ1020において、プログラム・モデル検査装置950により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、シーケンス状態の履歴に基づいて、シーケンス状態を指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる。
図10Bも、DBシーケンス・バックトラック制御の処理フローを示している。ここでは、図10Aで示したステップ1010を実現する他の実施形態を示している。
ステップ1012において、シーケンス処理に係るDB操作コマンドと、その他のDB操作コマンドとに分離し、シーケンス処理のDB操作コマンドから、シーケンス番号取得要求を抽出し、シーケンス番号取得要求が組み込まれたDB操作コマンドにはマーキングを行う。
ステップ1014において、シーケンス番号取得要求を受け取り、DMBS940に代わってシーケンス番号を生成し、シーケンス状態の履歴をアプリケーションプログラムの状態と対応付けて保存する。
ステップ1016において、その他のDB操作コマンドと、マーキングされたDB操作コマンドとを受け取り、マーキングされたDB操作コマンドの中のシーケンス番号取得要求を、生成されたシーケンス番号に置換した後に、受け取ったDB操作コマンドをDMBS940に転送する。
ステップ1020については、図10Aにおいて説明したとおりである。
図11は、プログラム・モデル検査装置の処理フローを示している。
ステップ1110において、シナリオ中に現在状態で選択可能な操作があるか判断される。この判断がYESであればステップ1120に進む。この判断がNOであればステップ1170に進む。
ステップ1120において、ドライバが選択可能な操作で検査対象アプリケーションプログラムを駆動する。
ステップ1130において、状態を収集し、状態を管理し、状態IDと関連付けてシーケンス状態が管理・保持される。
ステップ1140において、状態がプロパティを満足するかがチェックされ、アプリケーションプログラムの状態を評価する。
ステップ1150において、プロパティが成立したか(すなわち状態がプロパティを満足するか)がチェックされる。この判断がYESであれば、ステップ1110に戻る。この判断がNoであれば、ステップ1160に進む。
ステップ1160において、プロパティ不成立を報告する。この場合には、アプリケーションプログラムが仕様を満足していないことが分かる。
ステップ1170において、バックトラック可能かが判断される。この判断がNoであれば終了する。この場合には、アプリケーションプログラムは、仕様を満足していることが判明する。この判断がYESであれば、ステップ1180に進む。
ステップ1180では、バックトラックが行われる。どこまでバックトラックすべきかの判断は、上述の深さ優先探索法でシナリオをチェックすることによって判明する。なお、この点の具体例については、後述する。そして、以下のバックトラックを実施する。
(1)アプリケーションプログラムの変数のバックトラック
(2)DBバックトラック
(a)DBのデータのバックトラック
(b)シーケンス番号のバックトラック
以上が、プログラム・モデル検査装置950の処理フローである。
図12は、DB操作コマンド解析・分離部912のフロー図を示している。
ステップ1210において、アプリケーションプログラムから、DMBS940に向けて発行されたDB操作コマンドを取得する。DB操作コマンドは、アプリケーションプログラムから順次発行されるため、DB操作コマンドを取得した都度、以下の処理を行えばよい。
ステップ1220において、取得したDB操作コマンドを構文解析し、シーケンス処理の判定ルール1225に基づき、シーケンス番号の取得に関連する処理(シーケンス処理)かを判定する。シーケンス処理の判定ルールの例については、図13を用いて後述する。
ステップ1230において、DB操作コマンドがシーケンス処理か否かが判定される。判定がYesであれば、ステップ1240に進む。判定がNoであれば、ステップ1270に進む。
ステップ1240において、DB操作コマンドからシーケンス番号取得要求を抽出し、これをシーケンス管理部914に送る。シーケンス処理に関係するDB操作コマンドには、DB操作コマンド単独でシーケンス番号取得要求を行うものと、DB操作コマンド内に組み込まれた形でシーケンス番号取得要求を行うものとが存在する(以後、このタイプのDB操作コマンドを「組み込み」という語を用いて説明する)。これらの具体例については図14及び図15を用いて後述する。このステップでは、いずれのタイプのDB操作コマンドであっても、シーケンス番号取得要求を抽出して、シーケンス管理部914に送る。
ステップ1250において、シーケンス処理が、組み込みか否かが判断される。この判断がYesであればステップ1260に進む。この判断がNoであればステップ1280に進む。
ステップ1280において、このステップに進んだ場合には、取得したDB操作コマンドをDB操作コマンド置換部に伝達しない。なぜなら、このステップに到達した場合には、DB操作コマンドは、DBコマンド内にシーケンス番号取得要求が組み込まれていない、シーケンス番号取得のみのためのDB操作コマンドだからである。すなわち、シーケンス番号の取得の処理をDMBS940に要求しないため、DMBS940に伝送する必要はない。その代わり、本実施形態では、シーケンス管理部914が、DMBS940に代わってシーケンス番号取得要求の処理を行っている。
ステップ1260において、当該DB操作コマンドの組込み欄に「YES」の印を付けて、DB操作コマンド置換部に伝達する。ここで、Yesの印を付けるのは、このDB操作コマンドが、シーケンス番号取得要求が組み込まれたものであるということを予めマーキングしておくためである。DB操作コマンド置換部916において、このDB操作コマンドの中のシーケンス番号取得要求の部分を、シーケンス管理部914が生成したシーケンス番号で置き換える。このようにすることによって、この置き換えられたDB操作コマンドをDMBS940に送った場合にも、DMBS940は、シーケンス番号取得要求が組み込まれていないDB操作コマンドとして処理を行うことができるのである。
ステップ1270において、DB操作コマンドをDMBS940に伝送する。このステップに進んだ場合、DB操作コマンドは、シーケンス番号取得要求とは関係のないものであるため、DMBS940に処理させても、後のバックトラックが可能だからである。
以上の処理によって、DMBS940には、シーケンス番号取得要求の含まれないDB操作コマンドが送られることとなる。そして、上述したようにシーケンス番号取得要求に対しては、DMBS940に代わって、シーケンス管理部914が処理を行う。
図13は、シーケンス処理の判別ルールの例を示している。No.1及びNo.2は、シーケンス名に対応するシーケンス番号を取得する命令である。これらは、シーケンス番号取得要求を行う単独のコマンドであるため、シーケンス管理部914にシーケンス番号取得要求を送ればよい。そして、これらのDB操作コマンドは、DMBS940に送らないようにする。
図13のNo.3及びNo.4のコマンドは、INSERT文であり、レコードを追加しつつ、データを追加する処理の中で、シーケンス番号取得要求を組み込んだものである。このようなシーケンス番号取得要求を組み込んだDB操作コマンドは、シーケンス番号取得要求部分だけを、シーケンス管理部914が生成したシーケンス番号で置き換えて、DB操作コマンドを修正した後にDMBS940に送ることが必要である。このようにすることによって、修正されたDB操作コマンドを受け取ったDMBS940に、シーケンス番号取得要求の部分の処理をおこなわせないことができる。
上記以外のDB操作コマンドについては、シーケンス処理とは関係のないDB操作コマンドであると認識させる。
図14は、DB操作コマンド解析・分離部912の入力と出力の例を示している。そして、シーケンス処理が組み込まれていない場合を示している。検査対象アプリケーションプログラム930から表1410のDB操作コマンドが入力された。この一連のDB操作コマンドのうち、No3のDB操作コマンド「SELECT 注文No.NEXTVAL AS SEQ_NEXTVAL FROM DUAL」は、注文No.のシーケンス番号の次の値を要求するものである。このDB操作コマンドは、シーケンス番号取得要求が組み込まれたコマンドではないため、テーブル1430の出力2に示すように、DB操作コマンド置換部916には、送らなくてよい。その代わり、テーブル1420に示すように、シーケンス番号取得要求として出力1「注文No.NEXTVAL」をシーケンス管理部914に送り、シーケンス番号を生成させ、出力させる。また、表1430の「組込み」の欄にNOを追加する。NOの意味は、DB操作コマンド置換部において、置換処理が不要であることを意味する。NOの代わりに、ブランクとしておいてもよい。
図15は、DB操作コマンド解析・分離部912の別の入力と出力の例を示しており、シーケンス番号取得要求が、DB操作コマンドに組み込まれている場合の例を示している。表1510のNo.3のコマンドは、「INSERT INTO 商品テーブル (注文No,顧客名,商品コード,数量) VALUES (注文No.NEXTVAL,富士次郎,Item2,20)」となっており、INSERT分の中に、「注文No.NEXTVAL」という、シーケンス番号取得要求が組み込まれている。この場合には、表1520に示すように、出力1としてシーケンス番号取得要求「注文No.NEXTVAL」をシーケンス管理部914に送り、シーケンス番号を生成させる。そして、表1530に示すように出力2として、DB操作コマンドの「組込み」欄にYESをマーキングして、出力2をDB操作コマンド置換部に送る。ここで、「YES」をマーキングする意味は、DB操作コマンド置換部において、該当するDB操作コマンド内のシーケンス番号取得要求を、シーケンス管理部914からのシーケンス番号で置換するための目印として利用する。なお、以上のような「YES」「No」のマーキングは、一例であり、DB操作コマンド置換部での置換処理が行える処理であれば、どのような処理であってもよいことはいうまでもない。
図16は、DB操作コマンド置換部916のフローを示している。
ステップ1610において、DB操作コマンド解析・分離部912から、DB操作コマンドを取得する。
ステップ1620において、DB操作コマンドにシーケンス番号取得要求が組み込まれているか(シーケンス処理が組み込みか)否かが判断される。この判断がYesであれば、ステップ1630に進む。また、この判断がNoであれば、ステップ1650に進む。この判断は、図16及び図17において示した実施形態の場合には、「組込み」の欄に「YES」が付されているか否かをチェックすることにより行うことができる。
ステップ1630において、組み込まれたシーケンス番号取得要求に対応するシーケンス番号を、シーケンス管理部914から取得する。
ステップ1640において、取得したDB操作コマンドに組み込まれたシーケンス番号取得要求の部分を、シーケンス番号で置き換える。
ステップ1650において、取得したDB操作コマンドを、DMBS940に伝達する。
以上の操作によって、シーケンス番号取得要求を含まないDB操作コマンドがDMBS940に送られることが保証される。
図17は、DB操作コマンド置換部916の入力と出力の例を示している。これは、図15で示した例を用いている。表1710に示されているように、入力のうち、No.3のコマンドは、「INSERT INTO 商品テーブル (注文No,顧客名,商品コード,数量) VALUES (注文No.NEXTVAL,富士次郎,Item2,20)」となっており、シーケンス番号取得要求が組み込まれている。このため、表1720のNo.3に示されるように、この中の「注文No.NEXTVAL」を、シーケンス管理部714から出力されたシーケンス番号「2」で置換し、「INSERT INTO 商品テーブル (注文No,顧客名,商品コード,数量) VALUES (2,富士次郎,Item2,20)」とする。この操作によって、DMBS940には、シーケンス番号取得要求の組み込まれていないINSERT文が送られることになる。
図18は、シーケンス管理部914のデータ構造を示している。シーケンス管理部914は、シーケンス状態データ1810と、シーケンス状態スタックデータ1820とを有する。
図19に、シーケンス状態データの例を示す。
シーケンス状態データ1910は、現時点における複数のシーケンス名(例えば、「注文No」「商品No」)の状態を示している。各シーケンス名の「現在値」及び「次値」が示されている。これらは、動的に変化して行く。「初期値」「増分」及び「最大値」は、シーケンス番号の定義の際に指定された値である。具体的な定義コマンドは、図6に示したとおりである。
図20は、シーケンス状態スタックデータの例を示す。図19のシーケンスデータを、状態管理部954からの状態IDと関連付けてスタック状にメモリに記憶して行く。たとえば、表2010は、状態ID=「状態2」である場合のスタックデータを示している。状態を保存する場合には、新たなデータをプッシュする。バックトラックが指示された場合には、シーケンス・バックトラック部920により、シーケンス状態スタックデータが、必要な回数だけポップされる。そして、トップの位置にあるシーケンス状態スタックデータが、バックトラック後におけるシーケンス状態となる。
図21は、シーケンス管理部914の初期化フローを示している。
ステップ2110において、シーケンス生成用のDB操作コマンドを受け取る。このコマンドの例は、図6に示されている。
ステップ2120においてシーケンス管理914の管理データスタックを生成し、1番目のデータをPushする。現在のシーケンス状態が、状態IDとともにシーケンススタックデータのTopに置かれる。
図22は、シーケンス管理部914の動作フローを示している。
ステップ2210において、シーケンス番号取得要求か否かが判断される。この判断がYesであれば、ステップ2220に進む。この判断がNoであれば、ステップ2270に進む。
ステップ2220において、シーケンス番号取得要求を受け取る。
ステップ2230において、シーケンス番号取得要求の対象シーケンス名を特定する。シーケンスには、例えば図20においては、「注文No」と「商品No」の2つが存在する。このステップにおいて、シーケンス名が特定される。
ステップ2240において、シーケンス番号取得要求が次値を要求しているか否かが判断される。シーケンス番号取得要求には、現在値を要求する場合と次値を要求する場合の2つが存在するため、このステップにおいて、このいずれであるかを特定する。この判断がYesであれば、ステップ2250に進む。この判断がNoであればステップ2260に進む。
ステップ2250において、次値が要求されているため、シーケンス状態データから、当該シーケンスの増分に従って、現在値と次値を更新する。
ステップ2260において、シーケンス番号を出力する。
ステップ2270において、シーケンス状態スタックデータの更新要求か否かが判断される。判断がYesの場合には、ステップ2280に進む。判断がNoである場合には、終了する。
ステップ2280において、このステップでは、状態の保存が要求されている場合であるため、プログラム・モデル検査装置950から状態IDを取得する。
ステップ2290において、シーケンス状態スタックデータに、状態IDと
シーケンス状態データをまとめて、Pushする。
図23は、シーケンス管理部914の管理データの変化の例を示している。
まず、シーケンス管理部914の表2310はシーケンス状態を示しており、表2320は、シーケンス状態スタックデータを示している。この状態において、プログラム・モデル検査装置950から、シーケンス状態スタックデータの更新が指示されたと仮定する。この場合には、新たな状態IDとして「状態2」が、プログラム・モデル検査装置950から提供される。そして、シーケンス状態スタックデータが、表2340に示すように、状態2のエントリをプッシュして、更新される。このようにして、各々の状態IDと関連させてシーケンス状態がプッシュされる形で保存されて行く。
図24は、シーケンス・バックトラック部920のフローを示している。
ステップ2410において、バックトラックすべき状態を取得し、バックトラック状態とする。
ステップ2420において、シーケンス状態スタックデータに対して、バックトラック状態まで、スタックをPopする。このPop動作によって、適切なシーケンススタックデータがトップの位置に置かれることとなる。
ステップ2430において、シーケンス状態スタックデータのTopから、シーケンス情報を取得して、シーケンス状態データとする。この操作によって、シーケンス状態は、バックトラックされ、シーケンス番号が逆戻りすることとなる。
図25は、シーケンス・バックトラックの例を示している。
シーケンス・バックトラック部920は、バックトラックすべき状態IDまで、シーケンス管理部914のシーケンス状態スタックデータに対して、スタックをPopする処理を行う。この図の例の場合には、状態1までバックトラックすることが示されている。したがって、シーケンス管理部914のシーケンス状態スタックデータのTopに状態1が来るよう、Popの操作がなされる。この状態が、表2520に示されている。
図26は、操作シナリオの例を示している。シナリオには、シナリオNoが付されており。しなりおNo1を終了した後、順次次のシナリオを実行して行く。シナリオに基づいて、ドライバ953が、検査対象アプリケーションプログラム930を操作する。例えば、シナリオNo1が終了すると、次にシナリオNo2の実行が行われる。その際、シナリオNo2は、最初の(1)注文1から開始するのではなく、シナリオNo1の状態を(1)注文1の終了時点までバックトラックする。そして、ドライバは、シナリオ2の(4)検索の操作をアプリケーションプログラム930に対して行う。バックトラックの手法として、深さ優先探索法によって状態探索を用いてもよい。
図27は、操作と状態遷移の例を示す。図26のシナリオを実行した結果を木構造で示している。例えば、(5)注文2によって状態2(2754)まで進んだ後、初期状態(2750)までバックトラックが行われる。そして(6)注文2の操作が行われる。この場合、状態2においては、表2714に示されるように注文Noは、「2」まで増加しているが、状態3においては、表2716に示されるように、注文Noは、「1」となっており、本実施形態により、シーケンス番号のバックトラックが適切に行われていることが分かる。
図28は、シーケンス・バックトラック不能による不具合の例を示す。これは、例えば、図9におけるDBシーケンス・バックトラック制御装置900を用いずに、DB接続切換部941を用いて、検査対象アプリケーションプログラム930を直接DBMS940に接続した場合の例を示している。図28の各々の注文Noは、DMBS940のシーケンス番号取得要求を用いているために、シーケンス番号のバックトラックが正常に行われていない。したがって、注文Noが、バックトラックできずに増加してしまっていることが分かる。シーケンスのバックトラックが出来ないと、注文処理ごとに注文Noシーケンスが増えてしまう。このため、以下のような不具合が発生する。
(1)現状の注文Noの値によって注文数を算出するロジックがあった場合、注文数が間違ってしまう。
(2)成功すべき検索が失敗してしまい、探索すべき状態に到達できない。
(3)本来同じであるべき状態が、別の状態となってしまう。
図29は、一実施形態のハードウエア構成を示している。ハードウエアには、CPU2902、メモリ2904、動的メモリ2906、媒体2909を読み書きするドライブ2908、通信インターフェース2910、表示装置2913等に画像信号を送るビデオインターフェース2912、I/Oインターフェース2914、I/Oとしてのキーボード2916、マウス2918、プリンタ2920が含まれる。
CPU2902は、メモリ2904や動的メモリ2906に格納されている上記説明したプログラム・モデル検査のための種々のプログラムを実行する。
また、プログラムに係る本発明は、機械読み取り可能な記録媒体に格納されてもよい。機械読み取り可能な記録媒体には、磁気記録媒体、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録媒体には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc−Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。また、光磁気記録媒体には、MO(Magneto−Optical disk)などがある。
以上の複数の実施形態に関し、更に以下の付記を開示する。
(付記1)
プログラム・モデル検査装置用のDBシーケンス・バックトラック制御プログラムであって、
アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶し、
前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶された前記シーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、
処理をコンピュータに実行させることを特徴とするプログラム。
(付記2)
前記記憶部に記憶する処理は、
アプリケーションプログラムからのDB操作コマンドを、シーケンス番号取得要求に係るDB操作コマンドと、その他のDB操作コマンドとに分離し、前記シーケンス番号取得要求に係るDB操作コマンドから、シーケンス番号取得要求を抽出し、
前記抽出されたシーケンス番号取得要求に応答して、DBMSに代わって前記シーケンス番号を出力することによりシーケンス番号の状態の履歴をアプリケーションプログラムの状態と対応付けて記憶部に保存し、
前記シーケンス番号取得要求に係るDB操作コマンドのうち、シーケンス番号取得要求が組み込まれたDB操作コマンドの中の前記組み込まれたシーケンス番号取得要求を、前記出力されたシーケンス番号に置換したDB操作コマンドと、前記その他のDB操作コマンドと、を前記DBMSに伝達する、
処理を有することを特徴とする付記2記載のプログラム。
(付記3)
プログラム・モデル検査装置用のDBシーケンス・バックトラック制御方法であって、
アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶し、
前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶された前記シーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、
ことを特徴とする方法。
(付記4)
前記記憶部に記憶する処理は、
アプリケーションプログラムからのDB操作コマンドを、シーケンス番号取得要求に係るDB操作コマンドと、その他のDB操作コマンドとに分離し、前記シーケンス番号取得要求に係るDB操作コマンドから、シーケンス番号取得要求を抽出し、
前記抽出されたシーケンス番号取得要求に応答して、DBMSに代わって前記シーケンス番号を出力することによりシーケンス番号の状態の履歴をアプリケーションプログラムの状態と対応付けて記憶部に保存し、
前記シーケンス番号取得要求に係るDB操作コマンドのうち、シーケンス番号取得要求が組み込まれたDB操作コマンドの中の前記組み込まれたシーケンス番号取得要求を、前記出力されたシーケンス番号に置換したDB操作コマンドと、前記その他のDB操作コマンドと、を前記DBMSに伝達する、
処理を有することを特徴とする付記3記載の方法。
(付記5)
プログラム・モデル検査装置用のDBシーケンス・バックトラック制御装置であって、
アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶する、シーケンス番号処理部と、
前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶された前記シーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、シーケンス・バックトラック部と、
を有することを特徴とする装置。
(付記6)
前記シーケンス番号処理部は、
アプリケーションプログラムからのDB操作コマンドを、シーケンス番号取得要求に係るDB操作コマンドと、その他のDB操作コマンドとに分離し、前記シーケンス番号取得要求に係るDB操作コマンドから、シーケンス番号取得要求を抽出する、DB操作コマンド解析・分離部と、
前記抽出されたシーケンス番号取得要求に応答して、DBMSに代わって前記シーケンス番号を出力することによりシーケンス番号の状態の履歴をアプリケーションプログラムの状態と対応付けて記憶部に保存する、シーケンス管理部と、
前記シーケンス番号取得要求に係るDB操作コマンドのうち、シーケンス番号取得要求が組み込まれたDB操作コマンドの中の前記組み込まれたシーケンス番号取得要求を、前記出力されたシーケンス番号に置換したDB操作コマンドと、前記その他のDB操作コマンドと、を前記DBMSに伝達する、DB操作コマンド置換部と、
を有することを特徴とする付記5記載の装置。
900 DBシーケンス・バックトラック制御装置
910 シーケンス番号処理部
912 DB操作コマンド解析・分離部
914 シーケンス管理部
916 DB操作コマンド置換部
920 シーケンス・バックトラック部
930 検査対象アプリケーションプロクラム
940 DBMS
950 DBMSを利用するプログラム・モデル検査装置

Claims (4)

  1. プログラム・モデル検査装置用のDBシーケンス・バックトラック制御プログラムであって、
    アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶し、
    前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶された前記シーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、
    処理をコンピュータに実行させることを特徴とするプログラム。
  2. 前記記憶部に記憶する処理は、
    アプリケーションプログラムからのDB操作コマンドを、シーケンス番号取得要求に係るDB操作コマンドと、その他のDB操作コマンドとに分離し、前記シーケンス番号取得要求に係るDB操作コマンドから、シーケンス番号取得要求を抽出し、
    前記抽出されたシーケンス番号取得要求に応答して、DBMSに代わって前記シーケンス番号を出力することによりシーケンス番号の状態の履歴をアプリケーションプログラムの状態と対応付けて記憶部に保存し、
    前記シーケンス番号取得要求に係るDB操作コマンドのうち、シーケンス番号取得要求が組み込まれたDB操作コマンドの中の前記組み込まれたシーケンス番号取得要求を、前記出力されたシーケンス番号に置換したDB操作コマンドと、前記その他のDB操作コマンドと、を前記DBMSに伝達する、
    処理を有することを特徴とする請求項記載のプログラム。
  3. プログラム・モデル検査装置用のDBシーケンス・バックトラック制御方法であって、
    アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶し、
    前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶されたシーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、
    ことを特徴とする方法。
  4. プログラム・モデル検査装置用のDBシーケンス・バックトラック制御装置であって、
    アプリケーションプログラムからのDB操作コマンドのシーケンス番号取得要求に応答して、DBMSに代わってシーケンス番号を出力することによって前記シーケンス番号取得要求の存在しないDB操作コマンドを前記DBMSに伝達すると共に前記シーケンス番号の状態の履歴を前記アプリケーションプログラムの状態と対応付けて記憶部に記憶する、シーケンス番号処理部と、
    前記プログラム・モデル検査装置により指定されたアプリケーションプログラムの状態まで戻すバックトラック要求に応答して、前記記憶部に記憶されたシーケンス番号の状態の履歴に基づいて、前記シーケンス番号の状態を、前記指定されたアプリケーションプログラムの状態と対応する状態までバックトラックさせる、シーケンス・バックトラック部と、
    を有することを特徴とする装置。
JP2011121058A 2011-05-30 2011-05-30 プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置 Expired - Fee Related JP5708260B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011121058A JP5708260B2 (ja) 2011-05-30 2011-05-30 プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011121058A JP5708260B2 (ja) 2011-05-30 2011-05-30 プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置

Publications (2)

Publication Number Publication Date
JP2012248121A JP2012248121A (ja) 2012-12-13
JP5708260B2 true JP5708260B2 (ja) 2015-04-30

Family

ID=47468483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011121058A Expired - Fee Related JP5708260B2 (ja) 2011-05-30 2011-05-30 プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置

Country Status (1)

Country Link
JP (1) JP5708260B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2976891B2 (ja) * 1996-06-28 1999-11-10 日本電気株式会社 リモートデータベースアクセス方法
JP4732874B2 (ja) * 2005-11-28 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
JP5412995B2 (ja) * 2009-06-30 2014-02-12 富士通株式会社 プログラムモデル検査におけるデータベース制御装置、データベース制御方法、データベース制御プログラム

Also Published As

Publication number Publication date
JP2012248121A (ja) 2012-12-13

Similar Documents

Publication Publication Date Title
CN110928772B (zh) 一种测试方法及装置
US9934134B2 (en) Generating a test scenario template from runs of test scenarios belonging to different organizations
US5758062A (en) Method and apparatus for regression testing of application logic
CN101171571B (zh) 分析和组织软件应用程序中的物件的设备
US7386845B1 (en) Automated compatibility and upgrade/downgrade knowledge base
US7886028B2 (en) Method and system for system migration
JP5367947B2 (ja) 用語データベース拡張のための方法およびシステム
US20080120601A1 (en) Information processing apparatus, method and program for deciding priority of test case to be carried out in regression test background of the invention
US20110106776A1 (en) Incremental implementation of undo/redo support in legacy applications
US9311176B1 (en) Evaluating a set of storage devices and providing recommended activities
US20080301486A1 (en) Customization conflict detection and resolution
JP5412995B2 (ja) プログラムモデル検査におけるデータベース制御装置、データベース制御方法、データベース制御プログラム
Kessentini et al. Automated metamodel/model co-evolution using a multi-objective optimization approach
EP1683024B1 (en) System, method, and computer program product for storing test results in a database
CN104598374B (zh) 校正失效脚本的方法和设备
CN1670715B (zh) 在公共语言运行时语言中的资源地址支持
Earls et al. A method for the manual extraction of business rules from legacy source code
US8433729B2 (en) Method and system for automatically generating a communication interface
US20190220549A1 (en) Analysis model preparing system, programming apparatus, and analysis model preparing method
US20020072928A1 (en) Method and system for managing component changes to a business critical application in a production environment
JP6120607B2 (ja) 要件検出装置及び要件検出プログラム
JP5708260B2 (ja) プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置
CN117897710A (zh) 解决工业数据转换问题的人工智能方法
JP2002123516A (ja) ウェブサイト評価システム、ウェブサイト評価方法、記録媒体
Kulkarni Implementing SAP S/4HANA: A Framework for Planning and Executing SAP S/4HANA Projects

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

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: 20150203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150216

R150 Certificate of patent or registration of utility model

Ref document number: 5708260

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees