JP5689400B2 - アクセス要求に対する予期せぬ応答に関するコンピュータ・プログラムの検証 - Google Patents

アクセス要求に対する予期せぬ応答に関するコンピュータ・プログラムの検証 Download PDF

Info

Publication number
JP5689400B2
JP5689400B2 JP2011242360A JP2011242360A JP5689400B2 JP 5689400 B2 JP5689400 B2 JP 5689400B2 JP 2011242360 A JP2011242360 A JP 2011242360A JP 2011242360 A JP2011242360 A JP 2011242360A JP 5689400 B2 JP5689400 B2 JP 5689400B2
Authority
JP
Japan
Prior art keywords
computer program
time
response
resource
access
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
JP2011242360A
Other languages
English (en)
Other versions
JP2012108904A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012108904A publication Critical patent/JP2012108904A/ja
Application granted granted Critical
Publication of JP5689400B2 publication Critical patent/JP5689400B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Description

本発明は、一般にコンピュータ・プログラムの検証に関し、特に、コンピュータ・プログラムの動作中に第1のホストから第2のホストに移行することができるコンピュータ・プログラムの検査に関する。
コンピュータ化された機器は、文書作成から信号の制御までにわたって、我々の生活のほぼ全ての局面を制御している。しかしながら、コンピュータ化された機器では、バグが発生する傾向があるので、バグを発見する検査フェーズが必要とされる。検査フェーズは、コンピュータ化された機器の設計における最も困難な作業のひとつであると考えられている。バグが引き起こす結果は被害甚大となることがあるので、バグが発見されなかった場合のコストは莫大なものになりかねない。例えば、バグは、コンピュータ化された機器が指示する挙動に依存する人を、負傷させることがある。さらに、ハードウェア又はファームウェア内のバグは、パッチを当てるためにそのコンピュータ化された機器の回収を必要とするので、修理費用が高額になることがある。それゆえ、コンピュータ化された機器の開発者の多くは、開発サイクルのうちのかなりの部分を、コンピュータ化された機器のエラー挙動の発見に費やす。
コンピュータ・プログラムは、コンピュータ・サーバのようなホストによって動作させることができる。今日、クラウド・コンピューティングは、確立され、利用されているコンピュータ・パラダイムである。クラウド・コンピューティングにおいて、コンピュータ・プログラムは、サーバ及び同様の計算機のネットワークのような、処理機器の「クラウド」によって実行することができる。クラウドによるコンピュータ・プログラムの実行中に、コンピュータ・プログラムは、第1のホストから第2のホストへと移行することがある。例えば、コンピュータ・プログラムは、仮想マシンによって実行されることがある。仮想マシンは、最初は第1のサーバによって処理されることがあり、その後で、仮想マシンは、第2のサーバへと移行して、コンピュータ・プログラムの実行を続けることがある。サーバ及びその他の計算機は、ホストとみなされる。ホストは、仮想マシンに対して、従ってコンピュータ・プログラムに対してリソースを提供する役割を担うことができる。リソースは、例えば、フリー・メモリ、共有メモリ、記憶空間、擬似乱数生成器へのアクセス、クロックへのアクセスなどとすることができる。
Peter Mell及びTim Grance著、「Draft NIST Working Definition of Cloud Computing」、2009年10月7日起草
本発明の目的は、コンピュータ・プログラムの動作中に第1のホストから第2のホストに移行することができるコンピュータ・プログラムの検査に関する、方法、装置及びコンピュータ・プログラムを提供することである。
本発明の1つの例示的な実施形態は、コンピュータにより実装された方法であり、この方法は、コンピュータ化された機器によってコンピュータ・プログラムを動作させることにより該コンピュータ・プログラムを検査するステップであって、コンピュータ化された機器が、コンピュータ・プログラムにリソースへのアクセスを提供するように動作する、ステップと、コンピュータ・プログラムによるリソースへのアクセス要求を遮断するステップとを含み、遮断するステップは、コンピュータ・プログラムに提供される応答を決定するステップと、要求に対するリソースからの応答の代わりに、決定された応答をコンピュータ・プログラムに提供するステップとを含む。
本発明の別の例示的な実施形態は、プロセッサを有するコンピュータ化された装置であり、この装置は、コンピュータ・プログラムを動作させるように動作する検査モジュールであって、コンピュータ・プログラムにリソースへのアクセスを提供するように構成される、検査モジュールと、コンピュータ・プログラムによるリソースへのアクセス要求を遮断するように動作する遮断器であって、コンピュータ・プログラムに提供される応答を決定するように動作する応答決定器を含み、さらに、要求に対するリソースからの応答の代わりに、決定された応答をコンピュータ・プログラムに提供するように動作する、遮断器とを含む。
本発明のさらに別の例示的な実施形態は、コンピュータ・プログラムであり、このコンピュータ・プログラムは、コンピュータ化された機器によってコンピュータ・プログラムを動作させることにより該コンピュータ・プログラムを検査するための第1のプログラム命令であって、コンピュータ化された機器が、コンピュータ・プログラムにリソースへのアクセスを提供するように動作する、第1のプログラム命令と、コンピュータ・プログラムによる前記リソースへのアクセス要求を遮断するための第2のプログラム命令とを含み、前記第2のプログラム命令は、コンピュータ・プログラムに提供される応答を決定するための第3の命令と、要求に対するリソースからの応答の代わりに、決定された応答をコンピュータ・プログラムに提供するための第4の命令とを含む。
本開示の主題は、以下の詳細な説明を図面と共に検討することでより良く理解され、認識され、図中、対応する又は同様の数字又は記号は、対応する又は同様の構成要素を示す。特に断りのない限り、図面は、本開示の例示的な実施形態又は態様を提供するものであって、本開示の範囲を限定するものではない。
本主題のいくつかの例示的な実施形態による、本発明が用いられるコンピュータ化された環境を示す。 本発明のいくつかの例示的な実施形態による、装置のブロック図を示す。 本発明のいくつかの例示的な実施形態による、方法のフローチャート図を示す。 本発明のいくつかの例示的な実施形態による、クラウド・コンピューティング環境を示す。 本発明のいくつかの例示的な実施形態による、抽象モデル層を示す。
本発明を、主題の実施形態による、方法、装置(システム)及びコンピュータ・プログラムのフローチャート図及び/又はブロック図を参照して、以下で説明する。フローチャート図及び/又はブロック図の各々、並びにフローチャート図及び/又はブロック図中のブロックの組合せは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を作り出すようにすることができる。
これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置に特定の方式で機能するように指示することができるコンピュータ可読媒体に格納して、それにより、そのコンピュータ可読媒体に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令手段を含む製品を製造するようにさせることもできる。
コンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能データ処理装置にロードして、コンピュータ又は他のプログラム可能データ処理装置上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにさせることもできる。
本発明が取り組む1つの技術的課題は、クラウドによって動作されているときにコンピュータ・プログラムを検査することである。別の技術的課題は、ホスト間の移行が、コンピュータ・プログラムの動作を無効化することがあるかどうかを検査することである。さらに別の技術的課題は、コンピュータ・プログラムを単一のホスト上で又は別の非クラウド処理システムにより実行することによって、そのコンピュータ・プログラムをクラウド処理スキーマに関して検査することである。さらに他の技術的課題は、クラウド・コンピューティング環境に特に関連していない、可能性のある移行に関して、コンピュータ・プログラムを検査することである。
1つの技術的解決策は、コンピュータ・プログラムによるホストから要求へのリソース応答をシミュレートすることである。シミュレートされる応答は、移行が生じた場合に生じ得る応答をシミュレートするように構成することができる。別の技術的解決策は、リソース要求を遮断し、代替的なシミュレートされた応答を提供することである。さらに他の技術的解決は、ホストのクロックに向けられた時間要求を遮断すること、及び代替的な応答をシミュレートすることである。さらに他の技術的解決策は、以前に提供された応答の所定の範囲内の応答をランダムに選択することによって、代替的な応答をシミュレートすることである。例えば、06:32:16という時間が以前に提供されていた場合、シミュレートされた応答は、以前に提供された時間から1分間の範囲内(すなわち、06:31:16と06:33:16との間の時間)のランダムな時間とすることができる。
本発明を使用することのひとつの技術的効果は、検査フェーズ中に実際の移行を行うことなく、移行の技術的効果をシミュレートすることである。検査環境は、比較的単純な処理環境とすることができ、クラウド処理環境とする必要はない。他の技術的効果は、単一ホスト環境においては予期されないがクラウド処理環境においては生じ得るリソース応答を、シミュレートすることである。例えば、時間は狭義単調増加関数であるので、第1に提供される時間は、その後で提供される、第2に提供される時間よりも必ず早くなるはずである。しかしながら、クラウド・コンピューティング環境においては、第1の時間は第1のクロックに基づいて提供されることがあり、第2の時間は第2のクロックに基づいて提供されることがあるので、この提供される時間の固有の特徴に違反することがある。本発明は、このようなシナリオを、コンピュータ・プログラムを単一のホストで実行するときにシミュレートする、技術的効果をもたらす。さらに他の技術的特徴は、戻される時間が狭義単調増加関数によって表されないコンピュータ・プログラムの実行をシミュレートすることである。さらに他の技術的効果は、前方にスキップするクロックに関して、コンピュータ・プログラムの動作を検査することである。いくつかの例示的な実施形態において、前方にスキップするクロックにより、タイムアウト動作を起動することができ、タイムアウト値に対するそのコンピュータ・プログラムの感度を検査することができる。
ここで、本主題のいくつかの例示的な実施形態による、本発明が用いられるコンピュータ化された環境を示す、図1を参照する。
コンピュータ環境100は、コンピュータ・プログラム110を含むことができる。コンピュータ・プログラム110は、ホストとも呼ばれるプロセッサのような処理マシンを動作させるように動作する命令の集合とすることができる。コンピュータ・プログラム110は、コンピュータ可読媒体上に埋め込まれることができる。コンピュータ・プログラム110は、クラウド105によって動作させることできる。クラウド105は、ホスト106のような、複数のホストを含むことができる。クラウド105のホストは、LAN、WAN、WiFi、WiMAX、インターネット、イントラネット、それらの組合せ、又はその他の通信ネットワークのようなコンピュータ・ネットワーク内で接続することができる。いくつかの例示的な実施形態において、コンピュータ・プログラム110は、クラウド105の具体的な実装の詳細には無関係であり得る。例えば、コンピュータ・プログラム110は、クラウド105のホストの数、そこで用いられているハードウェアの種類、ホストの接続様式などには無関係ではないものとすることができる。いくつかの例示的な実施形態において、コンピュータ・プログラム110は、仮想マシン(VM)(図示せず)を用いて実行することができる。VMを用いて、コンピュータ・プログラム110から実装の詳細を抽出することができる。VMは、クラウド105によって実行することが可能であり得る。コンピュータ・プログラム110の実行中に、クラウドは、VMを1つのホストから別のホストへと移行させることができる。コンピュータ・プログラム110は、そのような事象が生じていることに気づかないでいることができる。いくつかの例示的な実施形態において、移行は、VMが用いられていない例示的な実施形態において生じることもあり得る。
いくつかの例示的な実施形態において、移行は、VMに割り当てられたメモリのスナップショットを取得すること、他のホストのメモリをこのスナップショットで設定すること、及び割り当てられたメモリを解放することを含むことができる。メモリは、コンピュータ・プログラム110の現在の状態を保持しているので、これをコピーすることは、コンピュータ・プログラム110が、1つのホストから他のホストに移行したものとみなすことができる。特定の状態(例えば、ファイル・ハンドラ、又はセマフォなど)におけるオペレーション・システム(OS)エンティティの設定のような、追加動作を必要とすることがあることに留意されたい。当業者であれば、コンピュータ・プログラム110を(仮想マシンあり又はなしで)クラウド内の1つのホストからクラウド内の別のホストへと移行させることが可能である。
移行は、非クラウド・コンピューティング環境においても生じることがあることに留意されたい。例えば、プログラムのスナップショットを取得し、後でこれを用いて、リブート後に同じマシン内でコンピュータ・プログラムを再開することができる。別の例として、スナップショットは用いて、別のマシン(これは、必ずしもクラウドの一部である必要はない)上でコンピュータ・プログラムの動作を再開することができる。
いくつかの例示的な実施形態において、コンピュータ・プログラム110の実行を検査するように、検証装置120を構成することができる。検証装置120は、検査のベンチマーク内で保持するなど、コンピュータ・プログラム110の検査を実行するように構成することができる。検査は、ユーザからの入力、又はコンピュータ・プログラム110を実行する環境からの入力などのような、コンピュータ・プログラム110に対する刺激事象を定めることができる。検証装置120は、実行されているコンピュータ・プログラム110に対して計算能力及び/又はその他のリソースを提供する、実行ホスト130を含むことができる。いくつかの例示的な実施形態において、実行ホスト130は、106のような単一のホストとすることができる。他の例示的な実施形態において、実行ホスト130は、105のようなクラウドとすることができる。本発明の目的のためには、実行ホスト130の実装の詳細は、一般に特に重要ではない。
いくつかの例示的な実施形態において、ユーザ140は、端末、ディスプレイ、キーボード、又は入力デバイスなどのようなマン−マシン・インタフェース(MMI)145を用いて、検証装置120と対話することができる。ユーザ140は、コンピュータ・プログラム110に関して用いられる検査を定めることができる。ユーザ140は、検証装置120に対して、規則、コマンド、優先度、及びパラメータを提供することができる。ユーザ140は、検証装置120の出力を見ることができる。出力に基づいて、ユーザ140は、新たな検査を設計すること、又は検査(又は、生成ベースの検査の場合、検査を生成するために利用される検査テンプレート)を変更することなどを決定することができる。ユーザ140は、さらに、バグを識別し、識別されたバグを報告し、及び/又は識別されたバグを修正することができる。
ここで、本発明のいくつかの例示的な実施形態による、装置を示す図2を参照する。図1の120のような装置200は、図1の110のようなコンピュータ・プログラムの機能的動作を検査するように構成することができる。
いくつかの例示的な実施形態において、検査モジュール210は、図1の110のようなコンピュータ・プログラムを動作させるように構成することができる。検査モジュール210は、プログラムを実行することによりコンピュータ・プログラムの検査を促進するように構成することができる。いくつかの例示的な実施形態において、検査プログラムは、コンピュータ・プログラムを実行しているホストのリソースにアクセスするように構成される。いくつかの例示的なリソースは、性能の統計量(例えば、フリー・メモリ空間、実行されているプロセスの数、又はCPU使用量など)、ホストに関連付けられたメモリのメモリ位置、又はクロックなどであり得る。いくつかの例示的な実施形態において、検査モジュール210は、クラウド処理環境において実行される場合のコンピュータ・プログラムの動作を検査するように動作する。
いくつかの例示的な実施形態において、検査モジュール210は、検査プログラムをホスト(又は複数のホスト)上で実行し、コンピュータ・プログラムの検査に関連付けられた適切な刺激をホストに提供するように動作することができる。刺激例は、これに尽きないが、コンピュータ・プログラムに提供される入力、又はスレッドのような並行エンティティのスケジューリングなどを含むことができる。
いくつかの例示的な実施形態において、アクセス識別器220は、コンピュータ・プログラムによるリソースに対するアクセス要求を識別するように構成することができる。アクセス識別器220は、リソース要求にフックを付加することによって、例えば、システム・コール要求にフックアップすることによって、アクセスを識別することができる。いくつかの例示的な実施形態において、アクセス識別器220は、コンピュータ・プログラムのプログラム・コードを精査し、関連のある関数呼び出しの起動を識別することによって、アクセスを識別することができる。いくつかの例示的な実施形態において、アクセス識別器220は、コンピュータ・プログラムが検査モジュール210によって実行される前に、該コンピュータ・プログラムを前処理するように構成することができる。前処理中に、リソースにアクセスするように動作する関数呼び出しが識別され、実行中のその起動を用いて、アクセス要求を識別することができる。
いくつかの例示的な実施形態において、コード計装器225を使用して、関数の起動に関連して起動されるように動作するコードを計装することができる。例えば、コードは、関数の始めに計装することができる。別の例として、マクロ定義(例えば、C言語における#定義コマンド)を用いて、計装されたコードの起動で関数呼び出しを置き換えることができる。いくつかの例示的な実施形態において、計装化は、ソースコードが利用可能ではない(すなわち「ブラックボックス」の検査)場合のように、コンピュータ・プログラムの二進表現に関して行うことができる。二進数は、例えば、システム・コール、又はアプリケーション・プログラム・インタフェース(API)などの起動のような、アクセス要求の実施に関連付けられる部分として計装化することができる。当業者であれば、付加的又は代替的な方式で、アクセス識別器220による識別をイネーブルにすることができる。
いくつかの例示的な実施形態において、クロックにアクセスし、時間を戻すように動作する関数、例えばC時間ライブラリの関数の起動を、アクセス識別器220によって識別することができる。いくつかの例示的な実施形態において、以下でさらに詳細に説明されるように、コード計装器225は、関数に対する関数呼び出しを、遮断器230に関連付けられた関数のような代替的な関数で置き換えるように動作することができる。
いくつかの例示的な実施形態において、遮断器230は、アクセス識別器220によって識別されたようなアクセス要求を遮断し、その決定された応答を提供するように動作することができる。応答は、応答決定器240によって決定することができる。アクセス要求の遮断は、コード計装器225によって計装された計装化コードを用いて行うことができる。遮断器230は、実行ホストのリソースにアクセスし又はアクセスすることなく、応答を提供するように動作することができる。例えば、マシンのクロックに対するアクセス要求の場合、クロック自体にアクセスし又はアクセスすることなく、時間を戻すことができる。決定された応答は、クロックが戻すはずの時間とは異なる時間とすることができる。
いくつかの例示的な実施形態において、応答決定器240は、アクセス要求に対する応答を決定するように構成することができる。いくつかの例示的な実施形態において、応答決定器240は、ランダムな応答を決定することができる。いくつかの例示的な実施形態において、応答決定器240は、以前に提供された応答に基づいた応答を決定することができる。いくつかの例示的な実施形態において、応答決定器240は、提供された応答を保持し、今後の応答決定のためにそれを利用するように動作することができる。いくつかの例示的な実施形態において、以前に提供された応答を基準値として用いることができ、決定された応答は、基準値の所定範囲内の値とすることができる。この範囲は、図1の140のようなユーザが決定することができ、205のような入力モジュールを用いて、随意に装置200に提供することができる。範囲は、種々の追加的な要因によって影響を受けることがある。例として、「クロック」というリソースを考えると、これは「時間」という応答を提供する。決定された時間は、基準点としての以前に提供された時間に基づいたものとすることができる。決定された時間は、以前の応答から2分間の範囲内とすることができる。1つの例示的な実施形態において、範囲は、以前の応答から経過した時間によって影響を受けることができる。いくつかの例示的な実施形態において、いくつかの決定された応答、例えば第1の応答は、実際のリソース(例えば、ホスト・マシンのクロック)にアクセスすることによって決定することができる。
いくつかの例示的な実施形態において、応答決定器240は、以前に提供された時間より前の時間を提供するように動作することができる。時間は狭義単調増加関数なので、このような応答は、非クラウド・コンピューティング環境においては、一般に妥当な応答ではない。しかしながら、クラウド・コンピューティング環境においては、第1の応答は第1のホストの第1のクロックによって提供されることがあり、他方、第2の応答は第2のホストの第2のクロックによって提供されることがあるので、このような応答が生じることがある。
いくつかの例示的な実施形態において、応答決定器240は、その時間と以前に提供された時間との間の差が、以前に提供された時間を提供したときとその時間との間の実際の時間差よりも長いような時間を提供するように動作することができる。このような方法で、クロックの前方へのスキップをシミュレートすることができる。あるいは、これを用いて、コンピュータ・プログラムを実行するコンピュータにより、動作の遅い性能のいくつかの態様をシミュレートすることができる。いくつかの例示的な実施形態において、コンピュータ・プログラムは、タイムアウト値に応答するものとすることができ、提供された時間を用いて、タイムアウト値に達したときのコンピュータ・プログラムの動作を検査することができる。いくつかの例示的な実施形態において、コンピュータ・プログラムは、動作の近似タイミングを潜在的に仮定していることがある。例えば、コンピュータ・プログラムのプログラマは、所定量の時間中にいくつかの並行動作が完了することを仮定しているので、所定量の時間が経つとスリープ・コマンドが起動されることがある。
いくつかの例示的な実施形態において、応答決定器240は、クロックにアクセスして現在時間を決定することができる。決定された時間は、現在時間から少なくとも所定の持続時間だけ後の時間とすることができる。例えば、現在時間が09:10:20であって、所定の持続時間が1分間の場合、決定された時間は、09:11:22、09:20:00、10:00:00、又は23:00:00などとすることができる。いくつかの例示的な実施形態において、時間の最小シフトに加えて又はその代わりに、時間の最大シフトを予め定めることができる。例えば、時間は、2分間の最小シフトでシフトさせることができ、10分間の最大シフトでシフトさせることができる。いくつかの例示的な実施形態において、装置200は、第1の要求に応答して現在の時間を提供し、連続した要求に応答して、この段落に従う時間を提供するように構成することができ、それゆえ、高速クロック(speedy clock)を有する場合のシミュレーションを提供する。高速クロックは、実質的にペースが速いものであり得る(例えば、高速クロックは、1秒ごとに10秒スキップする)。いくつかの例示的な実施形態において、報告される2つの連続した時間要求間の時間の経過が実際よりも長く/短く報告されるので、この応答は、遅い又は速い処理デバイスによるコンピュータ・プログラムの実行のシミュレーションを提供する。別の言い方をすれば、ある時間間隔の間に現実に実施される命令の数が、より短い/長い時間間隔の間に実施されたものとして報告される。
いくつかの例示的な実施形態において、ランダム化モジュール245を利用して、ランダム又は擬似ランダムな方式で応答を決定することができる。ランダム化モジュール245を利用して、基準値の所定範囲内の応答を決定することができる。
いくつかの例示的な実施形態において、装置200は、プロセッサ202を含むことができる。プロセッサ202は、中央処理装置(CPU)、マイクロプロセッサ、電子回路、又は集積回路(IC)などとすることができる。プロセッサ202を利用して、装置200又はそのいずれかのサブコンポーネントによって要求される計算を実施することができる。
本発明のいくつかの例示的な実施形態において、装置200は、入力/出力(I/O)モジュール205を含むことができる。I/Oモジュール205を利用して、図1の140のようなユーザに出力を提供し、かつユーザから入力を受け取ることができる。
いくつかの例示的な実施形態において、装置200は、記憶デバイス207を含むことができる。記憶デバイス207は、ハードディスク・ドライブ、フラッシュ・ディスク、ランダム・アクセス・メモリ(ROM)、メモリ・チップなどとすることができる。いくつかの例示的な実施形態において、記憶デバイス207は、装置200のサブコンポーネントのいずれかに関連付けられた動作をプロセッサ202に行わせるよう動作する、プログラム・コードを保持することができる。いくつかの例示的な実施形態において、記憶デバイス207は、以前に提供された応答を保持することができる。
ここで、本発明のいくつかの例示的な実施形態による、方法のフローチャート図を示す図3を参照する。図3は、特に、アクセスされるリソースが、時間を戻すクロックである例に言及しているが、本発明は、この例に限定されない。
ステップ300において、検査されるコンピュータ・プログラムを得ることができる。コンピュータ・プログラムの二進表現を得ることができる。ソースコード表現を得ることができる。コンピュータ・プログラムは、図2の205のような入力モジュールによって得ることができる。
ステップ310において、コンピュータ・プログラムを、コンピュータ化された機器によって実行することができる。コンピュータ・プログラムは、その動作の検査を目的として実行することができる。コンピュータ・プログラムは、図2の210のような検査モジュールによって実行され、検査されることができる。
ステップ320において、クロックに対するアクセス要求を識別することができる。識別は、図2の220のようなアクセス識別器によって行うことができる。いくつかの例示的な実施形態において、識別は、コンピュータ・プログラムを前処理すること、又はコンピュータ・プログラムをその実行の前に適切なコードで計装化することなどによって、イネーブルにすることができる。
ステップ330において、アクセス要求を遮断することができる。いくつかの例示的な実施形態において、アクセス要求は遮断されることがあり、かつ、クロックは、アクセスされることも、されないこともある。いくつかの例示的な実施形態において、アクセス要求は、図2の225のようなコード計装器によって計装化されたコードを実行することによって遮断することができる。遮断は、図2の230のような遮断器によって行うことができる。
ステップ340において、アクセスに応答して提供される時間を決定することができる。この時間は、図2の240のような応答決定器によって決定することができる。この時間を、コンピュータ・プログラムに提供することができる。決定と決定された時間の提供とが行われた後、さらなるアクセス要求を識別し、本発明に従ってこれに応答することができる。
いくつかの例示的な実施形態において、提供される時間を決定することは、ステップ342及び344を含む。
ステップ342において、以前に提供された時間を得ることができる。この時間は、図2の207のような記憶デバイスから得ることができる。
ステップ344において、以前に提供された時間より前の時間をランダムに決定することができる。この決定は、図2の245のようなランダム化モジュールを用いて行うことができる。決定された時間は、以前に提供された時間よりも早い時間であり得るので、戻される時間が狭義単調増加関数であるという、クラウド・コンピューティング環境においては正しくないことがある仮定を無効化することができる。決定される時間は、この時間と以前に提供された時間との間の時間差が、これらの2つの時間値の提供の間に実際に経過した時間よりも長くなるように、決定することができる。
いくつかの例示的な実施形態において、提供される時間を決定することは、ステップ346及び348を含む。
ステップ346において、ステップ342と同様の方法で、以前に提供された時間を得ることができる。
ステップ348において、以前に提供された時間の所定の範囲内のランダムな時間を決定することができる。ランダムな時間は、図2の245のようなランダム化モジュールを用いて決定することができる。所定の範囲は、図1の140の様なユーザによって決定された範囲とすることができる。
いくつかの例示的な実施形態において、コンピュータ・プログラムの十分な検査が(例えば、カバレージ・メトリクス(coverage metrics)、又はQAスタッフ・メンバによる決定などに基づいて)実行された後は、そのコンピュータ・プログラムは、クラウド上にロードしてそこで動作させるのに「安全」であるとみなすことができる。いくつかの例示的な実施形態において、クラウドの管理権限は、十分に検査されていないコンピュータ・プログラムのロードを禁止することができる。本発明は、コンピュータ・プログラムがクラウド上にロードされる前に、単独の検査又は追加検査として用いることができる。
以下の実施例は、開示を明確にするためにのみ提供されるものであって、本発明の範囲を限定するものと解釈されるべきではない。以下のコード断片を考える:
time1=gettime();
time2=gettime();
timersub(time1, time2, &diff);
assert(diff.tv_sec >= 0);
time1=gettime()
ここでtimersubは、「time2」から「time1」を差し引くことによって「time1」と「time2」との間の時間差を求め、この時間差を「diff」に代入するように動作する関数である。このコード断片は、非クラウド・コンピューティング環境において検査される場合、「time1」が、設定「time2」に関連付けられたクロック読み取りの前に行われたクロック読み取りに基づいて設定されるので、安定である。しかしながら、クラウド・コンピューティング環境においては、「time1」は、「time2」の後の時間を含むことができるので、この仮定は誤りである場合がある。本発明を利用して、このコード断片を検査し、クラウド・コンピューティング環境におけるいくつかのシナリオにおいて、「time2」が「time1」の後で設定されたとしても、「time1」の前の時間であり得ることを判定する。
本発明を利用して、コンピュータ・プログラムを実行し、リソースに対するアクセス要求(例えば、関数「gettime」の呼び出し)を識別し、アクセス要求を遮断し、戻りで提供すべき応答を決定することによって、このコード断片を含むコンピュータ・プログラムを検査することができる。
本開示はクラウド・コンピューティングに関する詳細な説明を含んでいるが、ここで述べられている教示の実装は、クラウド・コンピューティング環境に限定されるものではないことを理解されたい。むしろ、本発明の実施形態は、現在公知の又は今後開発されるその他の任意の種類のコンピューティング環境に関連して実装することが可能である。
便宜のため、以下の定義は、クラウド・コンピューティング環境の完全な理解に備えて開示される。定義は、本出願と共に提出されたIDSにおいて引用され、その複写がここに添付される、非特許文献1に由来したものである。
クラウド・コンピューティングは、最小限の管理努力又はサービスのプロバイダとの対話で、迅速に供給及び解放されることができる、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にする、サービス・デリバリーのモデルである。このクラウド・モデルは、少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの配置モデルとを含むことができる。
特性は、下記の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワーク・ストレージといったコンピューティング能力を一方向に供給することができる。
広範なネットワーク・アクセス:機能は、ネットワークを介して利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準機構を通じてアクセスされる。
リソースのプール:プロバイダのコンピューティング・リソースはプールされ、マルチテナント・モデルを用いて複数のコンシューマに供され、異なる物理リソース及び仮想リソースが、要求に応じて動的に割当てされ、かつ再割当てされる。コンシューマは、一般に、提供されるリソースの正確な位置に関する制御又は知識を持たないが、より高次の抽象レベル(例えば、国、州、又はデータセンタ)で位置を指定することができるという意味で、位置独立という概念がある。
迅速な弾力性:機能は、すばやくスケールアウトするように、迅速かつ弾力的に、場合によっては自動的に供給されることが可能であり、かつ、すばやくスケールインするように、迅速に解放されることが可能である。コンシューマにとっては、供給のために利用可能な機能は多くの場合、無限に見え、いつでも任意の量で購入することができる。
計測されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、及びアクティブ・ユーザ・アカウント)に適したいくつかの抽象層における計量機能を強化することによって、リソースの使用を自動的に制御し、最適化する。リソース使用量を監視し、制御し、報告することで、使用されているサービスのプロバイダ及びコンシューマの両方に対して透明性を提供することができる。
サービス・モデルは、以下の通りである。
サービスとしてのソフトウェア(Software as a Service)(SaaS):コンシューマに提供される機能は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)のようなシン・クライアント・インタフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ特有のアプリケーション構成設定を可能な例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーションの機能さえ含む、基礎をなすクラウド・インフラストラクチャを管理又は制御することはない。
サービスとしてのプラットフォーム(Platform as a Service)(PaaS):コンシューマに提供される機能は、プロバイダがサポートするプログラミング言語及びツールを用いて作成された、コンシューマが作成した又は獲得したアプリケーションをクラウド・インフラストラクチャ上に配置することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む、基礎をなすクラウド・インフラストラクチャを管理又は制御することはないが、配置されたアプリケーションと、可能であれば環境構成をホストするアプリケーションとに対する制御を有する。
サービスとしてのインフラストラクチャ(Infrastructure as a Service)(IaaS):コンシューマに提供される機能は、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティング・リソースの提供であり、コンシューマは、オペレーティング・システム及びアプリケーションを含むことができる任意のソフトウェアを配置し、実行させることが可能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションに対する制御と、可能であれば選択ネットワーキング・コンポーネント(例えば、ホストのファイアウォール)の限定された制御とを有する。
配置モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、1つの組織のために単独で動作する。これは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有された利害関係(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。これは、それらの組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、公衆又は大きな産業グループにとって利用可能なものとされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ又はそれ以上のクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、これらは、ユニークなエンティティのままであるが、データ及びアプリケーションのポータビリティを可能にする標準化技術又は所有技術によって、互いに結合される(例えば、クラウド間の負荷バランスのためのクラウド・バースティング)。
クラウド・コンピューティング環境は、サービス指向であり、国籍のないこと、低カップリング、モジュール性、及び意味論的相互運用性に焦点を合わせている。クラウド・コンピューティングの核心は、相互接続されたノードのネットワークを含む、インフラストラクチャである。
ここで、図1の105のような例証的なクラウド・コンピューティング環境50が描かれた、図4を参照する。図示されているように、クラウド・コンピューティング環境50は、例えば、携帯型情報端末(PDA)又は携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、及び/又は自動車コンピュータ・システム54Nのようなクラウド・コンシューマによって使用されるローカル・コンピューティング機器が通信する、1つ又は複数のクラウド・コンピューティング・ノードを含む。ノード10は、互いに通信することができる。これらは、例えば、上述のようなプライベート、コミュニティ、パブリック、又はハイブリッド・クラウド又はそれらの組合せのような1つ又は複数のネットワークに、物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカル・コンピューティング機器上でリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム及び/又はソフトウェアを提供することが可能になる。図4に示されるコンピューティング機器54A−Nの種類は、例示のみを意図していること、並びに、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、任意の種類のネットワーク及び/又はネットワーク・アドレス可能な接続を介して(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピューティング機器と通信することができることを理解されたい。
ここで、図5を参照すると、クラウド・コンピューティング環境50(図4)によって提供される機能的抽象層の集合が示される。図5に示されるコンポーネント、層、及び機能は、例示のみを意図しており、本発明の実施形態は、それらに限定されないことを、予め理解されたい。図示されているように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェアコンポーネントを含む。ハードウェア・コンポーネントの例には、一例としてIBM(登録商標)zSeries(登録商標)システムがある、メインフレーム、一例としてIBM pSeries(登録商標)システムがある、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ、IBM xSeries(登録商標)、IBM BladeCenter(登録商標)システム、ストレージ、ネットワーク及びネットワーキング・コンポーネントが含まれる。ソフトウェアコンポーネントの例には、一例としてIBM WebSphere(登録商標)アプリケーション・サーバ・ソフトウェアがある、ネットワーク・アプリケーション・サーバ・ソフトウェア、及び、一例としてIBM DB2(登録商標)データベース・ソフトウェアがあるデータベース・ソフトウェアが含まれる。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere及びDB2は、世界中の多数の管轄において登録された、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)
仮想化層62は、以下の仮想エンティティの例、すなわち、仮想サーバ、仮想ストレージ、仮想私設ネットワークを含めた仮想ネットワーク、仮想アプリケーション及びオペレーション・システム、並びに仮想クライアントがそこから提供される、抽象層を提供する。
一例において、管理層64は、以下で説明される機能を提供することができる。リソース提供は、クラウド・コンピューティング環境内でタスクを実施するために利用される、コンピューティング・リソース及びその他のリソースの動的な調達を提供する。計量及び価格決定は、リソースがクラウド・コンピューティング環境内で利用されているときのコスト追跡、及び、これらのリソースの消費についての請求書作成又はインボイス送付を提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別検証、並びにデータ及び他のリソースに対する保護を提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者に対して、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルに合致するように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル同意(SLA)計画及び遂行は、SLAに従って将来的な要求が予期されるクラウド・コンピューティング・リソースのための、事前準備及び調達を提供する。
作業負荷層66は、クラウド・コンピューティング環境を利用することができる目的となる機能の例を提供する。この層から提供される作業負荷及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及び寿命サイクル管理、仮想教室教育配信、データ解析処理、及びトランザクション処理などが含まれる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を例証する。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理関数を実装するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント、又はプログラム・コードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で生じることがあることにも留意されたい。例えば、連続して図示された2つのブロックが、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又は、これらのブロックは、ときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図内の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組合せによって実装することができることにも留意されたい。
当業者であれば分かるように、本発明は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」又は「システム」と呼ぶことできる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられたいずれかの有形の表現媒体内で具体化されたコンピュータ・プログラム製品の形を取ることができる。
1つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置、デバイス若しくは伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ可読媒体のより具体的な例(非網羅的なリスト)として、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CDROM)、光記憶デバイス、インターネット又はイントラネットをサポートする伝送媒体、又は磁気記憶デバイスが挙げられる。プログラムが印刷された紙又は他の適切な媒体でさえも、そのプログラムを例えば、その紙又は他の媒体の光学スキャンによって電子的にキャプチャし、次いで、必要に応じて、コンパイルし、解釈し、又はそれ以外の適切な手法で処理し、その後、コンピュータ・メモリ内に格納することができるので、コンピュータ使用可能媒体又はコンピュータ可読媒体とすることができることに留意されたい。本明細書の文脈では、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置、又はデバイスによって又はこれらと関連して用いるためのプログラムを収納し、格納し、通信し、伝搬し又は輸送することができる任意の媒体とすることができる。コンピュータ使用可能媒体は、コンピュータ使用可能なプログラム・コードが、ベースバンド内で又は搬送波の一部としてその中で具体化された、伝搬されるデータ信号を含むものとすることができる。コンピュータ使用可能プログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、及びRFなどを含むいずれかの適切な媒体を用いて伝送することができる。
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java、SmallTalk、C++などのようなオブジェクト指向型プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組合せで記述することができる。プログラム・コードは、全体をユーザのコンピュータ上で実行することができ、スタンドアロン型のソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行することができ、一部をユーザのコンピュータ上で実行し、一部をリモート・コンピュータ上で実行することができ、又は、全体をリモート・コンピュータ若しくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続することができ、又は、(例えば、インターネット・サービス・プロバイダを用いるインターネットを通じて)外部コンピュータに対する接続を行うこともできる。
以下の特許請求の範囲における全ての「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料又は動作をも含むことが意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び精神から逸脱することのない多くの変更及び変形が、当業者には明らかである。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に適したものとして理解することを可能にするために、選択及び記載された。
10:コンピューティング・ノード
50:クラウド・コンピューティング環境
54A−N:コンピューティング機器
100:コンピュータ環境
105:クラウド
106:ホスト
140:ユーザ
145:マン−マシン・インタフェース

