(57)【要約】【課題】複数階層の情報処理システムに対して、複数階層での順序を考慮した要求送信を可能にする技術に関する。【解決手段】受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得し、取得した通信情報から階層毎の要求情報とその応答情報との組を識別して、階層毎に、組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出し、第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された順序関係に基づいて、情報処理システムに対する要求情報の送信順序を決定することにより、上記課題の解決を図る。【選択図】図５
2015215827.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得し、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出し、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する、
処理を実行させることを特徴とする送信順序決定プログラム。
【請求項２】
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域の更新を要求する要求情報同士から、前記順序関係を抽出する
ことを特徴とする請求項１に記載の送信順序決定プログラム。
【請求項３】
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域からの読み出しを要求する読み出し要求情報のうち、連続する読み出し要求情報の間では順序を設定しない
ことを特徴とする請求項１または２に記載の送信順序決定プログラム。
【請求項４】
前記送信順序の決定において、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有する場合、各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組が前記順序関係を有する場合、第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組同士を比較し、比較した第（ｎ−ｉ＋１）階層の組のうち、第３の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれか以前に送信または受信されており、第５の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれか以降に送信または受信されている場合、第（ｎ−ｉ）階層の比較する組の順序関係を維持する
ことを特徴とする請求項１〜３のうちいずれか１項に記載の送信順序決定プログラム。
【請求項５】
前記コンピュータに、さらに、
決定した前記送信順序に基づいて、前記情報処理システムに対する前記要求情報を送信するタイミングを出力する
処理を実行させることを特徴とする請求項１〜４のうちいずれか１項に記載の送信順序決定プログラム。
【請求項６】
受信した要求情報に応じて第ｎ（ｎ≧２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得する取得部と、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出する抽出部と、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する決定部と、
を備えることを特徴とする送信順序決定装置。
【請求項７】
コンピュータが、
受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得し、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出し、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する、
ことを特徴とする送信順序決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信順序を決定する技術に関する。
【背景技術】
【０００２】
最近のＩＴ（情報通信技術）を利用したコンピュータシステムは大規模かつ複雑な構成であることが多い。例えば、オンラインバンキングの入金や振込み処理など、各種業務サービスがＷｅｂサーバ／アプリケーションサーバ／データベース（ＤＢ）サーバからなるＷｅｂ３階層システムにて提供される例が増えている。こういったシステムは、業務の効率化やセキュリティ対策などの理由から大規模で複雑な構成である。また、即時性を要求される業務サービスが多く、サービス停止やレスポンス悪化は問題である。そのため、大規模システムに対する運用状況の詳細な把握や性能問題の迅速な解決が求められる。
【０００３】
しかも、複数のアプリケーションが連携して動作する複雑なシステム（Ｗｅｂ３階層システムなど）で、性能劣化や障害の原因を突き止めるためには、サーバそれぞれの挙動だけでなくシステム全体としての性能を観測・分析することが必要である。例えば、Ｗｅｂ３階層システムにおいては、Ｗｅｂサーバへの処理要求に伴ってアプリケーションサーバへの処理要求が発生する場合がある。アプリケーションサーバ・ＤＢサーバ間についても同様である。こういったアプリケーション間における処理の呼出関係は、性能問題のシステム内への波及を調べる上で必要である。
【０００４】
そこで、複数のサーバが接続されたネットワークの運用形態をコンピュータで分析するためのシステム分析方法として次の技術がある。
【０００５】
第１の技術として、クライアント・サーバシステムにおけるマンマシン機能の試験を実行する技術がある（例えば、特許文献１）。第１の技術では、テストパターン作成手段は、複数のクライアントのうちの少なくとも一つのクライアントに組込まれ、クライアントのマンマシン機能を用いて操作入力された応答試験のための操作手順及び表示情報を含むテストパターンを作成する。この作成されたテストパターンは、テストパターンファイルに記憶される。試験実行手段は、テストパターンファイルと、各クライアントに組込まれ、テストパターンファイルに記憶されたテストパターンの示す操作手順及び表示情報を用いてクライアント及びサーバに対する応答シミュレーション試験を実行する。試験結果収集手段は、各クライアントで実行された応答シミュレーション試験の試験結果を収集する。
【０００６】
第２の技術として、性能評価試験を行う技術がある（例えば、特許文献２）。第２の技術では、コンピュータは、第１の装置に対して送信された第１のパケット、第２のパケットを取得する。コンピュータは、取得した第１のパケットに基づいて、第１のパケットの宛先を第２の装置に設定した第３のパケットを送信する。コンピュータは、第３のパケットの送信から、第１のパケットの取得と第２のパケットの取得の間の時間間隔分の時間経過すると、取得した第２のパケットに基づいて、第２のパケットの宛先を第２の装置に設定した第４のパケットを送信する。
【０００７】
第３の技術として、例えば、電文収録装置がある（例えば、特許文献３）。電文収録装置は、実際の配信間隔と同じタイミングで再送を行って、障害発生の再現テストを実施できると共に、忠実に再現する必要がない部分については短い電文間隔で高速再送して、効率的にシミュレーションを行う。
【０００８】
第４の技術として、トランザクションの紐付けに関して、高効率な紐付け処理を実行可能な紐付けシステムの自動設計を支援することのできる技術がある（例えば、特許文献４）。例えば、電子商取引など複数レイヤのサーバ間に亘ってメッセージが交換され処理が進行するシステムでは、要求ＩＤのようなメッセージを関連付ける文字列を鍵にしてメッセージ交換されるケースが多い。さらにＷｅｂサーバ、アプリケーションサーバなど各レイヤ間で異なるＩＤ文字列が使われることがある。システムの挙動監視やリクエスト遅延問題を解析する場合、これらの複数ＩＤ文字列を手がかりに、関連した要求を纏め上げる処理（紐付け処理）を高速に行い、特定の要求が流れた経路・タイミングを解析する。第４の技術では、複数の通信端末間で送受信される複数のメッセージの内の互いに関連するメッセージ間を紐付ける紐付け処理を支援する紐付け支援装置は、情報取得部、不要文字列除外部、処理順序決定部を含む。情報取得部は、複数のメッセージそれぞれのメッセージタイプ、該複数のメッセージそれぞれに含まれる文字列および該文字列を転送する際のデータ流量を取得する。不要文字列除外部は、情報取得部にて取得される情報に基づいて、情報取得部にて取得される複数の文字列の内から、紐付け処理におけるキーワードとして不要な文字列を除外する。処理順序決定部は、情報取得部にて取得される情報に基づいて、不要文字列除外部にて文字列が除外された複数の文字列それぞれを紐付け処理に用いる順序を決定する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平９−２４４９１３号公報
【特許文献２】特開２０１１−１９９６８０号公報
【特許文献３】特開２０１０−８１１９４号公報
【特許文献４】特開２００９−２３８０６９号公報
【特許文献５】特開２００６−０１１６８３号公報
【特許文献６】特開平３−２４０１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
アクセス再現装置を用いた検証方法の一例として、次の方法がある。この検証方法では、アクセス再現装置は、正常稼働しているシステムに含まれる機器間で送受信されるリクエストメッセージ、レスポンスメッセージ等の通信メッセージを取得する。アクセス再現装置は、その正常稼働しているシステムの動作環境とは異なる環境で稼動しているシステムにおいて、その取得した通信メッセージに基づいて送信されたリクエストメッセージに対するレスポンスメッセージを取得する。アクセス再現装置は、その取得したメッセージと応答メッセージとを比較し、その比較結果を用いて、その異なる環境で稼動しているシステムにおいて、正常稼働しているシステムと同じ動作がされるかを検証する。
【００１１】
送信メッセージには、他のメッセージに基づいて送信順序を考慮しなければならないメッセージと、送信順序を問わないメッセージとがある。取得したパケットから構築されるメッセージには送信順序についての情報がないため、メッセージは、メッセージの取得順で送信される。
【００１２】
しかしながら、その検証方法では、正常稼働しているシステム環境下での処理と同等の処理時間がかかることになる。例えば、異なる環境で稼動しているシステムでの処理が並列分散可能な場合、送信順序についての情報がないため、送信順序を考慮しなければならないメッセージを同じ機器へ、考慮する必要のないメッセージを異なる機器へ送信することができない。
【００１３】
また、送信順序を考慮しなければならない送信メッセージと送信順序の考慮が不要な送信メッセージとを推定する方法としてアクセス順序の制約を利用する方法が考えられる。例えばＷｅｂサーバ−ＤＢサーバ間のように１階層のみの検証であれば、このアクセス順序の制約により順序性を考慮しなければならない送信メッセージを推定できる。
【００１４】
しかしながら、クライアント−Ｗｅｂサーバ−ＤＢサーバ等の多階層システムの場合、各階層だけのアクセス順序の考慮では不十分であり、他の階層の送受信が影響を及ぼす可能性がある。
【００１５】
本発明は、一側面として、複数階層の情報処理システムに対して、複数階層での順序を考慮した要求情報の送信を可能にする技術に関する。
【課題を解決するための手段】
【００１６】
本発明の一側面にかかる送信順序決定プログラムは、コンピュータに、次の処理を実行させる。コンピュータは、受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得する。コンピュータは、取得した通信情報から階層毎の要求情報と要求情報に対応する応答情報との組を識別して、階層毎に、組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出する。コンピュータは、第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出する。コンピュータは、抽出された順序関係に基づいて、前記情報処理システムに対する要求情報の送信順序を決定する。
【発明の効果】
【００１７】
本発明によれば、一側面として、複数階層の情報処理システムに対して、複数階層での順序を考慮した要求情報の送信ができる。
【図面の簡単な説明】
【００１８】
【図１】クライアント−サーバ間のアクセス再現技術を説明するための図である。
【図２】アクセス再現のタイミングの調整について説明するための図である。
【図３】リクエストの内容の比較検証が可能なアクセス発信順序の確定について説明するための図である。
【図４】本実施形態におけるアクセス再現タイミング決定について説明するための図である。
【図５】本実施形態における送信順序決定装置の一例を示す。
【図６】本実施形態におけるタイミング決定装置の一例を示す。
【図７】本実施形態においてアクセス再現の対象となる多階層システムの一例を示す。
【図８】本実施形態における階層間でのメッセージの送信タイミングの制約の一例について説明するための図である。
【図９】本実施形態における、同一階層に複数サーバがある場合の階層間でのメッセージの送信タイミングの制約の一例について説明するための図である。
【図１０】本実施形態における全体の処理フローを示す。
【図１１】本実施形態における階層間のリクエストとレスポンスの組の半順序関係の抽出フロー（Ｓ２）の詳細を示す。
【図１２】本実施形態で用いるキャプチャデータの内容を示す。
【図１３】本実施形態における、第（ｎ−ｉ）階層において、第（ｎ−ｉ＋１）階層へ送信したリクエストと、第（ｎ−ｉ＋１）階層から受信したレスポンスとの組の間の半順序関係を抽出する処理（Ｓ１１）を説明するための図である。
【図１４】本実施形態におけるＤＢにおける領域（表）の更新のクエリ間の半順序関係の抽出について説明するための図である。
【図１５】本実施形態におけるＤＢにおける参照クエリと更新クエリの間の順序関係の抽出について説明するための図である。
【図１６】本実施形態における複数の半順序関係の合成を説明するための図である。
【図１７】本実施形態における下の階層の制約に基づく上の階層の制約決定フローの詳細を示す。
【図１８】本実施形態における制約に基づくアクセス再現時間の短縮例を示す。
【図１９】本実施形態における、下の階層の制約を満たすために、上の階層のリクエスト発行順序を変更する場合を説明するための図である。
【図２０】本実施形態（実施例１）におけるＳ１３の処理に含まれる、ＤＢ層の制約の抽出処理フローを示す。
【図２１】本実施形態（実施例１）における、ＤＢ内の表を更新する場合の半順序関係の抽出について説明するための図である。
【図２２】本実施形態（実施例１）における、ＤＢに対する参照クエリと更新クエリの間の順序関係を説明するための図である。
【図２３】本実施形態（実施例１）における、更新のクエリに関する半順序抽出フロー（Ｓ３１）を示す。
【図２４】本実施形態（実施例１）における、同じ表に対する参照クエリと更新クエリの間の半順序関係抽出フロー（Ｓ３２）を示す。
【図２５】本実施形態（実施例１）における、同じ表に対する参照クエリと更新クエリの間の半順序関係の設定例を示す。
【図２６】本実施形態（実施例１）における、順序関係によるデータの分割について説明するための図である。
【図２７】本実施形態（実施例２）における、リクエスト発行タイミングの決定フローを示す。
【図２８】本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。
【発明を実施するための形態】
【００１９】
図１は、クライアント−サーバ間のアクセス再現技術を説明するための図である。図１では、前回リリースした環境等（再現元の環境１）である既存のシステムを、新規リリース環境等の新しい環境（再現実施環境７）下で再現する場合について説明する。
【００２０】
例えば、クライアント装置（以下、「クライアント」と称する）２からの要求に応じて、Ｗｅｂサーバ３、及びデータベース（ＤＢ）サーバ４が連動してサービスを提供する場合を想定する。
【００２１】
まず、再現元の環境１において、クライアント２からＷｅｂサーバ３に対してリクエスト（例えば、ＨＴＴＰ（HyperText Transfer Protocol）に基づくメッセージ）が送信される。次に、Ｗｅｂサーバ３は、ＤＢサーバ４へリクエストに基づくクエリを発行する。
【００２２】
ＤＢサーバ４は、そのクエリの結果をＷｅｂサーバ３へ応答する。Ｗｅｂサーバ３は、ＤＢサーバ４からクエリの実行結果を受信すると、クライアント２へ返信する。このようなクライアントからの要求に基づいて処理を実行し、その処理結果をクライアントへ応答するまでの一連のシステム（Ｗｅｂサーバ、アプリケーション（ＡＰ）サーバ及びＤＢサーバ等）の処理をトランザクションという。
【００２３】
このように、クライアント２−Ｗｅｂサーバ３間、及び／またはＷｅｂサーバ３−ＤＢサーバ４間で要求パケット及び応答パケット等の通信パケットがやり取りされる。通信パケットは、パケット収集装置（不図示）にて収集され、記憶装置５にアクセス情報として記憶される（パケットキャプチャ）。このような通信パケットの記録（キャプチャデータ）は、クライアント２毎に収集される。
【００２４】
アクセス再現装置６は、キャプチャデータのパケットを取得して、そのパケットのヘッダ情報のシステム固有の情報（セッションＩＤ、日時、ＩＰアドレス、ポート番号等）を解析し、その固有の情報を再現実施環境７に適応するように変換する。これにより、システム環境の差異の吸収を行うことができる。
【００２５】
例えば、アクセス再現装置６は、記憶装置５に蓄積された要求パケットが入力されると、その要求パケット（実データ）を解析して、再現元の環境１のシステム固有の情報を、再現実施環境７のシステム固有の情報に変換する。アクセス再現装置６は、その変換された要求パケット（検証データ）を、Ｗｅｂサーバ８及びＤＢサーバ９で構築される再現実施環境１０へ出力する。
【００２６】
再現実施環境７では、Ｗｅｂサーバ８及びＤＢサーバ９は、Ｗｅｂサーバ３及びＤＢサーバ４と同様に処理を行い、Ｗｅｂサーバ８は処理結果を含めた応答パケットをアクセス再現装置６へ返信する。
【００２７】
アクセス再現装置６は、再現実施環境７から返信された応答メッセージ（検証データ）と、キャプチャデータの応答メッセージ（実データ）を比較し、その処理結果の確認を行う。これにより、再現実施環境７において、再現元の環境１が再現できているかを検証することができる。
【００２８】
このようなアクセス再現技術において、テスト時間短縮や負荷試験のために、図２に示すように、データ送信タイミングの前倒し等のアクセス再現のタイミングの変更が要求される場合がある。
【００２９】
図２は、アクセス再現のタイミングの調整について説明するための図である。図２において、両矢印で示す線分の左端は、要求メッセージの発行（例：ＨＴＴＰリクエスト）タイミングを表す。両矢印で示す線分の右端は、応答メッセージの受信（例：ＨＴＴＰレスポンス）タイミングを表す。ここで、「メッセージ」は、各階層において、複数の機器が所定のプロコルに基づいてやりとりするデータの最小単位である。例えば、ＨＴＴＰを用いたリクエストやそれに対するレスポンス、及びＩＩＯＰ（Internet Inter-ORB Protocol）を用いたリクエストやそれに対するレスポンスが、メッセージに該当する。
【００３０】
アクセス再現の際には、例えば、図２（Ａ）のアクセスタイミングの状態から、図２（Ｂ）のように、データ送信タイミングを前倒しにして、アクセス再現のタイミングが変更されることを想定する。
【００３１】
そのようなアクセスタイミングの変更は、Ｗｅｂサーバが、ＤＢサーバ等から受け取ったレスポンスに含まれるデータを使用してリクエストを送る場合など制約があったり、ＤＢへのアクセスの順序が変わることによる影響がある。アクセスタイミングの変更の影響について、さらに、図３を用いて説明する。
【００３２】
図３は、リクエストの内容の比較検証が可能なアクセス発信順序の確定について説明するための図である。以下では、リクエストを「ｒｅｑ」と称し、レスポンスを「ｒｅｓ」と称する場合がある。Ｗｅｂサーバまたは／及びＡＰサーバ（ＷＥＢ／ＡＰサーバ）からＤＢサーバに行う問合せ（クエリ）を「ｑｕｅｒｙ」と称する場合がある。ＷＥＢ／ＡＰサーバからＤＢサーバへの問合せに対して、ＤＢサーバが返す結果を「ｒｅｓｕｌｔ」と称する場合がある。また、トランザクションｎ（ｎ：整数）に含まれるメッセージには、「ｎ」を付す。
【００３３】
図３（Ａ）では、Ｗｅｂ２階層またはＷｅｂ３階層システムにおいて複数のトランザクションが連続して実行される場合のリクエストとレスポンスの時系列のやり取りの一例を示す。
【００３４】
トランザクション１では、次のことを行っている。クライアント２よりリクエスト１（ｒｅｑ１）が送信されると、ＷＥＢ／ＡＰサーバ３ａは、ＤＢサーバ４にクエリ１（ｑｕｅｒｙ１）を発行する。ＤＢサーバ４は、そのｑｕｅｒｙ１に対して、結果１（ｒｅｓｕｌｔ１）を返す。ＷＥＢ／ＡＰサーバは、そのｒｅｓｕｌｔ１を受け取ると、クライアントにレスポンス１（ｒｅｓ１）を返す。
【００３５】
トランザクション２では、次のことを行っている。クライアント２よりリクエスト２（ｒｅｑ２）が送信されると、ＷＥＢ／ＡＰサーバ３ａは、ＤＢサーバ４にクエリ２（ｑｕｅｒｙ２）を発行する）。ＤＢサーバ４は、そのｑｕｅｒｙ２に対して、結果２（ｒｅｓｕｌｔ２）を返す。ＷＥＢ／ＡＰサーバ３ａは、そのｒｅｓｕｌｔ２を受け取ると、クライアント２にレスポンス２（ｒｅｓ２）を返す。
【００３６】
ｒｅｑ２がｒｅｓ１のデータを使っていない場合、図３（Ｂ）に示すように、ｒｅｓ１を待たずにｒｅｑ２を発行するよう変更するとする。すなわち、トランザクション１が終了する前に、トランザクション２が開始するとする。
【００３７】
この場合、複数階層の情報処理システム（以下、多階層システムと称する）であるために、いずれかの階層の処理順序の変更により、レスポンスの結果が変化する可能性が有る。すなわち、図３（Ｂ）に示すようにｑｕｅｒｙ１，ｑｕｅｒｙ２の順序が変わることにより、ｒｅｓ１，ｒｅｓ２の内容が変わる可能性がある。例えば、ｑｕｅｒｙ１が更新でｑｕｅｒｙ２が参照の場合、図３（Ｂ）のようにｑｕｅｒｙ１，２の順序が変わると、ｒｅｓｕｌｔ１，ｒｅｓｕｌｔ２の内容が、図３（Ａ）と場合のｒｅｓｕｌｔの内容と異なる可能性がある。また、ｑｕｅｒｙ１とｑｕｅｒｙ２が共に更新を伴い、同じデータを変更する場合に続く結果が異なる可能性がある。
【００３８】
既存のシステムでは、再現タイミングの決定方法は、観測時と同じタイミングで再現するか、他の階層を考慮せずに再現時刻を決定している。ところが、後者の場合には、結果比較が不可能である。
【００３９】
そこで、本実施形態では、他の階層の順序制約を、対象とする階層の順序制約に取り込んでアクセス再現の際のリクエスト送信の送信順序を決める技術を提供する。
【００４０】
図４は、本実施形態におけるアクセス再現タイミング決定について説明するための図である。本実施形態では、処理結果に影響するリクエストとレスポンスの順序の変更がないようにアクセス再現を行う。図４の例では、ｑｕｅｒｙ２がｑｕｅｒｙ１の前に送られないようにするため、ｒｅｑ２はｒｅｓ１を受け取るまで送らないとする制約が抽出され、その制約に基づいてタイミングが決定される。
【００４１】
図５は、本実施形態における送信順序決定装置の一例を示す。送信順序決定装置１１は、取得部１２、抽出部１３、決定部１４を含む。送信順序決定装置１の一例として、後述するように、タイミング決定装置２１が挙げられる。
【００４２】
取得部１２は、受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する他階層で構築される情報処理システムの階層間で送受信される通信情報を取得する。取得部１２の一例として、後述するようにＳ１の処理を行う制約抽出部２３が挙げられる。
【００４３】
抽出部１３は、取得した通信情報から階層毎の要求情報と、要求情報に対応する応答情報との組を識別する。抽出部１３は、階層毎に、組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出する。抽出部３の一例として、後述するようにＳ２の処理を行う制約抽出部２３が挙げられる。
【００４４】
決定部１４は、第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出する。決定部４は、抽出された該順序関係に基づいて、前記情報処理システムに対する要求情報の送信順序を決定する。決定部１４の一例として、後述するようにＳ３の処理を行う制約抽出部２３が挙げられる。
【００４５】
このように構成することにより、多階層システムでのアクセス再現において、複数階層での順序を考慮した要求情報の送信ができる。また、リクエスト及びレスポンスを階層間で対応づけることにより、システムの更新に関するトランザクションを明確することができるので、どのリクエスト及びレスポンスがそのようなトランザクションと依存関係があるかということが明確になる。その結果、リクエスト送信タイミングの変更（間隔の短縮、順序変更）を行うことができる。また、トランザクション間の依存関係が明確になるので、独立に再現可能なトランザクションを分割することができる。その結果、複数のアクセス再現装置による並列実行を行うことができる。また、必要な一部のアクセス再現を再現することができる。
【００４６】
抽出部１３は、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域の更新を要求する要求情報同士から、順序関係を抽出する。当該処理の一例としては、後述するように、制約抽出部２３により実行されるＳ３１の処理が挙げられる。
【００４７】
このように構成することにより、ＤＢの同一の表を更新するクエリ間では、発行順を順序制約とすることができる。
【００４８】
抽出部１３は、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域からの読み出しを要求する読み出し要求情報のうち、連続する読み出し要求情報の間では順序を設定しない。当該処理の一例としては、後述するように、制約抽出部２３により実行されるＳ３２の処理が挙げられる。
【００４９】
このように構成することにより、同じ表にアクセスするクエリのうち、更新を実行するクエリと更新を実行しないクエリに分類し、更新を実行するクエリに挟まれる非更新のクエリ間には順序をつけないようにすることができる。
【００５０】
決定部１４は、第（ｎ−ｉ）階層において、比較する組が前記順序関係を有する場合、各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出する。当該処理の一例としては、後述するように、制約抽出部２３により実行されるＳ２３の処理が挙げられる。
【００５１】
また、決定部１４は、第（ｎ−ｉ）階層において、比較する組が順序関係を有しないで、各組に対応する第（ｎ−ｉ＋１）階層の組が順序関係を有する場合、第（ｎ−ｉ＋１）階層の組同士の順序関係に応じて、第（ｎ−ｉ）階層の組間の順序関係を抽出する。当該処理の一例としては、後述するように、制約抽出部２３により実行されるＳ２６の処理が挙げられる。
【００５２】
また、決定部１４は、第（ｎ−ｉ）階層において、比較する組が順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組同士を比較する。決定部１４は、比較した第（ｎ−ｉ＋１）階層の組のうち、次の２つの条件を満たす場合、第（ｎ−ｉ）階層の比較する組の順序関係を維持する。条件１は、第３の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以前に送信または受信されていることである。条件２は、第５の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以降に送信または受信されていることである。当該処理の一例としては、後述するように、制約抽出部２３により実行されるＳ２７の処理が挙げられる。
【００５３】
このように構成することにより、第（ｎ−ｉ）階層のリクエストとレスポンスの組に対応する第（ｎ−ｉ＋１）階層のリクエストとレスポンスの組の順序関係に基づいて、第（ｎ−ｉ）階層における順序関係を抽出することができる。
【００５４】
送信順序決定装置１は、さらに、出力部５を含む。出力部５は、決定した送信順序に基づいて、情報処理システムに対する要求情報を送信するタイミング情報を出力する。出力部５の一例として、再現時刻決定部２４が挙げられる。
【００５５】
このように構成することにより、リクエスト送信タイミングの変更（間隔の短縮、順序変更）をすることができる。
【００５６】
図６は、本実施形態におけるタイミング決定装置の一例を示す。図６には、記憶装置５、タイミング決定装置１１、アクセス再現装置６がある。記憶装置５には、図１で説明したようにキャプチャされたパケットのデータ（キャプチャデータ２５）が格納されている。アクセス再現装置６は、図１で説明したものと同じであるので、その説明を省略する。
【００５７】
タイミング決定装置２１は、キャプチャデータ２５を取得して、再現実施環境において、キャプチャデータ２５に含まれる通信パケットを送信する時刻（再現時刻）を決定し、再現時刻情報２６を生成する。
【００５８】
タイミング決定装置２１は、アクセス再現装置６にキャプチャデータ２５と再現時刻２６を出力する。なお、本実施形態では、タイミング決定装置２１は、アクセス再現装置６と別体であるが、アクセス再現装置６内に含まれていても良い。また、図６では、キャプチャデータ２５と再現時刻情報２６とを別々に出力したが、キャプチャデータ２５の時刻を再現時刻で更新したものを出力してもよい。
【００５９】
タイミング決定装置２１は、制御部２２を含む。制御部２２は、タイミング決定装置２１の記憶装置（不図示）に格納された本実施形態に係るプログラムを読み出して実行することにより、制約抽出部２３、再現時刻決定部２４として機能する。
【００６０】
制約抽出部２３は、記憶装置５からキャプチャデータ２１を読み出す。制約抽出部２３は、複数のサーバ間が所定の通信プロトコルにより通信されるシステムにおいて、クライアントからの要求に対して処理を行う処理サーバ側から順に、各階層におけるメッセージの送信順序の制約情報を取得する。再現時刻決定部２４は、取得した各階層におけるメッセージの送信順序の制約情報に基づいて、再現時間を決定する。なお、サーバは、サーバ装置に限定されず、サーバプログラムでもよい。
【００６１】
本実施形態では、ＨＴＴＰサーバとＤＢサーバ等で構築される２階層システムだけでなく、３階層以上で構築される多階層システムについてもアクセス再現の対象とすることができる。
【００６２】
図７は、本実施形態においてアクセス再現の対象となる多階層システムの一例を示す。図７では、３階層システム３０が示されている。３階層システム３０は、プレゼンテーション層としての第１階層を形成するサーバ３１、アプリケーション層としての第２階層を形成するサーバ３２、データベース層としての第３階層を形成するサーバ３２から構築される。
【００６３】
ここで、複数の階層を考えるとき、入力（プレゼンテーション層）側の階層を「上の階層」と称する。図７において、数字の小さい階層は数字の大きい階層より「上の階層」と呼ぶ。例えば、ＨＴＴＰサーバとＤＢサーバを含むシステムの場合、ＨＴＴＰサーバを上の階層と呼ぶ。
【００６４】
また、複数の階層を考えるとき、入力から遠い方（データベース層）の階層を「下の階層」と称する。図７において、数字の大きい階層は小さい階層より「下の階層」と呼ぶ。例えば、ＨＴＴＰサーバとＤＢサーバからなるシステムの場合、ＤＢサーバを下の階層と呼ぶ。
【００６５】
制約抽出部２３は、ｎ階層システムの場合、末端（ｎ階層目側）から順に、ｎ−１階層目、ｎ階層目のメッセージの送信タイミングの制約からｎ−１階層目のメッセージの送信順序制約を抽出する。それから、制約抽出部１３は、ｎ−２階層目、ｎ−１階層目のメッセージの送信タイミングの制約からｎ−２階層目のメッセージの送信順序制約を抽出する。
【００６６】
例えば、３階層システムの場合には、制約抽出部２３は、２階層目と３階層目とのメッセージの送信タイミングの制約から２階層目の送信順序制約を抽出する。次に、制約抽出部２３は、１階層目と２階層目との間のメッセージの送信タイミングの制約から１階層目（＝入力の階層）のメッセージの送信順序制約を抽出する。
【００６７】
このように、制約抽出部２３は、（ｎ−ｉ）階層目と（ｎ−ｉ＋１）階層目のメッセージの送信タイミングの制約から（ｎ−ｉ）階層目のメッセージの送信順序制約を抽出する（ｉ＝１，２，・・・，ｎ−１）。
【００６８】
ここで、メッセージの送信タイミングの制約とは、例えば、メッセージＡに基づくサーバの実行結果がメッセージＢに基づくサーバの実行結果に影響があるために、メッセージＡのレスポンスを受信するまではメッセージＢを送信しない等の制約である。これについて、図８で説明する。
【００６９】
図８は、本実施形態における階層間でのメッセージの送信タイミングの制約の一例について説明するための図である。ＷＥＢサーバからＡＰサーバへ送信されるＩＩＯＰ）によるリクエストメッセージを、「ＩＩＯＰｒｅｑ」と称する。ＡＰサーバ３からＷＥＢサーバへ送信されるＩＩＯＰによるレスポンスメッセージを、「ＩＩＯＰｒｅｓ」と称する。ＩＩＯＰｒｅｑ１及びＩＩＯＰｒｅｓ１は、トランザクション１に含まれる。ＩＩＯＰｒｅｑ２及びＩＩＯＰｒｅｓ２は、トランザクション２に含まれる。
【００７０】
例えば、ｑｕｅｒｙ２が先に実行されると、ｑｕｅｒｙ１の結果に影響がある場合、ｑｕｅｒｙ１、ｑｕｅｒｙ２の順で実行されることが要求される。そこで、ｑｕｅｒｙ２がｑｕｅｒｙ１の前にＤＢサーバへ送られないようにするため、制約抽出部２３は、キャプチャデータから、メッセージの送信タイミングの制約として、ｒｅｓ１を受け取るまではｒｅｑ２を送信しないとする制約を抽出する。
【００７１】
図９は、本実施形態における、同一階層に複数サーバがある場合の階層間でのメッセージの送信タイミングの制約の一例について説明するための図である。トランザクション１では、ＡＰサーバとして、ＡＰサーバ１を使用するとする。トランザクション２では、ＡＰサーバとして、ＡＰサーバ２を使用するとする。
【００７２】
図９に示すように、ＡＰサーバが２台で、ＤＢサーバへのｑｕｅｒｙに順序制約があるとき、ＩＩＯＰｒｅｑまたはＩＩＯＰｒｅｓについて送信タイミングの制約（送信順序制約）が生じる。例えば、ｑｕｅｒｙ１とｑｕｅｒｙ２に順序の制約があるとする。この場合、ＩＩＯＰｒｅｑまたはＩＩＯＰｒｅｓにも送信の順序関係が要求される。ＩＩＯＰｒｅｑ２はＩＩＯＰｒｅｓ１を追い越してはいけないとなり、さらに上位のｒｅｑ２はｒｅｓ２を追い越してはいけないとなる。
【００７３】
したがって、同一階層に複数サーバがある場合でも着目するのは、メッセージの送信の順序であり、どのＡＰサーバに届いたかは関係がない。このことから、同一階層に複数サーバがある場合でも、一階層に一サーバがある場合と同様に対応することができる。
【００７４】
次に、送信されるメッセージの順序の制約の抽出について説明する。送信されるメッセージの順序の制約を抽出するために「半順序」を用いる。半順序とは、
・反射律（ａ≦ａ）
・推移律（ａ≦ｂ∧ｂ≦ｃ⇒ａ≦ｃ）
・反対称律（ａ≦ｂ∧ｂ≦ａ⇒ａ=ｂ）
の関係にあるものをいう。それに対して、任意の元の組み合わせに対して半順序関係が成り立つ関係を全順序関係という。半順序であるが、全順序でない例として、次に示す部分集合族の包含関係がある。
【００７５】
例えば、｛１，２，３｝の部分集合｛φ，｛１｝，｛２｝，｛３｝，｛１，２｝，｛１,３｝，｛２，３｝，｛１，２，３｝｝を考えると、包含関係は半順序である。従って、｛１，２｝と｛２，３｝の間には包含関係がなく、順序がつかない。例えば、ｃｏｏｋｉｅを用いたデータの引継ぎなどの依存関係がないＨＴＴＰリクエストの組のように、レスポンスやリクエスト等のイベントの間には順序の関係がないことから、本実施形態では、半順序を用いる。
【００７６】
図１０は、本実施形態における全体の処理フローを示す。まず、タイミング決定装置２１の制御部２２は、制約抽出部２３として機能し、記憶装置５からキャプチャデータ２５を取得する（Ｓ１）。制御部１２は、ＨＴＴＰサーバ、ＡＰサーバ、及びＤＢサーバの間に設けられたスイッチ装置のポートミラーリング機能により、キャプチャデータを取得する。ミラーリング機能とは、あるポートに出力されるデータと同じデータを、他のポートからも出力する機能である。
【００７７】
なお、キャプチャデータ２５の代わりに、各階層のサーバに記憶された通信に関するログデータを用いてもよい。例えば、制約抽出部２３は、各階層のサーバに記憶された通信ログに出力されるＨＴＴＰまたはＩＩＯＰのリクエストメッセージとＨＴＴＰレスポンスメッセージの履歴、ＤＢのクエリとその結果の履歴情報を取得してもよい。
【００７８】
次に、制約抽出部２３は、キャプチャデータ２５から、階層間のリクエストとレスポンスとの組とし、組と組との半順序関係を抽出する（Ｓ２）。Ｓ２の詳細については、図１１を用いて説明する。
【００７９】
次に、制約抽出部２３は、Ｓ２で抽出したリクエストとレスポンスの組の半順序関係に基づいて、下の階層の制約に基づく上の階層の制約を決定する処理を行う（Ｓ３）。Ｓ３の詳細については、図１７を用いて説明する。
【００８０】
それから、制約抽出部２３は、Ｓ３で決定された制約情報に基づいて、再現タイミングの調整を行う（Ｓ４）。Ｓ４の詳細については、図１８を用いて説明する。
【００８１】
図１１は、本実施形態における階層間のリクエストとレスポンスの組の半順序関係の抽出フロー（Ｓ２）の詳細を示す。Ｓ１１〜Ｓ１４は、ｉ＝１，２，・・・，ｎ−１の範囲でインクリメントして繰り返されるループ処理である。ｉの初期値は、“１”である。ｎは、階層数である。
【００８２】
制約抽出部２３は、第（ｎ−ｉ）階層（上側の階層）へのリクエストと、そのリクエストに対するレスポンスとの組の間の半順序関係を抽出する（Ｓ１１）。これについて、図１２、図１３を用いて説明する。
【００８３】
図１２は、本実施形態で用いるキャプチャデータの内容を示す。第（ｎ−ｉ）階層としてのＨＴＴＰ階層と、第（ｎ−ｉ＋１）階層としてのＤＢ階層間のメッセージの受け渡し例を示す。Ｓ１で取得されたキャプチャデータ２５は、例えば、図１２に示すようなタイミングでＨＴＴＰ階層とＤＢ階層間でやり取りされたメッセージに対応するパケットデータであるとする。
【００８４】
図１２では、ＤＢに対する更新のクエリをＷで表し、ＤＢに対する非更新のクエリをＲで表す。また、ＤＢ内の領域Ｔを更新するクエリをＷ｛Ｔ｝で表し、領域Ｔを参照するクエリをＲ｛Ｔ｝で表す。なお、領域Ｔは例えば、ＤＢで管理されている１以上のテーブルである。この図１２のうち、ＨＴＴＰ階層に着目したものが図１３である。
【００８５】
図１３は、本実施形態における、第（ｎ−ｉ）階層において、第（ｎ−ｉ＋１）階層へ送信したリクエストと、第（ｎ−ｉ＋１）階層から受信したレスポンスとの組の間の半順序関係を抽出する処理（Ｓ１１）を説明するための図である。
【００８６】
まず、第（ｎ−ｉ）階層において、第（ｎ−ｉ＋１）階層へ送信したリクエストと、第（ｎ−ｉ＋１）階層から受信したレスポンスの組の間の半順序関係は、以下のように定義される。
【００８７】
（定義１）組＜ｒｅｑｕｅｓｔ１，ｒｅｓｐｏｎｓｅ１＞、＜ｒｅｑｕｅｓｔ２, ｒｅｓｐｏｎｓｅ２＞、・・・、＜ｒｅｑｕｅｓｔ ｎ, ｒｅｓｐｏｎｓｅ ｎ＞等を、Ｈ１、Ｈ２、・・・、Ｈｎ等と表す。また、＜ｒｅｑｕｅｓｔ Ｘ，ｒｅｓｐｏｎｓｅ Ｘ＞ ≦ ＜ｒｅｑｕｅｓｔ Ｙ，ｒｅｓｐｏｎｓｅ Ｙ＞、すなわちＨＸ≦ＨＹを「ｒｅｓｐｏｎｓｅ Ｘの時刻≦ｒｅｑｕｅｓｔ Ｙの時刻」であると定義される。図１２の例では、半順序Ｈ１≦Ｈ３，Ｈ１≦Ｈ４，Ｈ２≦Ｈ３，Ｈ２≦Ｈ４の関係がある。この場合、Ｈ１とＨ２の間や、Ｈ３とＨ４の間には、順序関係がない。
【００８８】
（定義２）リクエストの順序は、時刻順に基づいて定義される。すなわち、ｒｅｑｕｅｓｔ２がｒｅｑｕｅｓｔ１の後で送信されることをｒｅｑｕｅｓｔ１≦ｒｅｑｕｅｓｔ２と定義される。
【００８９】
制約抽出部２３は、キャプチャデータ２５に含まれるパケットヘッダに設定された情報に基づいて、キャプチャデータ２５から第（ｎ−ｉ）階層におけるリクエストと、そのリクエストに対するレスポンスとの組を抽出する。制約抽出部２３は、上記定義１に基づいて、リクエストとレスポンスとの組の順序を判定し、半順序関係を作成する。それでは、図１１の説明に戻る。
【００９０】
次に、制約抽出部２３は、キャプチャデータ２５から、第（ｎ−ｉ）階層（上側の階層）の半順序制約を抽出する（Ｓ１２）。第（ｎ−ｉ）階層（上側の階層）における半順序制約とは、第（ｎ−ｉ）階層サーバにおいて、例えば、ｃｏｏｋｉｅなどを用いて、ＨＴＴＰレスポンスが次のＨＴＴＰリクエストにデータを引き継いでいる等の制約である。
【００９１】
次に、制約抽出部２３は、キャプチャデータ２５から、第（ｎ−ｉ＋１）階層（下側の階層）の半順序制約を抽出する（Ｓ１３）。第（ｎ−ｉ＋１）階層（下側の階層）の半順序制約とは、例えば、ＤＢに対するクエリ及びその結果の順序制約であり、これについては図１４及び図１５を用いて説明する。
【００９２】
図１４は、本実施形態におけるＤＢにおける領域（表）の更新のクエリ間の半順序関係の抽出について説明するための図である。図１４は、図１２のＤＢ階層に対応するものである。制約抽出部２３は、キャプチャデータ２５から、同じ領域（表）を更新するクエリを抽出し、上記定義１に基づいて、その更新のクエリ間で半順序関係を抽出する。すると、図１４の下側のモデルが得られる。
【００９３】
図１５は、本実施形態におけるＤＢにおける参照クエリと更新クエリの間の順序関係の抽出について説明するための図である。図１５では、ＤＢの同じ領域（表）にアクセスするクエリを、更新のクエリと非更新のクエリとに分類し、更新のクエリに挟まれる非更新のクエリ間には順序をつけないとする。ここでは、更新を行わないクエリの順序を変更しても、クエリの結果は変わらないので、更新を行わないクエリの間には、順序を決めないように半順序関係を設定する。
【００９４】
図１５の場合、制約抽出部２３は、同じ領域（表）にアクセスするクエリのうち、更新のクエリに挟まれた、非更新のクエリＲ１｛Ｔ１｝とＲ４｛Ｔ１｝との間では、順序付けを行わない。
【００９５】
なお、通信ネットワークでのパケットロスによる再送や、リクエストとレスポンスの組の半順序の関係がない場合に、ＤＢに対するリクエストの順序が変わる可能性もある。そこで、本実施形態では、ＤＢへのアクセスの順序を再現する技術を用いる。例えば、パケット通信の観測時に予めリクエストの送信順を記憶しておき、制約抽出部２３は、その記録した送信順の情報を用いて、リクエスト、すなわちクエリの発行順を維持してもよい。
【００９６】
図１６は、本実施形態における複数の半順序関係の合成を説明するための図である。ここでは、満たすべき半順序関係を独立に与えて、それらを満たす半順序関係を生成する。これにより、満たすべき半順序関係が独立に与えられるので、複数の半順序関係の性質を独立に記述することができる。したがって、性質の組み合わせごとにアルゴリズムを考えなくてもよい。図１４及び図１５で得られた半順序はそれぞれ、独立している。
【００９７】
半順序関係の合成方法は、次の通りである。半順序関係ＲとＲ’が与えられたとき、その合成Ｒ＋Ｒ’はＲ∪Ｒ’の推移閉包として定義される。ここで、推移閉包とは、片方で成り立たないものが片方にあれば足して、あとは推移律（ａ≦ｂ∧ｂ≦ｃ⇒ａ≦ｃ）によって関係を追加したものをいう。例えば、Ｒ＝｛ａ≦ｂ｝，Ｒ’＝｛ｂ≦ｃ｝のとき、その合成Ｒ＋Ｒ’＝｛ａ≦ｂ，ｂ≦ｃ，ａ≦ｃ｝が得られる。
【００９８】
図１６において、図１４で得られた半順序関係と、図１５で得られた半順序関係とを合成すると、実線で囲む半順序関係が得られる。それでは、図１１の説明に戻る。
【００９９】
次に、制約抽出部２３は、キャプチャデータ２５から、第（ｎ−ｉ）階層（上側の階層）と第（ｎ−ｉ＋１）階層（下側の階層）とのリクエスト／レスポンスの対応関係を抽出する（Ｓ１４）。すなわち、制約抽出部２３は、キャプチャデータから、第（ｎ−ｉ）階層のどのリクエストを契機に、第（ｎ−ｉ＋１）階層のリクエストが発行されたかを検出する。
【０１００】
Ｓ１４の処理では、制約抽出部２３は、システムの内部の挙動を可視化するシステム可視化技術であって、上の階層のどのリクエストを契機に下の階層のどのリクエストが発行されたか判別することができるシステム可視化技術を用いる。システム可視化技術の１つに、複数の通信端末間で送受信される複数のメッセージの内の互いに関連するメッセージ間を紐付ける紐付け処理を支援する技術がある（例えば、特許文献４）。当該システム可視化技術では、コンピュータは入力としてサーバ間でやり取りされるメッセージのメッセージタイプ（メッセージ種別）、そのメッセージに含まれるＩＤ文字列及びそのメッセージのデータ流量を受信する。コンピュータは、その受信した情報に基づいて、各ＩＤ文字列による紐付け処理の実行順序および紐付け処理を並列実行可能なＩＤ文字列を示す情報を半順序グラフとして出力する。これにより、同一のトランザクションにおいて、階層間で対応するメッセージを紐付けることができる。
【０１０１】
例えば、図１２において、同一トランザクションのＨＴＴＰ階層のメッセージとＤＢ階層のクエリについては、システム可視化技術を用いることにより、破線で紐付けられている。
【０１０２】
図１７は、本実施形態における下の階層の制約に基づく上の階層の制約決定フローの詳細を示す。制約抽出部２３は、第（ｎ−ｉ）階層（上側の階層）における、リクエストとレスポンスの組の、全ての組み合わせについてＳ２１−Ｓ２８の処理を繰り返す。さらに、Ｓ２１〜Ｓ２９は、ｉ＝１，２，・・・，ｎ−１の範囲でインクリメントして繰り返される。なお、第（ｎ−ｉ）階層（上側の階層）における制約情報は、タイミング決定装置２１の記憶装置（不図示）に格納される。
【０１０３】
制約抽出部２３は、第（ｎ−ｉ）階層（上側の階層）におけるトランザクション１におけるリクエストとレスポンスの組をＰ１とし、トランザクション２におけるリクエストとレスポンスの組をＰ２と定義する。さらに、制約抽出部２３は、Ｐ１に対応する第（ｎ−ｉ＋１）階層（下側の階層）の組をｃ１，ｃ２，・・・と定義し、Ｐ２に対応する第（ｎ−ｉ＋１）階層（下側の階層）の組をｄ１，ｄ２，・・・と定義する（Ｓ２１）。
【０１０４】
Ｐ１とＰ２の間のリクエストとレスポンスの組の間に半順序関係がある場合（Ｐ１とＰ２が同時に処理されていない場合）（Ｓ２２で「Ｙｅｓ」）、制約抽出部２３は、次の処理を行う。すなわち、あるｃｉ，ｄｊ（ｉ，ｊ＝１，２，・・・）の組について第（ｎ−ｉ＋１）階層の半順序制約でｃｉ≦ｄｊである場合、制約抽出部２３は、第（ｎ−ｉ）階層の制約にＰ１≦Ｐ２を追加する（Ｓ２３）。なお、≦の向きが逆のときはそれぞれ逆、すなわち、第（ｎ−ｉ＋１）階層の半順序制約でｃｉ≧ｄｊである場合、制約抽出部２３は、第（ｎ−ｉ）階層の制約にＰ１≧Ｐ２を追加する。
【０１０５】
全てのｃｉ，ｄｊの組について第（ｎ−ｉ＋１）階層の半順序制約がないとき、第（ｎ−ｉ）階層の制約に変化はない。この場合、制約抽出部２３は、リクエストの順序の変更が可能であると判定する（Ｓ２４）。
【０１０６】
なお、多階層システムの場合には、制約抽出部２３は、第（ｎ−ｉ＋１）階層で半順序関係を決定することができないリクエストとレスポンスに対応する、第（ｎ−ｉ）階層のリクエストとレスポンスの半順序関係も決定できないと判定する（Ｓ２５）。
【０１０７】
Ｐ１とＰ２の間にリクエストとレスポンスの組の間の半順序関係がない場合（Ｐ１とＰ２が同時に処理されている場合）（Ｓ２２で「Ｎｏ」）、制約抽出部２３は、次の処理を行う。すなわち、制約抽出部２３は、半順序関係のある任意のｃｉとｄｊの組について、全てｃｉ≦ｄｊまたは全てｃｉ≧ｄｊの関係があるとき、それぞれＰ１≦Ｐ２，Ｐ１≧Ｐ２とする制約を追加する（Ｓ２６）。
【０１０８】
それから、あるｃｉ，ｄｊの組についてｃｉ≦ｄｊで、他のｃｉ，ｄｊの組についてｃｉ≧ｄｊの関係があるとき、制約抽出部２３は、Ｐ１とＰ２の結果が変わってしまう可能性があるとして順序の決定はできないと判定する。ただし、スレッドの実行順序が受信順や、優先度で定まる場合にはその限りではない。また、制約抽出部を２３は、Ｐ１とＰ２の送信タイミング間隔はずらさないという制約を追加する（Ｓ２７）。
【０１０９】
全てのｃｉ，ｄｊの組について半順序制約がない場合には、制約抽出部２３は、制約に変化はないと判定する（Ｓ２８）。
【０１１０】
なお、多階層システムの場合には、制約抽出部２３は、第（ｎ−ｉ＋１）階層で半順序関係を決定することができないリクエストとレスポンスに対応する、第（ｎ−ｉ）階層のリクエストとレスポンスの半順序関係も決定できないと判定する（Ｓ２９）。
【０１１１】
第（ｎ−ｉ）階層における、リクエストとレスポンスの組の、全ての組み合わせについてＳ２１−Ｓ２９の処理が終了すると、制約抽出部２３は、第（ｎ−ｉ）階層のリクエストとレスポンスの組の間の半順序制約と、リクエストの順序制約を出力する（Ｓ３０）。
【０１１２】
ここで、Ｓ２１−Ｓ２９の処理について、図１２、図１６を用いて説明する。ここでは、各ＨＴＴＰ階層のリクエストとレスポンスとの組Ｈ１，Ｈ２，Ｈ３，Ｈ４間の比較からＨＴＴＰ階層の制約を抽出する。上述の通り、半順序関係はＨ１≦Ｈ３，Ｈ１≦Ｈ４，Ｈ２≦Ｈ３，Ｈ２≦Ｈ４である。
【０１１３】
Ｈ１に対応する下の階層の組は（Ｗ１｛Ｔ１｝，Ｒ１｛Ｔ１｝）である。Ｈ２に対応する下の階層の組は（Ｗ２｛Ｔ１｝）である。Ｈ３に対応する下の階層の組は（Ｗ３｛Ｔ２｝）である。Ｈ４に対応する下の階層の組は（Ｒ２｛Ｔ１｝，Ｗ４｛Ｔ１｝）である。
【０１１４】
Ｈ１とＨ２を比較すると、Ｈ１とＨ２の間に半順序関係はなく（Ｓ２２で「Ｎｏ」）、Ｗ１｛Ｔ１｝≦Ｗ２｛Ｔ１｝≦Ｒ１｛Ｔ１｝より、制約抽出部２３は、実行結果が変わってしまう可能性のため、Ｈ１とＨ２の間で順序の決定はできないと判定する。この場合、Ｈ１とＨ２のアクセスの順序は、そのままの送信タイミング間隔で、そのままの順序という制約（アクセス再現制約：Ｈ１のｒｅｑｕｅｓｔ≦Ｈ２のｒｅｑｕｅｓｔ）になる（Ｓ２７）。
【０１１５】
Ｈ１とＨ３を比較すると、Ｈ１とＨ２の間に半順序関係はあるが（Ｓ２２で「Ｙｅｓ」）、（Ｗ１｛Ｔ１｝，Ｒ１｛Ｔ１｝）と、（Ｗ３｛Ｔ２｝）との間に半順序関係がないことから、制約抽出部２３は、ＨＴＴＰ階層の制約に、追加する制約はないと判定する（Ｓ２４）。また、Ｈ２とＨ３を比較すると、Ｈ２とＨ３の間に半順序関係はあるが（Ｓ２２で「Ｙｅｓ」）、Ｗ２｛Ｔ１}とＷ３｛Ｔ２｝との間に半順序関係がないことから、制約抽出部２３は、ＨＴＴＰ階層の制約に、追加する制約はないと判定する（Ｓ２４）。
【０１１６】
Ｈ１とＨ４を比較すると、リクエストとレスポンスの組の半順序関係がＨ１≦Ｈ４で（Ｓ２２で「Ｙｅｓ」）、Ｒ１｛Ｔ１}≦Ｗ４｛Ｔ１｝の制約があることから、制約抽出部２３は、ＨＴＴＰ階層の制約に、制約としてＨ１≦Ｈ４を追加する（Ｓ２３）。
【０１１７】
Ｈ２とＨ４を比較すると、リクエストとレスポンスの組の半順序関係がＨ２≦Ｈ４で（Ｓ２２で「Ｙｅｓ」）、Ｗ２｛Ｔ１｝≦Ｗ４｛Ｔ１｝の制約があることから、制約抽出部２３は、ＨＴＴＰ階層の制約に、制約としてＨ２≦Ｈ４を追加する（Ｓ２３）。
【０１１８】
Ｈ３とＨ４を比較すると、Ｈ３とＨ４に半順序関係はなく（Ｓ２２で「Ｎｏ」）、（Ｗ３｛Ｔ２}）と、（Ｒ２｛Ｔ１｝，Ｗ４｛Ｔ１｝）との間に半順序関係がないことから、制約抽出部２３は、ＨＴＴＰ階層の制約に、追加する制約はないと判定する（Ｓ２８）。
【０１１９】
このようにして得られたＨＴＴＰ階層の制約は、次の通りである。
・ＨＴＴＰ階層についての順序制約は｛Ｈ１≦Ｈ４，Ｈ２≦Ｈ４｝となる。Ｈ３については制約がないことから、Ｈ１とＨ２のレスポンスを待たずに送信可能となる。Ｈ４については、Ｈ１とＨ２のレスポンスを待たないと遅れないことが分かる。
・実行結果の比較による実行結果の変化の可能性：実行結果が変わってしまう可能性のため、Ｈ１とＨ２の間で順序の決定はできない（内部の実現方法に応じて、開発者が判断する）。
・アクセス再現制約として、Ｈ１のｒｅｑｕｅｓｔ≦Ｈ２のｒｅｑｕｅｓｔがある。
【０１２０】
次に、Ｓ３で決定された制約情報に基づいて、再現タイミングの調整を行う処理（Ｓ４）の詳細について説明する。
【０１２１】
図１８は、本実施形態における制約に基づくアクセス再現時間の短縮例を示す。順序制約：｛Ｈ１≦Ｈ４，Ｈ２≦Ｈ４｝と、アクセス再現制約｛Ｈ１のリクエスト≦Ｈ２のリクエスト｝から、Ｈ３のリクエストは自由に設定できるため、再現時刻決定部２４は、Ｈ１のリクエストの送信後にＨ３のリクエストを送るように決定する。また、再現時刻決定部２４は、Ｈ４のリクエストをＨ１とＨ２のレスポンス受信後に送信するよう決定する。
【０１２２】
なお、図１９に示すように、下の階層の制約を満たすために、上の階層のリクエスト発行順序が変更になる可能性がある。
【０１２３】
図１９は、本実施形態における、下の階層の制約を満たすために、上の階層のリクエスト発行順序を変更する場合を説明するための図である。観測タイミングは、図１９（Ａ）に示すようなタイミングであるとする。
【０１２４】
図１４及び図１５で説明したように、図１９（Ａ）から図１９（Ｂ）に示すようなＤＢ層の順序制約が得られる。図１９（Ｂ）のＤＢ層での制約を満たすために、ＨＴＴＰ層の順序制約は、図１９（Ｃ）のように、Ｈ２≦Ｈ１となる。この場合、再現時刻決定部２４は、再現タイミングを、図１９（Ｄ）にように、Ｈ２のレスポンス受信後にＨ１のリクエストを送信するように調整する。
【０１２５】
本実施形態によれば、階層毎に半順序関係にある要求と応答の組を取得し、下層の半順序関係に応じて抽出した上層の順序関係に基づいて、複数階層システムへの要求の送信順序を決定することで、複数階層での順序を考慮した要求送信ができる。
【０１２６】
以下に、本実施形態の実施例について述べる。
（実施例１）
実施例１では、上述したリクエストの順序制約抽出処理（Ｓ１３）の実施例について説明する。ＤＢに対するクエリについて、同一の表を更新するクエリの順序制約は、クエリの発行順とする。また、ＤＢへのクエリのうち、更新を行わないクエリ（すなわち、参照だけ行うクエリ）は、更新のクエリをまたがない限り、順序はないとする。
【０１２７】
更新が行われるシステムの場合、同一のアクセス対象を更新するリクエストの順序制約は、その発行順とする。更新を行わないリクエスト（すなわち、参照だけ行うリクエスト）の順序制約は、更新のリクエストをまたがない限り順序なしとする。
【０１２８】
リクエストの内容がデータの更新を要求するものか否かは、シンタクスにより決定される。例えば、ＳＱＬでは“ｕｐｄａｔｅ”文は更新を伴い、“ｓｅｌｅｃｔ”文は更新を伴わない等定まる。
【０１２９】
また、アクセスする領域は、シンタクスにより決定される。アクセスする領域は、例えば、ＳＱＬでは、ｓｅｌｅｃｔ文なら「ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  Ｔａｂｌｅ」のように、Ｔａｂｌｅの位置の変数により定まる。
【０１３０】
（ｎ−ｉ＋１）階層の制約による（ｎ−ｉ）階層の制約を生成する場合（Ｓ１３）において、（ｎ−ｉ＋１）階層がＤＢ層で、（ｎ−ｉ）階層がＨＴＴＰ層である場合、ＤＢ層の順序制約からＨＴＴＰ層の順序制約が生成される。以下に、Ｓ１３におけるＤＢ層の制約の抽出処理を解説する。
【０１３１】
図２０は、本実施形態（実施例１）におけるＳ１３の処理に含まれる、ＤＢ層の制約の抽出処理フローを示す。制約抽出部２３は、ＤＢにおける表の更新の半順序関係の抽出を行う（Ｓ３１）。Ｓ３１の処理については、図２１、図２３で説明する。
【０１３２】
次に、制約抽出部２３は、ＤＢにおける表の参照と更新の間の順序関係の抽出を行う（Ｓ３２）。Ｓ３１の処理については、図２２、図２４で説明する。
【０１３３】
図２１は、本実施形態（実施例１）における、ＤＢ内の表を更新する場合の半順序関係の抽出について説明するための図である。ＤＢに対する更新のクエリの順序は、同じ表にアクセスするクエリ間で半順序関係が定められる。
【０１３４】
ここで、ＤＢ内の表Ｔ１，Ｔ２を更新するクエリを、ｕ｛Ｔ１,Ｔ２｝で表す。図１８の時間軸は、左から右へ向かって進んでいる。クエリは、時間軸に沿って発行されたものと仮定する。またクエリは、その発行順に処理されたものとする。
【０１３５】
すると、クエリｕ１｛Ｔ１｝、ｕ２｛Ｔ２｝、ｕ３｛Ｔ３｝、ｕ４｛Ｔ１｝、ｕ５｛Ｔ２｝、ｕ６｛Ｔ１,Ｔ２｝、ｕ７｛Ｔ２｝、ｕ８｛Ｔ３｝の半順序関係は、図２１の下側のように抽出される。
【０１３６】
図２２は、本実施形態（実施例１）における、ＤＢに対する参照クエリと更新クエリの間の順序関係を説明するための図である。図２２の時間軸は、左から右へ向かって進んでいる。
【０１３７】
同じ表にアクセスするクエリは、更新を含むクエリと更新を含まないクエリとに分類される。また、更新クエリに挟まれる複数の非更新クエリの間には順序をつけない。すなわち、更新しないクエリの順序を変更しても結果は変わらないので、更新しないクエリ間に順序を決めないように半順序関係を設定する。
【０１３８】
図２２において、“ｗ”が更新を含むクエリ、“ｒ”が更新を含まないクエリとする。例えば、クエリｗ１，ｒ１，ｒ２，ｗ２，ｒ３，ｒ４，ｒ５，ｒ６，ｗ３，ｗ４，ｒ７，ｗ５が、順に同じ表にアクセスすると仮定する。またクエリはこの順で処理されたとする。この場合の半順序関係を抽出すると、図２２の下側に示す関係となる。
【０１３９】
図２３は、本実施形態（実施例１）における、更新のクエリに関する半順序抽出フロー（Ｓ３１）を示す。図２３のフローは、図２１で説明した半順序関係の抽出処理に対応するフローである。Ｗ｛Ｔ｝及びＲ｛Ｔ｝を総称してｑ｛Ｔ｝で表す。以下、ｑ｛...｝に対し、Ｔｉ∈｛...｝であることを「ｑ｛...｝がＴｉを含む」と表現する。ここでＴｉはＤＢで管理される表である。また、図２３のフローにおいて、クエリの大きさは、時間軸に沿った発行順に基づくものとする。
【０１４０】
制約抽出部２３は、半順序関係Ｒ及び、Ｔｉ毎に一番小さい要素を保存する集合Ｂを空集合（φ）で初期化する（Ｓ４１）。制約抽出部２３は、更新クエリ列が空か否かを判定する（Ｓ４２）。ここで、更新クエリ列は、図２１の場合、ｕ１｛Ｔ１｝、ｕ２｛Ｔ２｝、ｕ３｛Ｔ３｝、ｕ４｛Ｔ１｝、ｕ５｛Ｔ２｝、ｕ６｛Ｔ１,Ｔ２｝、ｕ７｛Ｔ２｝、ｕ８｛Ｔ３｝である。
【０１４１】
更新クエリ列が空でない場合（Ｓ４２で「Ｎｏ」）、制約抽出部２３は、更新クエリ列から先頭のクエリｑ｛Ｔ１，・・・，Ｔｎ｝を取り出す（Ｓ４３）。
【０１４２】
制約抽出部２３は、各ＴｉについてＲの中でＴｉを含む最大のクエリｐ｛...｝を求める（Ｓ４４）。ここで、同じＴｉを含むｐ｛...｝は全順序関係なので、最大のクエリｐ｛...｝が存在する。ｑ｛...｝＜ｑ’｛...，Ｔｉ，...｝でｑ｛...｝がＴｉを含まない可能性があるが、このときはｑ’ ｛...，Ｔｉ，...｝を最大とする。
【０１４３】
いずれかのＴｉに最大値がある場合（Ｓ４５で「Ｎｏ」）、制約抽出部２３は、最大値を持つ全てのＴｉに対し、その最大値をｐ｛...｝として、Ｒと｛ｐ｛...｝＜ｑ｛Ｔ１，...，Ｔｎ｝｝との和集合をＲに格納する（Ｓ４６）。
【０１４４】
全てのＴｉに最大値がない場合（Ｓ４５で「Ｙｅｓ」）、制約抽出部２３は、いずれかのＴｉを含むｑ｛...｝がＢに存在するかを判定する（Ｓ４７）。いずれかのＴｉを含むｑ｛...｝がＢに存在しない場合（Ｓ４７で「Ｎｏ」）、制約抽出部２３は、Ｂとｑ｛Ｔ１，...，Ｔｎ｝｝との和集合をＢに格納する（Ｓ４８）。
【０１４５】
いずれかのＴｉを含むｑ｛...｝がＢに存在する場合（Ｓ４７で「Ｙｅｓ」）、制約抽出部２３は、Ｔｉを含むｑ’｛...｝∈Ｂに対し、Ｒと｛ｑ’｛...｝＜ｑ｛Ｔ１，...，Ｔｎ｝｝}との和集合をＲに格納する（Ｓ４９）。
【０１４６】
更新クエリ列が空列になるまで、Ｓ４３〜Ｓ４９を繰り返す。更新クエリ列が空になった場合（Ｓ４２で「Ｙｅｓ」）、本フローは終了する。
【０１４７】
図２４は、本実施形態（実施例１）における、同じ表に対する参照クエリと更新クエリの間の半順序関係抽出フロー（Ｓ３２）を示す。図２５は、本実施形態（実施例１）における、同じ表に対する参照クエリと更新クエリの間の半順序関係の設定例を示す。以下では、図２５を用いて、図２４について説明する。
【０１４８】
制約抽出部２３は、順に発行されたクエリのリストを、図２５（Ａ）に示すようにｒｅａｄ／ｗｒｉｔｅで分類する。それから、制約抽出部２３は、図２５（Ｂ）で示すように、その分類したクエリを、連続するｒｅａｄのリストとｗｒｉｔｅ単独要素からなるリストとに区分けする（Ｓ５１）。
【０１４９】
制約抽出部２３は、図２５（Ｃ）に示すように、ｒｅａｄ／ｗｒｉｔｅリストの先頭から順に、次の要素のｒｅａｄ／ｗｒｉｔｅリストの要素との間に順序関係を設定する（Ｓ５２）。
【０１５０】
図２６は、本実施形態（実施例１）における、順序関係によるデータの分割について説明するための図である。制約抽出部２３は、抽出して得られる半順序制約から、半順序関係で到達できるもの同士で半順序関係を分割する。
【０１５１】
例えば、図２６（Ａ）に示すような半順序制約が最終的に得られたとして、制約抽出部２３は、図２６（Ｂ）に示すように半順序関係のあるもの同士で分割して、半順序制約を分割する。Ｈ７，Ｈ８はＨ１，...，Ｈ６のいずれとも判順序関係がなく、独立に実行可能することができる。
【０１５２】
（実施例２）
実施例２では、抽出して得られる半順序関係を満たすよう、リクエスト発行時刻を変更した再現を行う。これにより、発行時刻を早めることによるテスト時間短縮を図ることができる。
【０１５３】
図２７は、本実施形態（実施例２）における、リクエスト発行タイミングの決定フローを示す。図２７のフローは、図４の詳細フローであり、図１８に対応するフローである。
【０１５４】
再現時刻決定部２４は、先行するリクエストを保存する集合Ｂを空集合（φ）で初期化する（Ｓ６１）。
【０１５５】
制約抽出部２３は、リクエスト列が空か否かを判定する（Ｓ６２）。ここで、リクエスト列は、図１８の場合、ｒｅｑｕｅｓｔ １（Ｈ１）、ｒｅｑｕｅｓｔ ２（Ｈ２）、ｒｅｑｕｅｓｔ ３（Ｈ３）、ｒｅｑｕｅｓｔ ４（Ｈ４）である。
【０１５６】
リクエスト列が空でない場合（Ｓ６２で「Ｎｏ」）、制約抽出部２３は、リクエスト列から先頭のリクエストＨを取り出す（Ｓ６３）。Ｂに含まれる要素Ｈ’のうちＨ’≦ＨなるＨ’がある場合（Ｓ６４で「Ｙｅｓ」）、制約抽出部２３は、Ｈ’≦Ｈなる全てのＨ’のｒｅｓｐｏｎｓｅより後というタイミングにＨのタイミングを設定する（Ｓ６５）。
【０１５７】
Ｂに含まれる要素Ｈ’のうちＨ’≦ＨなるＨ’がない場合（Ｓ６４で「Ｎｏ」）、制約抽出部２３は、可能な限り（例えば先頭、リクエストの順序を保存する限り等）早いタイミングにＨのタイミングを設定する（Ｓ６６）。
【０１５８】
Ｓ６５またはＳ６６の処理後、Ｂと｛Ｈ｝との和集合をＢに格納する（Ｓ６７）。
リクエスト列が空になるまで、Ｓ６３〜Ｓ６７を繰り返す。リクエスト列が空になった場合（Ｓ６２で「Ｙｅｓ」）、本フローは終了する。
【０１５９】
これにより、並列処理を実行することができるので、アクセス再現装置の負荷の軽減を図ることができる。また、必要な部分だけ実行することができるので、不要なテストの削除を図ることができる。
【０１６０】
図２８は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ４０は、タイミング決定装置１１として機能する。コンピュータ４０は、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、読み取り装置４８、バス８９、出力機器５１、入力機器５２によって構成されている。
【０１６１】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス４９には、ＣＰＵ４２、ＲＯＭ４３、ＲＡＭ４６、通信Ｉ／Ｆ４４、記憶装置４７、出力Ｉ／Ｆ４１、入力Ｉ／Ｆ４５、及び読み取り装置４８が接続されている。読み取り装置４８は、可搬型記録媒体を読み出す装置である。出力機器５１は、出力Ｉ／Ｆ４１に接続されている。入力機器５２は、入力Ｉ／Ｆ４５に接続にされている。
【０１６２】
記憶装置４７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置４７またはＲＯＭ４３には、ＣＰＵ４２を制約抽出部２３、及び再現時刻決定部２４として機能させるプログラムが格納されている。また、記憶装置４７またはＲＯＭ４３には、記憶装置５より読み出したキャプチャデータ２５、または再現時刻情報２６が格納されている。ＲＡＭ４６には、制約情報が一時的に記憶される。
【０１６３】
ＣＰＵ４２は、記憶装置４７等に格納した上記実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
【０１６４】
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク５０、および通信Ｉ／Ｆ４４を介して、例えば記憶装置４７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置４８にセットされて、ＣＰＵ４２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置４８によって読み取られる。
【０１６５】
また、入力機器５２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器５１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク５０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１６６】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１６７】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータに、
受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得し、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出し、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する、
処理を実行させることを特徴とする送信順序決定プログラム。
（付記２）
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域の更新を要求する要求情報同士から、前記順序関係を抽出する
ことを特徴とする付記１に記載の送信順序決定プログラム。
（付記３）
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域からの読み出しを要求する読み出し要求情報のうち、連続する読み出し要求情報の間では順序を設定しない
ことを特徴とする付記１または２に記載の送信順序決定プログラム。
（付記４）
前記送信順序の決定において、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有する場合、各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組が前記順序関係を有する場合、第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組同士を比較し、比較した第（ｎ−ｉ＋１）階層の組のうち、第３の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以前に送信または受信されており、第５の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以降に送信または受信されている場合、第（ｎ−ｉ）階層の比較する組の順序関係を維持する
ことを特徴とする付記１〜３のうちいずれか１項に記載の送信順序決定プログラム。
（付記５）
前記コンピュータに、さらに、
決定した前記送信順序に基づいて、前記情報処理システムに対する前記要求情報を送信するタイミング情報を出力する
処理を実行させることを特徴とする付記１〜４のうちいずれか１項に記載の送信順序決定プログラム。
（付記６）
受信した要求情報に応じて第ｎ（ｎ≧２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得する取得部と、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出する抽出部と、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する決定部と、
を備えることを特徴とする送信順序決定装置。
（付記７）
前記抽出部は、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域の更新を要求する要求情報同士から、前記順序関係を抽出する
ことを特徴とする付記６に記載の送信順序決定装置。
（付記８）
前記抽出部は、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域からの読み出しを要求する読み出し要求情報のうち、連続する読み出し要求情報の間では順序を設定しない
ことを特徴とする付記６または７に記載の送信順序決定装置。
（付記９）
前記決定部は、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有する場合、各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組が前記順序関係を有する場合、第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組同士を比較し、比較した第（ｎ−ｉ＋１）階層の組のうち、第３の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以前に送信または受信されており、第５の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以降に送信または受信されている場合、第（ｎ−ｉ）階層の比較する組の順序関係を維持する
ことを特徴とする付記６〜８のうちいずれか１項に記載の送信順序決定装置。
（付記１０）
前記送信順序決定装置は、さらに、
決定した前記送信順序に基づいて、前記情報処理システムに対する前記要求情報を送信するタイミング情報を出力する出力部と、
を備えることを特徴とする付記６〜９のうちいずれか１項に記載の送信順序決定装置。
（付記１１）
コンピュータが、
受信した要求情報に応じて第ｎ（ｎ＞２）階層で行った処理の結果を提供する複数階層で構築される情報処理システムの階層間で送受信される通信情報を取得し、
取得した前記通信情報から階層毎の要求情報と該要求情報に対応する応答情報との組を識別して、階層毎に、該組同士を比較して、第１の組の応答情報の取得後に、第２の組の要求情報が送信されている関係にある順序関係を抽出し、
第ｎ階層から第１階層まで、順次、第（ｎ−ｉ）（ｉ＝１，２，・・・，ｎ−１）階層の各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に基づいて、第（ｎ−ｉ）階層の順序関係を抽出し、抽出された該順序関係に基づいて、前記情報処理システムに対する前記要求情報の送信順序を決定する、
ことを特徴とする送信順序決定方法。
（付記１２）
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域の更新を要求する要求情報同士から、前記順序関係を抽出する
ことを特徴とする付記１１に記載の送信順序決定方法。
（付記１３）
前記順序関係の抽出において、前記ｎ階層がデータを格納する階層である場合、該ｎ階層の同一のデータ領域からの読み出しを要求する読み出し要求情報のうち、連続する読み出し要求情報の間では順序を設定しない
ことを特徴とする付記１１または１２に記載の送信順序決定方法。
（付記１４）
前記送信順序の決定において、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有する場合、各組に対応する第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組が前記順序関係を有する場合、第（ｎ−ｉ＋１）階層の組同士の前記順序関係に応じて、第（ｎ−ｉ）階層の前記組間の前記順序関係を抽出し、
第（ｎ−ｉ）階層において、比較する組が前記順序関係を有しない場合であって、各組に対応する第（ｎ−ｉ＋１）階層の組同士を比較し、比較した第（ｎ−ｉ＋１）階層の組のうち、第３の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以前に送信または受信されており、第５の組の要求情報と応答情報のいずれかが第４の組の要求情報と応答情報のいずれかの送信または受信以降に送信または受信されている場合、第（ｎ−ｉ）階層の比較する組の順序関係を維持する
ことを特徴とする付記１１〜１３のうちいずれか１項に記載の送信順序決定方法。
（付記１５）
前記コンピュータは、さらに、
決定した前記送信順序に基づいて、前記情報処理システムに対する前記要求情報を送信するタイミング情報を出力する
ことを特徴とする付記１１〜１４のうちいずれか１項に記載の送信順序決定方法。
【符号の説明】
【０１６８】
５      記憶装置
６      アクセス再現装置
１１    送信順序決定装置
１２    取得部
１３    抽出部
１４    決定部
１５    出力部
２１    タイミング決定装置
２２    制御部
２３    制約抽出部
２４    再現時刻決定部
２５    キャプチャデータ
２６    再現時刻情報
【図２】
2015215827.tif 000003
【図３】
2015215827.tif 000004
【図４】
2015215827.tif 000005
【図５】
2015215827.tif 000006
【図６】
2015215827.tif 000007
【図８】
2015215827.tif 000008
【図９】
2015215827.tif 000009
【図１０】
2015215827.tif 000010
【図１１】
2015215827.tif 000011
【図１２】
2015215827.tif 000012
【図１３】
2015215827.tif 000013
【図１４】
2015215827.tif 000014
【図１５】
2015215827.tif 000015
【図１６】
2015215827.tif 000016
【図１７】
2015215827.tif 000017
【図１８】
2015215827.tif 000018
【図１９】
2015215827.tif 000019
【図２０】
2015215827.tif 000020
【図２１】
2015215827.tif 000021
【図２２】
2015215827.tif 000022
【図２３】
2015215827.tif 000023
【図２４】
2015215827.tif 000024
【図２５】
2015215827.tif 000025
【図２６】
2015215827.tif 000026
【図２７】
2015215827.tif 000027
【図２８】
2015215827.tif 000028
【図１】
2015215827.tif 000029
【図７】
2015215827.tif 000030