【解決手段】第1システムと第2システムとのシステム間連携を検証する検証装置のコンピュータに、前記第1システムから前記第2システムへの手続的な複数のトランザクション記述を取得する取得ステップと、検証式と前記取得ステップが取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップと、前記命題生成ステップが生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップと、を実行させるための検証プログラム。
前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題を検証するときに検証できない前記冪等性に関する命題および前記可換性に関する命題を提示する提示ステップと、
前記提示ステップが提示した前記冪等性に関する命題および前記可換性に関する命題に対する追加の検証手続を受け付ける入力ステップと、
前記入力ステップが受け付けた前記追加の検証手続に関して検証する追加検証ステップと、
を前記コンピュータに実行させるための請求項1に記載の検証プログラム。
前記取得ステップがデータベース言語で記述された前記第1システムから前記第2システムへの前記手続的な複数のトランザクション記述を取得するように前記取得ステップを前記コンピュータに実行させ、
前記取得ステップが取得した前記データベース言語で記述された前記手続的な複数のトランザクション記述を定理証明支援系言語で記述される関数に変換するように変換ステップを前記コンピュータに実行させ、
前記命題生成ステップが前記検証式と前記変換ステップが変換した前記定理証明支援系言語で記述される前記関数とに基づいて前記冪等性に関する命題および前記可換性に関する命題を生成するように、前記命題生成ステップ
を前記コンピュータに実行させるための請求項1から請求項4のいずれか一項に記載の検証プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術でのシステム間連携の検証は、更新トランザクションにおける全てのルートを網羅して検証者が検証する必要があった。特に可換性に関しては、一つのシステム内の全ての更新トランザクションから任意の二つを取り出して検証するため、更新トランザクションの数の二乗に比例してレビューの作業量が増大するという問題があった。また、データセットや更新ロジックが複雑である場合には、レビューの作業量が膨大になり検証することができないという問題があった。
このように、システム間連携における検証において、更新トランザクションを検証できないという課題があった。
【0005】
本発明は、上記の点に鑑みてなされたものであり、システム間連携における検証において更新トランザクションを確実に検証することができる検証プログラム、検証装置および検証方法を提供することを課題とする。
【課題を解決するための手段】
【0006】
(1)本発明は、上述した課題を解決するためになされたもので、本発明の第1の態様は、第1システムと第2システムとのシステム間連携を検証する検証装置のコンピュータに、前記第1システムから前記第2システムへの手続的な複数のトランザクション記述を取得する取得ステップと、検証式と前記取得ステップが取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップと、前記命題生成ステップが生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップと、を実行させるための検証プログラムである。
【0007】
(2)本発明の第2の態様は、上述の検証プログラムであって、前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題を検証するときに検証できない前記冪等性に関する命題および前記可換性に関する命題を提示する提示ステップと、前記提示ステップが提示した前記冪等性に関する命題および前記可換性に関する命題に対する追加の検証手続を受け付ける入力ステップと、前記入力ステップが受け付けた前記追加の検証手続に関して検証する追加検証ステップと、を前記コンピュータに実行させるための検証プログラムである。
【0008】
(3)本発明の第3の態様は、上述の検証プログラムであって、前記取得ステップが取得した前記複数のトランザクション記述をそれぞれ関数に変換する変換ステップを前記コンピュータに実行させ、前記変換ステップが変換した前記関数を冪等性検証式と可換性検証式とに基づいて前記冪等性に関する命題および前記可換性に関する命題を生成するように前記命題生成ステップを前記コンピュータに実行させるための検証プログラムである。
【0009】
(4)本発明の第4の態様は、上述の検証プログラムであって、前記命題生成ステップが生成した前記冪等性に関する命題および前記可換性に関する命題を簡約する簡約ステップと、前記簡約ステップが簡約した前記冪等性に関する命題および前記可換性に関する命題のうち、制約条件の場合分けを行い、前記制約条件を満たさない部分命題を排除する排除ステップと、前記排除ステップが前記部分命題を排除した前記冪等性に関する命題および前記可換性に関する命題に対し条件分岐ロジックごとに場合分けおよび簡約することで冪等性に関する部分命題および可換性に関する部分命題を生成する分岐ステップと、前記分岐ステップが前記条件分岐ロジックごとに場合分けおよび簡約したそれぞれの前記冪等性に関する部分命題および前記可換性に関する部分命題の右辺と左辺が同形か否かを判定する第1判定ステップと、前記冪等性に関する部分命題および前記可換性に関する部分命題の場合分け条件が矛盾しているか否かを判定する第2判定ステップと、を前記コンピュータに実行させ、前記第1判定ステップが前記右辺と左辺が同形であると判定した場合、および前記第2判定ステップが2つ以上の前記場合分け条件が矛盾していると判定した場合、前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題の検証を終了するように前記検証ステップを前記コンピュータに実行させるための検証プログラムである。
【0010】
(5)本発明の第5の態様は、上述の検証プログラムであって、前記取得ステップがデータベース言語で記述された前記第1システムから前記第2システムへの前記手続的な複数のトランザクション記述を取得するように前記コンピュータに実行させ、前記取得ステップが取得した前記データベース言語で記述された前記手続的な複数のトランザクション記述を定理証明支援系言語で記述された関数に変換する変換ステップを前記コンピュータに実行させ、前記命題生成ステップが前記検証式と前記変換ステップが変換した前記定理証明支援系言語で記述された前記関数とに基づいて前記冪等性に関する命題および可換性に関する命題を生成するように、前記コンピュータに実行させるための検証プログラムである。
【0011】
(6)本発明の第6の態様は、第1システムと第2システムとのシステム間連携を検証する検証装置であって、前記第1システムから前記第2システムへの手続的な複数のトランザクション記述を取得する取得部と、検証式と前記取得部が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成部と、前記命題生成部が生成した冪等性に関する命題および可換性に関する命題を検証する検証部と、を備えることを特徴とする検証装置である。
【0012】
(7)本発明の第7の態様は、第1システムと第2システムとのシステム間連携を検証する検証装置の検証方法であって、前記第1システムから前記第2システムへの手続的な複数のトランザクション記述を取得する取得過程と、検証式と前記取得過程が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成過程と、前記命題生成過程が生成した冪等性に関する命題および可換性に関する命題を検証する検証過程と、を有することを特徴とする検証方法である。
【発明の効果】
【0013】
本発明の検証プログラム、検証装置および検証方法によれば、システム間連携における検証において更新トランザクションを確実に検証することができる。
【発明を実施するための形態】
【0015】
(一実施形態)
以下、図面を参照しながら本発明の一実施形態について詳しく説明する。
図1は、本発明の一実施形態に係る検証装置1を用いて検証可能な検証システムS1の構成の一例を示す概略図である。
システム間連携を検証する検証装置1を用いて検証可能な検証システムS1は、第1システムS2と、第2システムS3と、第3システムS4を含んで構成される。第1システムS2と第2システムS3と第3システムS4とは、互いにネットワークN1を介して無線通信または有線通信を行う。第1システムS2は、データベースADB2を有し、第2システムS3は、データベースBDB3を有し、第3システムS4は、データベースCDB4を有する。
【0016】
第1システムS2と第2システムS3と第3システムS4とは、データベース言語で記述された複数のトランザクション記述をそれぞれやり取りし、第1システムS2と第2システムS3と第3システムS4との間のシステム間通信を行うことでシステム間連携を行い、それぞれのデータベースADB2、データベースBDB3、データベースCDB4の更新を行う。ここで、第1システムS2と第2システムS3と第3システムS4とは、システム間連携しているが各システムが可用性を有するため、例えば、第1システムS2が何らかの要因でシステムダウンしても第2システムS3と第3システムS4とは、継続して稼働することができる。このとき、システムダウンしていた第1システムS2が復帰したとき、第1システムS2内に蓄えられた複数のトランザクション記述を再送信(リトライ)する。
検証装置1は、検証システムS1のような複数のシステム間連携において、各システム内の全ての更新トランザクション(手続的なトランザクション)がリトライに対する耐性(冪等性)および更新順序の入れ替わりに対する耐性(可換性)を検証することで、システム間連携における検証を行う。
【0017】
図2は、本発明の一実施形態に係る検証装置1の構成の一例を示す概略ブロック図である。
検証装置1は、取得部11と、変換部12と、命題生成部13と、記憶部14と、処理部15と、出力部16と、入力部17と、を含んで構成される。記憶部14は、検証式記憶部141と、トランザクション記憶部142と、補題記憶部143と、制約条件記憶部144と、を含んで構成される。処理部15は、検証部151と、解決部152と、追加手続要求部153と、を含んで構成される。検証部151は、簡約部1511と、排除部1512と、分岐部1513と、を含んで構成される。解決部152は、同値判定部1521(第1判定部)と、矛盾判定部1522(第2判定部)と、を含んで構成される。
【0018】
取得部11(取得ステップ)は、第1システムS2から第2システムS3へのデータベース言語、例えばSQL(エスキューエル)により記述された手続的なトランザクションを複数、取得する。なお、以下の説明において、データベース言語により記述された手続的なトランザクションを手続的なトランザクション記述と称する。取得部11は、取得した手続的な複数のトランザクション記述を変換部12に出力する。
【0019】
変換部12(変換ステップ)は、取得部11から入力された手続的な複数のトランザクション記述を定理証明支援系言語で記述される写像関数に変換する。定理証明支援系言語とは、Coq、Agda、Isabelle/HOL、PVS、ACL2、NuPRLなどである。また、写像関数とは、トランザクションを実行する前のデータベース状態からトランザクションを実行した後のデータベース状態に写像する関数である。
変換部12は、手続的な複数のトランザクション記述を例えば、定理証明支援系言語であるCoqで記述される写像関数に変換し、変換した写像関数を展開および簡約(βι簡約・δ簡約など)をCoqのラムダ計算手段を利用して実施して出力関数を生成する。そして、変換部12は、生成した出力関数を命題生成部13に出力する。
【0020】
命題生成部13(命題生成ステップ)は、変換部12から出力関数が入力されると、検証式記憶部141に予め記憶された検証式を読み出し、当該検証式と出力関数とに基づいて、冪等性に関する命題および可換性に関する命題を生成する。具体的には、命題生成部13は、検証式記憶部141から冪等性検証式と可換性検証式とを読み出し、当該冪等性検証式に出力関数を当てはめることで冪等性に関する命題を生成し、当該可換性検証式に出力関数を当てはめることで可換性に関する命題を生成する。命題生成部13は、生成した冪等性に関する命題および可換性に関する命題をトランザクション記憶部142に記憶させる。なお、命題生成部13が利用する冪等性検証式および可換性検証式は、次式のように表される。
【0021】
冪等性検証式:f(f(x))=f(x)
可換性検証式:f(g(x))=g(f(x))
ここで、f、gは、手続的なトランザクションを表し、xは、更新前のデータベース状態を表す。
【0022】
記憶部14は、RAM(Random Access Memory;ランダムアクセスメモリ)、マスクROM(Read Only Memory:ロム)、FeRAM(Ferroelectric Randam Access Memory:強誘電体メモリ)、フラッシュメモリ、メモリカード、ハードディスク、SSD(Solid State Drive;ソリッドステートドライブ)などのメモリであり、処理部15が実行するプログラムおよび処理部15が当該プログラムを実行する際に必要となるデータを記憶する。当該プログラムには、アプリケーションなども含まれる。
【0023】
検証式記憶部141は、検証式を記憶する。具体的には、検証式記憶部141は、冪等性検証式と可換性検証式とを記憶する。
トランザクション記憶部142は、命題生成部13により生成された命題を記憶する。具体的には、トランザクション記憶部142は、命題生成部13により生成された可換性に関する命題と冪等性に関する命題とを記憶する。
補題記憶部143は、補題を記憶する。ここで、補題とは、補助定理のことであり、一つの定理を検証するために補助として使う定理である。
制約条件記憶部144は、制約条件を記憶する。ここで、制約条件とは、データベース構成の定義とは別に定義され、データベース内のテーブルに対する定義と、一意キー制約と、外部キー制約と、が含まれる。
【0024】
処理部15(処理ステップ)は、CPU(Central Processing Unit;中央演算処理装置)を備え、記憶部14が記憶するプログラムを実行することで、処理部15内の各部を制御する。
処理部15は、トランザクション記憶部142から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題に対し、演算や操作の順序を入れ替えても同じ結果になるか否かを検証する。また、処理部15は、トランザクション記憶部142から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題に対し、一回適用したときと二回適用したときとで同じになるか否かを検証する。
処理部15は、全ての冪等性に関する命題および全ての可換性に関する命題に対して同様に検証する。以下、より詳細に処理部15の処理内容を説明する。
【0025】
検証部151(検証ステップ)は、冪等性に関する命題および可換性に関する命題のそれぞれを出力部16に表示させ、入力部17がユーザから補題を指定する指定情報を受け付ける。そして、検証部151は、入力部17が受け付けた指定情報に該当する補題を補題記憶部143から読み出し、簡約部1511、排除部1512、分岐部1513において前述の冪等性に関する命題および可換性に関する命題に対して検証する。
また、検証部151(追加検証ステップ)は、追加手続要求部153から入力された追加の検証手続きと条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とに対して可換性および冪等性の検証を繰り返す。
以下、より詳細に、検証部151の処理内容を説明する。
【0026】
簡約部1511(簡約ステップ)は、トランザクション記憶部142から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題を簡約する。簡約部1511は、簡約した可換性に関する命題を排除部1512に出力する。
また、簡約部1511は、トランザクション記憶部142から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題を簡約する。簡約部1511は、簡約した冪等性に関する命題を排除部1512に出力する。
【0027】
また、簡約部1511は、追加手続要求部153から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、可換性に関する部分命題を簡約する。簡約部1511は、簡約した可換性に関する部分命題を排除部1512に出力する。
また、簡約部1511は、追加手続要求部153から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、冪等性に関する部分命題を簡約する。簡約部1511は、簡約した可換性に関する部分命題を排除部1512に出力する。
【0028】
排除部1512(排除ステップ)は、制約条件記憶部144から制約条件を読み出し、当該制約条件に基づいて、簡約部1511から入力された可換性に関する命題の場合分けを行い、可換性に関する部分命題を生成する。そして、排除部1512は、生成した可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部1513に出力する。
【0029】
また、排除部1512は、簡約部1511から入力された可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部1513に出力する。
また、排除部1512は、簡約部1511から入力された冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部1513に出力する。
【0030】
このように、排除部1512は、SQLにより記述された手続的なトランザクションの一意性制約条件や参照整合性制約条件などの制約条件に基づいて、SQLにより記述された手続的なトランザクション実行する前の条件として当該制約条件が成り立たない可換性に関する部分命題を排除し、SQLにより記述された手続的なトランザクション実行した後の条件が制約条件と矛盾する場合、検証失敗として、可換性に関する命題を排除する。
【0031】
また、排除部1512は、制約条件記憶部144から制約条件を読み出し、当該制約条件に基づいて、簡約部1511から入力された冪等性に関する命題の場合分けを行い、冪等性に関する部分命題を生成する。そして、排除部1512は、生成した冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部1513に出力する。
【0032】
このように、排除部1512は、SQLにより記述された手続的なトランザクションの一意性制約条件や参照整合性制約条件などの制約条件に基づいて、SQLにより記述された手続的なトランザクション実行する前の条件として当該制約条件が成り立たない冪等性に関する部分命題を排除し、SQLにより記述された手続的なトランザクション実行した後の条件が制約条件と矛盾する場合、検証失敗として、冪等性に関する命題を排除する。
【0033】
分岐部1513(分岐ステップ)は、排除部1512から入力された可換性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの可換性に関する部分命題を簡約する。そして、分岐部1513は、簡約した条件分岐ロジックごとの可換性に関する部分命題を解決部152に出力する。
また、分岐部1513は、排除部1512から入力された冪等性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの冪等性に関する部分命題を簡約する。そして、分岐部1513は、簡約した条件分岐ロジックごとの冪等性に関する部分命題を解決部152に出力する。
【0034】
同値判定部1521(第1判定ステップ)は、分岐部1513から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、可換性が検証できたことを表す検証結果を出力部16に出力する。一方、同値判定部1521は、右辺と左辺とが同形でない場合、すなわち、検証できない場合、条件分岐ロジックごとの可換性に関する部分命題を矛盾判定部1522に出力する。
【0035】
また、同値判定部1521は、分岐部1513から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、冪等性が検証できたことを表す検証結果を出力部16に出力する。一方、同値判定部1521は、右辺と左辺とが同形でない場合、すなわち、検証できない場合、条件分岐ロジックごとの冪等性に関する部分命題を矛盾判定部1522に出力する。
【0036】
矛盾判定部1522(第2判定ステップ)は、同値判定部1521から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの可換性に関する部分命題の検証が不要であるため、可換性の検証が不要であることを表す検証結果を出力部16に出力する。一方、矛盾判定部1522は、二つ以上の場合分け条件が矛盾していない場合、すなわち、検証できない場合、当該条件分岐ロジックごとの可換性に関する部分命題を追加手続要求部153に出力する。ここで、矛盾とは、二つ以上の場合分け条件が同時に成立しないことである。
【0037】
また、矛盾判定部1522は、同値判定部1521から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの冪等性に関する部分命題の検証が不要であるため、冪等性の検証が不要であることを表す検証結果を出力部16に出力する。一方、矛盾判定部1522は、二つ以上の場合分け条件が矛盾していない場合、すなわち、検証できない場合、当該条件分岐ロジックごとの冪等性に関する部分命題を追加手続要求部153に出力する。
【0038】
追加手続要求部153(追加手続要求ステップ)は、矛盾判定部1522から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対する追加の検証手続きを要求する検証手続要求を生成し、当該検証手続要求を出力部16に出力する。また、追加手続要求部153は、検証手続要求に対する応答として入力部17がユーザから追加の検証手続きを受け付けると、当該追加の検証手続きと矛盾判定部1522から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とを簡約部1511に出力する。
【0039】
ここで、追加の検証手続きには、検証部151において検証できなかった補題の適用を指示する適用指示と、矛盾する前提の指摘と、可換性に関する命題の簡約および冪等性に関する命題の簡約を手動で実行するための実行指示と、可換性に関する命題から可換性に関する部分命題を生成するときの場合分けおよび冪等性に関する命題から冪等性に関する部分命題を生成するときの場合分けを手動で実行するための実行指示と、自動証明処理の再開を指示する再開指示とのうち、少なくともいずれかが含まれる。
【0040】
出力部16(提示ステップ)は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、プラズマディスプレイなどの表示装置を備え、検証結果、条件分岐ロジックごとの可換性に関する部分命題、条件分岐ロジックごとの冪等性に関する部分命題、検証手続要求をユーザに提示する。また、出力部16は、検証部151から入力された冪等性に関する命題および可換性に関する命題のそれぞれを提示する。
【0041】
入力部17(入力ステップ)は、タッチパネル、入力キー、マウス、音声入力装置など、ユーザによる入力操作を受け付ける入力デバイスである。入力部17は、出力部16に検証手続要求とともに提示された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対するサブゴールに合わせた追加の検証手続きの入力を受け付ける。そして、入力部17は、受け付けた追加の検証手続きを追加手続要求部153に出力する。また、入力部17は、冪等性に関する命題および可換性に関する命題のそれぞれに対する補題を指定する指定情報を受け付ける。そして、入力部17は、受け付けた指定情報を検証部151に出力する。
【0042】
図3は、本発明の一実施形態に係る変換部12の変換処理の一例を示す概略図である。
図示するように、変換部12は、データベース言語、例えばSQL(エスキューエル)により記述された手続的なトランザクション記述SO1を、Coqで記述されるトランザクションを実行する前のデータベース状態からトランザクションを実行した後のデータベース状態に写像する関数である写像関数SO2に変換する。
【0043】
図4は、本発明の一実施形態に係る処理部15の検証処理数の一例を示す概略図である。
図示するように、処理部15により検証処理される手続的な複数のトランザクション記述SO5は、手続的なトランザクション記述の種別数をnとすると、冪等性に関する命題PT1はn個であり、可換性に関する命題PT2はn+
nC
2個であり、例えば手続的なトランザクション記述の種別数n=3とすると冪等性に関する命題PT1は3個であり、可換性に関する命題PT2は3+
3C
2=6個である。
【0044】
図5は、本発明の一実施形態に係る追加手続要求部153が提示する条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題の一例を示す概略図である。
追加手続要求部153は、解決部152から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題を検証エラーSO8としてユーザに提示する。このとき、検証手続要求SO8は、例えば、(**)で記載される3つの検証課題である。入力部17は、当該検証手続要求に含まれる検証課題に対する追加の検証手続の入力を受け付け、解決部152は、当該追加の検証手続と、条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題と、に対して可換性および冪等性の検証を繰り返す。
【0045】
図6は、本発明の一実施形態に係る検証装置1の可換性および冪等性の検証処理の一例を示すフローチャートである。
ステップST101において、取得部11(取得ステップ)は、第1システムS2から第2システムS3への手続的なトランザクション記述を複数、取得する。取得部11は、取得した手続的な複数のトランザクション記述を変換部12に出力する。
ステップST102において、変換部12(変換ステップ)は、取得部11から入力された手続的な複数のトランザクション記述を定理証明支援系言語であるCoqで記述される写像関数に変換し、変換した写像関数を展開および簡約(βι簡約・δ簡約など)をCoqのラムダ計算手段を利用して実施して出力関数を生成する。そして、変換部12は、生成した出力関数を命題生成部13に出力する。
【0046】
ステップST103において、命題生成部13は、変換部12から出力関数が入力されると、検証式記憶部141から冪等性検証式と可換性検証式とを読み出し、当該冪等性検証式に出力関数を当てはめることで冪等性に関する命題を生成し、当該可換性検証式に出力関数を当てはめることで可換性に関する命題を生成する。命題生成部13は、生成した冪等性に関する命題および可換性に関する命題をトランザクション記憶部142に記憶させる。
【0047】
ステップST104において、簡約部1511は、トランザクション記憶部142から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題を簡約する。簡約部1511は、簡約した可換性に関する命題を排除部1512に出力する。また、簡約部1511は、トランザクション記憶部142から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題を簡約する。簡約部1511は、簡約した冪等性に関する命題を排除部1512に出力する。
【0048】
また、ステップST104において、簡約部1511は、追加手続要求部153から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、可換性に関する部分命題を簡約する。簡約部1511は、簡約した可換性に関する部分命題を排除部1512に出力する。
また、簡約部1511は、追加手続要求部153から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、冪等性に関する部分命題を簡約する。簡約部1511は、簡約した可換性に関する部分命題を排除部1512に出力する。
【0049】
ステップST105において、排除部1512は、制約条件記憶部144から制約条件を読み出し、当該制約条件に基づいて、簡約部1511から入力された可換性に関する命題の場合分けを行い、可換性に関する部分命題を生成する。そして、排除部1512は、生成した可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部1513に出力する。また、排除部1512は、制約条件記憶部144から制約条件を読み出し、当該制約条件に基づいて、簡約部1511から入力された冪等性に関する命題の場合分けを行い、冪等性に関する部分命題を生成する。そして、排除部1512は、生成した冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部1513に出力する。
【0050】
また、ステップST105において、排除部1512は、簡約部1511から入力された可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部1513に出力する。
また、排除部1512は、簡約部1511から入力された冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部1512は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部1513に出力する。
【0051】
ステップST106において、分岐部1513は、排除部1512から入力された可換性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの可換性に関する部分命題を簡約する。そして、分岐部1513は、簡約した条件分岐ロジックごとの可換性に関する部分命題を解決部152に出力する。また、分岐部1513は、排除部1512から入力された冪等性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの冪等性に関する部分命題を簡約する。そして、分岐部1513は、簡約した条件分岐ロジックごとの冪等性に関する部分命題を解決部152に出力する。
【0052】
ステップST107において、同値判定部1521は、分岐部1513から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、可換性の検証を終了する。一方、同値判定部1521は、右辺と左辺とが同形でない場合、ステップST108に進む。また、同値判定部1521は、分岐部1513から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、冪等性の検証を終了する。一方、同値判定部1521は、右辺と左辺とが同形でない場合、ステップST108に進む。
【0053】
ステップST108において、矛盾判定部1522は、同値判定部1521から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題ごとに、二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの可換性に関する部分命題および当該条件分岐ロジックごとの冪等性に関する部分命題に対する検証が不要であるため、可換性および冪等性の検証を終了する。一方、矛盾判定部1522は、二つ以上の場合分け条件が矛盾していない場合、ステップST109に進む。
【0054】
ステップST109において、追加手続要求部153(追加手続要求ステップ)は、矛盾判定部1522から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対する追加の検証手続きを要求する検証手続要求を生成し、当該検証手続要求を出力部16に出力する。また、追加手続要求部153は、検証手続要求に対する応答として入力部17がユーザから追加の検証手続きを受け付けると、当該追加の検証手続きと矛盾判定部1522から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とを簡約部1511に出力して、ステップST104に戻る。
【0055】
このように、本実施形態によれば、第1システムS2と第2システムS3とのシステム間連携を検証する検証装置1のコンピュータに実行させるための検証プログラムであって、検証プログラムは、第1システムS2から第2システムS3への手続的な複数のトランザクション記述を取得する取得ステップ(取得部11)と、検証式と取得ステップ(取得部11)が取得した複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップ(命題生成部13)と、命題生成ステップ(命題生成ステップ13)が生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップ(検証部151)と、を実行する。
【0056】
これにより、システム間連携における検証において整合性と可用性のトレードオフのためにオンライン連携が困難であったが、簡単な可換性および冪等性の検証で整合性と可用性とが可能になり、整合性と可用性とを有するオンライン連携をさせることができる。また、これまでオンライン化されていないシステムにおいても、オンライン化を進めることができる。
【0057】
なお、上述した実施形態における検証装置1の一部、または全部をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、検証装置1に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。
【0058】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。
【0059】
また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0060】
また、上述した実施形態における検証装置1の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現しても良い。検証装置1の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
【0061】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。