Claims (19)

  1. コンピュータ化された機器によってコンピュータ・プログラムを動作させることにより、前記コンピュータ・プログラムを検査するステップであって、前記コンピュータ化された機器が、前記コンピュータ・プログラムにリソースへのアクセスを提供するように動作する、ステップと、
    前記コンピュータ・プログラムによる前記リソースへのアクセス要求を遮断するステップと
    を含み、前記遮断するステップが、
    前記コンピュータ・プログラムに提供される応答を決定するステップと、
    前記要求に対する前記リソースからの応答の代わりに、前記決定された応答を前記コンピュータ・プログラムに提供するステップと
    を含む、コンピュータにより実装される方法であって、
    前記決定するステップが、
    以前に提供された時間を取得することと、
    以前に提供された時間の所定の範囲内で時間をランダム化することと
    を含み、前記ランダム化された時間が、前記決定された応答である
    コンピュータにより実装される方法。
  2. 前記リソースがクロックであり、前記応答がクロックの時間である、請求項1に記載の方法。
  3. ユーザから前記所定の範囲を受け取るステップをさらに含む、請求項に記載の方法。
  4. 前記決定するステップが、
    以前に提供された時間を取得することと、
    前記時間を、前記以前に提供された時間よりも前になるように決定することと
    を含んで動作する、請求項2に記載の方法。
  5. 前記決定するステップが、
    前記クロックから現在時間を取得することと、
    前記時間を、該時間が前記現在時間から少なくとも所定の持続時間だけ後になるように決定することと
    を含む、請求項に記載の方法。
  6. 前記遮断するステップが、前記リソースに対する複数のアクセス要求に関して、複数回実施される、請求項1に記載の方法。
  7. 前記検査するステップが、クラウド・コンピューティング環境における前記コンピュータ・プログラムの動作の妥当性を検査することを含む、請求項1に記載の方法
  8. 前記動作の妥当性を検査するステップの完了に応答して、前記コンピュータ・プログラムを前記クラウド・コンピューティング環境にロードするステップをさらに含む、請求項に記載の方法。
  9. 前記コンピュータ・プログラムを前処理するステップと、前記リソースにアクセスするように動作する関数呼び出しを識別するステップとをさらに含む、請求項1に記載の方法。
  10. 前記コンピュータ・プログラムを、前記関数呼び出しを置き換えるように動作するコードで計装化するステップをさらに含み、前記遮断するステップが、前記コードを実行するステップを含む、請求項に記載の方法。
  11. プロセッサを有する、コンピュータ化された装置であって、
    コンピュータ・プログラムを動作させるように動作する検査モジュールであって、前記コンピュータ・プログラムにリソースへのアクセスを提供するように構成される、検査モジュールと、
    前記コンピュータ・プログラムによる前記リソースへのアクセス要求を遮断するように動作する遮断器であって、前記コンピュータ・プログラムに提供される応答を決定するように動作する応答決定器を含み、さらに、前記要求に対する前記リソースからの応答の代わりに、前記決定された応答を前記コンピュータ・プログラムに提供するように動作する、遮断器と
    を含む、装置であって、
    前記応答決定器がさらに、以前に提供された時間を取得するように動作し、前記応答決定器が、以前に提供された時間の所定の範囲内で時間をランダム化するように動作するランダム化モジュールに動作可能に結合され、前記ランダム化された時間が、前記決定された応答である
    装置
  12. 前記リソースがクロックであり、
    前記応答がクロックの時間である、
    請求項11に記載の装置。
  13. ユーザから前記所定の範囲を受け取るように動作する入力モジュールをさらに含む、請求項11に記載の装置。
  14. 前記応答決定器がさらに、以前に提供された時間を取得するように動作し、前記決定された応答が、前記以前に提供された時間よりも前の時間である、請求項12に記載の装置。
  15. 前記応答決定器がさらに、前記クロックから現在時間を取得し、前記時間を、該時間が前記現在時間から少なくとも所定の持続時間だけ後になるように決定するように動作する、請求項12に記載の装置。
  16. 前記検査モジュールが、クラウド・コンピューティング環境における前記コンピュータ・プログラムの動作の妥当性を検査するように構成される、請求項11に記載の装置。
  17. 前記コンピュータ・プログラムを前処理し、前記リソースにアクセスするように動作する関数呼び出しを識別する、アクセス識別器をさらに含む、請求項11に記載の装置。
  18. 前記コンピュータ・プログラムを前処理することが、前記コンピュータ・プログラムを、前記関数呼び出しを置き換えるように動作するコードで計装化することを含む、請求項17に記載の装置。
  19. 請求項1−10のいずれか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2011242360A 2010-11-18 2011-11-04 アクセス要求に対する予期せぬ応答に関するコンピュータ・プログラムの検証 Expired - Fee Related JP5689400B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/948,788 US9612942B2 (en) 2010-11-18 2010-11-18 Verification of a computer program in respect to an unexpected response to an access request
