(57)【要約】【課題】ＩＦＲＳ（Ｉｎｔｅｒｎｅｔ  Ｆｒｉｅｎｄｌｙ  Ｒｅｌａｙ  Ｓｅｒｖｉｃｅ：インターネットフレンドリリレーサービス）を利用することによって、インターネットを介しかつファイアウォールの背後に位置するマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムのためのシステムおよび方法を提供すること。【解決手段】このＩＦＲＳを共通の到達範囲内に配置することが可能であり、またＳＳＬおよびセキュリティトークンをリアルタイムに使用して、ＨＴＴＰ上での通信トラフィックを交換する安全な方法を提供することもできる。さらに、ＩＦＲＳの１つ（または複数）のウェブサーバは、許可システムおよび／または追跡システムを利用して、デバッギングを目的とするそれに対するクライアントの接続を検証することが可能である。【選択図】  図１
2006236356.tif 000002
【特許請求の範囲】
【請求項１】
リモートデバッギング操作を容易にするシステムであって、
それぞれ１つまたは複数のファイアウォールの背後に位置する１または複数のテスタと１または複数の開発者との間の、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）上でのシームレスな接続を実装し、拡張可能なデバッギング手続きを円滑に進めるＩＦＲＳ（Ｉｎｔｅｒｎｅｔ  Ｆｒｉｅｎｄｌｙ  Ｒｅｌａｙ  Ｓｅｒｖｉｃｅ：インターネットフレンドリリレーサービス）を備え、前記ＩＦＲＳが、共通の到達範囲内に配置されることを特徴とするシステム。
【請求項２】
前記ＩＦＲＳは、ポーリング構成を使用して、コマンドを受け取り、前記テスタおよび前記開発者に応答を返す１つまたは複数のウェブサーバと、１つまたは複数の状態サーバとを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ＩＦＲＳは、前記ＩＦＲＳをポーリングするためにポアソン統計分布を利用することによって、前記１つまたは複数のウェブサーバ上での適応型ポーリングの形成を容易にすることを特徴とする請求項２に記載のシステム。
【請求項４】
前記ＩＦＲＳは、ＩＩＳ（Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  ｓｅｒｖｉｃｅ）ウェブサーバを含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記ＩＦＲＳは、それに接続されたクライアントの許可を追跡するＩＦＲＳマネジャを含むことを特徴とする請求項１に記載のシステム。
【請求項６】
前記ＩＦＲＳマネジャは、前記ＩＦＲＳに接続されたマシンのＩＤを追跡することを特徴とする請求項５に記載のシステム。
【請求項７】
前記ＩＦＲＳは、負荷レベルを調整しあるいはバランスをとるための人工知能コンポーネントを含むことを特徴とする請求項１に記載のシステム。
【請求項８】
前記負荷レベルのバランスは、データ交換の開始、中断、再開、および停止のうちの少なくとも１つを備えることを特徴とする請求項７に記載のシステム。
【請求項９】
前記テスタと前記開発者のうちの少なくとも１人は、前記ＩＦＲＳとの通信を集約するための１つまたは複数のインテリジェントプロキシをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
マシンをデバッグする方法であって、
ＩＦＲＳを用いて、１つまたは複数のファイアウォールの背後に位置するテスタおよび開発者を登録することと、
前記テスタおよび前記開発者が、前記ＩＦＲＳをポーリングすることと、
前記テスタと前記開発者とを、ＨＴＴＰ上でシームレスに接続することとを備えることを特徴とする方法。
【請求項１１】
前記テスタが前記ＩＦＲＳからリターンチケットを受け取ることをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記テスタを前記ＩＦＲＳに登録したとき、電子メールを介してその旨を前記開発者に通知することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記開発者がデバッギングパラメータを取得することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
デバッグすべきマシン上でデバッガツールを起動することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１５】
人工知能スキームを利用して、前記ＩＦＲＳの負荷を調整することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１６】
明示的に訓練された分類器と、暗示的に訓練された分類器とのうちの少なくとも１つを利用することをさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記負荷を調整することは、データ交換を開始すること、中断すること、再開すること、および、停止することのうちの少なくとも１つを備えることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記ＩＦＲＳに接続されたクライアントの許可を追跡することをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１９】
数学的アルゴリズムによって前記ＩＦＲＳのポーリングを適応させることをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項２０】
リモートデバッギング処理を容易にするシステムであって、
エンドユーザを、ＨＴＴＰ上で開発者にシームレスに接続するインターセプト手段であって、前記エンドユーザおよび前記開発者が、それぞれ１つまたは複数のファイアウォールの背後に位置するインターセプト手段と、
前記インターセプト手段の負荷を調整する手段とを備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、１つ（または複数）のファイアウォールがその間にあるマシン間でのデータ交換に関し、より詳細には、インターセプトを利用して、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）上でのシームレスな接続を介してマシンを接続する、拡張可能なリモートデバッギングサービスに関する。
【背景技術】
【０００２】
コンピュータ技術（たとえば、マイクロプロセッサの速度、メモリの容量、データ転送の帯域幅、ソフトウェアの機能など）のますますの進歩は、一般に、様々な産業におけるコンピュータの適用の拡大に寄与している。しばしば一連のサーバとして構成され、ますます強力になるサーバシステムが、一般に提供され、外部のリソース、たとえばＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂなどからの要求を処理する。
【０００３】
様々なコンピュータソフトウェア／アプリケーションからエラーを除去するプロセスは一般に、デバッギングとして知られている。たとえば、コンピュータプログラムのコーディング中、コードまたは命令の一行がそのコードの他の要素と矛盾する場合など、不注意によるエラーまたはバグの発生は、一般に避け難いことである。コンピュータプログラムからバグを特定し除去するのに役立つデバッギングシステムが開発され、かかる事態の悪影響を緩和している。さらに、サーバアプリケーションの様々な種類の問題を分析するための診断を行う、様々なデバッギングツールおよび方法が存在する。かかるデバッギングは、たとえばサーバの種類、ファイアウォールの存在などが関連する複雑さに応じて、非常にコストがかかり、時間を消費することもある。
【０００４】
また、デバッギングは一般に、たとえばコンピュータソフトウェアデバッギングや、ハードウェア記述言語の機能検証（ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ  ｆｕｎｃｔｉｏｎａｌ  ｖｅｒｉｆｉｃａｔｉｏｎ）、ハードウェアの論理レベル分析（ｈａｒｄｗａｒｅ  ｌｏｇｉｃ  ｌｅｖｅｌ  ａｎａｌｙｓｉｓ）、ハードウェア挙動のソースレベルエミュレーション（ｈａｒｄｗａｒｅ  ｂｅｈａｖｉｏｒａｌ  ｓｏｕｒｃｅ  ｌｅｖｅｌ  ｅｍｕｌａｔｉｏｎ）などの複数の異なる手法を利用して行われている。たとえば、コンピュータソフトウェアデバッギングは、コンピュータソフトウェアデバッガを利用して実装することが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般に、コンピュータソフトウェアデバッガは、ソフトウェア開発者が、たとえばブレークポイントを設定し、コンピュータソフトウェアプログラムの実行を順次シングルステップで行い、変数および式を検査し表示してプログラムの状態を見るなどにより、実行中の（ｒｕｎ）コンピュータソフトウェアプログラムの実行を制御できるようにする、ソフトウェアツールである。さらに、デバッギングのサイクルタイムを短縮するためのソフトウェアツール（たとえば、デバッガ）を、開発することが可能である。デバッガは通常、その目的のために設計されたオペレーティングシステムプリミティブを用いて、検討中のアプリケーションプログラムを制御するための自立型の（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）プロセスとして実行される。また、ソフトウェアデバッガは通常、コンピュータ上で順次実行されるソフトウェアプログラムの対話型デバッギングを提供することが可能である。しかし、かかるデバッギングツールは、異なるサーバおよびコンピュータの構成およびアーキテクチャに容易に拡張可能ではない。
【０００６】
同時に、企業の１つ（または複数）のファイアウォールの存在によって、かかるファイアウォールの背後にあるデバッギングマシンの複雑さがさらに増すこともある。ファイアウォールは通常、私的情報を保護する際の第１の防御線とみなすことが可能であり、ハードウェアでもソフトウェアでも、あるいはその両方の組合せでも実装することが可能である。かかるファイアウォールは通常、開発者がデバッギングのためにテスタに容易にアクセスするのを妨ぐことが可能である。通常、かかる環境で適切なデバッギングセッションを適切に実行するためには、負担の大きい計画および細心の注意を払った実行が必要とされることもある。さらに、異なるマシン上での複数のデバッギングセッションが望まれる場合、大きな難題が存在する。
【０００７】
したがって、従来のシステムおよび装置に伴う上述の例示的な欠陥を克服することが、求められている。
【課題を解決するための手段】
【０００８】
本発明の１つまたは複数の態様に関する基本的な理解を与えるために、以下に本発明の簡略的な概要を提示する。この概要は、本発明の網羅的な概略ではない。この概要は、本発明の重要なまたは極めて重要な要素を特定するものではなく、本発明の範囲を限定するものでもない。そうではなく、この概要の主な目的は、本発明のいくつかの概念を、後述する、より詳細な説明の序文として簡略化した形で提示することである。
【０００９】
本発明は、ＨＴＴＰ上で通信トラフィックを交換する安全な方法を提供するためのインターセプトとして機能する、ＩＦＲＳ（Ｉｎｔｅｒｎｅｔ  Ｆｒｉｅｎｄｌｙ  Ｒｅｌａｙ  Ｓｅｒｖｉｃｅ：インターネットフレンドリリレーサービス）を利用することにより、インターネットを介しかつファイアウォールの背後にあるマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムを提供する。したがって、本発明は、エクスチェンジサーバにアクセスするためにファイアウォールを突破することが望まれる場合はいつでも、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ポートを開く必要をかかる環境において緩和することが可能となる。したがって、ファイアウォールの一方側に位置するクライアント（たとえば、エンドユーザ、テスタ、または開発者）が、コマンドおよび返答について、ＩＦＲＳに関連するメインサーバを継続的にポーリングすることが可能である。返答を保留することにより、ファイアウォールの他方側のクライアントが、かかるサーバに近づき、コマンドの返答を獲得することができ、次いでＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）およびセキュリティトークンをリアルタイムに使用して、ＨＴＴＰトラフィック上でのシームレスな接続を行うことが可能となる。関連する一態様では、ＩＦＲＳサービスをポーリングする任意のマシンおよび／またはクライアント上でのデータ転送を開始し、中断し、再開し、かつ／または停止させるかどうかを判定するための負荷の閾値も、ＩＦＲＳによって提供することが可能である。かかる負荷の閾値により、複数のマシンにまたがる処理の均衡をとり、任意の１つのマシンの負担をさらに緩和することが可能となる。また、様々な人工知能スキームを利用して、ＩＦＲＳとクライアントの間の負荷の調整および／または均衡を容易にすることが可能である。さらに、１つ（または複数）の開発者マシンと１つ（または複数の）テスタマシンの間でのデバッギングセッション中に、別の１つ（または複数）の開発者マシンが、現在のデバッギングセッションに参加することが可能であり、キャッシュされたデバッギングの履歴を取り出し、かかるデバッギングセッションを観察しかつ／またはそれに参加することも可能である。
【００１０】
本発明は、主にデバッギング手続きのコンテキストで説明されているが、１つ（または複数）のファイアウォールがその間に位置する、クライアントとサーバの間でのバイナリデータの交換中に、本発明の様々な態様を利用することも可能であることに理解されたい。たとえば、通常はそのファイアウォール構成の故にバイナリデータを１つ（または複数）のクライアントにプッシュすることが可能でない場合に、ファイアウォールの一方の端にあるサーバと、その他方の端にある１つ（または複数）のクライアントとによるバイナリデータの交換について、本発明を利用することも可能である。したがって、本発明は、インターネットを介してトラフィックを中継することができるインターセプト（ＩＦＲＳ）を配置することにより、かかる通信を容易にすることが可能である。したがって、ファイアウォールの背後にあるクライアントＡおよびクライアントＢは、共通の到達範囲内に位置するＩＦＲＳに関連するウェブサーバと話すことが可能であり、またウェブサーバは、許可システムおよび／または追跡システムを利用して、それに対するクライアントの接続を検証することが可能である。
【００１１】
したがって、クライアントＡがバイナリデータをクライアントＢに送出することを必要とする場合、クライアントＢは、サーバに情報を求める必要があり、したがって、ポーリング機構を利用することが可能である。したがって、クライアントＡもＢも通常、ファイアウォールの制約のために、ウェブサーバをポーリングするはずである。クライアントＢがクライアントＡから返答（たとえば、コマンドの返答、データストリーム、バイナリ交換など）を受け取ったとき、クライアントＡはその後サーバをポーリングし、送出されるのを待っているデータがあるかどうか検証する。
【００１２】
本発明の他の態様では、数学的アルゴリズムを利用して、ランダムな振舞い、ならびに各クライアントがウェブサーバをポーリングすることが可能な周期間隔および／または回数を指定することが可能である。かかるアルゴリズムは、ウェブサーバ上での、たとえばポアソン分布を用いた適応型ポーリングの形成を容易にすることが可能である。したがって、システムをスケーリングし、クライアントＡとクライアントＢの間のトラフィックを調整することが可能なので、ウェブサーバは、長い（たとえば５秒を超える）時間間隔でポーリングされる。さらに、このサーバは、かかるサーバの負荷を調整するために、一方のクライアントに他方のクライアントの振舞いに変化があった（たとえば、クライアントが緩和する（ｒｅｌａｘ）ことを学習し、情報を求める頻度を学習するようになった）ときにその旨を知らせることが可能であり、どちらのクライアントの活動についても統計データベースを維持することが可能であり、事象パターン（たとえば、クライアント間でのバイナリ交換の流れ）を予測することが可能である。特に、ＨＴＴＰのオーバーヘッドがＴＣＰのバイナリデータに追加される場合、本発明は、クライアントとかかるウェブサーバの間での頻繁なポーリングセッションを緩和することが可能である。
【００１３】
関連する一態様では、複数のクライアントからの要求を集約することが可能な１つ（または複数）のインテリジェントプロキシエンティティを提供して、ＩＦＲＳとの通信を容易にし、各クライアントによって必要とされるＴＣＰ接続の種類および数をさらに制限することが可能となる。したがって、ＩＦＲＳのウェブサーバと対話するために最適化を実施することが可能となる。たとえば、このインテリジェントプロキシは、各クライアントが独立してウェブサービスに接触するのとは対照的に、クライアント間の通信をウェブサービスへの１つのまとまった要求（ｏｎｅ  ｍａｊｏｒ  ｐｕｓｈ）に集約することが可能である。ウェブサーバからデータが供給されている他方の側で同様のインテリジェントプロキシを利用して、デバッグ手続きを必要とする様々なクライアントおよび／またはマシンの間にＴＣＰチャネルを容易に設けることが可能である。ＩＦＲＳおよび１つ（または複数）のインテリジェントプロキシエンティティが、１つ（または複数）のファイアウォールが存在しないこと（またはかかるファイアウォールを介して利用可能なオープンポート）を検出し、さらには事象ベースの機構に基づいて（たとえば、ＴＣＰを介して）通信することも可能であることを理解されたい。
【００１４】
本発明の他の態様によれば、ファイアウォールの一方側で故障し、バグチェッカクラッシュ（ｂｕｇ  ｃｈｅｃｋｅｒ  ｃｒａｓｈ）を伴うデバッグ対象にＵＳＢを介して接続されたマシンを用いるテスタで、ＩＦＲＳのウェブサーバをポーリングすることが可能である。かかる環境では、インテリジェントプロキシエンティティは、デバッガツールからＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）トラフィックを得ることが可能であり、それをネットワークを介して転送する代わりに、ＨＴＴＰの形にパッケージ化し、それをファイアウォールから外にＩＦＲＳのウェブサーバへと送出することが可能である。次いでＩＦＲＳは、その情報をキャッシュし、かかる情報をＩＦＲＳデータベースの一部としてバッファに置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者に移送するために準備することが可能である。次いでマシンを登録し、デバッグする準備を整えることが可能であり、開発者は、開発者によるデバッギングが予期されるマシンを指定する通知（たとえば、電子メール）を受け取ることが可能である。
【００１５】
したがって、上記および関連する目的の達成のために、本発明は、以下で十分に記載される特徴を備えている。以下の記載および添付の図面は、本発明のある種の例示的な態様を詳細に示す。ただし、それらの態様は、本発明の原則を利用することができる様々な方法のほんのいくつかを示すに過ぎない。本発明の他の態様、利点、および新規な特徴は、本発明についての以下の詳細な説明を添付の図面と併せて読めば明らかになるであろう。
【発明を実施するための最良の形態】
【００１６】
次に本発明を、添付の図面を参照して説明する。添付の図面では、全体を通して同様の参照番号が、同様の要素を指すために使用されている。以下の記載では、説明の目的で、本発明の完全な理解を与えるために、数々の具体的な詳細が詳しく述べられている。しかし、それらの具体的な詳細なしに、本発明が実施できることは明らかであるだろう。他の例では、本発明の説明を容易にするために、よく知られた構造および装置が、ブロック図に示されている。
【００１７】
本願で使用する「コンポーネント」、「ハンドラ」、「モデル」、「システム」などの用語は、コンピュータに関連するエンティティを指し、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すものとする。たとえば、コンポーネントは、それだけに限らないが、プロセッサ上で走っているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および／またはコンピュータであることが可能である。たとえば、サーバ上で稼動しているアプリケーションとサーバの両方が、コンポーネントであることが可能である。１つまたは複数のコンポーネントが、プロセスおよび／または実行スレッド内に常駐してもよく、１つのコンポーネントが、１つのコンピュータ上に局在し、かつ／または２つ以上のコンピュータ間で分散していてもよい。また、これらのコンポーネントを、様々なデータ構造がそれに記憶されている様々なコンピュータ読取り可能な媒体から実行することが可能である。これらのコンポーネントは、１つまたは複数のデータパケット（たとえば、ローカルシステム内、分散システム内の別のコンポーネントと対話し、かつ／または信号を介してインターネットなどのネットワークを介して他のシステムと対話している、１つのコンポーネントからのデータ）を有する信号に従うようなローカルおよび／またはリモートプロセスを介して、通信することが可能である。
【００１８】
さらに、本明細書で使用する「推論」という用語は一般に、事象および／またはデータを介して獲得された１組の観測値から、システム、環境、および／またはユーザの状態を推測し（ｒｅａｓｏｎ  ａｂｏｕｔ）、あるいは推論する（ｉｎｆｅｒ）プロセスを指している。推論を利用して、個々のコンテキストまたは活動を特定することが可能であり、あるいはたとえば状態に関する確率分布を生成することが可能である。この推論は、確率論的であることが可能であり、すなわち対象とされる状態に関する確率分布の計算を、データおよび事象の考察に基づいて行うことが可能である。推論はまた、１組の事象および／またはデータから、より高レベルの事象を構成するのに利用される技術を指すことも可能である。かかる推論の結果、その事象同士が時間的に近接して相互に関連していようとなかろうと、また、その事象およびデータが１つの事象およびデータソースから生じたものであれ複数の事象およびデータソースから生じたものであれ、１組の観測された事象および／または記憶された事象データから、新たな事象または活動が構築される。
【００１９】
本発明は、ＩＦＲＳを利用することにより、インターネットを介しかつファイアウォールの背後にあるマシンをデバッグすることが可能な、拡張可能なリモートデバッギングシステムを提供する。本発明は、主にデバッギング手続きのコンテキストで説明されているが、１つ（または複数）のファイアウォールがその間に位置する、クライアントとサーバの間でバイナリデータの交換が必要とされる場合に、本発明の様々な態様を利用することも可能であることを理解されたい。
【００２０】
まず図１を参照すると、本発明の一態様によるＩＦＲＳ１１０が示されている。ＩＦＲＳ１１０は、ＳＳＬおよびセキュリティトークンをリアルタイムに使用して、ＨＴＴＰ上での通信トラフィックを交換する安全な方法を提供することが可能である。
【００２１】
さらに、ＩＦＲＳ１１０は、以下で詳細に説明するように、たとえば、インターネット上でトラフィックリレーを中継可能なインターセプトとして機能し、それに接続されたクライアントに「負荷を分散」し、ポーリングセッションを緩和するよう知らせることが可能である。ＩＦＲＳ１１０としては、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂパブリッシングサービス、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サービス、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サービス、およびＮＮＴＰ（Ｎｅｔｗｏｒｋ  Ｎｅｗｓ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サービスなどが提供できるＩＩＳ（Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｉｃｅ）ウェブサーバを挙げることが可能である。このＩＩＳには、ウェブブラウザ（たとえば、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ）を使用し、インターネット上のＨＴＴＰを介してアクセスすることが可能である。ウェブサーバは、ＩＦＲＳの一部として共通の到達範囲内に配置することが可能であり、許可システムおよび／または追跡システムを利用して、それに対するクライアントの接続を検証することが可能である。
【００２２】
図示したように、ファイアウォール１２０は通常、境界防衛（ｐｅｒｉｍｅｔｅｒ  ｄｅｆｅｎｓｅ）を提供し、一般に外部の安全でないネットワークから内部のネットワークにアクセスするのを制限する。かかるファイアウォール１２０を利用して、内部のネットワークにおけるセグメント間のトラフィックを制限することも可能である。通常、ファイアウォール１２０の重要な利点は、それ自体の構成ファイルである。かかるファイルは、どのトラフィックを許可し、どのトラフィックを遮断すべきかを決定することが可能である。かかる情報が露呈すると、ファイアウォールは、脆弱になることがある。
【００２３】
また、ファイアウォール１２０を、パケットフィルタまたはプロキシのいずれかとすることが可能である。パケットフィルタとするなら、ファイアウォール１２０は、ルータを利用して、ソースアドレス、宛先アドレス、およびポートに基づきアクセスを承諾または拒否することが可能である。かかるパケットフィルタは、迅速かつ柔軟なファイアウォール１２０として機能することが可能である。
【００２４】
ファイアウォール１２０はさらに、そこを通過するトラフィックのための媒介物または中継器として機能するプロキシを含むことが可能である。たとえば、２種類のプロキシ、すなわち回路レベルのプロキシおよびアプリケーションレベルのプロキシを、ファイアウォール１２０の一部として利用することが可能である。回路レベルのプロキシは、パケットフィルタと非常に多くの点で類似している。というのも、それらの両方は、ほぼ同程度の低レベルの情報に基づき決定を行うことが可能であり、いずれも汎用装置であるからである。基本的に、パケットフィルタと回路レベルのプロキシの相違点は、プロキシが媒介するすべてのトラフィックは、外見上そのプロキシから出発し、そこに帰着することになるが、パケットフィルタを介したトラフィックは、それ自体の出発点および帰着点を保持し続けるという点である。同様に、アプリケーションレベルのプロキシは、使用されるアプリケーションを理解しているので、それによって媒介されるトラフィックの内容に基づき決定を行うことができる。かかるアプリケーションレベルのプロキシは使用されるアプリケーションプロトコルを理解しているので、アプリケーションレベルのプロキシを、それによって媒介されたトラフィックの内容に基づき決定を行うことができる高レベルの装置とすることが可能である。したがって、通常１つ（または複数）のファイアウォール１２０で利用されるアプリケーションレベルのプロキシを、かなり特殊化することが可能であるが、異なるアプリケーションプロトコル用に別々のプロキシが、たとえばＦＴＰ用のプロキシ、ＨＴＴＰ用のプロキシなどが必要になる。
【００２５】
図１に示すように、テスタ１０５（またはエンドユーザ）が、シリアルケーブルまたは１３９４ケーブルを介して、故障しデバッグする必要があるデバッグ対象のマシンに接続されており、そこでは、デバッグ対象１１２、１１４、１１６（ただし、Ｎは整数）のいずれかが、試験対象システムを形成することが可能である。ＩＦＲＳ１１０がテスタ１０５および開発者１０９によって周期的な間隔でポーリングされ、デバッギングセッションを開始することが可能である。したがって、ファイアウォール１２０の制約のために、通常テスタ１０５もデバッガマシン１０９も、ポーリング構成を使用して、ＩＦＲＳ１１０に関連するウェブサーバを照会する。
【００２６】
同様に、２つのクライアントがファイアウォールの両側で通信している場合、ファイアウォールの一方側に位置するクライアントは、コマンドおよび返答について、ウェブサーバを継続的にポーリングすることが可能である。返答を保留することにより、ファイアウォールの他方側のクライアントが、そのウェブサーバに近づき、コマンドの返答を獲得することが可能となり、したがってＨＴＴＰトラフィック上でのシームレスな接続を行うことが可能となる。さらに、ＩＦＲＳ１１０は、ウェブサーバがテスタ１０５および／または開発者１０９によってポーリングされている負荷と待ち時間のバランスをとるためのマネジャとして働くことが可能である。一般に、ＩＦＲＳ１１０は、知られているネットワークプロトコルおよび／または独自プロトコル（ｐｒｏｐｒｉｅｔａｒｙ  ｐｒｏｔｏｃｏｌｓ）を含めた１つまたは複数のデータ転送プロトコルを介して、情報を供給することが可能である。適当なネットワークプロトコルの例には、ＨＴＴＰ、およびＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）がある。
【００２７】
図１に示すように、インテリジェントプロキシ／アグリゲータ１０６は、デバッガツール１０８からＴＣＰ／ＩＰトラフィックを得ることが可能であり、かかるトラフィックをネットワークを介して転送する代わりに、ＨＴＴＰの形にパッケージ化し、それをファイアウォール１２０の外にＩＦＲＳ１１０へと送出することが可能である。次いでＩＦＲＳ１１０は、その情報をキャッシュし、かかる情報をＩＦＲＳデータベース１０７の一部としてバッファに置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者１０９に移送するために準備することが可能である。次いで開発者１０９は、特定のマシンがデバッグの準備を整えられしたがってデバッギングチェックのために登録された旨の通知（たとえば、電子メール）を受け取ることが可能である。開発者１０９に通知する目的に関して、予め定められたビジネス構成が存在することもある。また、テスタ１０５は、開発者１０９がそれを観測可能なように、それ自体をＩＦＲＳ１１０に知らせることも可能である。
【００２８】
次いで開発者１０９は、かかる情報を受け取ると、ＩＦＲＳ１１０に接続しあるいはそれをポーリングし、最初のパケットを取得して、会話を開始することが可能である。サーバポーリングのそのような開始はさらに、クライアント、１つ（または複数）のデータ検索状態、タイムアウト、記憶媒体、サブスクライバ、および検索情報の格納先のうちの少なくとも１つに関する情報を提供することを含むことが可能である。情報のそのようなポーリングはまた、ストリーム、ファイル、データパケット、および／またはデータバーストとして、情報を要求することを含むことが可能である。
【００２９】
図２は、本発明の一態様による、ＩＦＲＳ２００システムのブロック図である。このシステムは、ＩＦＲＳライブラリ２１４と対話して、許可、セキュリティ、バリデーションを追跡し、それに対するクライアントの接続を検証することが可能な、ＩＦＲＳマネジャ２１０を含むことが可能である。また、ＩＦＲＳマネジャ２１０は負荷の閾値を提供し、ＩＦＲＳ２００を利用しかつ／またはポーリングする任意のマシン上でのデータ転送を開始し、中断し、再開しかつ／または停止させるかどうかを判定して、たとえば複数のマシンにまたがる処理のバランスをとり、それによって任意の１つのマシンの負担を緩和することが可能となる。通常、メッセージ転送セッション（たとえば、接続）が開始されるとき、ＩＦＲＳマネジャ２１０は、そのセッション用の接続インスタンスを生成することが可能である。この接続インスタンスには、たとえばクライアント、マシンおよび１つ（または複数）のメッセージを示す情報、および／または接続ＩＤ（たとえば、キープアライブメッセージ）を埋め込む（ｐｏｐｕｌａｔｅ）ことが可能である。かかる情報を利用して、ＩＦＲＳとクライアント（たとえば、テスタまたは開発者）の間でのメッセージ転送を開始することが可能である。さらに、接続ＩＤを利用して、異なるマシン内でのメッセージ伝送を追跡することが可能である。
【００３０】
さらに、接続インスタンスを動的に更新して、伝送の進捗状況を反映させ伝送の履歴を提供することが可能である。たとえば、伝送に成功したあるいは失敗した任意の部分を（全体のメッセージを含めて）示す標識（ｉｎｄｉｃｉａ）を、接続インスタンスに関連付けることが可能である。伝送履歴としては、転送の開始と終了、中断と再開、通信アクティビティ（たとえば、クライアント間の会話の程度）のレベル、エラー、再送信、処理中のマシンの変化などに関連する情報を挙げることが可能である。
【００３１】
たとえば、ＩＦＲＳ２００が呼び出され、テスタと開発者の間で接続が確立されるとき、ＩＦＲＳマネジャ２１０は、マシンＩＤ（たとえば、グローバル一意識別子、すなわちＧＵＩＤ）を追跡して、かかる接続用の接続インスタンスを生成することが可能である。接続インスタンスは、システムパラメータを介してデバッグされる任意のマシンのＩＤを、ＩＦＲＳライブラリ２１４の一部として含むことが可能である。かかる情報を利用して、所望のマシンを配置することが可能となり、またその所望のマシンおよびアダプタにアクセスが提供されあるいはそれらが適切に登録されたのを検証することが可能となる。呼出しがクライアントおよび／またはプルされるメッセージを示す情報を含んでいる場合、かかる情報をさらに接続インスタンスに含めることが可能である。この情報を利用して、クライアントを配置しメッセージを検証することが可能である。さらに、接続ＩＤおよび必要とされるデバッギングパラメータを、接続インスタンスへのキーとして含めることが可能であり、またＩＦＲＳマネジャ２１０が転送セッションを管理するために利用することも可能である。開発者側またはテスタ側の２つ以上のマシンが、複数の分散したマシンの一部として、ＩＦＲＳ２００に接続を要求することが可能であることを理解されたい。たとえば、１つ（または複数）の開発者マシンと、１つ（または複数）のテスタマシンの間でのデバッギングセッション中、別の１つ（または複数）の開発者マシンが、既存のデバッギングセッションに参加することが可能であり、キャッシュされたデバッギングの履歴を取り出して、かかるデバッギングセッションを観察しかつ／またはそれに参加することが可能である。
【００３２】
したがって、あるメッセージが与えられた場合、いくつかのマシンのうちの１つを選択し、ポーリングを開始し、かつ／またはメッセージ伝送を開始することが可能である。さらに、２つ以上のマシンが、転送に参加することが可能である。たとえば、１つのマシンを利用してメッセージ伝送を開始し、その後、接続を別の１つ（または複数）のマシンに滑らかに移行（ｆｌｏａｔ）して、伝送を続行しかつ／または終了することが可能である。かかる態様を利用して、信頼性を確保し、伝送およびマシンのエラーを低減し、複数のマシンに処理を効率的に分散させることが可能である。一般に、接続インスタンス内に格納された接続ＩＤを利用して、どのマシンが接続インスタンスにアクセスし、クライアントからデータをプルすることができるかを決定することが可能である。たとえば、接続ＩＤをあるマシンに運搬することが可能であり、次いでそのマシンが接続インスタンスをロックし、メッセージの運搬を開始することが可能であるが、その際、接続インスタンスを保持するマシンだけが、メッセージ伝送をロックし容易にすることが可能である。別のマシンがメッセージ伝送に参加できるようにするために、接続ＩＤを、したがってロックを、その別のマシンに滑らかに移行させることが可能である。
【００３３】
したがって、ファイアウォールの他方側に位置する開発者および／またはテスタは、ＩＦＲＳ２００をポーリングし、コマンドの返答を獲得して、たとえばＨＴＴＰトラフィック上でのシームレスな接続を行うことが可能である。さらに、デバッガツールからのＴＣＰ／ＩＰトラフィックを、ＨＴＴＰの形にパッケージ化し、それをファイアウォールの外にＩＦＲＳ２００のウェブサーバ２１２へと送出することが可能である。次いでＩＦＲＳ２００は、その情報をキャッシュし、かかる情報をＩＦＲＳデータベースの一部としてバッファ（図示せず）に置くことが可能である。次いでそのようなキャッシュされたデータを、最終的に開発者に移送するために準備することが可能である。ＩＦＲＳ２００を周期的な間隔でポーリングし、ＩＦＲＳ２００が開発者またはテスタに転送すべき何らかのデータを含んでいるかどうか判定することが可能である。
【００３４】
図３には、本発明の一態様による、人工知能コンポーネントを利用するＩＦＲＳを示してある。図示したように、本発明では、負荷を調整しかつ／またはバランスをとること、および／またはＩＦＲＳ３００をポーリングすることなどに関する様々な態様を実施するための、様々な人工知能ベースのスキームを利用することが可能である。たとえば、ＩＦＲＳ３００をポーリングするクライアントがいつ緩和可能かを明示的にまたは暗示的に学習するプロセスを、自動的な分類システムおよび方法を使用して円滑に進めることが可能である。分類は、確率論ベースおよび／または統計ベースの分析を（たとえば、その分析の有用性およびコストを考慮に入れて）利用し、ユーザが自動的に実行されるのを望む活動を予測し（ｐｒｏｇｎｏｓｅ）推論する（ｉｎｆｅｒ）ことが可能である。たとえば、ＳＶＭ（ｓｕｐｐｏｒｔ  ｖｅｃｔｏｒ  ｍａｃｈｉｎｅ）分類器を利用することが可能である。他の分類手法には、ベイズネットワーク、決定木、様々な独立性パターンを提供する確率分類モデル（ｐｒｏｂａｂｉｌｉｓｔｉｃ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｍｏｄｅｌｓ）があり、それらを利用することが可能である。本明細書で使用する分類には、優先モデル（ｍｏｄｅｌｓ  ｏｆ  ｐｒｉｏｒｉｔｙ）を展開するために利用される統計的回帰も含まれる。
【００３５】
容易に理解されるように、本発明では、（たとえば、包括的な訓練データを使用して）明示的に訓練され、かつ（たとえば、ユーザの振舞いを観察し、外的情報（ｅｘｔｒｉｎｓｉｃ  ｉｎｆｏｒｍａｔｉｏｎ）を受け取ることによって）暗示的に訓練された分類器を利用することが可能であり、したがって、その分類器を使用して、ある質問にどの返答を返すかを、予め定められた基準に従い自動的に決定する。たとえばよく知られているＳＶＭについては、それらのＳＶＭは、分類器コンストラクタおよび特徴選択モジュール内での学習または訓練段階を経て構成される。分類器は、ある入力の属性ベクトルｘ＝（ｘ１、ｘ２、ｘ３、ｘ４、ｘｎ）を、その入力があるクラスに属する信頼（ｃｏｎｆｉｄｅｎｃｅ）に、すなわちｆ（ｘ）＝信頼（クラス）に写像する関数である。さらに、様々な統計ベースの分布（たとえば、ポアソン分布）を利用して、ＩＦＲＳ３００、開発者、テスタの間の負荷レベルを評価し予想することが可能であり、たとえば、ランダムな振舞いおよび各マシンがどれほどの頻度でウェブサーバをポーリングすることができるかを指定し、適応型ポーリングを形成することが可能である。
【００３６】
次に図４を参照すると、本発明の一態様によるマシンをデバッグする方法であって、開発者およびテスタをファイアウォールの背後に置き、ＩＦＲＳを共通の到達範囲内に配置することが可能な例示的な方法が示されている。まず４２０で、故障したデバッグ対象のマシンが、デバッギングを必要としている。次いで４３０で、かかるデバッグ対象のマシンを、シリアルケーブルまたは１３９４ケーブルを介してテスタに接続することが可能である。次いで４４０で、テスタが、ＩＦＲＳにサインインし、ＩＦＲＳからリターンチケットを受け取る。テスタがＩＦＲＳにサインインすると、４５０で、（たとえば、電子メールを介して）開発者に通知を送ることが可能であり、あるいはそれをＩＦＲＳに知らせることも可能である。次に、開発者が行う動作について手順は図５に、テスタが行う動作について手順は図６に進む。
【００３７】
図５に示すように、開発者は、通知を受け取ると、次いで５１０でＩＦＲＳとのセッションを開始することが可能である。次に５２０で、かかる開発者は、デバッグ対象をデバッグするために必要とされるパラメータを取得することが可能である。かかるパラメータに基づき、５３０で、デバッギング手続きのためにデバッガセッションを開始することが可能である。したがって、ポーリング機構５４０を利用することが可能であり、ＩＦＲＳを周期的にポーリングして、開発者に伝送されるのを待っているデータがあるかどうかを検証することが可能である。
【００３８】
同様に図６には、本発明の一態様による、テスタが行う一連の動作を示してある。６１０で、開発者がＩＦＲＳと接続されているかどうかの判定が行われる。接続されていない場合は、図４の動作４５０に戻る。そうではなく、開発者がＩＦＲＳと接続されている場合は、デバッガツールをデバッグ対象のマシン上で起動させる。ポーリング機構６３０が利用可能であり、ＩＦＲＳを周期的にポーリングして、テスタに伝送されるのを待っているデータがあるかどうかを検証することが可能である。
【００３９】
本明細書では例示的な方法を、様々な事象および／または動作を表す一連のブロックとして記載し図示してあるが、本発明は、例示したかかるブロックの順序によって限定されるものではない。たとえば、本発明によるいくつかの動作または事象が、本明細書で例示した順序とは別の異なる順序で、かつ／または他の動作もしくは事象と同時に生じてもよい。また、本発明による方法を実施するために、すべての例示したブロック、事象、あるいは動作が、必ずしも必要とされるわけではない。さらに、本発明による例示的な方法および他の方法を、図示し本明細書に記載した方法、ならびに図示されず記載されていない他のシステムおよび装置と一緒に実施することもできることが理解されるであろう。
【００４０】
図７は、本発明の一態様による、１つ（または複数）のクライアントＡ、および１つ（または複数）のクライアントＢがファイアウォールの背後にある場合の、ＩＦＲＳ７１５によりそれらのクライアントに関するバイナリデータの交換を容易にすることが可能な、ブロックアーキテクチャ７００である。１つ（または複数）のクライアントＡがバイナリデータをクライアントＢに送出することを必要とする場合、クライアントＢは、ＩＦＲＳ７１５における１つ（または複数）のサーバ７１０に情報を求める必要があり、したがって通常、ポーリング機構が利用される。したがって、クライアントＡもクライアントＢも通常、ファイアウォールの制約のため、１つ（または複数）のウェブサーバ７１０をポーリングしなければならない。
【００４１】
クライアントＢがクライアントＡから返答７２０（たとえば、コマンドの返答、データストリーム、バイナリ交換など）を受け取ったとき、クライアントＡはその後、１つ（または複数）のサーバ７１０をポーリング７４０し、待ち状態のデータがあるかどうかを検証することが可能である。本発明の関連する一態様では、数学的アルゴリズムを利用して、ランダムな振舞いおよびクライアントＡとＢのそれぞれがどれほどの頻度でウェブサーバ７１０をポーリングすることが可能かを指定し、ウェブサーバ７１０上でたとえばポアソン分布を用いた適応型ポーリングを形成することが可能である。したがって、システム７００をスケーリングし、クライアントＡとクライアントＢの間のトラフィックを調整することが可能であるので、１つ（または複数）のウェブサーバ７１０は、長い（たとえば５秒を超える）時間間隔でポーリングされる。さらに、１つ（または複数）のサーバ７１０は、あるクライアントに、他方のクライアントの振舞いに変化があった（たとえば、クライアントが緩和することを学習し、情報を求める頻度を学習するようになった）ときその旨を知らせ、さらにどちらのクライアントの活動についても統計データベースを維持し、事象パターン（たとえば、クライアント間でのバイナリ交換の流れ）を予測し、その負荷を調整することが可能である。特に、ＨＴＴＰのオーバーヘッドがＴＣＰのバイナリデータに追加される場合、本発明は、クライアントと１つ（または複数）のウェブサーバ７１０の間での頻繁なポーリングセッションを緩和することを可能とする。
【００４２】
次に図８を参照すると、本発明の様々な態様を実施することが可能な、適当なコンピューティング環境の簡略な概要が示されている。これまで本発明を、１つのコンピュータまたは複数のコンピュータ上で走るコンピュータプログラムのコンピュータ実行可能な命令の一般的なコンテキストで説明してきたが、本発明を、他のプログラムモジュールと組み合わせて実装することも可能なことが、当業者には理解されるであろう。一般に、プログラムモジュールには、特定のタスクを実行しかつ／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などがある。さらに、本発明の方法を、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルド型コンピューティング装置、マイクロプロセッサベースのまたはプログラマブルな大衆消費電子製品（ｃｏｎｓｕｍｅｒ  ｅｌｅｃｔｒｏｎｉｃｓ）などを含めて他のコンピュータシステム構成を用いて実施することも可能なことが、当業者には理解されるであろう。先に説明したように、本発明の例示した態様を、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境で実施することも可能である。ただし、本発明の全部ではなくとも一部の態様は、スタンドアロンコンピュータ上で実施することも可能である。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートの両方の記憶装置に配置することが可能である。この例示的な環境は、処理ユニット８２１と、システムメモリ８２２と、システムメモリを含む様々なシステムコンポーネントを処理ユニット８２１に結合するシステムバス８２３とを含むコンピュータ８２０を含む。処理ユニット８２１は、様々な市販のプロセッサのどれでもよい。また、処理ユニット８２１として、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを使用することも可能である。
【００４３】
システムバスは、商業上利用可能な様々なバスアーキテクチャのうちのいずれかを使用する、ＵＳＢ、１３９４、周辺バス、およびローカルバスを含む様々な種類のバス構造のどれでもよい。システムメモリとしては、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８２４、およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８２５を挙げることができる。ＲＯＭ８２４には、起動時などにコンピュータ８２０内の要素間で情報を転送するのに役立つ、基本的なルーチンを含んでいるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）が格納されている。
【００４４】
コンピュータ８２０はさらに、ハードディスクドライブ８２７と、たとえば取外し可能なディスク８２９への読み書きを行うための磁気ディスクドライブ８２８と、たとえばＣＤ−ＲＯＭディスク８３１への読み書きを行うための、あるいは他の光媒体への読み書きを行うための光ディスクドライブ８３０とを含む。ハードディスクドライブ８２７、磁気ディスクドライブ８２８、および光ディスクドライブ８３０は、それぞれハードディスクドライブインターフェイス８３２、磁気ディスクドライブインターフェイス８３３、および光ドライブインターフェイス８３４によってシステムバス８２３と接続されている。それらのドライブおよびそれらに関連するコンピュータ読取り可能媒体は、コンピュータ８２０のための、データ、データ構造、コンピュータ実行可能な命令等の不揮発性記憶装置を提供する。上記のコンピュータ読取り可能媒体に関する説明では、ハードディスク、取外し可能な磁気ディスク、およびＣＤに言及しているが、この例示的な処理環境では、たとえば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなど、コンピュータ読取り可能な他の種類の媒体を使用することも可能であり、さらに、かかるどの媒体が本発明の方法を実施するためのコンピュータ実行可能な命令を含んでいてもよいことが、当業者には理解されるはずである。
【００４５】
オペレーティングシステム８３５、１つまたは複数のアプリケーションプログラム８３６、他のプログラムモジュール８３７、およびプログラムデータ８３８を含む複数のプログラムモジュールを、ドライブおよびＲＡＭ８２５に格納することが可能である。例示したコンピュータでは、オペレーティングシステム８３５は、実質的にどんな商業上利用可能なオペレーティングシステムであってもよい。
【００４６】
ユーザは、キーボード８４０、およびマウス８４２などのポインティングデバイスを使用して、コンピュータ８２０にコマンドおよび情報を入力することが可能である。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを挙げることが可能である。これらおよび他の入力装置は、しばしばシステムバスと結合されたシリアルポートインターフェイス８４６を介して処理ユニット８２１に接続されるが、パラレルポートや、ゲームポート、ＵＳＢ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などの他のインターフェイスによって接続されてもよい。モニタ８４７または他の種類の表示装置も、ビデオアダプタ８４８などのインターフェイスを介してシステムバス８２３に接続されている。コンピュータは通常、モニタに加えて、スピーカ、プリンタなど、他の周辺出力装置（図示せず）も含む。
【００４７】
コンピュータ８２０は、リモートコンピュータ８４９など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することが可能である。リモートコンピュータ８４９は、ワークステーション、サーバコンピュータ、ルータ、ピア装置または他の共通ネットワークノードでよく、また図８にはメモリ記憶装置８５０だけを示してあるが、通常、コンピュータ８２０に関連して記載される要素の多くまたは全部を含んでいる。図８に示した論理接続としては、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）８５１、およびＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）８５２を挙げることができる。かかるネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットにおいてごく一般的である。
【００４８】
コンピュータ８２０は、ＬＡＮのネットワーキング環境で利用される場合は、ネットワークインターフェイスまたはアダプタ８５３を介して構内ネットワーク８５１に接続することが可能である。コンピュータ８２０は、ＷＡＮのネットワーキング環境で利用される場合は、通常、モデム８５４を含むことが可能であり、かつ／またはＬＡＮ上の通信サーバに接続し、かつ／またはインターネットなどの広域ネットワーク８５２を介して通信を確立する他の手段を有することも可能である。モデム８５４は、内部モデムでも外部モデムでも可能であり、シリアルポートインターフェイス８４６を介してシステムバス８２３に接続することが可能である。ネットワーク化された環境では、コンピュータ８２０に関連する図示したプログラムモジュールまたはその一部分を、リモートの記憶装置に格納することが可能である。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を利用することが可能なことが理解されるであろう。
【００４９】
以上、本発明を、コンピュータプログラミングの技術分野における当業者のプラクティスに従って、別段の指示がない限り、コンピュータ８２０などのコンピュータが行う動作、ならびに記号で表される処理に関して説明してきた。かかる動作および処理は、コンピュータで実行される（ｃｏｍｐｕｔｅｒ−ｅｘｅｃｕｔｅｄ）動作および処理と呼ばれることもある。この動作および記号で表される処理には、結果として電気信号表現の変換（ｔｒａｎｓｆｏｒｍａｔｉｏｎ）または逆変換（ｒｅｄｕｃｔｉｏｎ）を生じさせる処理ユニット８２１によるデータビットを表す電気信号の操作、および（システムメモリ８２２、ハードドライブ８２７、フロッピー（登録商標）ディスク８２８、およびＣＤ−ＲＯＭ８３１を含む）メモリシステム内の記憶場所でのデータビットの維持が含まれ、それによってコンピュータシステムの動作ならびに他の信号処理を再構成し、またはその他の形で変更することが、理解されるであろう。かかるデータビットが維持される記憶場所は、そのデータビットに対応する特定の電気的、磁気的、または光学的な特徴を有する物理的な場所である。
【００５０】
次に図９を参照すると、本発明の一態様による、ＩＦＲＳを利用することが可能なクライアント／サーバシステム９００が、示されている。１つ（または複数）のクライアント９２０を、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティング装置）とすることが可能である。システム９００には、１つまたは複数のサーバ９４０も含まれている。また、１つ（または複数）のサーバ９４０を、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティング装置）としてもよい。たとえば、かかるサーバ９４０は、本発明を利用して変換を行うためのスレッドを格納することが可能である。クライアント９２０とサーバ９４０は、本発明に従って２つ以上のコンピュータプロセス間で伝送されるデータパケットの形で通信を行うことが可能である。図示したように、システム９００は、１つ（または複数）のクライアント９２０と、１つ（または複数）のサーバ９４０との間の通信を容易にすることが可能な通信フレームワーク９８０を含んでいる。１つ（または複数）のクライアント９２０は、１つ（または複数）のクライアント９２０のローカルに情報を記憶することが可能な、１つ（または複数）のクライアントデータストア９１０と操作可能に接続されている。さらに、クライアント９２０は、サーバプロセスを走らせているサーバコンピュータ９４０上に配置されたデータベース９６０にアクセスし、それを更新することが可能である。本発明の一態様では、クライアントプロセスがウェブブラウザであり、サーバプロセスがウェブサーバである場合、通信フレームワーク９８０は、インターネットであることが可能である。したがって、典型的なクライアント９２０は、中央処理装置（ＣＰＵ）、システムメモリ、パーソナルコンピュータをインターネットに接続するためのモデムまたはネットワークカード、表示装置、ならびにキーボードやマウスなど他のコンポーネントを有する、従来のパーソナルコンピュータなどの汎用コンピュータであることが可能である。同様に、典型的なサーバ９４０は、大学または企業向けのメインフレームコンピュータあるいは専用ワークステーションなどであることが可能である。
【００５１】
本発明を、ある種の例示的な態様に関して図示し記載してきたが、当業者なら、本明細書および添付の図面を読み、理解すれば、これと等価な変形形態（ａｌｔｅｒａｔｉｏｎ）および変更形態（ｍｏｄｉｆｉｃａｔｉｏｎ）に想到することが理解されるであろう。特に、上述したコンポーネント（アセンブリ、装置、回路、システムなど）によって実現される様々な機能に関して、かかるコンポーネントを説明するために使用される用語（「手段」という表現を含む）は、別段の指示がない限り、たとえそれがここに開示した構造と構造上等価でない場合でも、ここに記載したコンポーネントの指定の機能を実現し、本明細書において例示した本発明の例示的な態様における機能を実現する、あらゆるコンポーネント（たとえば、機能的に等価なコンポーネント）に対応するものとする。この点に関して、本発明は、システム、ならびに本発明の様々な方法における動作を実施し、かつ／または事象をもたらすコンピュータ実行可能な命令を有するコンピュータ読取り可能な媒体を含むことも理解されるであろう。さらに、「含む（ｉｎｃｌｕｄｅｓ）」、「含んでいる（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有している（ｈａｖｉｎｇ）」という用語およびその活用語は、詳細な説明または特許請求の範囲のいずれかにおいて使用する限りにおいて、「備える（ｃｏｍｐｒｉｓｉｎｇ）」と同様に、包含的な用語であるものとする。
【図面の簡単な説明】
【００５２】
【図１】本発明の一態様による、テスタ／開発者デバッギングアプリケーションにおけるＩＦＲＳの概略ブロック図である。
【図２】本発明の特定の一態様による、ＩＦＲＳの例示的なアーキテクチャを示す図である。
【図３】本発明の一態様による、人工知能コンポーネントを利用するＩＦＲＳの別の例示的なブロック図である。
【図４】本発明の１つの方法による、デバッギング手続きの流れ図である。
【図５】本発明の一態様による、デバッギング方法の別の態様を示す図である。
【図６】本発明の一態様による、ファイアウォールの背後にあるマシンをデバッグする方法の別の流れ図である。
【図７】本発明の一態様による、ファイアウォールの両側にあるクライアント間でデータを交換する場合に、ＩＦＲＳによってバイナリデータの交換を容易にすることが可能なシステムのブロック図である。
【図８】本発明の様々な態様を実施することが可能な、適当なコンピューティング環境の簡略な概要を示す図である。
【図９】本発明の一態様による、ＩＦＲＳを利用することが可能なクライアント／サーバシステムの図である。
【符号の説明】
【００５３】
１０５  テスタマシン／エンドユーザ
１０６  インテリジェントプロキシ／アグリゲータ
１０７  ＩＦＲＳデータベース
１０８  デバッガツール
１０９  開発者マシン
１１０  ＩＦＲＳ
１１２  バグチェッカクラッシュを伴うデバッグ対象１
１１４  バグチェッカクラッシュを伴うデバッグ対象２
１１６  バグチェッカクラッシュを伴うデバッグ対象Ｎ
１２０  ファイアウォール
【図１】
2006236356.tif 000003
【図２】
2006236356.tif 000004
【図３】
2006236356.tif 000005
【図４】
2006236356.tif 000006
【図５】
2006236356.tif 000007
【図６】
2006236356.tif 000008
【図７】
2006236356.tif 000009
【図８】
2006236356.tif 000010
【図９】
2006236356.tif 000011