(57)【要約】  ダウンロード配布エンジンの使用を介するコンポーネントベースのフレームワークでの電子ソフトウェアダウンロード（ＥＳＤ）の分割ダウンロードのシステムおよび方法。ダウンロード配布エンジンは、独立ソフトウェアベンダ（ＩＳＶ）が、関連するソフトウェアおよび／またはディジタルコンテンツの個別の部分をユーザにダウンロードすることを可能にし、第２のＩＳＶは、ソフトウェアおよび／またはディジタルコンテンツの別の部分を供給することができる。
2008542909.tif 000002
【特許請求の範囲】
【請求項１】
ディジタルコンテンツの分割ダウンロードを容易にするシステムであって、
ダウンロードされたディジタルコンテンツの欠けている部分に関する情報を独立ソフトウェアベンダ（ＩＳＶ）に供給するダウンロード配布エンジンと、
前記ダウンロードされたディジタルコンテンツを完成させるために前記独立ソフトウェアベンダによって供給される補足ディジタルコンテンツと
を含むことを特徴とするシステム。
【請求項２】
前記ダウンロード配布エンジンは、前記欠けている部分を検出する検出コンポーネントを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記ダウンロード配布エンジンは、前記欠けている部分をどこでダウンロードすべきか、または前記欠けている部分に関連する問題の解決に関する追加情報をどこで入手すべきかをユーザに通知する通知コンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記ダウンロード配布エンジンは、前記欠けている部分をインストールするプロセスを提供するモニタコンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記モニタコンポーネントは、前記ＩＳＶから前記欠けている部分をダウンロードするためのリアルタイムハイパーリンクを供給することを特徴とする請求項４に記載のシステム。
【請求項６】
前記ダウンロード配布エンジンは、ダウンロードに関する前記欠けている部分の入手可能性を判定する配布リゾルバをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記配布リゾルバは、前記欠けている部分に関する情報を入手するためにメタデータリーダコンポーネントをさらに含むことを特徴とする請求項６に記載のシステム。
【請求項８】
ディジタルコンテンツを分割ダウンロードする方法であって、
第１のＩＳＶによって前記ディジタルコンテンツの第１の部分をダウンロードするステップと、
第２のＩＳＶに前記ダウンロードする行為に関する情報を供給するステップと
を含むことを特徴とする方法。
【請求項９】
前記ディジタルコンテンツの前記第１の部分をダウンロードする前記行為をエンドユーザによって開始することをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
ディジタルコンテンツの分割ダウンロードを容易にするシステムであって、
ダウンロードされたディジタルコンテンツの欠けている部分に関する情報をＩＳＶに供給する手段と、
前記ディジタルコンテンツを補足する手段と
を含むことを特徴とするシステム。
【請求項１１】
ダウンロード可能なソフトウェアを提供するコンピューティングデバイスであって、
前記コンピューティングデバイスは、複数の独立ソフトウェアベンダ（ＩＳＶ）と相互作用するように構成され、
各ＩＳＶは、前記ダウンロード可能なソフトウェアの部分を供給するように構成され、
前記コンピューティングデバイスは、前記ダウンロード可能なソフトウェアを購入する注文をクライアントデバイスから受信し、前記注文に関連するトランザクションを生成するようにも構成され、
前記コンピューティングデバイスは、前記トランザクションを前記ＩＳＶに供給し、前記ＩＳＶから前記ソフトウェアの部分をダウンロードするための情報を前記クライアントデバイスに供給するようにさらに構成されることを特徴とするコンピューティングデバイス。
【請求項１２】
前記ダウンロード可能なソフトウェアの各部分は、別々のＩＳＶによって供給され、前記部分のすべては、前記クライアントデバイスによって完全なソフトウェアをビルドするのに必要であることを特徴とする請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記クライアントデバイスは、許可されたマーチャントを介して前記コンピューティングデバイスと相互作用するように構成されることを特徴とする請求項１１に記載のコンピューティングデバイス。
【請求項１４】
ソフトウェアを購入し、配布するシステムであって、
複数の独立ソフトウェアベンダ（ＩＳＶ）であって、各ＩＳＶは、ダウンロード可能なソフトウェアの部分を供給するように構成され、前記ダウンロード可能なソフトウェアの各部分は、別々のＩＳＶによって供給される、複数のＩＳＶと、
カスタマからの前記ダウンロード可能なソフトウェアの注文を処理するように構成され、かつ前記注文に関連するトランザクションを生成し、前記注文を前記ＩＳＶに供給するようにも構成される、マーチャントオブレコードと、
前記カスタマに関連するダウンロードマネージャであって、前記ＩＳＶから前記ソフトウェアの部分をダウンロードし、前記ダウンロードされた部分から完全なソフトウェアをビルドするように構成される、ダウンロードマネージャと
を含むことを特徴とするシステム。
【請求項１５】
前記マーチャントオブレコードによって生成された前記トランザクションを前記ＩＳＶに供給するように構成された転送マネージャをさらに含み、
前記転送マネージャは、ダウンロード許可を前記ＩＳＶから受信し、前記ＩＳＶからの前記ソフトウェアの部分のダウンロードと共に使用するために前記ダウンロード許可を前記カスタマに供給するようにも構成されることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記部分のすべては、前記ダウンロードマネージャによって前記完全なソフトウェアをビルドするのに必要であることを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記カスタマからの前記注文の処理に関して前記マーチャントオブレコードのエージェントとして動作するように構成された許可されたマーチャントをさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１８】
デバイス実行可能命令を用いてエンコードされた１つまたは複数のデバイス可読媒体であって、
前記デバイス実行可能命令は、
ダウンロード可能ソフトウェアを購入する注文をカスタマから受信することと、
前記注文に関連するトランザクションを生成することと、
複数のＩＳＶを識別することと、
前記トランザクションを前記ＩＳＶに供給することと、
前記トランザクションに関連する購入情報およびダウンロード情報を判定することと、
前記購入情報および前記ダウンロード情報を前記カスタマに送信することと
を含み、
前記複数のＩＳＶのそれぞれは、前記注文内の前記ソフトウェアの部分を供給し、
前記部分のすべては、完全なソフトウェアをビルドするのに必要であることを特徴とするデバイス可読媒体。
【請求項１９】
前記注文は、許可されたマーチャントを介して前記カスタマから受信されることを特徴とする請求項１８に記載のデバイス可読媒体。
【請求項２０】
前記トランザクションは、転送マネージャを介して前記ＩＳＶに供給されることを特徴とする請求項１８に記載のデバイス可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの分割ダウンロードのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータテクノロジ（たとえば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能性、など）のさらなる進歩は、一般に、さまざまな産業での機能強化されたコンピュータアプリケーションに寄与してきた。さらに強力なサーバシステムは、しばしばサーバのアレイとして構成されるが、一般に、たとえばＷＷＷ（World Wide Web）など、外部ソースから発する要求にサービスするために提供される。
【０００３】
ソフトウェアシステムがより複雑になるにつれて、そのようなシステムを複数のオブジェクトおよびファイルからダウンロードし、ビルドすることが一般的になってきた。たとえば、ソフトウェアシステムは、数百個のファイルまたはオブジェクト（ソフトウェアまたはアプリケーションシステムをビルドすることは、１つまたは複数のビルドマシンで着手することができる）と、中間ストレージファシリティへのダウンロードを含む場合がある。そのようなビルドマシンおよびダウンロードプロセスは、たとえばファイルまたはオブジェクトをコンパイルし、アセンブルし、リンクし、かつ／または解釈することができる。通常、オブジェクト指向コンピューティングは、オブジェクトモデルに基づき、このオブジェクトモデルでは、「オブジェクト」と呼ばれるコードが、データ（たとえば、属性）を含み、それに対して実行されるアクション（たとえば、オペレーション）を有することができる。オブジェクトは、そのインターフェースによって定義することができ、ここで、インターフェースは、そのインターフェースのオブジェクトに対して実行できるオペレーションと各オペレーションへのパラメータとを含む、ある種類のオブジェクトの特性および振る舞い（behavior）を定義する。オブジェクトの特定のインスタンスは、分散オブジェクトシステム内で、オブジェクト参照（object reference）と呼ばれる一意の識別子によって識別される。
【０００４】
完成したソフトウェア製品の必須ファイルの多くを、さまざまなステージでビルドすることができ、したがって、複数のソースおよび／または生成され／ビルドされたファイルが必要になる。ビルドプロセスの一部分によって生成されたファイルは、ビルドプロセスの１つまたは複数の他の部分への入力として要求される可能性があり、ビルドマシンは、ソースファイルの完全なコピーを有することができる。たとえば、ビルドマシンＡがファイルＡ１を生成し、ビルドマシンＢがファイルＢ２を生成する場合に、ビルドマシンＡがファイルＡ２を作るためにファイルＢ１を必要とする場合があり、ビルドマシンＢがファイルＢ２を作るためにファイルＡ１を必要とする場合がある。
【０００５】
分散オブジェクトシステムでは、クライアントは、サーバ上のオブジェクトをイメージ化するプロキシを作成することもできる。通常、プロキシは、オブジェクトのイメージであり、オブジェクトは、異なる論理エンティティおよび／または物理エンティティ（たとえば、マシン、プロセス、ネットワーク、など）に常駐する。分散システムでは、プロキシは、効率を改善するためにローカル処理を容易にすることができる。イメージ化されるオブジェクトは、１つまたは複数のインターフェースおよび基底クラスデータ型の第１組を実装することができる。さらに、そのようなオブジェクトは、オブジェクトをイメージ化するためにプロキシが１つまたは複数の属性および／またはメソッドの第１組をロードすることを要求することができる。プロキシが、イメージ化されるオブジェクトのために作成される時に、そのオブジェクトによって実装されるインターフェースおよび基底データ型は、通常は自動的にクライアントにロードされる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ソフトウェアシステムのビルドを完成するのに必要なファイルを、ビルドに用いられるビルドマシンに分配することは、ネットワーク帯域幅集中型であり、大量の情報転送を必要とし、その情報転送の一部が、アップロード中に壊されるか、使用不能になる可能性さえある。たとえば、１つのビルドマシンが、ビルドのうちでそのマシンの部分を完了するのに１０個のファイルだけを必要とするが、別のビルドマシンが、ビルドのうちでそのマシンの部分を完了するのに２００個のファイルを必要とする可能性があり、１つの欠けているファイルまたはオブジェクトが、たとえば読取、妥当性検査、または実行中に正しくロードされないことによって、必須アプリケーションの正しい動作を妨げる可能性がある。
【０００７】
それと同時に、複数の独立ソフトウェアベンダからのダウンロードが、アプリケーションまたはプログラムの正しい動作に必要である場合がある。そのようなダウンロードは、ダウンロードされるソフトウェアの開発および展開の合理化において非効率性をもたらし得る。たとえば、証明およびマーケットデリバリプロセスが、悪影響を受ける可能性がある。さらに、ビジネスポリシの見地から、ソフトウェアベンダは、別のソフトウェアベンダがそのベンダのソフトウェアへのアクセスをすることなしに、ソフトウェアをエンドユーザに直接に供給することを望む場合がある。また、ライセンス交付制約が、そのようなソフトウェアの電子配布に対して存在する場合がある。さらに、ソフトウェアデベロッパは、たとえば詐欺の可能性が存在するときなど、彼らが「潜在的に敵対的」と考えるプラットフォームに作品を配布せず、この場合に、ライセンスが許可されたデバイスに発行されるという保証は入手できない。
【０００８】
したがって、従来のシステムおよびデバイスに関連する上述の例示的欠陥を克服する必要がある。
【課題を解決するための手段】
【０００９】
以下では、本発明のいくつかの態様の基本的理解をもたらすために、本発明の単純化された要約を提示する。この要約は、本発明の完璧な概要ではない。この要約は、本発明の主要な／クリティカルな要素を識別し、または本発明の範囲を区切ることを意図したものではない。この要約の唯一の目的は、後で提示する、より詳細な説明の前置きとして、単純化された形で本発明のいくつかの概念を提示することである。
【００１０】
本発明は、各独立ソフトウェアベンダ（ＩＳＶ）がそのソフトウェアおよび／またはディジタルコンテンツの個別の部分をユーザにダウンロードすることを可能にするダウンロード配布エンジンを使用することを介して、コンポーネントベースのフレームワークでの電子ソフトウェアダウンロード（Electronic Software Download、ＥＳＤ）の分割ダウンロードを提供する。したがって、ダウンロード配布エンジンは、第１のＩＳＶと第２のＩＳＶとの間のデータ交換を供給して、ソフトウェアのうちで各ＩＳＶからユーザにダウンロードされる部分、ユーザがそれでもソフトウェアの正しい実行のためにダウンロードを必要とする任意の追加コンポーネントまたは補足コンポーネント、ライセンス要件、請求手順などの情報を供給することができる。本明細書の記述が、主に第１のＩＳＶと第２のＩＳＶとの間の相互作用のコンテキストで説明されるが、本発明が、それに限定されず、３つ以上のＩＳＶの一部として実装され得ることを了解されたい。さらに、本発明のいくつかの態様では、第１のＩＳＶは、第２のＩＳＶと同一のエンティティとすることができる。
【００１１】
関連する態様で、ダウンロード配布エンジンは、さらに、第１のＩＳＶからユーザへのソフトウェアおよび／またはディジタルコンテンツのダウンロードを観察し、第２のＩＳＶからユーザに残りのソフトウェアコンポーネントをインストールするプロセスを提供する監視コンポーネントを含むことができる。たとえば、第１のＩＳＶからのダウンロードを開始する時に、トークンをバックグラウンドで第２のＩＳＶに渡して、ダウンロード情報（たとえば、識別番号、請求、ライセンス交付要件、バージョン管理方式、認証、セキュリティ、アクセス権、ディジタル著作権管理など）を供給することができ、ここで、第２のＩＳＶに、ダウンロードされるソフトウェアの正しいバージョン（たとえば、特定の地理、言語などについて）を供給するように指示することができる。したがって、カスタマ／エンドユーザは、ソフトウェアをダウンロードする時にシームレスなエクスペリエンスを享受することができる。そのような第１のＩＳＶおよび第２のＩＳＶからのダウンロードは、同時にまたは所定のインターバルで行うことができ、あるいは、リマインダー通知をカスタマ／エンドユーザに送信して、後の時刻まで延期することができる。さらに、割込み機能を、ダウンロード分割の一部としてイネーブル（enable）することができ、ここで、ユーザ要求に基づいて、ダウンロードの状態をログに記録し、かつ／または追跡することができる。
【００１２】
本発明のさらなる態様によれば、本発明のダウンロード配布エンジンは、第１のＩＳＶまたは第２のＩＳＶからダウンロードされる必要がある、ソフトウェアの欠けている部分を検出する検出コンポーネントと、欠けている部分をどこからダウンロードするか、かつ／またはダウンロードされたソフトウェアを補足するためにそのソフトウェアの欠けている部分に関連する問題の解決に関する追加情報をどこで入手するかをユーザに通知する通知コンポーネントとを含むことができる。これらのコンポーネントは、通常、エンドユーザによってダウンロードされたソフトウェア（またはディジタルコンテンツ）の正しい妥当性検査および／または実行を保証することができる。
【００１３】
したがって、製品を、機能性のグループを含むパッケージなどの複数のより小さい部分品（piece）からビルドできるコンポーネント駆動アーキテクチャでは、本発明のダウンロード配布エンジンは、ダウンロードプロセスを容易にすると同時に、ライセンス交付問題およびセキュリティ問題に伴う問題を軽減することができる。したがって、各ＩＳＶは、そのソフトウェア配布に対する必須の制御を維持することができる。さらに、リコール、パッチなどを、個別のダウンロードについて正しいＩＳＶによって直ちに供給することができる。さらに、バンドルされたライセンスの配布を行うことができ、ここで、ディジタル著作権管理トークンをユーザに送ることができる。
【００１４】
もう１つの態様では、分割ダウンロードを使用してソフトウェアを購入し、配布するシステムが提供される。このシステムは、複数のＩＳＶ、マーチャントオブレコード（merchant of record）、およびダウンロードマネージャを含む。各ＩＳＶは、ダウンロード可能ソフトウェアの部分を供給するように構成され、各部分は、別々のＩＳＶによって供給される。マーチャントオブレコードは、カスタマからのダウンロード可能ソフトウェアの注文を処理するように構成される。マーチャントオブレコードは、注文に関連するトランザクションを生成し、そのトランザクションをＩＳＶに供給するようにも構成される。ダウンロードマネージャは、カスタマのデバイス内のクライアントコンポーネントである。ダウンロードマネージャは、ソフトウェアの諸部分をＩＳＶからダウンロードし、ダウンロードされた部分から完全なソフトウェアをビルドするように構成される。
【００１５】
前述のおよび関連する目的を達成するために、本発明は、本明細書の以下の記述で完全に説明される特徴を含む。以下の説明および添付図面は、本発明のある種の例示的態様を詳細に示す。しかし、これらの態様は、本発明の原理を使用できるさまざまな形のうちの少数を示すに過ぎない。本発明の他の態様、利益、および新規の特徴は、添付図面と共に考慮される時に、本発明の以下の詳細な説明から明白になるであろう。
【発明を実施するための最良の形態】
【００１６】
本発明を、これから図面を参照して説明するが、図面では、類似する符号が、すべての図を通じて類似する要素を示すのに使用される。以下の記述では、説明のために、本発明の完全な理解をもたらすために多数の具体的な詳細を示す。しかし、これらの具体的な詳細な説明なしで本発明を実践できることは明白であろう。他の場合には、本発明の説明を容易にするために、周知の構造およびデバイスをブロック図形式で示す。
【００１７】
本明細書で使用する用語「コンポーネント」および「システム」は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連のエンティティを指すことが意図されている。たとえば、コンポーネントは、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータとすることができるが、これらに限定はされない。たとえば、サーバで動作するアプリケーションとサーバとの両方を、コンポーネントとすることができる。１つまたは複数のコンポーネントが、１つのプロセス内および／または１つの実行のスレッド内に存在することができ、１つのコンポーネントを、１つのコンピュータにローカライズし、および／または２つまたはそれ以上のコンピュータの間で分散させることができる。
【００１８】
まず図１を参照すると、本発明の一態様によるダウンロード配布エンジンの概略ブロック図が示されている。そのようなダウンロード配布エンジン１００は、Ｎ個（Ｎは整数）の独立ソフトウェア／ディジタルコンテンツベンダ（ＩＳＶ）１０２、１０４、１０６がそのソフトウェアおよび／またはディジタルコンテンツの個別の部分をＭ個（Ｍは整数）のエンドユーザ１０１、１０３、および１０５にダウンロードすることを可能にする。そのようなエンドユーザは、パームパイロット、携帯情報端末、メディアプレイヤ、テレビジョンセット、コンピュータなどのデバイスを含むことができる。
【００１９】
さらに、エンドユーザ１０１、１０３、および１０５は、システムエリアネットワークまたは他の種類のネットワークとすることができ、複数のホスト（図示せず）を含むことができるネットワークシステム１０７の一部とすることができ、このホストは、パーソナルコンピュータ、サーバ、または他の種類のコンピュータとすることができる。そのようなホストは、一般に、１つまたは複数のアプリケーションレベル（またはユーザレベル）プログラムの稼動または実行ならびにＩ／Ｏ要求（たとえばＩ／Ｏ読取またはＩ／Ｏ書込）の開始が可能であるものとすることができる。それに加えて、ネットワークシステム１０７は、さらに、１つまたは複数の入出力ユニット（Ｉ／Ｏユニット）を含むことができ、そのようなＩ／Ｏユニットは、それに接続された１つまたは複数のＩ／Ｏコントローラを含むことができ、Ｉ／Ｏユニットのそれぞれは、ストレージデバイス（たとえば、ハードディスクドライブ、テープドライブ）または他のＩ／Ｏデバイスなどの複数の種類のＩ／Ｏデバイスのいずれかとすることができる。ホストおよびＩ／Ｏユニットおよびそれに接続されたＩ／ＯコントローラおよびＩ／Ｏデバイスは、クラスタなどのグループに編成することができ、各クラスタは、１つまたは複数のホストと、通常は１つまたは複数のＩ／Ｏユニットとを含む（各Ｉ／Ｏユニットは、１つまたは複数のＩ／Ｏコントローラを含む）。ホストおよびＩ／Ｏユニットは、１つまたは複数のクラスタのノードの組を接続する（たとえば、ホストおよびＩ／Ｏユニットの組を接続する）、ルータ、スイッチ、および通信リンク（ワイヤ、コネクタ、ケーブルなど）の集合を介して相互接続することができる。
【００２０】
さらに、ネットワークシステム１０７は、たとえば、イーサネット（登録商標）ＬＡＮ、トークンリングＬＡＮ、または他の種類のＬＡＮ、あるいは広域通信網（ＷＡＮ）とすることができる。また、ネットワークシステム１０７に、ハードワイヤード接続経路および／または光接続経路および／または無線接続経路を含めることができる。以下で詳細に説明するように、ダウンロード配布エンジン１００は、ＩＳＶ  １０２、１０４、１０６の間のデータ交換を供給して、ソフトウェアのうちで各ＩＳＶからユーザにダウンロードされる部分、それでもユーザがソフトウェアを正しく実行するために必要とする任意の追加コンポーネント、ライセンス交付要件、請求などの情報を供給することができる。
【００２１】
以下でより詳細に述べるように、ソフトウェアバンドルのダウンロードを分割して、ソフトウェアプロバイダにより高い効率および彼らの個別の製品に対するより大きい制御を与えることができる。単一のＩＳＶは、もはや、その個別の製品に関連するすべてのソフトウェアをバンドルし、各ソフトウェアバンドルをカスタマに配布する必要がない。今や、ソフトウェアバンドルを、分割し、本質的に異なるエンティティ（たとえば、個別のソフトウェアの実際の製作者）によってエンドユーザに電子的に配布することができる。ソフトウェアバンドルを分割することによって、第１のソフトウェア製品ＩＳＶに関連するソフトウェアバンドルの第２の部分を、その第２の部分の製造業者によって直接にエンドユーザに独立に供給することができる。それを行うことによって、第２のソフトウェアの製造業者に、製品に対するより大きい制御（たとえば、配布、配布の形、インストール、メンテナンス、バージョン管理方式、ライセンス交付、セキュリティ、その他）が与えられる。
【００２２】
ソフトウェアのそのような配布に関するさまざまなシナリオを、より詳細に述べるが、これらのシナリオには、たとえば、次にあげるものが含まれる。（１）ソフトウェアが第１のＩＳＶからダウンロードされている間またはその後に、第２のＩＳＶが、第１のＩＳＶのソフトウェアに関連するその個別のソフトウェアをエンドユーザにダウンロードするように促され（そのような促しは、エンドユーザからまたは第１のＩＳＶからさえ直接に行うことができる）、（２）第２のＩＳＶは、そのソフトウェアのダウンロードに関するプロキシとして第１のＩＳＶを使用することもでき、あるいはその代わりに、第１のＩＳＶおよびその個別のソフトウェアのプロキシとして働くことができ、（３）第２のＩＳＶは、ディジタル著作権管理を使用し、その個別のソフトウェアに関する複数のライセンスをエンドユーザにダウンロードすることもでき、（４）最初のダウンロードの後に、第２のＩＳＶは、そのソフトウェアに関するバージョンコントロールならびに第１のＩＳＶのソフトウェアおよびエンドユーザの他のソフトウェア／ハードウェアと一致し、互換であることを調停することができ、（５）ソフトウェアの配布は、ハードワイヤ上でならびに無線で実行されることができ、そのような電子配布をもたらすのに使用可能な任意の適切な転送媒体ならびに通信プロトコルを使用することができ、（６）完全な電子配布が最も典型的であると期待されはするが、ソフトウェアのある部分が電子配布され、他の部分が物理的に配布されるように、配布を二又に分けることもできる（望まれる場合に）ことが了解され、（７）認証方式、セキュリティ方式、およびディジタル著作権管理方式を使用して、ソフトウェアバンドルの個別の部分の電子配布をもたらし、容易にすることができる。前述のシナリオおよびさらなるシナリオは、本明細書で述べられ、かつ／または本明細書の教示からたやすく明白になり、そのような実施態様のすべてが、本明細書に添付の特許請求の範囲の範囲に含まれることが意図されている。
【００２３】
まず図２を参照すると、ダウンロードされたソフトウェアおよび／またはディジタルコンテンツの欠けている部分を検出する検出コンポーネント２０３と、欠けているオブジェクトをどこで入手すべきか、および／または欠けている部分に関連する問題の解決に関する追加情報をどこで入手すべきかをユーザに通知する通知コンポーネント２０５とを使用することによって、ＩＳＶ  ２４０からダウンロードされたパケット（たとえば、機能性のグループ）からのアプリケーションのビルドを容易にすることができるダウンロード配布エンジン２０１が示されている。したがって、第１のＩＳＶからのソフトウェアのダウンロード中に、ダウンロード配布エンジン２０１は、そのようなソフトウェアバンドルのすべての欠けている部分を検出でき、ユーザが欠けている部分を第２のＩＳＶからダウンロードすることを可能にし、かつ／または欠けている部分の第２のＩＳＶからの正しいダウンロードおよび実行に関係付けられる問題をどのように解決するかに関する情報を供給することができる。
【００２４】
図示されているように、システム２００は、アプリケーションシステム２２０のビルドに用いられるダウンロードされるパケットおよび／またはファイルの配布および収集を管理することができる。さらに、そのようなコンポーネント駆動型アーキテクチャ環境では、通常、コンポーネントを、契約的に指定されたインターフェースを介してアクセスできる機能性の特定の部分品と呼ぶことができる。そのようなコンポーネントは、特定の機能を記述し、かつ／または実行する、自己完結型で明瞭に識別可能な成果物（artifact）とすることができる。たとえば、コンポーネントベースのシステム２００の基本的な機能に、ネットワークにまたがるインターオペラビリティ、異なるハードウェアプラットフォームまたはソフトウェアプラットフォームでのポータビリティ、およびデータリソースを自己管理する能力を含めることができる。
【００２５】
システム２００には、集合的にビルドマシン２１０と称する複数のビルドマシン２０２、２０４、２０６、２０８（１からＬまで、ただし、Ｌは整数）を含めることができる。当業者は、ビルドマシン２１０を物理的マシン（たとえば、１つまたは複数のコンピュータ）および／または仮想マシン（たとえば、１つまたは複数のコンピュータ上で動作する１つまたは複数のプロセス）とすることができることを了解するであろう。ビルドマシン２１０は、アプリケーションシステム２２０で使用される１つまたは複数のビルドファイルを作ることができる。
【００２６】
ビルドマシン２１０は、１つまたは複数のソースファイルを１つまたは複数のビルドファイルにコンパイルし、アセンブルし、解釈し、かつ／またはリンクすることができる。ビルドマシン２１０のあるセグメントが、１つまたは複数のビルドファイルをビルドする時に、ビルドマシン２１０の別のセグメントが、パブリッシュされるこれらのビルドファイルの名前のリストをコンパイルすることができる。たとえば、パブリッシュされるファイルは、ＩＳＶ  ２４０からダウンロードされ、そのようなダウンロードからビルドされるソフトウェアシステムまたはアプリケーション２２０に関連する１つまたは複数のＭａｋｅファイル内でパブリッシュされるファイルとしてリストされたファイルとすることができる。次に、ビルドマシン２１０は、ビルドファイル名のリストをビルドマネージャ２１４に送ることができる。ビルドマシンの１セグメントを、ポストビルドマシン２１６として指定することもでき、この場合に、ビルドマネージャ２１４は、ビルドマシンのセグメントごとに、ビルドマシン２１０がポストビルドマシン２１６に送らなければならないビルドファイルの名前のサブセットを含むリストを判定することができ、ポストビルドマシン２１６は、ビルドファイルのコレクションまたはセット２１８を作成する。ビルドマネージャ２１４は、ビルドマシン２１０のセグメントごとに、ビルドマシン２１０がポストビルドマシン２１６からの戻りで受け取らなければならないファイルの名前のサブセットを含むリストを判定することもできる。ポストビルドマシン２１６に送られ、ポストビルドマシン２１６から受け取られるファイルの名前のリストがビルドマシン２１０に配布されたならば、それらのファイルをポストビルドマシン２１６との間で転送することができる。このファイル転送は、たとえば、ビルドマシン２１０のセグメント、ビルドマネージャ２１４、ポストビルドマシン２１６、または別のプロセスによって開始することができる。システム２００は、上で説明したプロセスの１つまたは複数のステージを経験して、ユーザのマシン上でのアプリケーションシステム２２０のビルドを完了することができる。１つまたは複数のステージで、システム２００は、ポストビルドマシン２１６からのファイルの獲得を開始する前に、ビルドマシン２１０がビルドおよびポストビルドマシン２１６へのコピーを完了するのを待つことができる。ビルドマネージャ２１４およびポストビルドマシン２１６が独立に図示されているが、ビルドマネージャ２１４および／またはポストビルドマシン２１６によって実行されるプロセスを、同一の１つまたは複数の物理マシンおよび／または仮想マシンで実行できることを了解されたい。ダウンロードされたソフトウェアの欠けている部分に出会った時にアプリケーションシステム２２０を正しく実行するために、ダウンロード配布エンジン２０１は、マシンにパケットをアップロードする時に、すべての欠けている部分を検出する検出コンポーネント２０３を使用し、その後、ユーザは、通知コンポーネント２０５を介して、適当なＩＳＶから欠けている部分をダウンロードすること、またはその問題をどのように解決すべきかに関する情報を入手することが可���になる。
【００２７】
図３に、配布リゾルバ３０３が通知コンポーネント３０５の一部として動作する、本発明の例示的態様による例示的なダウンロード配布エンジン３０１を示す。ダウンロード配布エンジン３０１は、分散オブジェクトシステム内で動作し、この分散オブジェクトシステムでは、パケットオブジェクト３１０をＩＳＶからのソフトウェアダウンロードの一部としてダウンロードすることができる。ＩＳＶからユーザのマシンへアプリケーションの個別の部分をダウンロードする際に、配布リゾルバ３０３は、アプリケーションの正しい実行を保証するために、アプリケーションの欠けている部分の正しいダウンロードについて連絡される必要がある特定のＩＳＶに関する連絡情報を供給することによって、アプリケーションの欠けている部分の供給を容易にすることができる。配布リゾルバ３０３は、第１のＩＳＶからのダウンロードのうちでどのコンポーネントが欠けているか、およびどのコンポーネントが第２のＩＳＶから入手される必要があるかを判定することができる。そのようなアイテムを、取り出し、永続的に格納することができ、ここで、配布リゾルバ３０３は、上記で説明したプロセスの１つまたは複数の反復を経験して、アプリケーションのダウンロードを完了することができる。
【００２８】
ここで図４に移ると、ダウンロードされたソフトウェアの欠けている部分およびそのような欠けている部分をそこから入手すべきＩＳＶに関する情報を供給できる配布リゾルバ４０３の詳細なブロック図が示されている。配布リゾルバ４０３には、ダウンロード配布エンジン４０１によって実現されるダウンロード配布機能を容易にするために１つまたは複数のサブシステム（たとえば、メタデータリーダ４１０、属性識別サブシステム４２０、属性設定サブシステム４３０）を含めることができる。メタデータリーダ４１０は、解決されなければならない１つまたは複数の欠けているオブジェクトおよび／またはデータ型に関連する１つまたは複数のメタデータを入力としてとることができる。そのようなメタデータには、たとえば、そのメタデータに関連するデータ型の属性のリスト（このリストには、属性名、型、サイズなどが含まれる）、パラメータ型、パラメータサイズ、アドレスなどを含む情報と、それとの相互作用が望まれるエンティティが使用可能なデータ型（たとえば、親クラス）の定義を有しない場合にデータ型との相互作用に使用できる１つまたは複数のクラスを識別する情報とを含めることができる。
【００２９】
さらに、ソフトウェアおよびオブジェクトまたは参照の欠けている部分に関係付けられるデータ構造には、本発明に従って使用することのできる、配列、リスト、ヒープ、スタック、テーブル、データベースレコード、データベーステーブル、データベース、およびデータキューブを含めることができる。したがって、欠けている参照および／またはオブジェクトの１つまたは複数のクラスを識別するそのような情報を使用して、データ型と相互作用し、そのようなデータをどこから入手できるかを判定することができる。メタデータリーダ４１０を、属性識別サブシステム４２０および属性設定サブシステム４３０に動作可能にリンクして、これらのサブシステムが不一致のまたは欠けているオブジェクトおよび／またはデータ型を識別し、かつ／または正しいＩＳＶソース参照と比較するのを容易にすることができる。
【００３０】
さらに、配布リゾルバ４０３が、参照オブジェクトの欠けている部分を属性識別サブシステム４２０を介して判定したならば、属性設定サブシステム４３０を使用して、正しいＩＳＶから値を取り出し、かつ／または欠けているオブジェクトをダウンロードすることができる。したがって、コンポーネントベースのプログラミング環境において、本発明は、複数のＩＳＶからの分散ダウンロードを容易にして、ユーザのマシンでのアプリケーションの正しいダウンロードおよび実行を可能にすることができる。
【００３１】
ここで図５を参照すると、本発明の特定の態様によるダウンロード配布エンジンの一部としての監視コンポーネント５１０の全体的なブロック図が示されている。この監視システムは、ダウンロードされたアプリケーションおよび／またはオブジェクトの欠けている部分を能動的に観察し、欠けている部分を正しいＩＳＶからダウンロードするためにリアルタイムハイパーリンクを供給することができる。したがって、監視コンポーネント５１０は、ダウンロードされたソフトウェアおよび／またはディジタルコンテンツの欠けている部分を供給できる正しいＩＳＶのウェブリンクに対応する個別のターゲットサイトを供給することができる。
【００３２】
したがって、ダウンロードされたソフトウェアおよび／またはオブジェクトの欠けている部分に監視コンポーネント５１０が出会う時に、そのような欠けているオブジェクトに関する情報を、リンク制御コンポーネント５２０によって集めるか収集し、リンク制御コンポーネント５２０に通信することができる。リンク制御コンポーネント５２０は、監視コンポーネント５１０から通信された情報を検査し、この情報を１つまたは複数の格納されたリンク照会５３０と比較することができる。リンク照会５３０には、複数のリンク（たとえば、ハイパーリンク）に関する複数の異なる照会を含めることができる。たとえば、任意の所与のリンクについて、少なくとも１つの照会を、ユーザによってセットするかプログラムすることができる。照会には、満足されるべき条件の組または１つもしくは複数の条件が満足される時にリンクに対して実行されるべきアクションの組を含めることができる。各照会は、少なくとも１つのハイパーリンクおよび関連するターゲットサイトに対応するものとすることができる。
【００３３】
さらに、監視コンポーネント５１０が、ダウンロードされたソフトウェアまたはディジタルコンテンツの欠けている部分が検出されたと判定したときに、監視コンポーネント５１０は、ターゲットリンクコンポーネント５４０（たとえば、ブラウザ）を介してユーザに通知することもできる。欠けている参照および／またはオブジェクトを検出したときの通知アクションの例には、ハイパーリンクの色を変更すること、欠けているアプリケーションに関係付けられる問題を解決するためにコンテンツにアクセスする必要があることを示すためにハイパーリンクのタイトルを変更すること、および／またはハイパーリンクにシンボルを追加するかハイパーリンクからシンボルを除去することを含めることができる。ハイパーリンクを強調表示すること、ハイパーリンクの周囲に線を描くこと、および／またはハイパーリンクにある形のアニメーション（たとえば、点滅するテキスト、テキストのフェードイン／フェードアウトなど）を追加することなど、他の種類の通知アクションも可能である。ユーザは、欠けている参照および／またはコンポーネントに出会ったことを警告する電子メールまたはサウンド通知を受け取ることもできる。さらに、ユーザは、ハイパーリンクをちらりと見るためにハイパーリンクモニタリストを単純に参照して、ダウンロードされたプログラムまたはディジタルコンテンツおよび／あるいはオブジェクトの欠けている部分を成功してロードするために、正しいＩＳＶのターゲットウェブサイトに連絡する必要があるかどうかをすばやく確かめることができる。
【００３４】
また、正しいリンクのアクセスおよび／またはソフトウェアもしくはディジタルコンテンツの個別の部分を個別のＩＳＶからロードするのに必要なリンクの突止め（locating）に関連して、本発明は、さまざまな人工知能方式を使用することができる。たとえば、オブジェクトを再ロードしなければならないかどうかを明示的にまたは暗黙のうちに学習するプロセス、あるいはそのようなオブジェクトまたは欠けている参照を提供するＩＳＶのウェブサイトの検索は、自動分類のシステムおよびプロセスを介して容易にすることができる。分類は、確率的分析および／または統計ベースの分析（たとえば、分析ユーティリティおよびコストへのファクタリング）を使用して、ユーザが自動的に実行されることを望むアクションを予知しまたは推論することができる。たとえば、サポートベクトルマシン（ＳＶＭ）分類子（classifier）を使用することができる。使用可能な他の分類手法には、ベイジアンネットワーク、デシジョン・ツリー、および独立性の異なるパターンを提供する確率分類モデルが含まれる。本明細書で使用される分類は、優先順位のモデルを展開するのに利用される統計的回帰をも包含する。
【００３５】
本明細書からたやすく了解されるとおり、本発明は、明示的にトレーニングされる（たとえば、汎用トレーニングデータを介して）分類子ならびに暗黙のうちにトレーニングされる（たとえば、ユーザの振る舞い（behavior）の観察、外来データの受取りを介して）分類子を使用することができ、その結果、分類子は、質問に対してどの回答を返すかを所定の判断基準に従って自動的に判定するのに使用されるようになる。たとえば、十分に理解されているＳＶＭに関して、ＳＶＭは、分類子コンストラクタおよび特徴選択モジュール内の学習フェーズまたはトレーニングフェーズを介して構成される。分類子は、入力属性ベクトルｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、入力があるクラスに属することの信頼度すなわちｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）に写像する関数である。図５に示されているように、人工知能（ＡＩ）コンポーネント５５０を使用して、ソフトウェアおよび／またはディジタルコンテンツの欠けている部分のダウンロードに関する正しいＩＳＶをいつ、どこで、どのように突き止めるかの推論および／または判定を容易にすることができる。ＡＩコンポーネント５５０は、本発明のさまざまな態様を容易にすることに関連して上で説明したさまざまな適切なＡＩベースの方式のどれであっても使用することができる。
【００３６】
図６ａおよび６ｂに、カスタマおよび／またはエンドユーザマシンに関する第１のＩＳＶおよび第２のＩＳＶの配置を示す。図６ａの配置に示されているように、ＩＳＶ１  ６１０およびＩＳＶ２  ６２０は、同一レベルのカスタマ制御を共有することができる。たとえば、ＩＳＶ１  ６１０は、アプリケーション６３０をカスタマ／エンドユーザ６５０に供給することができ、カスタマ／エンドユーザ６５０は、ＩＳＶ２  ６２０に構造化照会言語（ＳＱＬ）６４０を要求する。そのようなＩＳＶ２  ６２０は、ダウンロードされたアプリケーションの正しい実行に必要なＳＱＬコンポーネント６４０をカスタマ６５０に直接に供給することができる。同様に、図６ｂによる配置は、クライアントおよび配布されたソフトウェアに対するＩＳＶによる制御の異なる度合いを実現する。
【００３７】
図７に、ソフトウェア１からｍ（ｍは整数）を提供するＩＳＶ１  ７０２とＩＳＶ２  ７０４との間の照会ステップのシーケンスを示す。この通信自体は、セキュアチャネルを介して実行することができる。ＩＳＶ２  ７０４は、サービス側セキュアネットワークスタック７１０を含むことができ、サービス側セキュアネットワークスタック７１０は、さらに、ＩＰレイヤ実装、サービス側ＴＣＰレイヤ実装、サービス側ＴＬＳ、ＨＴＴＰスタック実装、ウェブサービスプロバイダインターフェース、およびウェブサービスを含む。ＩＳＶ２  ７０４は、さらに、ＩＳＶ２  ７０４とＩＳＶ１  ７０２との間のネットワークトラフィックを保護するインターネットキー交換（ＩＫＥ）サブシステム７０８を含むことができる。ＩＳＶ２  ７０４は、ＩＫＥサブシステム７０８の構成を可能にするポリシモジュール７１１をも含むことができる。ポリシモジュール７１１は、セキュアネットワークスタック７１０にセキュリティ構成情報を供給することもでき、セキュアネットワークスタック７１０は、ＴＣＰ／ＩＰドライバ７５４を介して通信し、これによって、ＩＳＶ２  ７０４とＩＳＶ１  ７０２との間のセキュアネットワークトラフィックを可能にする。
【００３８】
ＩＳＶ２  ７０４は、エンティティにディジタル証明書を発行するメッセージの組を登録し、受信することができる。たとえば、符号７１４で、購買コンポーネントは、さまざまなソフトウェアオファリングの購買照会についてＩＳＶ２  ７０４に照会することができる。次に、符号７１６で、さまざまなソフトウェアを識別する照会応答およびサービスの条件が、ＩＳＶ１  ７０２に戻って通信される。その後、符号７１８で、請求照会が、ＩＳＶ２  ７０４に転送される。次に、ディジタル証明書を発行するためのさまざまな請求要件に関する応答を準備し、符号７２０でＩＳＶ１に送り返すことができる。
【００３９】
次に、ＩＳＶ１  ７０２は、所望の購入プランを選択することができ、購買要求／応答対７２２（ａ）および７２２（ｂ）が、ＩＳＶ２  ７０４とＩＳＶ１  ７０２との間で交換される。同様に、照会および応答の組（図示せず）を、ＩＳＶ２  ７０４とエンドユーザマシンとの間で交換して、ソフトウェアのアップデートを要求し、パッチなどを供給することができる。購買行為およびアップデート行為には、エンドユーザマシンまたはＩＳＶ１  ７０２がＩＳＶ２  ７０４に関してそれ自体を認証する機構をも含めることができる。
【００４０】
図８に、本発明の態様によるダウンロードを供給できるＩＳＶ１  ８００システムのブロック図を示す。このシステムには、ＩＳＶマネージャ８１０を含めることができ、ＩＳＶマネージャ８１０は、ＩＳＶライブラリ８１４と相互作用して、認証、セキュリティ、および妥当性検査を追跡し、ＩＳＶマネージャ８１０へのクライアントまたは別のＩＳＶ２の接続を検証することができる。負荷閾値をＩＳＶマネージャ８１０によって供給して、たとえば複数のマシンにまたがって処理のバランスをとる（これは、任意の１つのマシンにかかる重荷を軽減することができる）ために、ＩＳＶ１  ８００とのデータ交換を要求する任意のマシン上でデータ転送を開始し、一時停止し、再開し、かつ／または停止するかどうかを判定することもできる。通常、メッセージ転送セッション（たとえば接続）が開始される時に、ＩＳＶマネージャ８１０は、そのセッションの接続インスタンスを生成することができる。この接続インスタンスに、たとえば、クライアント、ソフトウェアダウンロード、用いられる他のＩＳＶ、メッセージ、および／または接続ＩＤ（たとえば、キープアライブメッセージ）を示す情報を設定（populate）することができる。そのような情報を利用して、ＩＳＶ１とクライアントまたはもう１つのＩＳＶ２との間のメッセージ転送を開始することができる。さらに、接続ＩＤを利用して、異なるマシン内のメッセージ伝送を追跡することができる。
【００４１】
接続インスタンスを、さらに、動的にアップデートして、伝送進行を反映し、伝送ヒストリ（history）を提供することができる。たとえば、成功して伝送されたまたは失敗したすべての部分（メッセージ全体またはソフトウェアダウンロードを含む）を示すしるし（indicia）を、接続インスタンスに関連付けることができる。伝送ヒストリには、転送の開始および完了、一時停止および再開、通信アクティビティエラーのレベル、再送信、サービスするマシンの変化などに関係付けられる情報を含めることができる。
【００４２】
たとえば、ＩＳＶ１  ８００が、クライアントまたはエンドユーザへのダウンロードのための接続を確立するために呼び出される時に、ＩＳＶマネージャ８１０は、マシンアイデンティティ（たとえば、グローバル一意アイデンティティすなわちＧＵＩＤ）を追跡して、そのような接続の接続インスタンスを生成することができる。接続インスタンスには、ＩＳＶライブラリ８１４の一部としてのシステムパラメータを介して、ソフトウェアがそれにダウンロードされるどのマシンのアイデンティティでも含めることができる。そのような情報を利用して、所望のマシンを突き止め、所望のマシンおよびアダプタがアクセスを与えられているか、または正しく登録されていることを検証することができる。その呼出しに、クライアントを示す情報および／または他のＩＳＶからのメッセージが含まれる場合に、そのような情報を、さらに、接続インスタンスに含めることができる。この情報を利用して、クライアントおよびダウンロードされるソフトウェアを突き止め、検証することができる。さらに、接続ＩＤおよび必要なダウンロードパラメータを、接続インスタンスにキーとして含め、使用することができ、ＩＳＶマネージャ８１０によって転送セッションを管理するのに使用することもできる。ＩＳＶ側またはクライアント側の複数のマシンが、複数の分散マシンの一部として接続を要求できることを了解されたい。たとえば、ＩＳＶとエンドユーザとの間のダウンロードセッション中に、もう１つのＩＳＶが、既存のダウンロードセッションに加わり、キャッシングされたダウンロードヒストリを取り出して、そのようなダウンロードセッションを観察し、かつ／またはこれにかかわることができる。
【００４３】
図９に、本発明の一態様による分割ダウンロードの方法論９００を示す。この例示的方法は、本明細書ではさまざまなイベントおよび／または行為を表す一連のブロックとして図示され、説明されるが、本発明は、そのようなブロックの図示の順序によって限定はされない。たとえば、一部の行為またはイベントは、本発明に従って、本明細書で示される順序付けとは別の、異なる順序でおよび／または他の行為もしくはイベントと同時に発生することができる。さらに、図示のブロック、イベント、または行為の一部が、本発明による方法論の実施に必要ではない場合がある。さらに、この例示的方法および本発明による他の方法を、図示され本明細書で説明される方法に関連してならびに図示されずまたは説明されない他のシステムおよび装置に関連して実施できることを了解されたい。
【００４４】
まず、符号９１０では、ソフトウェアまたはディジタルコンテンツの第１の部分が、第１のＩＳＶによってエンドユーザにダウンロードされつつある。次に、符号９２０で、第２のＩＳＶが、そのようなダウンロードの通知およびダウンロードされたソフトウェアの第１の部分を補足する要求を受信する。その後、符号９３０で、第２のＩＳＶが、ＩＳＶの第２の部分をエンドユーザにダウンロードする。したがって、エンドユーザは、その後、符号９４０で、ダウンロードされたアプリケーションを正しく実行することができ、このアプリケーションは、第１のＩＳＶおよび第２のＩＳＶによって分割形式でダウンロードされたものである。
【００４５】
ここで図１０を参照すると、本発明のさまざまな態様を実装できる適切なコンピューティング環境の概要の全般的な説明が示されている。本発明を、上記では１つおよび／または複数のコンピュータで動作するコンピュータプログラムのコンピュータ実行可能命令の全般的な文脈で説明したが、当業者は、本発明を他のプログラムモジュールと組み合わせて実施することもできることを認めるであろう。一般に、プログラムモジュールは、特定のタスクを実行し、かつ／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、この発明的方法を、単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータを含む他のコンピュータシステム構成、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのまたはプログラマブルな消費者エレクトロニクスなどを用いて実践できることを了解するであろう。前に説明したように、本発明の図示の態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実践することもできる。しかし、本発明の、すべてではないとしても一部の態様を、スタンドアロンのコンピュータで実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルとリモートとの両方のメモリストレージデバイスに配置することができる。例示的な環境には、処理ユニット１０２１と、システムメモリ１０２２と、システムメモリを含むさまざまなシステムコンポーネントを処理ユニット１０２１に結合するシステムバス１０２３とを含むコンピュータ１０２０が含まれる。処理ユニット１０２１は、さまざまな市販の利用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサアーキテクチャおよび他のマルチプロセッサアーキテクチャを処理ユニット１０２１として使用することもできる。
【００４６】
システムバスは、ＵＳＢ、ＩＥＥＥ１３９４、周辺バス、およびさまざまな市販バスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。システムメモリには、読取専用メモリ（ＲＯＭ）１０２４およびランダムアクセスメモリ（ＲＡＭ）１０２５を含めることができる。スタートアップ中などにコンピュータ１０２０内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＳＯ）が、ＲＯＭ  １０２４に格納される。
【００４７】
コンピュータ１０２０は、さらに、ハードディスクドライブ１０２７と、たとえば取外し可能ディスク１０２９に対して読み書きする磁気ディスクドライブ１０２８と、たとえばＣＤ−ＲＯＭディスク１０３１から読み取るかこれに書き込むもしくは他の光媒体に対して読み書きする光ディスクドライブ１０３０とを含む。ハードディスクドライブ１０２７、磁気ディスクドライブ１０２８、および光ディスクドライブ１０３０は、それぞれハードディスクドライブインターフェース１０３２、磁気ディスクドライブインターフェース１０３３、および光ドライブインターフェース１０３４によってシステムバス１０２３に接続される。ドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ１０２０にデータ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージをもたらす。上記のコンピュータ可読媒体の説明は、ハードディスク、取外し可能磁気ディスク、およびＣＤに言及しているが、当業者は、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジなどのコンピュータによって読取可能な他の種類の媒体をも、例示的な動作環境で使用することができることと、さらに、すべてのそのような媒体が、本発明の方法を実行するためのコンピュータ実行可能命令を含むことができることを了解するに違いない。
【００４８】
オペレーティングシステム１０３５、１つまたは複数のアプリケーションプログラム１０３６、他のプログラムモジュール１０３７、およびプログラムデータ１０３８を含む複数のプログラムモジュールを、ドライブおよびＲＡＭ  １０２５に格納することができる。図示のコンピュータのオペレーティングシステム１０３５は、実質的にどの市販オペレーティングシステムにもすることができる。
【００４９】
ユーザは、キーボード１０４０と、マウス１０４２などのポインティングデバイスとを介してコンピュータ１０２０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含めることができる。上記および他の入力デバイスは、しばしば、システムバスに結合されたシリアルポートインターフェース１０４６を介して処理ユニット１０２１に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（universal serial bus）などの他のインターフェースによって接続することができる。モニタ１０４７または他の種類のディスプレイデバイスも、ビデオアダプタ１０４８などのインターフェースを介してシステムバス１０２３に接続される。モニタに加えて、コンピュータは、通常、スピーカおよびプリンタなどの他の周辺出力デバイス（図示せず）を含む。
【００５０】
コンピュータ１０２０は、リモートコンピュータ１０４９などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ１０４９は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常は、コンピュータ１０２０に関して説明した構成要素の多数またはすべてを含むが、図１０にはメモリストレージデバイス１０５０だけが示されている。図１０に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１０５１および広域通信網（ＷＡＮ）１０５２を含めることができる。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【００５１】
ＬＡＮネットワーキング環境で使用される時に、コンピュータ１０２０を、ネットワークインターフェースまたはネットワークアダプタ１０５３を介してローカルエリアネットワーク１０５１に接続することができる。ＷＡＮネットワーキング環境で使用される時に、コンピュータ１０２０は、一般に、モデム１０５４を含むことができ、かつ／またはＬＡＮ上の通信サーバに接続され、かつ／またはインターネットなどの広域通信網１０５２上での通信を確立する他の手段を有する。モデム１０５４は、内蔵または外付けとすることができるが、シリアルポートインターフェース１０４６を介してシステムバス１０２３に接続することができる。ネットワーク化された環境では、コンピュータ１０２０に関して図示されたプログラムモジュールまたはその諸部分を、リモートメモリストレージデバイスに格納することができる。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることを了解されたい。
【００５２】
コンピュータプログラミングの当業者の実践によれば、本発明は、そうではないと示されない限り、コンピュータ１０２０などのコンピュータによって実行される行為とオペレーションの記号表現（symbolic representation）とに関して説明された。そのような行為およびオペレーションを、時々、コンピュータ実行されると称する。行為および記号表現されたオペレーションが、電気信号表現の結果の変換または変形を引き起こす、データビットを表す電気信号の処理ユニット１０２１による操作、これによってコンピュータシステムの動作を再構成するか他の形で変更するメモリシステム（システムメモリ１０２２、ハードドライブ１０２７、フロッピディスク１０２８、およびＣＤ−ＲＯＭ  １０３１を含む）内のメモリ位置でのデータビットの維持、ならびに信号の他の処理を含むことを了解されたい。そのようなデータビットが維持されるメモリ位置は、そのデータビットに対応する特定の電気的特性、磁気的特性、または光学的特性を有する物理位置である。
【００５３】
ここで図１１を参照すると、本発明の一態様による分割ダウンロードを使用できるクライアント−サーバシステム１１００が示されている。クライアント１１２０は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティングデバイス）とすることができる。システム１１００は、１つまたは複数のサーバ１１４０をも含む。サーバ１１４０は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティングデバイス）とすることができる。たとえば、そのようなサーバ１１４０は、本発明を使用することによって変換を実行するスレッドを収容することができる。クライアント１１２０およびサーバ１１４０は、本発明に従って伝送されるデータパケットの形で、２つまたはそれ以上のコンピュータプロセスの間で通信することができる。図示のように、システム１１００は、クライアント１１２０とサーバ１１４０との間の通信を容易にすることができる通信フレームワーク１１８０を含む。クライアント１１２０は、クライアント１１２０にローカルな情報を格納できる１つまたは複数のクライアントデータストレージ１１１０に機能的に接続される。さらに、クライアント１１２０は、サーバプロセスを実行するサーバコンピュータ１１４０に配置されるデータベース１１６０にアクセスし、これをアップデートすることができる。本発明の一態様では、通信フレームワーク１１８０をインターネットとすることができ、クライアントプロセスは、ウェブブラウザであり、サーバプロセスは、ウェブサーバである。したがって、通常のクライアント１１２０は、中央処理装置（ＣＰＵ）、システムメモリ、パーソナルコンピュータをインターネットに接続するモデムまたはネットワークカード、およびディスプレイならびにキーボード、マウスなどの他のコンポーネントを有する従来のパーソナルコンピュータなどの汎用コンピュータとすることができる。同様に、通常のサーバコンピュータ１１４０は、大学もしくは会社のメインフレームコンピュータ、または専用ワークステーションなどとすることができる。
【００５４】
図１２に、分割ダウンロードを使用してソフトウェアを購入し、配布する、システム１２００の一例を示す。システム１２００は、カスタマデバイス１２０８などのカスタマにソフトウェアを供給するように構成された複数のＩＳＶ  １２０２を含む。各ＩＳＶは、ソフトウェアの諸部分を供給するように構成される。異なるＩＳＶによって供給される部分は、ダウンロードされ、その後、完全なソフトウェアをビルドするのに使用される。たとえば、カスタマデバイス１２０８には、ソフトウェアの諸部分のダウンロードを管理するダウンロードマネージャ（ＤＬＭ）１２１０を含めることができる。
【００５５】
図１２に示されているように、システム１２００は、マーチャントオブレコード（ＭＯＲ：merchant of record）１２０４、転送マネージャ（ＴＭ）１２１２、および許可されたマーチャント（ＡＵＭ：authorized merchant）１２０６をも含む。ＭＯＲ  １２０４は、ＩＳＶ  １２０２によって供給されるソフトウェアの販売を管理し、サポートする責任を負うマーチャント（merchant）である。ＭＯＲ  １２０４は、ＩＳＶ  １２０２についてのトランザクションサポート、返品、支払いなどを処理するように構成することができる。たとえば、ＭＯＲ  １２０４は、ソフトウェアの購入に関するカスタマデバイス１２０８からの要求を受信し、その購入のトランザクションを生成するように構成される。ＭＯＲ  １２０４は、ＩＳＶ  １２０２からレコードアップデートを受信するようにも構成される。このアップデートには、周期的トランザクション照会、請求情報などを含めることができる。ＴＭ  １２１２は、ファイル転送の要求および許可（authorization）を制御し、ＭＯＲ  １２０４とＩＳＶ  １２０２との間のデータ転送および請求情報を仲介するように構成される。ＡＵＭ  １２０６は、ＭＯＲ  １２０４の代わりに働くエージェントである。ＡＵＭ  １２０６は、ＩＳＶ  １２０２のエージェントとしての役割を除く、ＭＯＲ  １２０４の役割のどれであっても引き受けることができる。ＡＵＭは、オプションのコンポーネントであり、ＭＯＲ  １２０４は、カスタマデバイス１２０８と直接に相互作用することができる。
【００５６】
ソフトウェア購入シナリオの一例では、カスタマデバイス１２０８は、特定のソフトウェアの注文を含むメッセージ１２５１をＡＵＭ  １２０６に送信する。この注文には、ソフトウェアの識別子、量、クレジットカード情報、個人情報などを含めることができる。ＡＵＭ  １２０６は、注文を受信し、その注文に関連する要求を含むメッセージ１２５２をＭＯＲ  １２０４に送信する。この要求には、カスタマの識別子、要求の識別子、地理的位置、注文などを含めることができる。ＭＯＲ  １２０４は、この要求を受信し、この要求に関連するトランザクションを生成する。ＭＯＲ  １２０４は、メッセージ１２５３を用いてこのトランザクションをＴＭ  １２１２に送信する。メッセージ１２５３には、オリジナルの要求に含まれる情報、ならびに、ＭＯＲ  １２０４の識別子、トランザクション識別子、通し番号（serial number）、カスタマに関連するデータ、状況情報などの他の情報を含めることができる。ＭＯＲ  １２０４は、ＡＵＭ  １２０６へのトランザクションに関係付けられる情報を含むメッセージ１２５７をＡＵＭ  １２０６に送信する。
【００５７】
ＴＭ  １２１２は、ＭＯＲ  １２０４からトランザクションを受信し、そのトランザクションに関するメッセージ１２５４を適当なＩＳＶ  １２０２に送信する。通常、ＴＭ  １２１２は、購入されるソフトウェアの諸部分を供給する特定のＩＳＶにトランザクションを送信する。それに応答して、その特定のＩＳＶは、ダウンロード許可および関連情報を含むメッセージ１２５５をＴＭ  １２１２に送信し、このメッセージ１２５５には、ＩＳＶ識別子、キー、許可データなどを含めることができる。ＴＭ  １２１２は、メッセージ１２５５を受信し、ダウンロード許可および関連情報をメッセージ１２５６でＤＬＭ  １２１０に送信する。ＭＯＲ  １２０４は、購入レコード、ダウンロード位置、ソフトウェアのライセンスなど、注文に関する情報を含むメッセージ１２５８をカスタマデバイス１２０８に送信する。メッセージ１２５８は、電子メール、従来の郵便など、任意の種類の通信として送信することができる。ＤＬＭ  １２１０は、ソフトウェアの諸部分を供給するＩＳＶから購入ソフトウェアをダウンロードするための、ＩＳＶ  １２０２との通信１２５９を確立する。ＤＬＭ  １２１０は、カスタマがソフトウェアをダウンロードすることを許可されることを確立するために、メッセージ１２５６から受信されたダウンロード許可をＩＳＶに供給する。
【００５８】
ダウンロードが完了した後に、ＤＬＭ  １２１０は、確認を含むメッセージ１２６０をＴＭ  １２１２に送信する。ＴＭ  １２１２は、ダウンロードを確認し、トランザクションを完了するために、メッセージ１２６１をＩＳＶ  １２０２およびＭＯＲ  １２０４に送信する。
【００５９】
図１３に、分割ダウンロードによって供給されるソフトウェアの注文を処理する一例のプロセス１３００を示す。プロセス１３００は、分割ダウンロードソフトウェア購入システムがソフトウェアの注文を処理するために、マーチャントオブレコードによって実施することができる。ブロック１３０２で、購入注文をカスタマから受信する。この注文は、カスタマのデバイスから直接にまたは許可されたマーチャントから受信することができる。ブロック１３０４で、ソフトウェア注文に関連するトランザクションを生成する。ブロック１３０６で、ソフトウェアの諸部分を供給する独立ソフトウェアベンダにトランザクションを送信する。ブロック１３０８で、ソフトウェアの購入情報およびダウンロード情報を判定する。ブロック１３１０で、購入情報およびダウンロード情報をカスタマに供給する。たとえば、この情報を、電子メールによってカスタマに供給することができる。通常、ダウンロード許可は、マーチャントオブレコードを通過することなく、別々のソースからカスタマに供給される。ブロック１３１２で、ソフトウェアがＩＳＶからダウンロードされた後に、カスタマから確認（confirmation）を受信する。ブロック１３１４で、ＩＳＶに関してトランザクションを完了する。
【００６０】
本発明を、ある示された態様に関して図示し、説明してきたが、本明細書および添付図面を読み、理解した時に、当業者が同等の変更および修正を思い浮かべるであろうことを了解されたい。具体的には、上記で説明したコンポーネント（アセンブリ、デバイス、回路、システムなど）によって実行されるさまざまな機能に関して、そのようなコンポーネントを記述するのに使用された用語（「手段（means）」への言及を含む）は、そうではないと示されない限り、開示された構造と構造的に同等でないものであっても、説明されたコンポーネントの指定された機能を実行し（たとえば、機能的に同等である）、本発明の本明細書で示された例示的態様の機能を実行するすべてのコンポーネントに対応することが意図されている。これに関して、本発明が、本発明のさまざまな方法の行為および／またはイベントを実行するコンピュータ実行可能命令を有するシステムならびにコンピュータ可読媒体を含むことも認められるであろう。さらに、用語「含む（includes、including）」、「有する（has、having）」、およびその変形が、この詳細な説明または特許請求の範囲の両方において使用される範囲で、これらの用語は、用語「備える（comprising）」に類似する形で包含的であることが意図されている）。
【図面の簡単な説明】
【００６１】
【図１】本発明の一態様によるダウンロード配布エンジンを示す概略ブロック図である。
【図２】本発明の一態様によるダウンロード配布エンジンと共にコンポーネントベースの環境を示す概略ブロック図である。
【図３】本発明の例示的態様による例示的なダウンロード配布エンジンを示す図である。
【図４】本発明の特定の態様に従ってダウンロードされたソフトウェア／ディジタルコンテンツの欠けている部分に関する情報を供給できる配布リゾルバを示す詳細なブロック図である。
【図５】本発明のさらなる態様によるダウンロード配布エンジンの一部としての監視システムを示す全体的なブロック図である。
【図６ａ】本発明の特定の態様による、カスタマおよび／またはエンドユーザマシンに関係付けられる第１のＩＳＶおよび第２のＩＳＶの配置を示す図である。
【図６ｂ】本発明の特定の態様による、カスタマおよび／またはエンドユーザマシンに関係付けられる第１のＩＳＶおよび第２のＩＳＶの配置を示す図である。
【図７】本発明の一態様による第１のＩＳＶと第２のＩＳＶとの間の照会ステップの例示的シーケンスを示す図である。
【図８】本発明の一態様による、ダウンロードを分割できるＩＳＶの例示的アーキテクチャを示す図である。
【図９】エンドユーザにダウンロードされるソフトウェア／ディジタルコンテンツを第１のＩＳＶと第２のＩＳＶとの間で分割する例示的方法論を示す図である。
【図１０】本発明のさまざまな態様を実装できる適切なコンピューティング環境の全般的な概要説明を示す図である。
【図１１】本発明の一態様による、ダウンロード配布エンジンを使用できるクライアント−サーバシステムを示す図である。
【図１２】分割ダウンロードを使用してソフトウェアを購入し、配布するシステムの一例を示す図である。
【図１３】分割ダウンロードによって供給されるソフトウェアの注文を処理するプロセスの一例を示す図である。
【図１】
2008542909.tif 000003
【図２】
2008542909.tif 000004
【図３】
2008542909.tif 000005
【図４】
2008542909.tif 000006
【図５】
2008542909.tif 000007
【図６ａ】
2008542909.tif 000008
【図６ｂ】
2008542909.tif 000009
【図７】
2008542909.tif 000010
【図８】
2008542909.tif 000011
【図９】
2008542909.tif 000012
【図１０】
2008542909.tif 000013
【図１１】
2008542909.tif 000014
【図１２】
2008542909.tif 000015
【図１３】
2008542909.tif 000016
【国際調査報告】
2008542909.tif 000017