US12/948788 2010-11-18

Publications (2)

Publication Number Publication Date
JP2012108904A JP2012108904A (ja) 2012-06-07
JP5689400B2 true JP5689400B2 (ja) 2015-03-25

Family

ID=46065143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011242360A Expired - Fee Related JP5689400B2 (ja) 2010-11-18 2011-11-04 アクセス要求に対する予期せぬ応答に関するコンピュータ・プログラムの検証

Country Status (3)

Country Link
US (1) US9612942B2 (ja)
JP (1) JP5689400B2 (ja)
CN (1) CN102591771A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
CN102917077A (zh) * 2012-11-20 2013-02-06 无锡城市云计算中心有限公司 云计算系统中的资源分配方法
AT513869B1 (de) * 2013-02-01 2017-12-15 Frequentis Ag Verfahren zur Überprüfung eines Computernetzwerkes
WO2014155684A1 (ja) * 2013-03-29 2014-10-02 富士通株式会社 プログラム、情報処理システム、およびプログラム移行方法
EP3014562A4 (en) * 2013-06-28 2016-11-30 Hewlett Packard Entpr Dev Lp SIMULATION OF SENSORS
US10049033B2 (en) * 2014-06-03 2018-08-14 Sap Se Application gateway for cloud computing systems
US10275341B2 (en) * 2015-01-21 2019-04-30 Somo Innovations Ltd Mobile application usability testing
EP3782082A1 (en) * 2018-05-18 2021-02-24 Google LLC Systems and methods for debugging neural networks with coverage guided fuzzing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974569A (en) * 1998-01-05 1999-10-26 Nickles; Alfred E. System and method for determining whether time-based operations of a computer system operate properly
US6895578B1 (en) * 1999-01-06 2005-05-17 Parasoft Corporation Modularizing a computer program for testing and debugging
US7092866B2 (en) * 2002-05-10 2006-08-15 International Business Machines Corporation System and method for time compression during software testing
US7475002B1 (en) 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7720654B2 (en) * 2005-10-15 2010-05-18 Micron Technology, Inc. Generation and manipulation of realistic signals for circuit and system verification
US20080270819A1 (en) * 2007-04-27 2008-10-30 Bruce Hamilton Uncorrelated actions using a distributed system
US8370822B2 (en) * 2008-11-20 2013-02-05 Apple Inc. Compiling techniques for providing limited accuracy and enhanced performance granularity
US8352922B2 (en) * 2009-03-31 2013-01-08 International Business Machines Corporation Date and time simulation for time-sensitive applications
US8924791B2 (en) * 2010-08-30 2014-12-30 Hewlett-Packard Development Company, L.P. System including a vendor computer system for testing software products in a cloud network

