(57)【要約】【課題】本番環境と同様にディスク内の全てのデータについてデータの更新も含めた動作の検証を、本番環境との並行して行うことができ、かつ、コストのかからない検証環境を提供すること。【解決手段】本番機１０には、本番機アプリケーション１１、本番用ディスク１２、本番側エージェント１３が含まれる。検証機２０には、被検証アプリケーション２１ａを実行する検証用仮想マシン２１と、検証用ディスク２２と、検証側エージェント２３とが含まれる。検証用仮想マシン２１がディスクからデータを読み込む場合は、ディスクの該当領域に更新がない場合には本番用ディスク１２から読み込み、更新がある場合には検証用ディスクから読み込む。書き込みはいずれも検証用ディスクに対して実行されるが、更新がない場合には新たに領域を確保してデータを追加し、更新がある場合には既存の領域のデータを更新する。【選択図】  図９
2007272579.tif 000002
【特許請求の範囲】
【請求項１】
実際の業務で運用される本番環境を模して構築された検証環境でソフトウェアの動作を検証するソフトウェア検証方法において、
前記検証環境内で、被検証ソフトウェアを実行するための検証用仮想マシンを前記本番環境内の本番用ディスクから起動させ、
前記本番環境の運用で本番用ディスクへの情報の書き込みが要求された場合には、書き込み対象領域が前記検証環境内の検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで前記検証用ディスクに待避させた後、前記本番用ディスクへの書き込みを実行させ、
前記検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、前記検証用ディスクに該当領域が存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが読み込みである場合には前記本番用ディスクからの読み込みを実行させ、アクセスが書き込みである場合には前記検証用ディスクに該当領域を確保して書き込みを実行させることを特徴とするソフトウェア検証方法。
【請求項２】
前記検証用仮想マシンが検証側エージェントを介してネットワークに接続され、
前記検証側エージェントは、情報を送信する場合には、送信先がローカル接続された他の検証用仮想マシンであれば送信元アドレスを本番環境のアドレスとしたまま当該他の検証用仮想マシンの検証側エージェントに情報を送信し、送信先がローカル接続された他の検証用仮想マシンでなければ送信元アドレスを前記検証用仮想マシンのアドレスに書き換えて情報を送信先に送信し、
情報を受信する場合には、送信元がローカル接続された他の検証用仮想マシンであれば送信先アドレスを本番環境のアドレスとしたまま前記検証用仮想マシンにより受信させ、送信元がローカル接続された他の検証用仮想マシンでなければ送信先アドレスを本番環境のアドレスに書き換えて前記検証用仮想マシンにより受信させることを特徴とする請求項１に記載のソフトウェア検証方法。
【請求項３】
前記本番環境と前記検証環境とにそれぞれ前記本番用ディスクの領域に対応したセルを持つ管理テーブルが備えられ、前記本番環境の管理テーブルには、前記本番用ディスクへの書き込みが実行された領域に対応するセルに更新済を示すフラグを立て、前記検証環境の管理テーブルには、前記本番用ディスクから待避された領域及び前記検証用仮想マシンにより書き込みが実行された領域に対応するセルに更新済を示すフラグを立て、前記検証用仮想マシンがディスクからの読み込みを要求した際に、前記検証環境及び前記本番環境の管理テーブルの双方で未アクセスと記録されている場合にのみ前記本番用ディスクから情報を読み込むようにしたことを特徴とする請求項１または２に記載のソフトウェア検証方法。
【請求項４】
実際の業務で運用される本番環境を模して構築された検証環境でソフトウェアの動作を検証するソフトウェア検証システムにおいて、
前記検証環境内で起動され、被検証ソフトウェアを実行するための検証用仮想マシンと、
前記検証環境内に配置され、前記検証用仮想マシンと外部資源との中継手段となる検証側エージェントと、
前記本番環境内に配置され、前記検証側エージェントと前記本番環境の資源との中継手段となる本番側エージェントとを備え、
前記検証側エージェントは、前記検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、前記検証環境内の検証用ディスクに該当領域が存在するか否かを判断し、存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが書き込みである場合には前記検証用ディスクに該当領域を確保して書き込みを実行させ、アクセスが読み込みである場合には前記本番用ディスクからの読み込みを前記本番側エージェントに要求して前記本番側エージェントから送られた情報を前記検証用仮想マシンに送り、
前記本番側エージェントは、前記検証側エージェントから前記本番用ディスクへの読み込み要求があると、前記本番環境内の本番用ディスクの該当領域から読み込んだ情報を前記検証側エージェントに送り、前記本番環境の運用で前記本番用ディスクへの情報の書き込みが要求されると、書き込み対象領域が前記検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで前記検証側エージェントに送り、前記検証用ディスクに待避させた後、前記本番用ディスクへの書き込みを実行させることを特徴とするソフトウェア検証システム。
【請求項５】
前記検証用仮想マシンが前記検証側エージェントを介してネットワークに接続され、
前記検証側エージェントは、情報を送信する場合には、送信先がローカル接続された他の検証用仮想マシンであれば送信元アドレスを本番環境のアドレスとしたまま当該他の検証用仮想マシンの検証側エージェントに情報を送信し、送信先がローカル接続された他の検証用仮想マシンでなければ送信元アドレスを前記検証用仮想マシンのアドレスに書き換えて情報を送信先に送信し、
情報を受信する場合には、送信元がローカル接続された他の検証用仮想マシンであれば送信先アドレスを本番環境のアドレスとしたまま前記検証用仮想マシンにより受信させ、送信元がローカル接続された他の検証用仮想マシンでなければ送信先アドレスを本番環境のアドレスに書き換えて前記検証用仮想マシンにより受信させることを特徴とする請求項５に記載のソフトウェア検証システム。
【請求項６】
実際の業務で運用される本番環境を模して構築された、検証ソフトウェアを実行するための検証用仮想マシンを動作させるコンピュータに、
前記本番環境から、本番または検証環境で更新済みでない本番用ディスク領域に対する書き込み要求に基づき送信されてくるデータに基づき、該当データ領域が検証用ディスクに存在しない場合に、該検証用ディスクに該当領域を確保して該データの書込みを実行させ、
前記検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、前記検証用ディスクに該当領域が存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが読み込みである場合には前記本番環境に本番用ディスクからの読み込みを依頼して本番環境または検証環境で更新済みでないときに送信されてくるデータを該仮想マシンに返し、アクセスが書き込みである場合には前記検証用ディスクに該当領域を確保して書き込みを実行させる
ことを特徴とする検証環境エージェントプログラム。
【請求項７】
コンピュータに、
ディスクへの情報の書き込みが要求された場合には、書き込み対象領域が、自環境を模して構築された検証環境内の検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで前記検証環境に送信した後、該ディスクへの書き込みを実行させ、
前記検証環境から、検証環境用ディスク上の情報が存在しない領域への読み込み要求に応じ送信されてくる、ディスクからのデータの読み込み依頼に基づき、該当データを読み込み、該当データ領域は本番または検証環境で更新済みでない場合に、該当データを該検証環境に送信させる
ことを特徴とする本番環境エージェントプログラム。
【請求項８】
実際の業務で運用される本番環境を模して構築された、検証ソフトウェアを実行するための検証用仮想マシンを動作させるコンピュータに、
前記本番環境から、本番または検証環境で更新済みでない本番用ディスク領域に対する書き込み要求に基づき送信されてくるデータに基づき、該当データ領域が検証用ディスクに存在しない場合に、該検証用ディスクに該当領域を確保して該データの書き込みを実行させ、
前記検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、前記検証用ディスクに該当領域が存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが読み込みである場合には前記本番環境に本番用ディスクからの読み込みを依頼して本番環境または検証環境で更新済みでないときに送信されてくるデータを該仮想マシンに返し、アクセスが書き込みである場合には前記検証用ディスクに該当領域を確保して書き込みを実行させ、
前記本番環境のコンピュータに、
ディスクへの情報の書き込みが要求された場合には、書き込み対象領域が、自環境を模して構築された検証環境内の検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで前記検証環境に送信した後、該ディスクへの書き込みを実行させ、
前記検証環境から、検証環境用ディスク上の情報が存在しない領域への読み込み要求に応じ送信されてくる、ディスクからのデータの読み込み依頼に基づき、該当データを読み込み、該当データ領域は本番または検証環境で更新済みでない場合に、該当データを該検証環境に送信させる
ことを特徴とするソフトウェア検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で稼働するソフトウェアの動作を検証する際に、実際の業務で運用される本番環境の動作を妨げずにソフトウェアの動作を検証できるように、この本番環境を模して構築された検証環境上で検証するためのソフトウェア検証方法、システム及びプログラムに関する。
【背景技術】
【０００２】
アプリケーションやミドルウェアを追加、更新する際には、これらのソフトウェアがコンピュータ上で問題なく作動するか否か検証する必要がある。このような検証を行うための方法は、従来から種々提案されている。
【０００３】
例えば、特許文献１には、単一の中央処理装置の下に本番用のファイルと検証用のファイルを用意し、検証のためのファイルアクセス制御機能をオペレーティングシステム(ＯＳ)の機能の一部として提供し、検証時には本番用のファイルを変更せずに、検証用のファイルに更新情報を蓄えるようにした検証装置が開示されている。
【０００４】
また、特許文献２には、同一コンピュータ上に本番環境と検証環境とを構築し、かつ、資源管理部により端末側からは共通の論理資源名でアクセスされた資源を本番環境と検証環境とで異なる物理資源名に変換してアクセスする資源を切り替えるようにし、資源管理部における物理資源名の変更のみにより、検証環境から本番環境への移行を可能にした環境空間での連続運転方法が開示されている。
【０００５】
さらに、特許文献３には、本番環境と開発環境とのそれぞれにコンピュータを用意し、これらをネットワークにより接続したシステムにおいて、本番環境のデータベースに保護スキーマを定義しておき、開発環境から本番環境のデータベースにデータの要求があった場合に、保護スキーマに従って個人情報や営業秘密情報等を保護した検証用データを提供する方法が開示されている。
【０００６】
【特許文献１】特開平５−４０６５９号公報
【特許文献２】特開平８−２３５０１１号公報
【特許文献１】特開２００５−１６５７３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の装置のように、検証モードと本番モードを切り替えてファイルへのアクセス方法を切り替える方式では、本番環境の稼働と並行して検証を行うことができないという問題がある。また、特許文献２の方法では、同じ論理資源に対して本番環境と検証環境とで対応する物理資源をそれぞれ同じだけ用意しなければならず、本番環境のシステムが大規模になるほど検証環境を構築するコストが高くなるという問題がある。さらに、特許文献３の方法では、データベースに含まれるデータのみが検証の対象となり、ディスクに含まれるデータベース以外のデータを検証環境で利用することができず、かつ、提供されたデータを更新する動作の検証ができないという問題がある。
【０００８】
本発明は、上記の問題点に鑑みてなされたものであり、その課題は、本番環境と同様にディスク内の全てのデータについてデータの更新も含めた動作の検証を、本番環境の稼働と並行して行うことができ、かつ、コストのかからない検証環境を提供できる方法、システム及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかるソフトウェア検証方法は、実際の業務で運用される本番環境を模して構築された検証環境でソフトウェアの動作を検証する方法において、検証環境内で、被検証ソフトウェアを実行するための検証用仮想マシンを本番環境内の本番用ディスクから起動させ、本番環境の運用で本番用ディスクへの情報の書き込みが要求された場合には、書き込み対象領域が検証環境内の検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで検証用ディスクに待避させた後、本番用ディスクへの書き込みを実行させ、検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、検証用ディスクに該当領域が存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが読み込みである場合には本番用ディスクからの読み込みを実行させ、アクセスが書き込みである場合には検証用ディスクに該当領域を確保して書き込みを実行させることを特徴とする。
【００１０】
また、検証用仮想マシンが検証側エージェントを介してネットワークに接続されている場合には、検証側エージェントは、情報を送信する場合には、送信先がローカル接続された他の検証用仮想マシンであれば送信元アドレスを本番環境のアドレスとしたまま当該他の検証用仮想マシンの検証側エージェントに情報を送信し、送信先がローカル接続された他の検証用仮想マシンでなければ送信元アドレスを検証用仮想マシンのアドレスに書き換えて情報を送信先に送信し、情報を受信する場合には、送信元がローカル接続された他の検証用仮想マシンであれば送信先アドレスを本番環境のアドレスとしたまま検証用仮想マシンにより受信させ、送信元がローカル接続された検証用仮想マシンでなければ送信先アドレスを本番環境のアドレスに書き換えて検証用仮想マシンにより受信させることが望ましい。
【００１１】
さらに、本番環境と検証環境とにそれぞれ本番用ディスクの領域に対応したセルを持つ管理テーブルが備えられ、本番環境の管理テーブルには、本番用ディスクへの書き込みが実行された領域に対応するセルに更新済を示すフラグを立て、検証環境の管理テーブルには、本番用ディスクから待避された領域及び検証用仮想マシンにより書き込みが実行された領域に対応するセルに更新済を示すフラグを立て、検証用仮想マシンがディスクからの読み込みを要求した際に、検証環境及び本番環境の管理テーブルの双方で未アクセスと記録されている場合にのみ本番用ディスクから情報を読み込むようにすることが望ましい。
【００１２】
一方、本発明のソフトウェア検証システムは、実際の業務で運用される本番環境を模して構築された検証環境でソフトウェアの動作を検証するシステムにおいて、検証環境内で起動され、被検証ソフトウェアを実行するための検証用仮想マシンと、検証環境内に配置され、検証用仮想マシンと外部資源との中継手段となる検証側エージェントと、本番環境内に配置され、検証側エージェントと本番環境の資源との中継手段となる本番側エージェントとを備え、検証側エージェントは、検証用仮想マシンがディスクの所定領域へのアクセスを要求した際、検証環境内の検証用ディスクに該当領域が存在するか否かを判断し、存在する場合には、当該領域へのアクセスを実行させ、該当領域が存在しない場合には、アクセスが書き込みである場合には検証用ディスクに該当領域を確保して書き込みを実行させ、アクセスが読み込みである場合には本番用ディスクからの読み込みを本番側エージェントに要求して本番側エージェントから送られた情報を検証用仮想マシンに送り、本番側エージェントは、検証側エージェントから本番用ディスクへの読み込み要求があると、本番環境内の本番用ディスクの該当領域から読み込んだ情報を検証側エージェントに送り、本番環境の運用で本番用ディスクへの情報の書き込みが要求されると、書き込み対象領域が検証用ディスクに待避されているか否かを確認し、待避されていない場合には、更新前の情報を読み込んで検証側エージェントに送り、検証用ディスクに待避させた後、本番用ディスクへの書き込みを実行させることを特徴とする。
【００１３】
また、検証用仮想マシンが検証側エージェントを介してネットワークに接続される場合には、検証側エージェントは、情報を送信する場合には、送信先がローカル接続された他の検証用仮想マシンであれば送信元アドレスを本番環境のアドレスとしたまま当該他の検証用仮想マシンの検証側エージェントに情報を送信し、送信先がローカル接続された他の検証用仮想マシンでなければ送信元アドレスを検証用仮想マシンのアドレスに書き換えて情報を送信先に送信し、情報を受信する場合には、送信元がローカル接続された他の検証用仮想マシンであれば送信先アドレスを本番環境のアドレスとしたまま検証用仮想マシンにより受信させ、送信元がローカル接続された検証用仮想マシンでなければ送信先アドレスを本番環境のアドレスに書き換えて検証用仮想マシンにより受信させることが望ましい。
【発明の効果】
【００１４】
以上のように構成された本発明のソフトウェア検証方法／システムによれば、検証用ディスクに本番用ディスクの内容を予めコピーしなくとも、検証用仮想マシンの起動時における本番用ディスクのスナップショットイメージを仮想ディスクとして検証用に利用することできる。すなわち、検証用仮想マシンは、ディスクからの読み込みを要求する場合には、基本的に本番環境から情報を読み込み、書き込みを要求する場合には検証用ディスクに書き込む。そして、本番環境でディスクへの書き込み(追加、更新)が要求されると、変更前の情報を検証用ディスクに待避させることにより、起動時のスナップショットイメージを維持するようにしている。このため、検証用仮想マシンから見ると、情報の整合がとれている時点のスナップショットイメージに基づいて、これを仮想ディスク上で自由に更新しながらソフトウェアの検証を行うことができる。
【００１５】
したがって、本番環境と同一の検証環境を短時間で自動的に準備することができ、かつ、準備のために本番環境を停止させる必要がない。また、本番環境と検証環境とは互いのディスクイメージに影響を与えずに同時に運用することができる。さらに、検証用ディスクは、本番用ディスクに格納された情報の一部のみを格納すれば足りるため、容量の小さい安価なディスク装置を利用することができる。
【００１６】
また、検証側エージェントを用いて本番環境と検証環境とのアドレス変換をすることにより、本番環境の属性(ＩＰアドレス等)を引き継いで起動した検証用仮想マシンと、本番環境に含まれる装置とが同一のネットワークアドレスを持つことによるネットワーク通信の衝突を避けることができる。
【００１７】
さらに、本番環境、検証環境のそれぞれに本番用ディスクの更新状態を表す管理テーブルを備えることにより、両環境間の通信回数を削減することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明にかかるソフトウェア検証方法及びソフトウェア検証システムの実施形態を図面に基づいて説明する。最初に、図１に基づいて本実施形態のソフトウェア検証システムが適用されるコンピュータシステムの概要を説明する。
【００１９】
図１に示されるように、このコンピュータシステムは、通信回線Ｎを介して互いに接続された本番機１０と検証機２０とから構成されている。本番機１０は、実際の業務で運用される本番環境を提供するコンピュータであり、検証機２０は、本番環境を模して構築された検証環境を提供する本番機１０とはハードウェア構成が異なるコンピュータである。本番機１０には、この本番機１０の上で実行される本番機アプリケーション１１、ソフトウェアやデータを格納する本番用ディスク１２、そして、検証機２０と本番環境の資源との中継手段となる本番側エージェント１３が含まれている。
【００２０】
検証機２０には、被検証アプリケーション２１ａを実行するための検証用仮想マシン２１と、検証用ディスク２２と、検証用仮想マシン２１と外部資源との中継手段となる検証側エージェント２３とが含まれている。検証用仮想マシン２１は、被検証アプリケーション２１ａから見たときに本番機１０と同一構成となるよう見せかけたマシンであり、本番側エージェント１３及び検証側エージェント２３は、検証用仮想マシン２１が本番機１０であるかのように機能できるよう入出力先を切り替える機能を有する。
【００２１】
次に、本番側エージェント１３と検証側エージェント２３との機能について説明する。検証側エージェント２３は、検証が開始されると、被検証アプリケーション２１ａを実行するための検証用仮想マシン２１を本番環境内の本番用ディスク１２から起動させる。また、検証側エージェント２３は、検証用仮想マシン２１がディスクの所定領域へのアクセス(読み込み／書き込み)を要求した際、検証環境内の検証用ディスク２２に該当領域が存在するか否かを判断する。そして、検証用ディスク２２に該当領域が存在する場合には、当該領域へのアクセスを実行させる。一方、検証用ディスク２２に該当領域が存在しない場合には、アクセスが書き込みである場合には検証用ディスク２２に該当領域を確保して書き込みを実行させ、アクセスが読み込みである場合には本番用ディスク１２からの読み込みを本番側エージェント１３に要求する。そして、本番側エージェント１３から情報が送られると、検証側エージェント２３は送られた情報を検証用仮想マシン２１に送る。なお、情報にはデータの他、アプリケーションファイル等も含まれるが、以下の説明ではデータを例にして説明する。
【００２２】
本番側エージェント１３は、検証側エージェント２３から本番用ディスク１２への読み込み要求があると、本番環境内の本番用ディスク１２の該当領域から読み込んだデータを検証側エージェント２３に送る。また、本番環境の運用で本番機アプリケーション１１から本番用ディスク１２へのデータの書き込みが要求されると、本番側エージェント１３は、書き込み対象領域が検証用ディスク２２に待避されているか否かを確認し、待避されていない場合には、更新前のデータを読み込んで検証側エージェント２３に送り、検証用ディスク２２に待避させた後、本番用ディスクへの書き込みを実行させる。
【００２３】
本番側エージェント１３及び検証側エージェント２３には、図２(A)(B)に示すように、本番用ディスク１２の領域に対応したセルを持つ本番側管理テーブル及び検証側管理テーブルがそれぞれ備えられている。なお、この例では説明を簡単にするため、全体を１２セルで示しているが、実際には本番用ディスク１２の容量に応じて多数のセルを有する。本番側管理テーブルの各セルには、フラグ「Ｉ」または「Ｕ」が設定される。また、検証側管理テーブルの各セルには、フラグ「Ｉ」、「Ｕ」または数字が設定される。フラグ「Ｉ」は、これが表示されたセルに対応する領域が、検証を開始した時点を基準にして更新されていないこと、「Ｕ」は、これが更新され、あるいは更新中であること、そして、数字は、本番用ディスク１２の更新された領域に対応する情報が格納された検証用ディスクの領域を示す。
【００２４】
次に、各エージェントの上記の機能による検証用ディスク２２の内容の変化と、各管理テーブルの内容の変化について説明する。検証用仮想マシン２１が起動した時点では、検証用ディスク２２は空の状態である。また、管理テーブルは、図２に示すように両者とも全てのセルにフラグ「Ｉ」が立てられている。本番環境で本番機ディスク１２の所定の領域の更新が要求されると、図３(A)に示すように、本番側管理テーブルでは該当するセルＣ11にフラグ「Ｕ」が立てられ、この領域のデータが更新されたこと、そして、待避された更新前のデータが検証側エージェント２３に送られる。この時点では、検証側管理テーブルの各セルは図３(B)に示すように、未だ変更されていない。
【００２５】
検証側エージェント２３は、上記のデータ更新情報、及び更新前のデータを受け取ると、図４(B)に示すように、該当するセルＣ21のフラグを「Ｕ」に変更し、データを検証用ディスク２２に書き込む。書き込んだ後、検証側エージェント２３は、図５(B)に示すように、このデータを書き込んだ検証用ディスクの領域番号、この例では「01」にセルＣ11の内容を変更する。この間、本番側管理テーブルの内容は、図４(A)、図５(A)に示すように変更されない。
【００２６】
このようにして、本番用ディスク１２の更新された領域は、本番側管理テーブルのフラグＵが立てられたセルにより表され、検証用ディスク２２には、この更新された領域に記録されていた更新前のデータが待避されて格納される。処理が進むと、両管理テーブルの内容は、例えば図６(A)、(B)に示すようなものとなる。この例では、管理テーブルのセルＣ22、Ｃ23で示される本番用ディスク１２の２つの領域が本番環境内で更に変更されたことを本番側エージェント１３が把握しており、検証側エージェント２３は、このうちセルC23に対応する領域に格納されたデータは検証用ディスク２２の「02」の領域に書き込まれたこと、セルＣ22に対応する領域のデータは更新中であることが示されている。検証用ディスク２２には、このように本番側で変更された領域と、検証用仮想マシン２１により書き込み(追加、更新)された領域とにデータが格納され、他の領域は空のままである。
【００２７】
次に、図７〜９に示すフローチャートにしたがって、上記のソフトウェア検証システムの作用について説明する。これらのフローチャートは、本番側エージェント１３と検証側エージェント２３との作用に分けて記載されている。
【００２８】
図７の検証開始処理では、検証を開始すると、検証側エージェント２３は、本番側エージェント１３に検証環境の起動開始を通知し(S01)、これを受けた本番側エージェント１３は、本番環境の構成を検証側エージェント２３に通知する(S02)。検証側エージェント２３は、本番環境を模して検証用仮想マシン２１の構成を設定する(S03)。この設定の終了を受けて、本番側エージェント１３は、本番環境におけるディスクアクセスの監視を開始し(S04)、ディスクの更新要求があると、図８の更新処理を実行する。一方、検証側エージェント２３は、検証用仮想マシン２１からのディスクアクセスの要求の監視を開始させ(S05)、検証用仮想マシン２１を起動し(S06)、ディスクアクセスの要求があると、図９のディスクアクセス処理を実行する。
【００２９】
図８の本番更新処理では、本番環境の運用で本番機アプリケーション１１によるディスクアクセスがあると、本番側エージェント１３は、このアクセスが読み込み要求か否かを判断する(S11)。読み込み要求の場合には、S12-14をスキップしてS15に進み、本番用ディスク１２に対して読み込みを実行し(S15)、読み込み結果を本番機アプリケーション１１に返す(S16)。読み込み要求でない場合、すなわち書き込み要求である場合には、本番側エージェント１３は、書き込みの対象となるデータ領域が本番または検証環境で更新済か否かを判断する(S12)。この判断は、本番側管理テーブル及び検証側管理テーブルの該当セルのフラグをチェックすることにより行われる。フラグが「Ｉ」であれば、「Ｕ」をセットした上でNoに分岐し、フラグが「Ｕ」であれば、Yesに分岐する。
【００３０】
更新済でない場合には、本番側エージェント１３は、本番用ディスク１２から該当データを読み込み(S13)、検証側エージェント２３に該当データを送信する(S14)。検証側エージェント２３は、送られたデータに基づいて、該当データ領域が検証用ディスク２２に存在するか否かを判断する(S17)。この判断は、検証側管理テーブルの該当セルのフラグをチェックすることにより行われる。フラグが「Ｉ」であれば、「Ｕ」にセットしてNoに分岐し、「Ｕ」または数字であればYesに分岐する。
【００３１】
該当データ領域が検証用ディスク２２に存在しない場合には、検証側エージェント２３は、検証用ディスク２２に新たなデータ領域を確保し(S18)、確保したデータ領域にデータを書き込む(S19)。なお、S18では、検証用ディスク２２から未使用のデータブロックを取得し、取得したデータブロックのブロック番号(領域番号)を検証側管理テーブルの該当するセルにセットする。また、S19では、検証側管理テーブルを参照して該当するデータ領域のブロック番号を取得し、このブロック番号で示された領域に対してデータを書き込む。一方、該当データ領域が検証用ディスク２２に存在する場合には、S18,S19をスキップして、再びアクセスがあるまで待機する。
【００３２】
図９のディスクアクセス処理は、検証用仮想マシン２１からディスクへのアクセス要求があると実行される。ここではまず、検証側エージェント２３が、アクセス要求されたデータ領域が検証用ディスク２２に存在するか否かを判断する(S21)。この判断は、検証側管理テーブルの該当セルのフラグをチェックすることにより行われる。フラグが「Ｉ」であればNoに分岐し、「Ｕ」または数字であればYesに分岐する。
【００３３】
該当データ領域が検証用ディスク２２に存在しない場合には、検証側エージェント２３は、アクセス要求が読み込み要求か否かを判断する(S22)。ここでは、読み込みであればYesに分岐し、書き込みであれば、検証側エージェント２３は、検証側管理テーブルの該当セルのフラグを「Ｕ」に変更してNoに分岐する。読み込み要求である場合には、本番側エージェント１３に対して読み込み要求を発する(S23)。
【００３４】
本番側エージェント１３は、検証側エージェント２３から読み込み要求を受けると、本番用ディスク１２から該当データを読み込み(S24)、もう一度、該当データ領域が本番または検証環境で更新済であるか否かを確認する(S25)。この判断は、本番側管理テーブルの該当セルのフラグをチェックすることにより行われる。フラグが「Ｉ」であれば、Noに分岐し、フラグが「Ｕ」であれば、Yesに分岐する。なお、S25の判断は、S21で検証用ディスクに該当データ領域がないと判断された場合に行われるため、通常はNoとなるが、S21からS25までの僅かな時間内に並行処理されている本番更新処理によりテーブルが書き換えられる可能性があるため、ここで再度チェックするようにしている。該当データ領域が更新済でない場合には、本番側エージェント１３は、検証側エージェント２３にデータを送る(S26)。更新済であった場合には、本番側エージェント１３は本番用ディスク１２から読み込んだデータを送らずに検証側エージェント２３に処理を渡す。
【００３５】
一方、検証側エージェント２３は、該当データ領域が検証用ディスク２２に存在せず(S21, No)、ディスクアクセスが書き込み要求であった場合(S22, No)には、検証用ディスクに新たなデータ領域を確保し(S27)、確保された領域に対してデータを書き込み(追加、S28)、結果を検証用仮想マシン２１に返す(S29)。なお、S27では、検証用ディスク２２から未使用のデータブロックを取得し、取得したデータブロックのブロック番号(領域番号)を検証側管理テーブルの該当するセルにセットする。また、S28では、検証側管理テーブルを参照して該当するデータ領域のブロック番号を取得し、このブロック番号で示された領域に対してデータを書き込む。
【００３６】
また、検証側エージェント２３は、該当データ領域が検証用ディスク２２に存在する場合(S21, Yes)には、この領域に対してデータを書き込み(更新、S28)、アクセス結果を検証用仮想マシン２１に返す(S29)。なお、本番用ディスク１２からデータを読み込んだ場合、更新が実行されてS25の判断がYesとなった場合には、検証側エージェント２３は検証用ディスク２２の該当領域からデータを読み込ませ(S28)、これを検証用仮想マシン２１に送り、Noとなった場合には、本体側エージェント１３から送られたデータを検証用仮想マシン２１に送る。
【００３７】
このように、図９のディスクアクセス処理は、管理テーブルの更新の有無により、以下にまとめるように、読み込み、書き込みのそれぞれについて２通り、合計４通りの処理を実現している。すなわち、読み込みについては、更新がない場合には本番用ディスク１２から読み込み、更新がある場合には検証用ディスクから読み込む。書き込みはいずれも検証用ディスクに対して実行されるが、更新がない場合には新たに領域を確保してデータを追加し、更新がある場合には既存の領域のデータを更新する。
【００３８】
【表１】
2007272579.tif 000003
【００３９】
次に、上記のソフトウェア検証システムによりネットワーク通信を利用したソフトウェアを検証するための方法について説明する。検証環境は、本番環境の資源を使って起動されるため、ネットワークに接続される場合のネットワークアドレス(ＩＰアドレス)も本番環境のものと等しくなる。このため、何ら対策を講じないと、ネットワーク通信の際に衝突が生じる。そこで、本実施形態では、検証用仮想マシンを検証側エージェントを介してネットワークに接続する。
【００４０】
図１０は、本発明のソフトウェア検証システムのネットワーク接続を説明するための概略図である。ここでは、４つの本番環境A1, A2, A3, A4に対して２台の検証機C1, C2を設け、一方の検証機C1上に本番環境A1, A2に対応する検証用仮想マシンB1, B2を構築し、他方の検証機C2上に本番環境A3, A4に対応する検証用仮想マシンB3, B4を構築している。検証用仮想マシンB1, B2は、検証側エージェントD1を介してネットワークNに接続され、検証用仮想マシンB3, B4は、検証側エージェントD2を介してネットワークNに接続されている。なお、このネットワークには、外部資源Eが接続されている。
【００４１】
検証側エージェントD1, D2は、仮想マシン同士の通信の中継をすると共に、ネットワークを介した外部との通信については、許可された通信先についてはネットワークアドレスを変換して行わせ、許可されない通信先については、通信を遮断する。この処理の流れを図１１に示すフローチャートに基づいて説明する。
【００４２】
最初に検証側エージェントD1(D2)がデータを送信する場合について説明する。検証用仮想マシンからデータを送信する場合、検証側エージェントは、送信先が仮想マシンか否かを判断し(S31)、送信先が仮想マシンであれば、検証側エージェント内や検証側エージェント間の通信経路で通信が可能であるため、アドレスの変換をせずに、送信先の仮想マシンを管理する検証側エージェントにデータを送る(S35)。送信先が仮想マシンでない場合には、送信先への通信が許可されているか否かを判断する(S32)。許可されていない場合にはデータを送信せずに(S33)、次の通信要求があるまで待機する。送信先が仮想マシンでなく、かつ、送信が許可されている場合には、検証側エージェントは、送信元アドレスを本番環境アドレスとは異なる検証用仮想マシンのアドレスに書き替えてデータを送る(S34)。
【００４３】
一方、検証側エージェントがデータを受信する場合には、検証用エージェントは、送信元が仮想マシンであるか否かを判断する(S41)。そして、送信元が仮想マシンでなければ、送信先アドレスをこのエージェントが管理している仮想マシンが対応する本番環境のマシンのアドレスに書き替え(S42)、送信先の仮想マシンにデータを送る(S43)。送信元が仮想マシンであれば、アドレスを書き替えずに送信先の仮想マシンにデータを送る(S43)。
【００４４】
このように、ネットワークを介して通信をする際には仮想マシンのアドレスを適宜変更することにより、ネットワークを介した通信においても検証用仮想マシンと本番機とのアドレスの衝突を避け、ネットワーク通信を利用したソフトウェアの検証を行うことができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施形態にかかるソフトウェア検証システムを示すブロック図である。
【図２】図１に開示されるシステムの各エージェントで利用される管理用テーブルの内容を示す説明図である。
【図３】図１に開示されるシステムの各エージェントで利用される管理用テーブルの内容を示す説明図である。
【図４】図１に開示されるシステムの各エージェントで利用される管理用テーブルの内容を示す説明図である。
【図５】図１に開示されるシステムの各エージェントで利用される管理用テーブルの内容を示す説明図である。
【図６】図１に開示されるシステムの各エージェントで利用される管理用テーブルの内容を示す説明図である。
【図７】図１に開示されるシステムの各エージェントの起動時の作動を示すフローチャートである。
【図８】図１に開示されるシステムの各エージェントの本番更新時の作動を示すフローチャートである。
【図９】図１に開示されるシステムの各エージェントのディスクアクセス時の作動を示すフローチャートである。
【図１０】本発明の実施形態にかかるソフトウェア検証システムの他の例を示すブロック図である。
【図１１】図１０に開示されるシステムのエージェントのネットワーク通信時の作動を示すフローチャートである。
【符号の説明】
【００４６】
１０  本番機
１１  本番機アプリケーション
１２  本番用ディスク
１３  本番側エージェント
２０  検証機
２１  検証用仮想マシン
２１ａ  被検証アプリケーション
２２  検証用ディスク
２３  検証側エージェント
【図１】
2007272579.tif 000004
【図２】
2007272579.tif 000005
【図３】
2007272579.tif 000006
【図４】
2007272579.tif 000007
【図５】
2007272579.tif 000008
【図６】
2007272579.tif 000009
【図７】
2007272579.tif 000010
【図８】
2007272579.tif 000011
【図９】
2007272579.tif 000012
【図１０】
2007272579.tif 000013
【図１１】
2007272579.tif 000014