(57)【要約】【課題】システム間連携における検証において更新トランザクションを確実に検証することができる検証プログラム、検証装置および検証方法を提供すること。【解決手段】第１システムと第２システムとのシステム間連携を検証する検証装置のコンピュータに、前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得ステップと、検証式と前記取得ステップが取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップと、前記命題生成ステップが生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップと、を実行させるための検証プログラム。【選択図】図２
2015014890.tif 000002
【特許請求の範囲】
【請求項１】
第１システムと第２システムとのシステム間連携を検証する検証装置のコンピュータに、
前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得ステップと、
検証式と前記取得ステップが取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップと、
前記命題生成ステップが生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップと、
を実行させるための検証プログラム。
【請求項２】
前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題を検証するときに検証できない前記冪等性に関する命題および前記可換性に関する命題を提示する提示ステップと、
前記提示ステップが提示した前記冪等性に関する命題および前記可換性に関する命題に対する追加の検証手続を受け付ける入力ステップと、
前記入力ステップが受け付けた前記追加の検証手続に関して検証する追加検証ステップと、
を前記コンピュータに実行させるための請求項１に記載の検証プログラム。
【請求項３】
前記取得ステップが取得した前記複数のトランザクション記述をそれぞれ関数に変換する変換ステップを前記コンピュータに実行させ、
前記変換ステップが変換した前記関数を冪等性検証式と可換性検証式とに基づいて前記冪等性に関する命題および前記可換性に関する命題を生成するように前記命題生成ステップを前記コンピュータに実行させるための請求項１または請求項２に記載の検証プログラム。
【請求項４】
前記命題生成ステップが生成した前記冪等性に関する命題および前記可換性に関する命題を簡約する簡約ステップと、
前記簡約ステップが簡約した前記冪等性に関する命題および前記可換性に関する命題のうち、制約条件の場合分けを行い、前記制約条件を満たさない部分命題を排除する排除ステップと、
前記排除ステップが前記部分命題を排除した前記冪等性に関する命題および前記可換性に関する命題に対し条件分岐ロジックごとに場合分けおよび簡約することで冪等性に関する部分命題および可換性に関する部分命題を生成する分岐ステップと、
前記分岐ステップが前記条件分岐ロジックごとに場合分けおよび簡約したそれぞれの前記冪等性に関する部分命題および前記可換性に関する部分命題の右辺と左辺が同形か否かを判定する第１判定ステップと、
前記冪等性に関する部分命題および前記可換性に関する部分命題の場合分け条件が矛盾しているか否かを判定する第２判定ステップと、
を前記コンピュータに実行させ、
前記第１判定ステップが前記右辺と左辺が同形であると判定した場合、および前記第２判定ステップが２つ以上の前記場合分け条件が矛盾していると判定した場合、前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題の検証を終了するように前記検証ステップ
を前記コンピュータに実行させるための請求項１から請求項３のいずれか一項に記載の検証プログラム。
【請求項５】
前記取得ステップがデータベース言語で記述された前記第１システムから前記第２システムへの前記手続的な複数のトランザクション記述を取得するように前記取得ステップを前記コンピュータに実行させ、
前記取得ステップが取得した前記データベース言語で記述された前記手続的な複数のトランザクション記述を定理証明支援系言語で記述される関数に変換するように変換ステップを前記コンピュータに実行させ、
前記命題生成ステップが前記検証式と前記変換ステップが変換した前記定理証明支援系言語で記述される前記関数とに基づいて前記冪等性に関する命題および前記可換性に関する命題を生成するように、前記命題生成ステップ
を前記コンピュータに実行させるための請求項１から請求項４のいずれか一項に記載の検証プログラム。
【請求項６】
第１システムと第２システムとのシステム間連携を検証する検証装置であって、
前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得部と、
検証式と前記取得部が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成部と、
前記命題生成部が生成した冪等性に関する命題および可換性に関する命題を検証する検証部と、
を備えることを特徴とする検証装置。
【請求項７】
第１システムと第２システムとのシステム間連携を検証する検証装置の検証方法であって、
前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得過程と、
検証式と前記取得過程が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成過程と、
前記命題生成過程が生成した冪等性に関する命題および可換性に関する命題を検証する検証過程と、
を有することを特徴とする検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証プログラム、検証装置および検証方法に関する。
【背景技術】
【０００２】
データベース機能を含んだシステム全体の特性には、ＢＡＳＥ（Ｂａｓｉｃａｌ  Ａｖａｉｌａｂｉｌｉｔｙ、Ｓｏｆｔ−Ｓｔａｔｅ、Ｅｖｅｎｔｕａｌ  Ｃｏｎｓｉｓｔｅｎｃｙ；ベース）特性というものがある（例えば、非特許文献１参照）。システム間通信において、ＢＡＳＥ特性を保証するには、各システム内の全ての更新トランザクションがリトライに対する耐性（冪等性）および更新順序の入れ替わりに対する耐性（可換性）を検証する必要がある。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｄａｎ  Ｐｒｉｔｃｈｅｔｔ、“ＢＡＳＥ：Ａｎ  ＡＣＩＤ  Ａｌｔｅｒｎａｔｉｖｅ”、ａｃｍ  ｑｕｅｕｅ  ａｒｃｈｉｔｅｃｈｔｉｎｇ  ｔｏｍｏｒｒｏｗ’ｓ  ｃｏｍｐｕｔｉｎｇ、  Ｖｏｌ．６、Ｎｏ．３、Ｍａｙ／Ｊｕｎｅ  ２００８、［ｏｎｌｉｎｅ］、ＡＣＭ  ＱＵＥＵＥ、［２０１３年５月１６日検索］、インターネット＜ｈｔｔｐ：／／ｑｕｅｕｅ．ａｃｍ．ｏｒｇ／ｄｅｔａｉｌ．ｃｆｍ？ｉｄ＝１３９４１２８＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術でのシステム間連携の検証は、更新トランザクションにおける全てのルートを網羅して検証者が検証する必要があった。特に可換性に関しては、一つのシステム内の全ての更新トランザクションから任意の二つを取り出して検証するため、更新トランザクションの数の二乗に比例してレビューの作業量が増大するという問題があった。また、データセットや更新ロジックが複雑である場合には、レビューの作業量が膨大になり検証することができないという問題があった。
このように、システム間連携における検証において、更新トランザクションを検証できないという課題があった。
【０００５】
本発明は、上記の点に鑑みてなされたものであり、システム間連携における検証において更新トランザクションを確実に検証することができる検証プログラム、検証装置および検証方法を提供することを課題とする。
【課題を解決するための手段】
【０００６】
（１）本発明は、上述した課題を解決するためになされたもので、本発明の第１の態様は、第１システムと第２システムとのシステム間連携を検証する検証装置のコンピュータに、前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得ステップと、検証式と前記取得ステップが取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップと、前記命題生成ステップが生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップと、を実行させるための検証プログラムである。
【０００７】
（２）本発明の第２の態様は、上述の検証プログラムであって、前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題を検証するときに検証できない前記冪等性に関する命題および前記可換性に関する命題を提示する提示ステップと、前記提示ステップが提示した前記冪等性に関する命題および前記可換性に関する命題に対する追加の検証手続を受け付ける入力ステップと、前記入力ステップが受け付けた前記追加の検証手続に関して検証する追加検証ステップと、を前記コンピュータに実行させるための検証プログラムである。
【０００８】
（３）本発明の第３の態様は、上述の検証プログラムであって、前記取得ステップが取得した前記複数のトランザクション記述をそれぞれ関数に変換する変換ステップを前記コンピュータに実行させ、前記変換ステップが変換した前記関数を冪等性検証式と可換性検証式とに基づいて前記冪等性に関する命題および前記可換性に関する命題を生成するように前記命題生成ステップを前記コンピュータに実行させるための検証プログラムである。
【０００９】
（４）本発明の第４の態様は、上述の検証プログラムであって、前記命題生成ステップが生成した前記冪等性に関する命題および前記可換性に関する命題を簡約する簡約ステップと、前記簡約ステップが簡約した前記冪等性に関する命題および前記可換性に関する命題のうち、制約条件の場合分けを行い、前記制約条件を満たさない部分命題を排除する排除ステップと、前記排除ステップが前記部分命題を排除した前記冪等性に関する命題および前記可換性に関する命題に対し条件分岐ロジックごとに場合分けおよび簡約することで冪等性に関する部分命題および可換性に関する部分命題を生成する分岐ステップと、前記分岐ステップが前記条件分岐ロジックごとに場合分けおよび簡約したそれぞれの前記冪等性に関する部分命題および前記可換性に関する部分命題の右辺と左辺が同形か否かを判定する第１判定ステップと、前記冪等性に関する部分命題および前記可換性に関する部分命題の場合分け条件が矛盾しているか否かを判定する第２判定ステップと、を前記コンピュータに実行させ、前記第１判定ステップが前記右辺と左辺が同形であると判定した場合、および前記第２判定ステップが２つ以上の前記場合分け条件が矛盾していると判定した場合、前記検証ステップが前記冪等性に関する命題および前記可換性に関する命題の検証を終了するように前記検証ステップを前記コンピュータに実行させるための検証プログラムである。
【００１０】
（５）本発明の第５の態様は、上述の検証プログラムであって、前記取得ステップがデータベース言語で記述された前記第１システムから前記第２システムへの前記手続的な複数のトランザクション記述を取得するように前記コンピュータに実行させ、前記取得ステップが取得した前記データベース言語で記述された前記手続的な複数のトランザクション記述を定理証明支援系言語で記述された関数に変換する変換ステップを前記コンピュータに実行させ、前記命題生成ステップが前記検証式と前記変換ステップが変換した前記定理証明支援系言語で記述された前記関数とに基づいて前記冪等性に関する命題および可換性に関する命題を生成するように、前記コンピュータに実行させるための検証プログラムである。
【００１１】
（６）本発明の第６の態様は、第１システムと第２システムとのシステム間連携を検証する検証装置であって、前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得部と、検証式と前記取得部が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成部と、前記命題生成部が生成した冪等性に関する命題および可換性に関する命題を検証する検証部と、を備えることを特徴とする検証装置である。
【００１２】
（７）本発明の第７の態様は、第１システムと第２システムとのシステム間連携を検証する検証装置の検証方法であって、前記第１システムから前記第２システムへの手続的な複数のトランザクション記述を取得する取得過程と、検証式と前記取得過程が取得した前記複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成過程と、前記命題生成過程が生成した冪等性に関する命題および可換性に関する命題を検証する検証過程と、を有することを特徴とする検証方法である。
【発明の効果】
【００１３】
本発明の検証プログラム、検証装置および検証方法によれば、システム間連携における検証において更新トランザクションを確実に検証することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係る検証装置を用いて検証可能な検証システムの構成の一例を示す概略図である。
【図２】本発明の一実施形態に係る検証装置の構成の一例を示す概略ブロック図である。
【図３】本発明の一実施形態に係る変換部の変換処理の一例を示す概略図である。
【図４】本発明の一実施形態に係る処理部の検証処理数の一例を示す概略図である。
【図５】本発明の一実施形態に係る追加手続要求部が提示する条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題の一例を示す概略図である。
【図６】本発明の一実施形態に係る検証装置の可換性および冪等性の検証処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
（一実施形態）
以下、図面を参照しながら本発明の一実施形態について詳しく説明する。
図１は、本発明の一実施形態に係る検証装置１を用いて検証可能な検証システムＳ１の構成の一例を示す概略図である。
システム間連携を検証する検証装置１を用いて検証可能な検証システムＳ１は、第１システムＳ２と、第２システムＳ３と、第３システムＳ４を含んで構成される。第１システムＳ２と第２システムＳ３と第３システムＳ４とは、互いにネットワークＮ１を介して無線通信または有線通信を行う。第１システムＳ２は、データベースＡＤＢ２を有し、第２システムＳ３は、データベースＢＤＢ３を有し、第３システムＳ４は、データベースＣＤＢ４を有する。
【００１６】
第１システムＳ２と第２システムＳ３と第３システムＳ４とは、データベース言語で記述された複数のトランザクション記述をそれぞれやり取りし、第１システムＳ２と第２システムＳ３と第３システムＳ４との間のシステム間通信を行うことでシステム間連携を行い、それぞれのデータベースＡＤＢ２、データベースＢＤＢ３、データベースＣＤＢ４の更新を行う。ここで、第１システムＳ２と第２システムＳ３と第３システムＳ４とは、システム間連携しているが各システムが可用性を有するため、例えば、第１システムＳ２が何らかの要因でシステムダウンしても第２システムＳ３と第３システムＳ４とは、継続して稼働することができる。このとき、システムダウンしていた第１システムＳ２が復帰したとき、第１システムＳ２内に蓄えられた複数のトランザクション記述を再送信（リトライ）する。
検証装置１は、検証システムＳ１のような複数のシステム間連携において、各システム内の全ての更新トランザクション（手続的なトランザクション）がリトライに対する耐性（冪等性）および更新順序の入れ替わりに対する耐性（可換性）を検証することで、システム間連携における検証を行う。
【００１７】
図２は、本発明の一実施形態に係る検証装置１の構成の一例を示す概略ブロック図である。
検証装置１は、取得部１１と、変換部１２と、命題生成部１３と、記憶部１４と、処理部１５と、出力部１６と、入力部１７と、を含んで構成される。記憶部１４は、検証式記憶部１４１と、トランザクション記憶部１４２と、補題記憶部１４３と、制約条件記憶部１４４と、を含んで構成される。処理部１５は、検証部１５１と、解決部１５２と、追加手続要求部１５３と、を含んで構成される。検証部１５１は、簡約部１５１１と、排除部１５１２と、分岐部１５１３と、を含んで構成される。解決部１５２は、同値判定部１５２１（第１判定部）と、矛盾判定部１５２２（第２判定部）と、を含んで構成される。
【００１８】
取得部１１（取得ステップ）は、第１システムＳ２から第２システムＳ３へのデータベース言語、例えばＳＱＬ（エスキューエル）により記述された手続的なトランザクションを複数、取得する。なお、以下の説明において、データベース言語により記述された手続的なトランザクションを手続的なトランザクション記述と称する。取得部１１は、取得した手続的な複数のトランザクション記述を変換部１２に出力する。
【００１９】
変換部１２（変換ステップ）は、取得部１１から入力された手続的な複数のトランザクション記述を定理証明支援系言語で記述される写像関数に変換する。定理証明支援系言語とは、Ｃｏｑ、Ａｇｄａ、Ｉｓａｂｅｌｌｅ／ＨＯＬ、ＰＶＳ、ＡＣＬ２、ＮｕＰＲＬなどである。また、写像関数とは、トランザクションを実行する前のデータベース状態からトランザクションを実行した後のデータベース状態に写像する関数である。
変換部１２は、手続的な複数のトランザクション記述を例えば、定理証明支援系言語であるＣｏｑで記述される写像関数に変換し、変換した写像関数を展開および簡約（βι簡約・δ簡約など）をＣｏｑのラムダ計算手段を利用して実施して出力関数を生成する。そして、変換部１２は、生成した出力関数を命題生成部１３に出力する。
【００２０】
命題生成部１３（命題生成ステップ）は、変換部１２から出力関数が入力されると、検証式記憶部１４１に予め記憶された検証式を読み出し、当該検証式と出力関数とに基づいて、冪等性に関する命題および可換性に関する命題を生成する。具体的には、命題生成部１３は、検証式記憶部１４１から冪等性検証式と可換性検証式とを読み出し、当該冪等性検証式に出力関数を当てはめることで冪等性に関する命題を生成し、当該可換性検証式に出力関数を当てはめることで可換性に関する命題を生成する。命題生成部１３は、生成した冪等性に関する命題および可換性に関する命題をトランザクション記憶部１４２に記憶させる。なお、命題生成部１３が利用する冪等性検証式および可換性検証式は、次式のように表される。
【００２１】
冪等性検証式：ｆ（ｆ（ｘ））＝ｆ（ｘ）
可換性検証式：ｆ（ｇ（ｘ））＝ｇ（ｆ（ｘ））
ここで、ｆ、ｇは、手続的なトランザクションを表し、ｘは、更新前のデータベース状態を表す。
【００２２】
記憶部１４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ；ランダムアクセスメモリ）、マスクＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：ロム）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：強誘電体メモリ）、フラッシュメモリ、メモリカード、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ；ソリッドステートドライブ）などのメモリであり、処理部１５が実行するプログラムおよび処理部１５が当該プログラムを実行する際に必要となるデータを記憶する。当該プログラムには、アプリケーションなども含まれる。
【００２３】
検証式記憶部１４１は、検証式を記憶する。具体的には、検証式記憶部１４１は、冪等性検証式と可換性検証式とを記憶する。
トランザクション記憶部１４２は、命題生成部１３により生成された命題を記憶する。具体的には、トランザクション記憶部１４２は、命題生成部１３により生成された可換性に関する命題と冪等性に関する命題とを記憶する。
補題記憶部１４３は、補題を記憶する。ここで、補題とは、補助定理のことであり、一つの定理を検証するために補助として使う定理である。
制約条件記憶部１４４は、制約条件を記憶する。ここで、制約条件とは、データベース構成の定義とは別に定義され、データベース内のテーブルに対する定義と、一意キー制約と、外部キー制約と、が含まれる。
【００２４】
処理部１５（処理ステップ）は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算処理装置）を備え、記憶部１４が記憶するプログラムを実行することで、処理部１５内の各部を制御する。
処理部１５は、トランザクション記憶部１４２から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題に対し、演算や操作の順序を入れ替えても同じ結果になるか否かを検証する。また、処理部１５は、トランザクション記憶部１４２から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題に対し、一回適用したときと二回適用したときとで同じになるか否かを検証する。
処理部１５は、全ての冪等性に関する命題および全ての可換性に関する命題に対して同様に検証する。以下、より詳細に処理部１５の処理内容を説明する。
【００２５】
検証部１５１（検証ステップ）は、冪等性に関する命題および可換性に関する命題のそれぞれを出力部１６に表示させ、入力部１７がユーザから補題を指定する指定情報を受け付ける。そして、検証部１５１は、入力部１７が受け付けた指定情報に該当する補題を補題記憶部１４３から読み出し、簡約部１５１１、排除部１５１２、分岐部１５１３において前述の冪等性に関する命題および可換性に関する命題に対して検証する。
また、検証部１５１（追加検証ステップ）は、追加手続要求部１５３から入力された追加の検証手続きと条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とに対して可換性および冪等性の検証を繰り返す。
以下、より詳細に、検証部１５１の処理内容を説明する。
【００２６】
簡約部１５１１（簡約ステップ）は、トランザクション記憶部１４２から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題を簡約する。簡約部１５１１は、簡約した可換性に関する命題を排除部１５１２に出力する。
また、簡約部１５１１は、トランザクション記憶部１４２から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題を簡約する。簡約部１５１１は、簡約した冪等性に関する命題を排除部１５１２に出力する。
【００２７】
また、簡約部１５１１は、追加手続要求部１５３から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、可換性に関する部分命題を簡約する。簡約部１５１１は、簡約した可換性に関する部分命題を排除部１５１２に出力する。
また、簡約部１５１１は、追加手続要求部１５３から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、冪等性に関する部分命題を簡約する。簡約部１５１１は、簡約した可換性に関する部分命題を排除部１５１２に出力する。
【００２８】
排除部１５１２（排除ステップ）は、制約条件記憶部１４４から制約条件を読み出し、当該制約条件に基づいて、簡約部１５１１から入力された可換性に関する命題の場合分けを行い、可換性に関する部分命題を生成する。そして、排除部１５１２は、生成した可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部１５１３に出力する。
【００２９】
また、排除部１５１２は、簡約部１５１１から入力された可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部１５１３に出力する。
また、排除部１５１２は、簡約部１５１１から入力された冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部１５１３に出力する。
【００３０】
このように、排除部１５１２は、ＳＱＬにより記述された手続的なトランザクションの一意性制約条件や参照整合性制約条件などの制約条件に基づいて、ＳＱＬにより記述された手続的なトランザクション実行する前の条件として当該制約条件が成り立たない可換性に関する部分命題を排除し、ＳＱＬにより記述された手続的なトランザクション実行した後の条件が制約条件と矛盾する場合、検証失敗として、可換性に関する命題を排除する。
【００３１】
また、排除部１５１２は、制約条件記憶部１４４から制約条件を読み出し、当該制約条件に基づいて、簡約部１５１１から入力された冪等性に関する命題の場合分けを行い、冪等性に関する部分命題を生成する。そして、排除部１５１２は、生成した冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部１５１３に出力する。
【００３２】
このように、排除部１５１２は、ＳＱＬにより記述された手続的なトランザクションの一意性制約条件や参照整合性制約条件などの制約条件に基づいて、ＳＱＬにより記述された手続的なトランザクション実行する前の条件として当該制約条件が成り立たない冪等性に関する部分命題を排除し、ＳＱＬにより記述された手続的なトランザクション実行した後の条件が制約条件と矛盾する場合、検証失敗として、冪等性に関する命題を排除する。
【００３３】
分岐部１５１３（分岐ステップ）は、排除部１５１２から入力された可換性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの可換性に関する部分命題を簡約する。そして、分岐部１５１３は、簡約した条件分岐ロジックごとの可換性に関する部分命題を解決部１５２に出力する。
また、分岐部１５１３は、排除部１５１２から入力された冪等性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの冪等性に関する部分命題を簡約する。そして、分岐部１５１３は、簡約した条件分岐ロジックごとの冪等性に関する部分命題を解決部１５２に出力する。
【００３４】
同値判定部１５２１（第１判定ステップ）は、分岐部１５１３から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、可換性が検証できたことを表す検証結果を出力部１６に出力する。一方、同値判定部１５２１は、右辺と左辺とが同形でない場合、すなわち、検証できない場合、条件分岐ロジックごとの可換性に関する部分命題を矛盾判定部１５２２に出力する。
【００３５】
また、同値判定部１５２１は、分岐部１５１３から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、冪等性が検証できたことを表す検証結果を出力部１６に出力する。一方、同値判定部１５２１は、右辺と左辺とが同形でない場合、すなわち、検証できない場合、条件分岐ロジックごとの冪等性に関する部分命題を矛盾判定部１５２２に出力する。
【００３６】
矛盾判定部１５２２（第２判定ステップ）は、同値判定部１５２１から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの可換性に関する部分命題の検証が不要であるため、可換性の検証が不要であることを表す検証結果を出力部１６に出力する。一方、矛盾判定部１５２２は、二つ以上の場合分け条件が矛盾していない場合、すなわち、検証できない場合、当該条件分岐ロジックごとの可換性に関する部分命題を追加手続要求部１５３に出力する。ここで、矛盾とは、二つ以上の場合分け条件が同時に成立しないことである。
【００３７】
また、矛盾判定部１５２２は、同値判定部１５２１から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの冪等性に関する部分命題の検証が不要であるため、冪等性の検証が不要であることを表す検証結果を出力部１６に出力する。一方、矛盾判定部１５２２は、二つ以上の場合分け条件が矛盾していない場合、すなわち、検証できない場合、当該条件分岐ロジックごとの冪等性に関する部分命題を追加手続要求部１５３に出力する。
【００３８】
追加手続要求部１５３（追加手続要求ステップ）は、矛盾判定部１５２２から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対する追加の検証手続きを要求する検証手続要求を生成し、当該検証手続要求を出力部１６に出力する。また、追加手続要求部１５３は、検証手続要求に対する応答として入力部１７がユーザから追加の検証手続きを受け付けると、当該追加の検証手続きと矛盾判定部１５２２から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とを簡約部１５１１に出力する。
【００３９】
ここで、追加の検証手続きには、検証部１５１において検証できなかった補題の適用を指示する適用指示と、矛盾する前提の指摘と、可換性に関する命題の簡約および冪等性に関する命題の簡約を手動で実行するための実行指示と、可換性に関する命題から可換性に関する部分命題を生成するときの場合分けおよび冪等性に関する命題から冪等性に関する部分命題を生成するときの場合分けを手動で実行するための実行指示と、自動証明処理の再開を指示する再開指示とのうち、少なくともいずれかが含まれる。
【００４０】
出力部１６（提示ステップ）は、液晶ディスプレイ、有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ、プラズマディスプレイなどの表示装置を備え、検証結果、条件分岐ロジックごとの可換性に関する部分命題、条件分岐ロジックごとの冪等性に関する部分命題、検証手続要求をユーザに提示する。また、出力部１６は、検証部１５１から入力された冪等性に関する命題および可換性に関する命題のそれぞれを提示する。
【００４１】
入力部１７（入力ステップ）は、タッチパネル、入力キー、マウス、音声入力装置など、ユーザによる入力操作を受け付ける入力デバイスである。入力部１７は、出力部１６に検証手続要求とともに提示された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対するサブゴールに合わせた追加の検証手続きの入力を受け付ける。そして、入力部１７は、受け付けた追加の検証手続きを追加手続要求部１５３に出力する。また、入力部１７は、冪等性に関する命題および可換性に関する命題のそれぞれに対する補題を指定する指定情報を受け付ける。そして、入力部１７は、受け付けた指定情報を検証部１５１に出力する。
【００４２】
図３は、本発明の一実施形態に係る変換部１２の変換処理の一例を示す概略図である。
図示するように、変換部１２は、データベース言語、例えばＳＱＬ（エスキューエル）により記述された手続的なトランザクション記述ＳＯ１を、Ｃｏｑで記述されるトランザクションを実行する前のデータベース状態からトランザクションを実行した後のデータベース状態に写像する関数である写像関数ＳＯ２に変換する。
【００４３】
図４は、本発明の一実施形態に係る処理部１５の検証処理数の一例を示す概略図である。
図示するように、処理部１５により検証処理される手続的な複数のトランザクション記述ＳＯ５は、手続的なトランザクション記述の種別数をｎとすると、冪等性に関する命題ＰＴ１はｎ個であり、可換性に関する命題ＰＴ２はｎ＋ｎＣ２個であり、例えば手続的なトランザクション記述の種別数ｎ＝３とすると冪等性に関する命題ＰＴ１は３個であり、可換性に関する命題ＰＴ２は３＋３Ｃ２＝６個である。
【００４４】
図５は、本発明の一実施形態に係る追加手続要求部１５３が提示する条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題の一例を示す概略図である。
追加手続要求部１５３は、解決部１５２から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題を検証エラーＳＯ８としてユーザに提示する。このとき、検証手続要求ＳＯ８は、例えば、（＊＊）で記載される３つの検証課題である。入力部１７は、当該検証手続要求に含まれる検証課題に対する追加の検証手続の入力を受け付け、解決部１５２は、当該追加の検証手続と、条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題と、に対して可換性および冪等性の検証を繰り返す。
【００４５】
図６は、本発明の一実施形態に係る検証装置１の可換性および冪等性の検証処理の一例を示すフローチャートである。
ステップＳＴ１０１において、取得部１１（取得ステップ）は、第１システムＳ２から第２システムＳ３への手続的なトランザクション記述を複数、取得する。取得部１１は、取得した手続的な複数のトランザクション記述を変換部１２に出力する。
ステップＳＴ１０２において、変換部１２（変換ステップ）は、取得部１１から入力された手続的な複数のトランザクション記述を定理証明支援系言語であるＣｏｑで記述される写像関数に変換し、変換した写像関数を展開および簡約（βι簡約・δ簡約など）をＣｏｑのラムダ計算手段を利用して実施して出力関数を生成する。そして、変換部１２は、生成した出力関数を命題生成部１３に出力する。
【００４６】
ステップＳＴ１０３において、命題生成部１３は、変換部１２から出力関数が入力されると、検証式記憶部１４１から冪等性検証式と可換性検証式とを読み出し、当該冪等性検証式に出力関数を当てはめることで冪等性に関する命題を生成し、当該可換性検証式に出力関数を当てはめることで可換性に関する命題を生成する。命題生成部１３は、生成した冪等性に関する命題および可換性に関する命題をトランザクション記憶部１４２に記憶させる。
【００４７】
ステップＳＴ１０４において、簡約部１５１１は、トランザクション記憶部１４２から任意の二つの可換性に関する命題を読み出し、当該可換性に関する命題を簡約する。簡約部１５１１は、簡約した可換性に関する命題を排除部１５１２に出力する。また、簡約部１５１１は、トランザクション記憶部１４２から任意の一つの冪等性に関する命題を読み出し、当該冪等性に関する命題を簡約する。簡約部１５１１は、簡約した冪等性に関する命題を排除部１５１２に出力する。
【００４８】
また、ステップＳＴ１０４において、簡約部１５１１は、追加手続要求部１５３から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、可換性に関する部分命題を簡約する。簡約部１５１１は、簡約した可換性に関する部分命題を排除部１５１２に出力する。
また、簡約部１５１１は、追加手続要求部１５３から追加の検証手続きと可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とが入力されると、冪等性に関する部分命題を簡約する。簡約部１５１１は、簡約した可換性に関する部分命題を排除部１５１２に出力する。
【００４９】
ステップＳＴ１０５において、排除部１５１２は、制約条件記憶部１４４から制約条件を読み出し、当該制約条件に基づいて、簡約部１５１１から入力された可換性に関する命題の場合分けを行い、可換性に関する部分命題を生成する。そして、排除部１５１２は、生成した可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部１５１３に出力する。また、排除部１５１２は、制約条件記憶部１４４から制約条件を読み出し、当該制約条件に基づいて、簡約部１５１１から入力された冪等性に関する命題の場合分けを行い、冪等性に関する部分命題を生成する。そして、排除部１５１２は、生成した冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部１５１３に出力する。
【００５０】
また、ステップＳＴ１０５において、排除部１５１２は、簡約部１５１１から入力された可換性に関する部分命題のうち、制約条件を満たさない部分命題を当該可換性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された可換性に関する部分命題を分岐部１５１３に出力する。
また、排除部１５１２は、簡約部１５１１から入力された冪等性に関する部分命題のうち、制約条件を満たさない部分命題を当該冪等性に関する部分命題から排除する。排除部１５１２は、制約条件を満たさない部分命題が排除された冪等性に関する部分命題を分岐部１５１３に出力する。
【００５１】
ステップＳＴ１０６において、分岐部１５１３は、排除部１５１２から入力された可換性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの可換性に関する部分命題を簡約する。そして、分岐部１５１３は、簡約した条件分岐ロジックごとの可換性に関する部分命題を解決部１５２に出力する。また、分岐部１５１３は、排除部１５１２から入力された冪等性に関する部分命題に対し、条件分岐ロジックごとに場合分けし、当該場合分けした条件分岐ロジックごとの冪等性に関する部分命題を簡約する。そして、分岐部１５１３は、簡約した条件分岐ロジックごとの冪等性に関する部分命題を解決部１５２に出力する。
【００５２】
ステップＳＴ１０７において、同値判定部１５２１は、分岐部１５１３から入力された条件分岐ロジックごとの可換性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、可換性の検証を終了する。一方、同値判定部１５２１は、右辺と左辺とが同形でない場合、ステップＳＴ１０８に進む。また、同値判定部１５２１は、分岐部１５１３から入力された条件分岐ロジックごとの冪等性に関する部分命題ごとに右辺と左辺とが同形であるか否かの同値判定を行い、同形である場合、冪等性の検証を終了する。一方、同値判定部１５２１は、右辺と左辺とが同形でない場合、ステップＳＴ１０８に進む。
【００５３】
ステップＳＴ１０８において、矛盾判定部１５２２は、同値判定部１５２１から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題ごとに、二つ以上の場合分け条件が矛盾しているか否かの矛盾判定を行い、矛盾している場合、当該条件分岐ロジックごとの可換性に関する部分命題および当該条件分岐ロジックごとの冪等性に関する部分命題に対する検証が不要であるため、可換性および冪等性の検証を終了する。一方、矛盾判定部１５２２は、二つ以上の場合分け条件が矛盾していない場合、ステップＳＴ１０９に進む。
【００５４】
ステップＳＴ１０９において、追加手続要求部１５３（追加手続要求ステップ）は、矛盾判定部１５２２から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題に対する追加の検証手続きを要求する検証手続要求を生成し、当該検証手続要求を出力部１６に出力する。また、追加手続要求部１５３は、検証手続要求に対する応答として入力部１７がユーザから追加の検証手続きを受け付けると、当該追加の検証手続きと矛盾判定部１５２２から入力された条件分岐ロジックごとの可換性に関する部分命題および条件分岐ロジックごとの冪等性に関する部分命題とを簡約部１５１１に出力して、ステップＳＴ１０４に戻る。
【００５５】
このように、本実施形態によれば、第１システムＳ２と第２システムＳ３とのシステム間連携を検証する検証装置１のコンピュータに実行させるための検証プログラムであって、検証プログラムは、第１システムＳ２から第２システムＳ３への手続的な複数のトランザクション記述を取得する取得ステップ（取得部１１）と、検証式と取得ステップ（取得部１１）が取得した複数のトランザクション記述とに基づいて冪等性に関する命題および可換性に関する命題を生成する命題生成ステップ（命題生成部１３）と、命題生成ステップ（命題生成ステップ１３）が生成した冪等性に関する命題および可換性に関する命題を検証する検証ステップ（検証部１５１）と、を実行する。
【００５６】
これにより、システム間連携における検証において整合性と可用性のトレードオフのためにオンライン連携が困難であったが、簡単な可換性および冪等性の検証で整合性と可用性とが可能になり、整合性と可用性とを有するオンライン連携をさせることができる。また、これまでオンライン化されていないシステムにおいても、オンライン化を進めることができる。
【００５７】
なお、上述した実施形態における検証装置１の一部、または全部をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、検証装置１に内蔵されたコンピュータシステムであって、ＯＳや周辺機器等のハードウェアを含むものとする。
【００５８】
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。
【００５９】
また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００６０】
また、上述した実施形態における検証装置１の一部、または全部を、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の集積回路として実現しても良い。検証装置１の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化しても良い。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現しても良い。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いても良い。
【００６１】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【符号の説明】
【００６２】
Ｓ１・・・検証システム、Ｓ２・・・第１システム、Ｓ３・・・第２システム、Ｓ４・・・第３システム、ＤＢ２・・・データベースＡ、ＤＢ３・・・データベースＢ、ＤＢ４・・・データベースＣ、１・・・検証装置、１１・・・取得部（取得ステップ）、１２・・・変換部（変換ステップ）、１３・・・命題生成部（命題生成ステップ）、１４・・・記憶部（記憶ステップ）、１４１・・・検証式記憶部（検証式記憶ステップ）、１４２・・・トランザクション記憶部（トランザクション記憶ステップ）、１４３・・・補題記憶部、１４４・・・制約条件記憶部、１５・・・処理部（処理ステップ）、１５１・・・検証部（検証ステップ、追加検証ステップ）、１５１１・・・簡約部（簡約ステップ）、１５１２・・・排除部（排除ステップ）、１５１３・・・分岐部（分岐ステップ）、１５２・・・解決部（解決ステップ）、１５２１・・・同値判定部（第１判定ステップ）、１５２２・・・矛盾判定部（第２判定ステップ）、１５３・・・追加手続要求部（追加手続要求ステップ）、１６・・・出力部（提示ステップ）、１７・・・入力部（入力ステップ）
【図１】
2015014890.tif 000003
【図２】
2015014890.tif 000004
【図３】
2015014890.tif 000005
【図４】
2015014890.tif 000006
【図５】
2015014890.tif 000007
【図６】
2015014890.tif 000008