Also Published As

Publication number Publication date
CN102591771A (zh) 2012-07-18
US20120130702A1 (en) 2012-05-24
US9612942B2 (en) 2017-04-04
JP2012108904A (ja) 2012-06-07

Similar Documents

Publication Publication Date Title
JP5689400B2 (ja) アクセス要求に対する予期せぬ応答に関するコンピュータ・プログラムの検証
US10642725B2 (en) Automated test generation for multi-interface enterprise virtualization management environment
US10223106B1 (en) Customized static source code analysis
US10176022B2 (en) Dynamically adapting a test workload to accelerate the identification of performance issues
US11093289B2 (en) Provisioning disaster recovery resources across multiple different environments based on class of service
US9003239B2 (en) Monitoring and resolving deadlocks, contention, runaway CPU and other virtual machine production issues
US11294803B2 (en) Identifying incorrect variable values in software testing and development environments
US10552306B2 (en) Automated test generation for multi-interface and multi-platform enterprise virtualization management environment
US10671506B2 (en) Evaluating fairness in devices under test
EP4264433A1 (en) System testing infrastructure with hidden variable, hidden attribute, and hidden value detection
Keng et al. Graph-aided directed testing of android applications for checking runtime privacy behaviours
US9513948B2 (en) Automated virtual machine provisioning based on defect state
US10200271B2 (en) Building and testing composite virtual services using debug automation
US10248554B2 (en) Embedding profile tests into profile driven feedback generated binaries
Lochmann et al. Reproducible load tests for android systems with trace-based benchmarks
US20170123959A1 (en) Optimized instrumentation based on functional coverage
Kalra et al. Multi-tenant quality attributes to manage tenants in SaaS applications
US11656974B2 (en) Enhanced performance diagnosis in a network computing environment
US11360939B2 (en) Testing of file system events triggered by file access
Imran et al. Provenance Framework for the Cloud Infrastructure: Why and How?
US10379998B2 (en) Expiring hooks for computer application discovery
Lozupone A study of open source web servers in virtual computing technology

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

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 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150128

R150 Certificate of patent or registration of utility model

Ref document number: 5689400

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees