JP2005222524A - 要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法 - Google Patents

要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法 Download PDF

Info

Publication number
JP2005222524A
JP2005222524A JP2004361656A JP2004361656A JP2005222524A JP 2005222524 A JP2005222524 A JP 2005222524A JP 2004361656 A JP2004361656 A JP 2004361656A JP 2004361656 A JP2004361656 A JP 2004361656A JP 2005222524 A JP2005222524 A JP 2005222524A
Authority
JP
Japan
Prior art keywords
component
version
target component
requesting
target
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.)
Pending
Application number
JP2004361656A
Other languages
English (en)
Inventor
Antony S Williams
エス.ウィリアムズ アントニー
C Douglas Hodges
ホッジス シー.ダグラス
Clemens A Szyperski
エー.シペルスキー クレメンス
James S Miller
エス.ミラー ジェームス
John J Rivard
ジェイ.リバード ジョン
Jonathan C Hawkins
シー.ホーキンス ジョナサン
Patrick H Dussud
エイチ.デュサド パトリック
Srivatsan Parthasarathy
パルタサラティ スリバトサン
William G Evans
ジー.エバンス ウィリアム
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005222524A publication Critical patent/JP2005222524A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Abstract

【課題】 オブジェクト指向プログラミングの言語およびツールにおけるバージョニングサポートをする。
【解決手段】 コンポーネントは、バイナリ互換の形でバージョン設定されていない場合、ライブラリコンポーネントと呼ぶことができる。他のコンポーネント群がそのようなコンポーネントを要求した場合、他のコンポーネント群は、要求したコンポーネントのバージョンだけを特に受け取る。他方、コンポーネントは、バイナリ互換の形でバージョン設定されている場合、プラットフォームコンポーネントと呼ぶことができる。他のコンポーネント群がそのようなコンポーネントを要求した場合、他のコンポーネント群は、要求したコンポーネントの最新のアップグレードされたバージョンを代わりに受け取ることができる。このため、コンポーネントの適切なバージョンへのアクセスが(要求されたバージョンとは異なるバージョンでも)、容易になる。
【選択図】 図1

Description

本発明は、要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法に関し、より詳しくは、本発明は、ソフトウェア環境においてソフトウェアコンポーネント群を協調させるためのシステム、方法、およびコンピュータプログラム製品に関する。
コンピュータ化された電子システムは、そのようなコンピュータ化されたシステムにより、人々が以前は手作業で行わなければならなかったことの多くが自動化されることを理由の一部として、ますます一般的になっている。したがって、コンピュータ化されたシステムは、タスクを行う人々の能力にある量の効率を付加してきた。
コンピュータ化されたシステム用にコンピュータ化された命令(本明細書で、「ソフトウェア」または「プログラム」とも呼ぶ)を生成するプロセスは、多少、込み入っている。普通、ソフトウェア開発者はまず、プログラムが実行すべき所望される機能または結果を考案し、次に、通常、プログラミングソースコードの形態で、対応するテキスト形式の命令を電子テキストファイルに入力しなければならない。解釈されるプログラミング言語(例えば、Java(登録商標)script、Perlなど)の場合のように一部のケースでは、コンピュータ化されたシステムは、入力されたテキスト形式の命令を直接に解釈し、所望の機能を実行する。コンパイルされるプログラミング言語(例えば、C#(「Cシャープ」と読まれる)、C++など)の場合のように他のケースでは、テキスト形式の命令はまず、コンピュータ化されたシステムが実行することのできるオブジェクトコードまたはマシンコードにコンパイルされる。
より複雑なプログラムでは、開発者は、ときとして、いくつかの相互運用される「コンポーネント」としてプログラムの機能を実装する。一般的に言って、コンポーネント群(またはプログラムコンポーネント群)は、より大型のアプリケーションプログラムによく似た、ただし、通常、1つまたは複数の機能を提供することに向けられているため、より小型で、それほど複雑でない傾向があるコンピュータ実行可能命令の集合である。所与のコンポーネントは、ときとして、独立のプログラムとして実行することができ、他のコンポーネント群と通信することもできるため、より複雑なプログラムも、ときとして、区別なしに「コンポーネント」と呼ぶことが可能である。さらに、コンポーネントは、一般に、「要求側コンポーネント」または「目標コンポーネント」と呼ばれる。ただし、そのような呼称は、いずれのコンポーネントまたはプログラムが他方のコンポーネントまたはプログラムにアクセスしているかに応じて任意である可能性がある。
いずれにしても、プログラム設計者は、コンピュータ化されたシステム上で1つのコンポーネントを設計して、コンピュータ化されたシステムの任意の数の他のコンポーネント群へのアクセスを要求することができる。目標コンポーネント群は、ユーザの名前や年齢などの基本的な情報を提供する機能、または所与のアプリケーションプログラムに関するユーザの使用レベルまたは熟練度(sophistication)などのより複雑な情報を提供する機能を含むことが可能である。また、ソフトウェアコンポーネント群は、ファイルを開くコマンドを実行すること、1つまたは複数のコンポーネントまたはプログラムがさらに別のコンポーネント群と対話することができるように通信プロトコルを示すことなどのシステム機能群を提供することもできる。もちろん、大型のオペレーティングシステムは、複数の異なるプログラムでオペレートするように構成された多くのコンポーネントを含むことが可能であり、その逆も同様であることが理解されよう。
一般に、要求側コンポーネントは、目標コンポーネントへの参照を含む。要求側コンポーネントが、目標コンポーネントの特定のバージョンを参照することがあり得る(厳密な(strict)参照)。目標コンポーネントの特定のバージョンを参照することは、例えば、要求側コンポーネントの開発者が、目標コンポーネントの事前の知識を有しており、要求側コンポーネントが目標コンポーネントの指定されたバージョンに明確に依存するようにさせることを所望する場合に行われる可能性がある。例えば、「コンポーネント3」の目標「バージョン1.1」を参照するように要求側「コンポーネント1」を構成して、「コンポーネント1」が「コンポーネント3」の「バージョン1.1」に明確に依存するようにさせることができる。他方、要求側コンポーネントが開発された時点で、存在することも、存在しないことも可能な目標コンポーネントを要求側コンポーネントが参照することがあり得る(厳密でない(loose)参照)。このため、開発者は、目標コンポーネントの事前の知識なしに目標コンポーネントを参照する。したがって、要求側コンポーネントは、ランタイムに目標コンポーネントのバージョンの存在を発見することが可能である。例えば、ランタイムに、「コンポーネント1」が「コンポーネント3」の「バージョン2.1」を発見することが可能である。
残念ながら、要求側コンポーネントが目標コンポーネントを厳密な形で参照するか、厳密でない形で参照するかに関わらず、全体的なソフトウェア設計プロセスにおいてプログラムコンポーネント群を実装することには、いくつかの欠点が存在する。例えば、ユーザが、1つまたは複数の要求側コンポーネントによって参照される目標プログラムを更新する際、目標コンポーネントの更新されたバージョンが、その1つまたは複数の要求側コンポーネントに適合しないことになった場合、その1つまたは複数の要求側コンポーネントに障害が生じる可能性がある。この問題は、要求側コンポーネントの開発者が、関連する目標コンポーネントの開発者によって将来に実施される可能性がある変更の数とタイプを予期することができない場合に生じる可能性がある。これとは対照的に、目標コンポーネント更新を禁止する、またはコンポーネント更新が目標コンポーネント群の以前のバージョンを上書きすることを禁止するシステムポリシー群は、すぐに古くなる、または非効率で、かさばるものになる可能性があるシステムをもたらす可能性がある。
以上の諸問題を克服するいくつかの試みには、システム管理者が、同一のシステム内部の目標コンポーネント群の相異なるバージョンへの厳密な参照および厳密でない参照を管理しようとすることが含まれる。そのようなシナリオでは、コンピュータ化されたシステムが、所与の目標コンポーネントのバージョン番号を、目標コンポーネントがコンピュータシステムにインストールされた際に、または目標コンポーネントが最初に実行された際に特定する。すると、コンピュータ化されたシステムは、特定された目標コンポーネント情報を、システムにやはりインストール済みである目標コンポーネントのその他のバージョンが存在すれば、それらとともに格納する。コンピュータ化されたシステム上の要求側コンポーネントが、目標コンポーネントへのアクセスを要求した場合、コンピュータ化されたシステムは、要求側コンポーネントを適宜、目標コンポーネントの要求されたバージョンにマッチングする。
残念ながら、このタイプのシステムには、さらにいくつかの欠点が存在する。例えば、目標コンポーネントがシステムにインストールされた時点で目標コンポーネントに関して入手できる唯一の情報が、目標コンポーネントのバージョンである可能性がある。しかし、システムは、目標コンポーネントのその特定のバージョンが、目標コンポーネントの以前のバージョンのアップグレードであるかどうかを明らかにすることができない。また、システムは、開発者が、後の何らかの時点で目標コンポーネントのその特定のバージョンをアップグレードするつもりであるかどうかを明らかにすることもできない。というのは、その情報は未知だからである。その情報、ならびに他の必要なオペレーティングパラメータ群は、システム管理者によって供給されなければならない。
例えば、システム管理者は、所与の目標コンポーネントに関して入手可能なわずかな情報、または管理者が予期することに基づいてシステムを構成しようと試み、次に、その所与の目標コンポーネントがインストールされる、または最初に実行される際に、目標コンポーネントに関するその情報をシステムに提供しなければならない。詳細には、システム管理者は、しばしば、一部の要求側コンポーネントが他の目標コンポーネント群の特定のバージョンにアクセスすることを要するかどうか、およびさらに別の要求側コンポーネント群が、他の目標コンポーネント群の構成されたバージョンにアクセスすることが許されるかどうかなどを示す、相異なる目標コンポーネントに関するアクセス規則群を提供しなければならない。また、システム管理者は、要求側コンポーネントのバージョンと目標コンポーネントのバージョンの間の競合に気付くと、他のあらゆる情報も提供しなければならない。このため、要求側コンポーネントが所与の目標コンポーネントを要求した場合、システムは、通常、要求された目標のバージョン、システムに格納されている目標コンポーネントのあらゆるバージョン、および他のあらゆるシステム管理者が供給した情報に基づき、目標コンポーネントへのアクセスを許可する。
しかし、目標コンポーネントへの厳密な参照と厳密でない参照を混合するこのタイプのシステムは、システム管理者には、過度に複雑である可能性があることが認められよう。システム管理者は、サードパーティ開発者が所与の目標コンポーネントを書いている際に考えていることの内実を常に知らされているわけではないので、これは、特に当てはまる。さらに、システム管理者は、ある目標コンポーネント群が、要求側コンポーネントの他のバージョンに適合するように計画されているかどうかを常に予期できるわけではない。これは、多数の要求側コンポーネントが、所与の多数の形で多種態様な目標コンポーネントにアクセスするように構成される大型システムに関して特に当てはまる。
したがって、要求側コンポーネント群および目標コンポーネント群の現在のバージョンと将来のバージョンが、コンピュータ化されたシステムにおいて構成されたとおりに協働することを可能にするシステム、方法、およびコンピュータプログラム製品で、当技術分野における利点を実現することができる。詳細には、そのようなコンポーネント協働を可能にして、ほとんど、または全くシステム管理者からの入力なしに、プログラム群およびコンポーネント群が効果的に機能しつづけることができるようにするシステムおよび方法で、当技術分野における利点を実現することができる。
いくつかの文献に上述のような従来の技術に関連した技術内容が開示されている(例えば、特許文献1、2参照)。
米国特許第6、678、696号明細書 米国特許第6、564、377号明細書
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、オブジェクト指向プログラミングの言語およびツールにおけるバージョニングサポートをし、ソフトウェア環境においてソフトウェアコンポーネント群を協調させるための、要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法を提供することにある。
本発明は、プログラム開発者が、プログラム機能を損なうことなしに、コンポーネント群、モジュール群、およびオペレーティングシステム群における変更に容易に対応することができるようにするシステム、方法、およびコンピュータプログラム製品で、従来の技術における以上の諸問題の1つまたは複数を解決する。詳細には、静的参照または動的参照を介して互いにアクセスするプログラム群およびコンポーネント群が、オペレーティングシステム内で互いに適合するように並存することを可能にするシステムを開示する。
本発明の少なくとも1つの典型的な実施形態では、判定モジュールが、要求側コンポーネントから、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取ることができる。要求は、指定された目標コンポーネントのバージョニングポリシーを含むことが可能である。代替として、判定モジュールは、指定された目標コンポーネントのバージョニングポリシーを特定することができる。例えば、バージョニングポリシーは、目標コンポーネント内部のデータフィールドの中に含まれることが可能である。バージョニングポリシーおよび指定されたバージョンの特定は、目標コンポーネントがインストールされた際に、または目標コンポーネントがコンピュータ化されたシステム上に展開された際に、要求に応答して行うことができる。例えば、コンポーネントスコープなどの他のポリシー群、ならびに適宜、システム管理者が提供したあらゆるポリシーも特定することができる。したがって、要求側コンポーネントは、要求の中に含まれる情報、および目標コンポーネント内部に含まれる情報に基づき、目標コンポーネントの適切なバージョンへのアクセスを許可される。
本発明の別の典型的な実施形態では、判定モジュールが、目標コンポーネントアップグレードを受け取り、目標コンポーネントおよび/または要求側コンポーネントに関連するバージョニングポリシーを特定することができる。バージョニングポリシーの中で提供される情報に基づき、判定モジュールは、目標コンポーネントをアップグレードされたコンポーネントで置き換えるか、または単に目標コンポーネントアップグレードをシステムに追加して、目標コンポーネントの元のバージョンとアップグレードされたバージョンが並存するようにすることができる。このため、要求側コンポーネントに適切なように目標コンポーネントに関するアップグレードが処理され、目標コンポーネントにアクセスするいずれの要求側コンポーネントも、必要な場合、目標コンポーネントの元のバージョン、または以前のバージョンにアクセスしつづけるようになる。
本発明のさらなる特徴および利点は、以下の説明で示し、一部は、その説明から明白となり、あるいは本発明の実施によって知ることができる。本発明の特徴および利点は、特許請求の範囲で詳細に指摘する手段および組み合わせによって実現し、得ることができる。本発明の以上の特徴、およびその他の特徴は、以下の説明および特許請求の範囲からより完全に明らかとなり、あるいは以下に示す本発明の実施によって知ることができる。
本発明によれば、オブジェクト指向プログラミングの言語およびツールにおけるバージョニングサポートをし、ソフトウェア環境においてソフトウェアコンポーネント群を協調させることができる。
本発明の前述した利点および特徴、ならびにその他の利点および特徴を得ることができるやり方を説明するため、以上に簡単に説明した本発明のより詳細な説明を、図面に示した本発明の具体的な実施形態を参照して行う。これらの図面は、本発明の典型的な実施形態だけを示しており、したがって、本発明の範囲を限定するものと見なされるべきではないことを理解して、本発明を、図面の使用を介してさらに具体的に、さらに詳細に記述し、説明する。以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
本発明は、プログラム開発者が、プログラム機能を損なうことなしに、コンポーネント群、モジュール群、またはオペレーティングシステム群における変更に容易に対応することができるようにするシステム、方法、およびコンピュータプログラム製品を対象とする。詳細には、静的参照または動的参照を介して互いにアクセスするプログラム群およびコンポーネント群が、オペレーティングシステム内で互いに適合するように並存することを可能にするシステムを開示する。本発明の実施形態は、以下により詳細に説明するとおり、様々なコンピュータハードウェアを含む専用コンピュータまたは汎用コンピュータを含むことが可能である。
本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を担持するため、または格納しておくためのコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータがアクセスすることができる任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM(random access memory)、ROM(read only memory)、EEPROM(electrically erasable programmable read-only memory)、CD(compact disc)−ROM、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形態で所望のプログラムコード手段を担持する、または格納するのに使用することができ、汎用コンピュータまたは専用コンピュータがアクセスすることができる他の任意の媒体を含むことが可能である。
情報が、ネットワークまたは別の通信接続(配線による、または無線の、あるいは配線と無線の組み合わせの)を介してコンピュータに転送される、または供給される場合、コンピュータは、その接続をコンピュータ可読媒体と適切に見なす。そのため、あらゆるそのような接続が、コンピュータ可読媒体と適切に呼ばれる。また、以上の媒体の組み合わせも、コンピュータ可読媒体の範囲に含められなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスが、ある機能、またはあるグループの機能を実行するようにさせる命令およびデータを含む。
図1は、判定モジュール100が、要求側コンポーネント105から、コンポーネント120、125、および130のような別のコンポーネントまたはプログラムにアクセスする1つまたは複数の要求を受け取る本発明の実施形態を実施するための典型的なコンピュータアーキテクチャを示している。本明細書および特許請求の範囲では、「判定モジュール」100には、例えば、コンポーネントの名前、および最初に意図されたバージョンを含む目標コンポーネントへの参照を特定し、要求を満たすのに使用される適切な目標コンポーネントを選択するために構成された実行可能命令を有する任意のタイプのモジュールが含まれることが可能である。一部の状況では、以上には、そのような目標コンポーネントが全く用意されていないと判定することが含まれることが可能であり、したがって、判定モジュール100は、エラーを戻すように構成される。以下に詳述するとおり、判定モジュール100は、他のいずれのコンポーネント群が、コンピュータシステム内、コンピュータプロセス内、またはコンピュータサブプロセス内で既にアクセスできるようにされているかなどの、他の情報を特定するように構成することもできる。
さらに、本明細書および特許請求の範囲では、「コンポーネント」には、解釈されるテキスト形式のファイル、およびマシン可読命令にコンパイル済みのファイルなどの、コンピュータ化されたシステム上で実行することができるあらゆる形態の実行可能命令が含まれるものと理解する。したがって、コンポーネントという用語には、多種多様な機能を提供するより大型のアプリケーションプログラム群およびシステム群と、特定の機能を有する他のコンポーネント群またはプログラム群を提供するより小型のプログラムおよび/またはシステムコンポーネント群がともに含まれることが可能である。さらに、本明細書で、「アプリケーション」、「アプリケーションプログラム」、「プログラム」、およびコンポーネントの間で、ときとして、何らかの区別をするが、それぞれをコンポーネントと適切に呼ぶことができるため、その区別は、普通、実行可能命令の1つの集合が別のコンポーネントにアクセスする要求を行っている、または要求を受け取っていることを明確にすることを目的とする、単に便宜上の区別に過ぎない。このため、「要求側コンポーネント」および「目標コンポーネント」という用語には、以下に詳述するとおり、以上の実行可能命令のいずれかが含まれることも可能である。
本発明の実施形態は、「プラットフォーム」コンポーネントまたは「ライブラリ」コンポーネントと分類されているコンポーネント群にアクセスすることができる。「プラットフォーム」コンポーネントは、コンピュータ化されたシステム内の複数の他のコンポーネントまたはプログラムがアクセスすることができるコンポーネントである。プラットフォームコンポーネントは、通常、最新の形態、またはアップグレード済みの形態でだけアクセスされ、したがって、要求側コンポーネントは、目標コンポーネントの特定のバージョンを要求するのではなく、単に、目標コンポーネントを一般的に要求すること、または目標コンポーネントの最小バージョンを要求することができる。このため、判定モジュールは、例えば、最新バージョン以外のプラットフォームコンポーネントのバージョンを提供するように構成することができる。理論上、プラットフォームコンポーネントは、アップグレードが受け取られた時点でコンポーネントアップグレードによって上書きされることが可能であるが、実際には、これが行われない可能性がある理由が存在する。プラットフォームコンポーネントは、ときとして、「バイナリ互換」コンポーネントと呼ぶこともできる。これとは対照的に、ライブラリコンポーネントは、そのライブラリコンポーネントの正確に同一のバージョンが参照された場合にだけ、別のコンポーネントまたはプログラムによってアクセスされる。
図1に示すとおり、判定モジュール100は、要求側コンポーネント105から、コンポーネント120、125、および130のような目標コンポーネントにアクセスする要求または宣言を受け取ることができる。本開示および特許請求の範囲では、「目標コンポーネント」という用語は、要求側コンポーネントによってアクセスが求められるコンポーネントを指す。ただし、あるコンポーネントが目標コンポーネントであるか、要求側コンポーネントであるかは、いずれのコンポーネントが他方のコンポーネントへのアクセスを要求しているかに依存する、主に見方の問題であることが認められよう。このため、本明細書および特許請求の範囲において目標コンポーネントに当てはまる説明は、要求側コンポーネントにも同様に当てはまることが可能であり、その逆も同様である。
いずれにしても、要求側コンポーネント105は、判定モジュール100を介してコンポーネントアクセス要求110を開始することができ、要求は、要求側コンポーネント105が、目標コンポーネント120、125、および130の所与のバージョンにアクセスするように構成されていることを示す。一部の実施形態では、要求110は、要求側コンポーネント105が所与のコンピュータ化されたシステム(図示せず)に最初にインストールされた際に、要求側コンポーネント105のソースコードの中に見られる参照であることが可能である。代替として、要求110は、要求側コンポーネント105が、実行時に、コンポーネント120、125、および130のような目標コンポーネントの所与のバージョンへのアクセスを要求する時点で、要求側コンポーネント105によって行われることが可能である。
本明細書および特許請求の範囲では、「バージョニングポリシー」には、目標コンポーネント(例えば、120、125、130)から判定モジュール100に伝送されることが可能な所与のプロパティの集合の任意のプロパティが含まれる。バージョニングポリシー131、132、または133は、より小さいバージョン番号を有する所与の目標コンポーネントのバージョンの代わりに、対応する目標コンポーネント120、125、130を使用することができるかどうかを指定する。バージョニングポリシーは、所与の構成においてその目標コンポーネントを使用することができるかどうかを判定するのに判定モジュール100が使用することが意図された追加の情報を含むことが可能である。このため、バージョニングポリシー132は、バージョン1.1が要求された場合に、目標コンポーネント125(バージョン1.2)を使用できることを指定することができる。一部の実施形態では、バージョニングポリシーは、目標コンポーネント内部の事前定義された場所で見つかる。他の実施形態では、バージョニングポリシーは、コンポーネントがシステムにインストールされる際に、または所与のコンポーネントにアクセスする第1の要求が行われる際に、判定モジュール100に伝送されることが可能である。
したがって、要求側コンポーネントは、目標コンポーネントの特定のバージョンを要求すること、例えば、「コンポーネント1」「バージョン1.1」を求める要求110によって目標コンポーネントへのアクセスを要求することができる。要求側コンポーネント105が、目標コンポーネントの特定のバージョンを要求した場合、または目標コンポーネントの特定のバージョンと協働するように構成されている場合、判定モジュール100は、目標コンポーネント内部に存在するバージョニングポリシー131、132、133に応じて、コンポーネントの特定のバージョンへのアクセスを要求側コンポーネント105に提供することができる。図1に示すとおり、例えば、要求側コンポーネント105は、要求110を送ることによって「コンポーネント1」の「バージョン1」を要求する。このため、判定モジュール100は、「コンポーネント1」のより新しいバージョン、例えば、「バージョン1.2」がシステム内に存在していても、「コンポーネント1」の「バージョン1.1」125へのアクセスを要求側コンポーネント105に許可する。
これとは対照的に、一部の実施形態では、コンポーネントのあるバージョンを求める要求により、コンポーネントの別の(例えば、更新済みの、またはより新しい)バージョンへのアクセスがもたらされる。例えば、要求100が、「コンポーネント1」の「バージョン1.1」にアクセスする要求であることが可能である。しかし、バージョニングポリシー131により、「バージョン1.1」はプラットフォームコンポーネントである(そのため、「コンポーネント1」の最新バージョンが、要求に応答して提供されるべきである)ことが示されることが可能である。さらに、一部の実施形態では、それでも、システム上に所与のプラットフォームコンポーネントの複数のバージョンが存在することが可能である。
このため、要求側コンポーネントは、要求側コンポーネント105が受け入れることができるプラットフォーム目標コンポーネントの可能な最低バージョンを示す情報も要求の中に含めることができる。例えば、要求側コンポーネント105が、「コンポーネント1」の「バージョン1.4」を要求し、その要求に応答して、「コンポーネント1」のより低いバージョンが戻されるべきでないことがあり得る。したがって、判定モジュール100は、「バージョン1.1」および「バージョン1.2」がアクセス可能であっても、「コンポーネント1」の「バージョン3」へのアクセスを要求側コンポーネント105に提供することができる。
要求されたコンポーネントのすべてのアクセス可能なバージョンが、指定の要求されたバージョンよりも低いバージョン表示を有する場合、判定モジュール100は、適切な応答(例えば、エラーメッセージ)を要求側コンポーネントに戻すことができる。例えば、判定モジュール100は、「コンポーネント1」の「バージョン3」へのアクセスを有さない場合、「コンポーネント1」の「バージョン1.4以上」を求める要求に応答して、エラーメッセージを要求側コンポーネント105に送ることができる。
バージョン番号が、2つの部分、バージョンおよびサービス(servicing)を含むことがあり得る。更新済みのサービスを示すバージョン番号を有するコンポーネントは、より古いサービスを示すバージョン番号を有するコンポーネントに置き換わることが許される。サービス値を利用してコンポーネントの置換を容易にすることは、バグを修正するため、またはライブラリコンポーネントに関連するか、プラットフォームコンポーネントに関連するかに関わらず、セキュリティ問題を修正するために、その他のコンポーネント群との不適合を生じさせる可能性のより低い軽微な変更を実施するのに特に有利である。つまり、サービス値は、コンポーネントのバージョンを「修正する(patching)」ことを容易にすることができる。例えば、目標コンポーネント120が、ライブラリコンポーネントであると特定された(したがって、目標コンポーネントのバージョン1.1は、置き換えられない)場合、開発者は、それでも、そのコンポーネントのバージョン番号の中のサービス値を更新する(例えば、増分する)ことにより、目標コンポーネント120を更新することができる。したがって、更新された目標コンポーネント120は、基本的に、「バージョン1.1」の異なるサービスである。
図2Aは、既存のコンポーネント群のより新しいバージョンを受け取る典型的なコンピュータアーキテクチャを示している。つまり、判定モジュール100が、対応するコンピュータ化されたシステムに既に存在する目標コンポーネント群に対するアップグレードを受け取ることができる。例えば、判定モジュール100は、ネットワーク240に接続されたネットワークサービスプロバイダ(図示せず)から、コンポーネント215および210を受け取ることができる。判定モジュール100は、対応するコンピュータ化されたシステムにおいて(またはネットワークサービスプロバイダ)においてインストールプログラムを実行した結果として、コンポーネント215および210を受け取ることができる。
図示するとおり、コンポーネント210および215は、例えば、アップグレードされたコンポーネント210が、「コンポーネント2」の「バージョン3」アップグレードであることや、そのコンポーネントがプラットフォームコンポーネントであることなどのバージョニングポリシー情報を含む。加えて、コンポーネント215は、コンポーネント215がライブラリコンポーネントである、またはそのコンポーネント215が、それ以外に、コンポーネント215が表す特定のバージョンへのアクセスを要求側コンポーネント群に与ることができるように構成されているという情報をバージョニングポリシーの形態で含むことが可能である。
コンポーネント210および215を受け取ったことに応答して、判定モジュール100は、それぞれの受け取られたアップグレード済みのコンポーネントの以前のバージョンを保持する(「並置(side−by−side)」更新と呼ぶことができる)か、または以前のバージョンを置き換える(「代用(in−place)」更新と呼ぶことができる)かを判定する。例えば、図2Aに示すとおり、コンポーネント220および235は、それぞれ、ライブラリコンポーネントおよびプラットフォームコンポーネントである。より具体的には、コンポーネント215を受け取ったことに応答して、判定モジュール100は、「コンポーネント1」がライブラリコンポーネントであるため、「コンポーネント1」の「バージョン1」にはっきり限定してアクセスするように他のプログラム群またはコンポーネント群を構成できることを明らかにすることができる。したがって、判定モジュール100は、コンポーネント215とコンポーネント220がともに保持されるべきであると判定することができる。
より具体的には、コンポーネント210を受け取ったことに応答して、判定モジュール100は、「コンポーネント2」がプラットフォームコンポーネントであるため、コンポーネント2の最新バージョンへのアクセスが要求側のプログラム群およびコンポーネント群に与えられることを明らかにすることができる。したがって、判定モジュール100は、コンポーネント235がコンポーネント210で置き換えられるべきであると判定することができる。
図2Bは、判定モジュールが保持されるべきコンポーネント群のバージョンを特定した後の図2Aの典型的なコンピュータアーキテクチャを示している。図2Bに示すとおり、コンポーネント1の「バージョン1」(コンポーネント220)と「バージョン2」(コンポーネント215)がともに、システム上に留まっている(並置更新)。やはり図2Bに示すとおり、「コンポーネント2」の「バージョン3」(コンポーネント210)だけが、システム上に留まっている(代用更新)。
図3は、本発明の実施形態による異なる処理レベルにコンポーネントスコープを階層化するための典型的なコンピュータアーキテクチャを示している。階層化は、目標コンポーネントに適用されるコンポーネントスコープに基づく。例として、限定としてではなく、図3は、3つのレベルのスコープ、すなわち、「マシン」レベル330、「プロセス」レベル340、および「サブプロセス」レベル350を示している。しかし、本開示および特許請求の範囲を読むことで、適宜、より多いレベル、またはより少ないレベルが存在することも可能であることが認められよう。詳細には、本発明の態様は、目標コンポーネントが、所与のレベルにおいて目標の1つのバージョンだけ(すなわち、マシン全体で1つのバージョンだけ、または所与のプロセス内で1つだけ、または所与のサブプロセス内で1つだけ)が用意されることを要求するバージョニングポリシーを供給することを可能にする。
例えば、所与の目標コンポーネント300に関連するバージョニングポリシーは、コンポーネントスコープの集合を含むことが可能である。図1を再び簡単に参照すると、コンポーネントスコープは、要求側コンポーネント105が、所与のプロセスレベルにおける目標コンポーネント300にアクセスしなければならないことを示すことができる。図3に示すとおり、例えば、「コンポーネント1」「バージョン1」300が、マシンレベルアクセスに関して特定される。目標コンポーネント300へのアクセスを要求するシステムにインストールされたあらゆる要求側コンポーネントは、「コンポーネント1」「バージョン1」を使用しなければならない。というのは、目標コンポーネント300は、マシンレベルアクセス向けに構成されているからである。他のバージョニングポリシープロパティの場合と同様に、このプロセスレベル制限は、目標コンポーネントの開発者により、そのコンポーネントが所与のシステムにインストールされる前に示されることが可能である。
コンポーネントスコープは、目標コンポーネント300、310、315、320、および325に関するより大きいスコープ、またはより小さいスコープを示すこともできる。例えば、所与のコンポーネント310に関して特定された「バージョニングポリシー群」は、目標コンポーネント310の所与のバージョンが、一部のプロセス342、345、またはサブプロセス352、355の内部でだけ要求されることを示すことが可能である。図3に示すとおり、例えば、コンポーネント310の所与のバージョンへのアクセスを要求するあらゆる要求側コンポーネント105は、他の要求側コンポーネント群(システム上の)が、他のプロセス群315内で同一の目標コンポーネントを使用することを要することなしに、プロセス342内でその要求を行うことができる。このため、プロセス342内でコンポーネント310を使用することができる一方で、プロセス345内でコンポーネント315を使用することができる。さらに、プロセスA342が特定のバージョンを選択していない場合、プロセス340に依存するサブプロセス350は、コンポーネント320および325などのコンポーネント310の異なるバージョンを使用することができる。したがって、異なるコンポーネントへの粒状(granular)アクセスのこのレベルは、所与のコンポーネントがシステムにインストールされる際にシステム管理によってではなく、所与のコンポーネントが開発される際に示されることが可能である。判定モジュール100は、各目標コンポーネントまたは各要求側コンポーネントに関する任意の特定されたコンポーネントスコープを結合して、適切な目標コンポーネントアクセスを要求側コンポーネントに提供することができる。
したがって、目標コンポーネントの適切なバージョンの特定は、例えば、コンポーネントなどの他のポリシーに基づくことが可能である。したがって、判定モジュールは、指定された目標コンポーネントのバージョニングポリシーおよびコンポーネントスコープなどの任意の特定されたポリシー、ならびに適宜、システム管理者が提供した他の任意のポリシー群に基づき、目標コンポーネントの適切なバージョンを特定することができる。
本発明は、機能ステップおよび/または非機能(non−functional)ステップを含む方法に関して説明することもできる。図4、図5Aおよび図5Bは、コンピュータ化されたシステム内の他のプログラム群またはコンポーネント群によるコンポーネントアクセスを可能にすることに関する典型的な流れ図を示している。図4、図5Aおよび図5Bの方法は、前出の図で示したプログラム群のモジュール群に関連して説明する。
図4は、本発明の実施形態によるコンポーネントアクセスを提供するための方法の典型的な流れ図を示している。図4の方法は、目標コンポーネントのバージョンを求める要求を受け取るステップ400を含む。ステップ400は、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取ることを含むことが可能であり、要求は、要求側コンポーネントから受け取られる。例えば、要求側コンポーネント105は、判定モジュール100を介して、コンポーネント120、125、および130のような目標コンポーネントへのアクセスを要求することができる。また、要求が、目標コンポーネントのバージョンのバージョニングポリシーを含むこともあり得る。
また、方法は、適切な目標コンポーネントを提供する機能上の結果指向のステップ440も含む。ステップ440は、本発明を実施するための任意の数の対応するステップを含むことが可能である。しかし、図4に示すとおり、ステップ440は、バージョニングポリシーを特定するステップ410を含む。ステップ410は、目標コンポーネントの指定されたバージョンのバージョニングポリシーを特定することを含むことが可能である。バージョニングポリシーが要求の中に含められている場合、判定モジュール100は、そのような含まれるバージョニングポリシーを特定することができる。代替として、判定モジュール100は、目標コンポーネントの1つまたは複数のバージョンを参照して、目標コンポーネントの1つまたは複数のバージョンの中に格納されているバージョンポリシー群を特定することができる。例えば、判定モジュール100は、対応するバージョニングポリシー131、132、および133をそれぞれが有する同一の「コンポーネント1」の「バージョン1」120および「バージョン2」125のような、コンポーネントの複数のバージョンが、システム上に存在することを明らかにすることができる。ソフトウェア開発者は、バージョニングポリシーを目標コンポーネント120、125、および130などの中に含めて、開発済みのプログラムまたはコンポーネントがコンパイルされた、インストールされた、または実行された時点で、判定モジュール100がそのバージョニングポリシーを特定するようにすることができる。
ステップ440は、目標コンポーネントの適切なバージョンを提供するステップ430も含む。ステップ430は、指定された目標コンポーネントのバージョニングポリシーに基づいて目標コンポーネントの適切なバージョンを特定することを含むことが可能である。例えば、判定モジュール100が、コンポーネント120のような、要求された目標コンポーネント(ライブラリコンポーネント)の特定のバージョンを要求側コンポーネント105に提供することができる。代替として、判定モジュール100は、コンポーネント130のような、コンポーネント(プラットフォームコンポーネント)のより新しいバージョンを要求側コンポーネント105に提供することもできる。
図5Aは、本発明の実施形態によるコンポーネントアップグレードを管理するための方法の典型的な流れ図を示している。図5Aの方法は、目標コンポーネントにアクセスする要求側コンポーネントが、目標コンポーネントがアップグレードされた後に有効にステップしつづけるように実施することができる。図示するとおり、図5Aに示した方法は、コンポーネント更新を受け取るステップ500を含む。ステップ500は、要求側コンポーネントによってアクセスされる目標コンポーネントを特定することも含むことが可能である。例えば、図1を再び参照すると、判定モジュール100が、要求側コンポーネント105がインストールされた時点で、インストールされたプログラムまたはコンポーネントを特定するレジスタまたはデータベースにリンクされること、またはそのようなレジスタまたはデータベースを含むことが可能であり、あるいはコンポーネント105が、「コンポーネント1」の「バージョン1」120のような目標コンポーネントの特定のバージョンにアクセスするように構成される。この判定モジュール100は、インストールされたプログラムの中に含まれ、プログラムがアクセスするように構成されているあらゆるコンポーネント群の中にも含まれるバージョニングポリシーに基づき、その情報を獲得することができる。
図5Aに示した方法は、バージョニングポリシーを特定するステップ510を含む。ステップ510は、目標コンポーネントの以前のバージョンの中の中でバージョニングポリシー、および目標コンポーネントの更新されたバージョンを特定することを含むことが可能である。例えば、判定モジュール100は、前述したとおり、目標コンポーネント120、125、および130のバージョンを示すことができ、目標コンポーネントがプラットフォームコンポーネントされるか、またはライブラリコンポーネントとされるかを示すことができる、目標コンポーネント120、125、および130のいずれかの中のバージョニングポリシーを特定する。
図5Aに示す方法は、少なくともある程度、バージョニングポリシーに基づき、コンポーネント更新をシステムに追加するステップ520をさらに含む。ステップ520は、特定されたバージョニングポリシーに基づき、目標コンポーネントの以前のバージョンを削除すること、および/または目標コンポーネントの更新されたバージョンを追加することを含むことが可能である。例えば、目標コンポーネントの特定の以前のバージョン220が、そのコンポーネントがライブラリコンポーネントである場合のように、別のプログラムまたはコンポーネントによるアクセスのために要求される場合、判定モジュール100は、以前のバージョン220を上書きすることをしない。判定モジュール100は、そのコンポーネントの新しいバージョン215を単に追加して、そのコンポーネントの新たなバージョン215を要求するプログラム群またはコンポーネント群が、そのバージョンにアクセスすることができるようにする。同様に、そのコンポーネントの以前のバージョン220を要求するプログラム群またはコンポーネント群も、そのバージョンにアクセスすることができ、これにより、要求側のプログラムまたはコンポーネントの完全性が保たれる。これとは対照的に、所与のコンポーネント(プラットフォームコンポーネント)の特定のバージョンを要求しているプログラムまたはコンポーネントが全く特定されない場合、判定モジュール100は、コンポーネントの最新バージョン210でコンポーネントの以前のバージョン235を単に上書きすることができる。
図5Bは、本発明の実施形態による1つまたは複数のプロセスレベルにおいてコンポーネントアクセスを提供するための方法の典型的な流れ図を示している。図5Bの方法は、1つまたは複数の目標コンポーネントを編成して、その1つまたは複数の目標コンポーネントへのアクセスが制限されるように実施することができる。図5Bに示した方法は、バージョニングポリシーを特定するステップ550を含む。ステップ550は、目標コンポーネント内部のバージョニングポリシーを特定することを含むことが可能である。例えば、判定モジュール100が、要求側コンポーネントからコンポーネントアクセス要求を受け取ることができ、受け取られたアップグレード215、210の内部、既存の目標コンポーネント220、225の内部などからバージョニングを特定することができる。前述したとおり、バージョニングポリシーは、システムが、目標コンポーネントのバージョン番号を特定するのに役立つことが可能であり、目標コンポーネント220、225、および230がライブラリコンポーネントとされるか、プラットフォームコンポーネントとされるかを特定するのにも役立つことが可能である。
図5Bに示した方法は、コンポーネントに関連するコンポーネントスコープを特定するステップ560を含む。ステップ560は、目標コンポーネントに関連するコンポーネントスコープを特定することを含むことが可能であり、コンポーネントスコープは、目標コンポーネントにアクセスするように構成することができる要求側コンポーネントに関連するプロパティを特定する。例えば、目標コンポーネント、または要求側のプログラムまたはコンポーネントを、マシンレイヤ、サブプロセスレイヤなどの1つのレイヤにおいてアクセスすることができる目標コンポーネントのバージョンを示す特定のコンポーネントスコープに関連付けることができる。しかし、本明細書で説明するとおり、開発者の好みに応じて、コンポーネントアクセスを制限することができる様々なレベルが存在することが可能であることが認められよう。
図5Bに示す方法は、コンポーネントスコープおよびバージョニングポリシーに基づいて目標コンポーネントアクセスを許すステップ570を含む。ステップ570は、要求側コンポーネントに関連するアクセスプロパティ、および特定されたバージョニングポリシーに基づき、1つまたは複数の要求側コンポーネントの少なくとも1つが目標コンポーネントにアクセスすることを許すことを含むことが可能である。例えば、1つまたは複数のプログラムまたはコンポーネント300が、マシン全体のプロセス群330に関して示される場合、任意の所与のプロセスレベルにおいて任意の所与の要求側コンポーネントにコンポーネント300のそのバージョンだけが利用可能である。これとは対照的に、目標コンポーネントが、プロセスレベルアクセスを伴って特定される場合、判定モジュール100は、他の要求側コンポーネント群が、適宜、所与の対応するプロセスまたはサブプロセスに関して同一の目標コンポーネントの異なるバージョンにアクセスするのを許すことができる。
図6および以下の説明は、本発明を実施することができる適切なコンピューティング環境の簡単な一般的な説明を提供することを目的としている。必須ではないが、本発明は、ネットワーク環境においてコンピュータ群によって実行されている、プログラムモジュールなどのコンピュータ実行可能命令の一般的な状況で説明する。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連するデータ構造、およびプログラムモジュールは、本明細書で開示する方法のステップを実行するためのプログラムコード手段の例である。そのような実行可能命令または関連するデータ構造の特定の順序は、そのようなステップにおいて記述される諸機能を実施するための対応するステップの例である。
本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークPC(personal computer)、ミニコンピュータ、メインフレームコンピュータなどを含め、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが、当業者には認められよう。本発明は、通信ネットワークを介してリンクされた(有線リンク、無線リンク、または有線リンクと無線リンクの組み合わせで)ローカル処理デバイス群およびリモート処理デバイス群によってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置することができる。
本発明は、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含め、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施できることが、当業者には認められよう。本発明は、通信ネットワークを介してリンクされた(有線リンク、無線リンク、または有線リンクと無線リンクの組み合わせで)ローカル処理デバイス群およびリモート処理デバイス群によってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリ記憶装置とリモートメモリ記憶装置の両方の中に配置することができる。
図6を参照すると、本発明を実施するための典型的なシステムが、プロセッサ621、システムメモリ622、ならびにシステムメモリ622からプロセッサ621までを含む様々なシステムコンポーネント群を結合するシステムバス623を含む従来のコンピュータ620の形態で汎用コンピューティングデバイスを含んでいる。システムバス623は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含め、いくつかのタイプのバス構造のいずれであってもよい。システムメモリには、読み取り専用メモリ(ROM)624およびランダムアクセスメモリ(RAM)625が含まれる。始動中などにコンピュータ620内部の要素間で情報を転送するのを助けるBIOS(Basic Input/Output System)626をROM624の中に格納することができる。
コンピュータ620は、磁気ハードディスク639に対して読み取りおよび書き込みを行うための磁気ハードディスクドライブ627、リムーバブルな磁気ディスク629に対して読み取りまたは書き込みを行うための磁気ディスクドライブ628、およびCD−ROMまたはその他の光媒体などのリムーバブルな光ディスク631に対して読み取りまたは書き込みを行うための光ディスクドライブ630も含むことが可能である。磁気ハードディスクドライブ627、磁気ディスクドライブ628、および光ディスクドライブ630は、それぞれ、ハードディスクドライブインタフェース632、磁気ディスクドライブインタフェース633、および光ディスクドライブインタフェース634でシステムバス623に接続される。以上のドライブ群および関連するコンピュータ可読媒体により、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージがコンピュータ620に提供される。本明細書で説明する典型的な環境は、磁気ハードディスク639、リムーバブルな磁気ディスク629、およびリムーバブルな光ディスク631を使用するが、磁気カセット、フラッシュメモリカード、DVD(Digital Versatile Disc)、ベルヌーイカートリッジ、RAM、ROMなどを含め、データを格納するための他のタイプのコンピュータ可読媒体も使用することができる。
オペレーティングシステム635、1つまたは複数のアプリケーションプログラム636、その他のプログラムモジュール637、およびプログラムデータ638を含め、1つまたは複数のプログラムモジュールを含むプログラムコード手段をハードディスク639、磁気ディスク629、光ディスク631、ROM624、またはRAM625に格納することができる。ユーザは、キーボード640、ポインティングデバイス642、またはマイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどの他の入力デバイス群(図示せず)を介して、コマンドおよび情報をコンピュータ620に入力することができる。以上の入力デバイス群およびその他の入力デバイス群は、しばしば、システムバス623に結合されたシリアルポートインタフェース646を介してプロセッサ621に接続される。代替として、入力デバイス群は、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースで接続してもよい。モニタ647または別のディスプレイデバイスも、ビデオアダプタ648のようなインタフェースを介してシステムバス623に接続される。モニタに加えて、パーソナルコンピュータは、通常、スピーカやプリンタなどの他の周辺出力デバイス群(図示せず)も含む。
コンピュータ620は、リモートコンピュータ649aおよび649bのような1つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境においてもオペレートすることができる。リモートコンピュータ649aおよび649bはそれぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、通常、コンピュータ620に関連して前述した要素の多く、またはすべてを含むが、メモリ記憶装置650aおよび650b、ならびに関連するアプリケーションプログラム636aおよび636bを図6に示している。図6に示した論理接続は、例として、限定としてではなく、図示しているローカルエリアネットワーク(LAN)651およびワイドエリアネットワーク(WAN)652を含む。そのようなネットワーキング環境は、オフィス全体のコンピュータ網、または企業全体のコンピュータ網、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境において使用される場合、コンピュータ620は、ネットワークインタフェースまたはネットワークアダプタ653を介してローカルネットワーク651に接続される。WANネットワーキング環境において使用される場合、コンピュータ620は、インターネットなどのワイドエリアネットワーク652を介して通信を確立するためのモデム654、無線リンク、またはその他の手段を含むことが可能である。内部にあることも、外部にあることも可能なモデム654は、シリアルポートインタフェース646を介してシステムバス623に接続される。ネットワーク化された環境では、コンピュータ620に関連して描いたプログラムモジュール群、またはプログラムモジュール群の諸部分をリモートメモリ記憶装置の中に格納することができる。図示したネットワーク接続は、典型的であり、ワイドエリアネットワーク652を介して通信を確立する他の手段を使用してもよいことが認められよう。
本発明は、本発明の趣旨および基本的な特性から逸脱することなく、他の特定の形態で実施することもできる。説明した実施形態は、すべての点で、例示的であり、限定するものではないとみなされるべきである。したがって、本発明の範囲は、以上の説明によってではなく、特許請求の範囲によって示される。特許請求の範囲と等価の意味および範囲に入るすべての変更は、特許請求の範囲に包含されるものとする。
本発明の原理による目標コンポーネントへのアクセスを要求側コンポーネントに提供するための典型的なコンピュータアーキテクチャを示す図である。 本発明の原理による既存のコンポーネント群のより新しいバージョンを受け取る典型的なコンピュータアーキテクチャを示す図である。 本発明の原理による保持されるべきコンポーネント群のバージョンを判定モジュールが特定した後の図2Aの典型的なコンピュータアーキテクチャを示す図である。 本発明の原理による異なる処理レベルにコンポーネントスコープを階層化するための典型的なコンピュータアーキテクチャを示す図である。 本発明の原理によるコンポーネントアクセスを提供するための方法を示す典型的な流れ図である。 本発明の原理によるコンポーネントアップグレードを管理するための方法を示す典型的な流れ図である。 本発明の原理によるコンポーネントスコープを限定するための方法を示す典型的な流れ図である。 本発明の態様を実施するのに適した環境を示す図である。
符号の説明
100 判定モジュール
105 要求側コンポーネント
110 コンポーネントアクセス要求
120 目標コンポーネント
125 目標コンポーネント
130 目標コンポーネント

Claims (27)

  1. 1つまたは複数の目標コンポーネントにアクセスすることを要求することができる1つまたは複数の要求側コンポーネントを含む1つまたは複数のプログラムコンポーネントを含むコンピュータ化されたシステムにおける、要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法であって、
    要求側コンポーネントから、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取るステップと、
    前記目標コンポーネントの前記指定されたバージョンのバージョニングポリシーを特定するステップと、
    前記指定された目標コンポーネントの前記バージョニングポリシーに基づいて前記目標コンポーネントの適切なバージョンを特定するステップと、
    前記要求側コンポーネントに前記目標コンポーネントの前記適切なバージョンへのアクセスを提供するステップと
    を備えることを特徴とする方法。
  2. 前記目標コンポーネントの前記要求されたバージョンは、ライブラリコンポーネントとプラットフォームコンポーネントのどちらかであることを特徴とする請求項1に記載の方法。
  3. 前記目標コンポーネントの適切なバージョンを特定するステップは、前記目標のより早期のバージョンを求める要求に応答して、前記より早期のバージョンとより新しいバージョンの両方が前記コンピュータ化されたシステムに利用可能であっても、前記目標コンポーネントの該より新しいバージョンを特定するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記目標のより早期のバージョンを求める要求に応答して、前記より早期のバージョンとより新しいバージョンの両方が前記コンピュータ化されたシステムに利用可能であっても、前記目標コンポーネントの該より新しいバージョンを特定するステップは、より新しいバージョンが前記コンピュータ化されたシステムにおいて受け取られている場合、プラットフォームコンポーネントのより早期のバージョンが前記システム上に残っていても、該プラットフォームコンポーネントの該より新しいバージョンを特定するステップを含むことを特徴とする請求項3に記載の方法。
  5. 前記目標コンポーネントの前記指定されたバージョンの前記バージョニングポリシーは、前記コンピュータ化されたシステム上で前記目標コンポーネントがコンパイルされた時点、構成された時点、インストールされた時点、および実行された時点の1つまたは複数の時点に特定されることを特徴とする請求項1に記載の方法。
  6. 前記指定された目標コンポーネントを特定するバージョン情報は、前記コンピュータ化されたシステム上で前記要求側コンポーネントがコンパイルされた時点、構成された時点、インストールされた時点、および実行された時点の1つまたは複数の時点に前記要求側コンポーネントの中に格納されることを特徴とする請求項1に記載の方法。
  7. 前記目標コンポーネントの以前のバージョンにアクセスすることができる1つまたは複数の要求側コンポーネントを特定するステップと、
    前記1つまたは複数の要求側コンポーネントのいずれも前記目標コンポーネントの前記以前のバージョンにアクセスするように構成されていないことを特定するステップと、
    前記目標コンポーネントの前記以前のバージョンを削除するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  8. 前記目標コンポーネントの前記適切なバージョンは、要求された前記目標コンポーネントの前記バージョンであることを特徴とする請求項1に記載の方法。
  9. 前記目標コンポーネントの前記適切なバージョンは、要求された前記目標コンポーネントの前記バージョンとは異なることを特徴とする請求項1に記載の方法。
  10. 目標コンポーネントアクセスは、判定モジュールを介して前記要求側コンポーネントに提供されることを特徴とする請求項9に記載の方法。
  11. 前記目標コンポーネントの前記以前のバージョンおよび前記目標コンポーネントの前記より新しいバージョンの1つまたは複数の利用可能性は、前記目標コンポーネントの前記以前のバージョンおよび前記目標コンポーネントの前記より新しいバージョンの前記1つまたは複数が前記コンピュータ化されたシステムによって受け取られた時点で、判定モジュールによって特定されることを特徴とする請求項10に記載の方法。
  12. 前記バージョニングポリシーは、前記コンピュータ化されたシステム上で前記目標コンポーネントをインストールした時点、構成した時点、および実行した時点のいずれかに先立って前記目標コンポーネント内部のコンピュータ実行可能命令の中に挿入されることを特徴とする請求項1に記載の方法。
  13. 前記バージョニングポリシーは、前記目標コンポーネントのいずれかのバージョンの中でさらに特定されることを特徴とする請求項1に記載の方法。
  14. 前記バージョニングポリシーは、前記目標コンポーネントの前記以前のバージョンおよび前記目標コンポーネントの前記より新しいバージョンのいずれかが、前記要求側コンポーネントの特定のバージョンによってアクセスされるように構成されていることを特定することを特徴とする請求項13に記載の方法。
  15. 前記目標コンポーネントに関連するコンポーネントスコープを特定するステップをさらに備えることを特徴とする請求項1に記載の方法。
  16. 前記目標コンポーネントの前記指定されたバージョンへのアクセスは、前記目標コンポーネントに関連する前記特定されたコンポーネントスコープとシステム管理者によって供給された目標コンポーネントスコープのどちらかにさらに基づくことを特徴とする請求項15に記載の方法。
  17. 前記特定されたコンポーネントスコープは、前記目標コンポーネントの前記指定されたバージョンへのアクセスが、マシンレベル、プロセスレベル、およびサブプロセスレベルの1つまたは複数において提供されることを特徴とする請求項16に記載の方法。
  18. 前記要求された目標コンポーネントは、ライブラリコンポーネントであり、前記要求された目標コンポーネントに関連するサービス値を特定するステップをさらに備えることを特徴とする請求項1に記載の方法。
  19. 前記目標コンポーネントの適切なバージョンを特定するステップは、前記特定されたバージョニングポリシーおよび前記特定されたサービス値に基づいてライブラリコンポーネントの更新されたバージョンを特定するステップを備えることを特徴とする請求項1に記載の方法。
  20. 1つまたは複数の目標コンポーネントにアクセスすることを要求することができる1つまたは複数の要求側コンポーネントを含む1つまたは複数のプログラムコンポーネントを含むコンピュータ化されたシステムにおける、要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法であって、
    要求側コンポーネントから、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取るステップと、
    前記要求された目標コンポーネントの適切なバージョンへのアクセスを許して、前記要求側コンポーネントが、該要求側コンポーネントがアクセスするように構成されている適切な目標コンポーネントにアクセスするようにし、前記要求側コンポーネントが、アップグレードされたコンポーネントへのアクセスを要求した場合に、失敗しないようにするステップとを
    備えることを特徴とする方法。
  21. 前記要求された目標コンポーネントの適切なバージョンへのアクセスを許すための前記ステップは、
    前記目標コンポーネントの前記指定されたバージョンのバージョニングポリシーを特定するステップと、
    要求側コンポーネントから、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取るステップと、
    前記要求側コンポーネントに前記目標コンポーネントの前記適切なバージョンへのアクセスを提供するステップと
    を備えることを特徴とする請求項20に記載の方法。
  22. 1つまたは複数の目標コンポーネントにアクセスすることを要求することができる1つまたは複数の要求側コンポーネントを含む1つまたは複数のプログラムコンポーネントを含むコンピュータ化されたシステムにおける、目標コンポーネントをアップグレードして、前記目標コンポーネントにアクセスする要求側コンポーネントが、前記目標コンポーネントがアップグレードされた後に有効にオペレートしつづけるようにする方法であって、
    目標コンポーネントにアクセスするように構成された要求側コンポーネントを特定するステップと、
    前記目標コンポーネントの少なくとも1つの既存のバージョンおよび前記目標コンポーネントの以前にインストール済みのバージョンの中でバージョニングポリシーを特定するステップと、
    前記目標コンポーネントの少なくとも1つの前記既存のバージョンおよび前記目標コンポーネントの前記以前にインストール済みのバージョンに対応するいずれかの特定されたバージョニングポリシーに基づき、前記目標コンポーネントのいずれのバージョンが前記システム上に残るべきかを特定するステップと
    を備えることを特徴とする方法。
  23. ネットワークを介してネットワークサービスプロバイダから前記目標コンポーネントの更新されたバージョンを受け取るステップをさらに備えることを特徴とする請求項22に記載の方法。
  24. 前記バージョニングポリシーにより、前記要求側コンポーネントがライブラリコンポーネントであることが示される場合、前記目標コンポーネントの前記以前にインストール済みのバージョンを削除することなしに、前記目標コンポーネントの前記既存のバージョンを前記システムに追加することを特徴とする請求項22に記載の方法。
  25. 前記バージョニングポリシーにより、前記要求側コンポーネントがプラットフォームコンポーネントであることが示される場合、前記目標コンポーネントの前記以前にインストール済みのバージョンを前記目標コンポーネントの前記既存のバージョンで上書きすることを特徴とする請求項22に記載の方法。
  26. 1つまたは複数のソースコンポーネントにアクセスするように構成された1つまたは複数の要求側コンポーネントを含むコンピュータ化されたシステム内で、実行された場合、
    要求側コンポーネントから、目標コンポーネントの指定されたバージョンにアクセスする要求を受け取るステップと、
    前記目標コンポーネントの前記指定されたバージョンのバージョニングポリシーを特定するステップと、
    前記指定された目標コンポーネントの前記バージョニングポリシーに基づいて前記目標コンポーネントの適切なバージョンを特定するステップと、
    前記要求側コンポーネントに前記目標コンポーネントの前記適切なバージョンへのアクセスを提供するステップと
    を含む前記要求側コンポーネントに前記目標コンポーネントの適切なバージョンへのアクセスを提供する方法を前記コンピュータ化されたシステムに実行させるコンピュータ実行可能命令を格納していることを特徴とするコンピュータプログラム製品。
  27. 1つまたは複数のソースコンポーネントにアクセスするように構成された1つまたは複数の要求側コンポーネントを含むコンピュータ化されたシステム内で、実行された場合、 要求側コンポーネントが目標コンポーネントにアクセスするように構成されていることを特定するステップと、
    前記目標コンポーネントの少なくとも1つの既存のバージョンおよび前記目標コンポーネントの以前にインストール済みのバージョンの中のバージョニングポリシーを特定するステップと、
    前記目標コンポーネントの少なくとも1つの前記既存のバージョンおよび前記目標コンポーネントの前記以前にインストール済みのバージョンに対応するいずれかの特定されたバージョニングポリシーに基づき、前記目標コンポーネントのいずれのバージョンがシステム上に残るべきかを特定するステップと
    を含む前記目標コンポーネントをアップグレードする方法を前記コンピュータ化されたシステムに実行させて、前記目標コンポーネントにアクセスする前記要求側コンポーネントが、前記目標コンポーネントがアップグレードされた後に有効にオペレートしつづけるようにするコンピュータ実行可能命令を格納していることを特徴とするコンピュータプログラム製品。
JP2004361656A 2004-02-05 2004-12-14 要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法 Pending JP2005222524A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/772,992 US20050177826A1 (en) 2004-02-05 2004-02-05 Versioning support in object-oriented programming languages and tools

Publications (1)

Publication Number Publication Date
JP2005222524A true JP2005222524A (ja) 2005-08-18

Family

ID=34750443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004361656A Pending JP2005222524A (ja) 2004-02-05 2004-12-14 要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法

Country Status (16)

Country Link
US (1) US20050177826A1 (ja)
EP (1) EP1569093A3 (ja)
JP (1) JP2005222524A (ja)
KR (1) KR20050079625A (ja)
CN (1) CN100507836C (ja)
AU (1) AU2005200252A1 (ja)
BR (1) BRPI0405607A (ja)
CA (1) CA2491188A1 (ja)
IL (1) IL166169A (ja)
MX (1) MXPA05000366A (ja)
NO (1) NO20050043L (ja)
NZ (1) NZ537385A (ja)
RU (1) RU2377648C2 (ja)
SG (1) SG113547A1 (ja)
TW (1) TW200527294A (ja)
ZA (1) ZA200500054B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524129A (ja) * 2006-01-12 2009-06-25 マイクロソフト コーポレーション コンピュータアプリケーションにおけるアーキテクチャ的分割の組立時規則適用
JP2012527707A (ja) * 2009-05-21 2012-11-08 セールスフォース ドット コム インコーポレイティッド アプリケーションのコンポーネントをバージョン管理するシステム、方法及びコンピュータプログラムプロダクト

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268752A (ja) * 2005-03-25 2006-10-05 Seiko Epson Corp 複数のバージョンに対応したモジュールの起動
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
GB0717330D0 (en) * 2007-09-06 2007-10-17 Sony Comp Entertainment Europe Entertainment apparatus and method
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
EP2241977B1 (en) * 2009-04-17 2015-05-27 Accenture Global Services Limited Exchangeable application components
TW201142709A (en) 2009-12-11 2011-12-01 Ibm A method, system and computer program for deciding whether to install a first application within one of a plurality of candiate environments
JP5965080B2 (ja) * 2012-12-14 2016-08-03 テレフオンアクチーボラゲット エルエム エリクソン(パブル) コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト
US10019258B2 (en) * 2014-04-29 2018-07-10 Hewlett Packard Enterprise Development Lp Hardware assisted software versioning of clustered applications
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout
TWI727084B (zh) * 2017-08-21 2021-05-11 中華電信股份有限公司 微服務軟體開發基礎架構下自動化持續整合方法
US11153238B2 (en) * 2019-01-08 2021-10-19 Snap Inc. Dynamic application configuration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022560A (ja) * 1999-07-05 2001-01-26 Toyo Commun Equip Co Ltd ライブラリ関数バージョンアップ方法
JP2001154831A (ja) * 1999-11-25 2001-06-08 Nec Software Hokkaido Ltd ダイナミックリンクライブラリ制御方式,方法および記録媒体
JP2001331324A (ja) * 2000-05-19 2001-11-30 Sony Corp 情報処理方法および装置、ならびに、記録媒体

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US5974428A (en) * 1997-08-29 1999-10-26 International Business Machines Corporation Method and apparatus for class version naming and mapping
US6151700A (en) * 1997-10-20 2000-11-21 International Business Machines Corporation Object oriented distributed programming system for computer controlled networks with selective capture of program property data identifying a particular program version
US6631425B1 (en) * 1997-10-28 2003-10-07 Microsoft Corporation Just-in-time activation and as-soon-as-possible deactivation or server application components
US5890161A (en) * 1997-10-28 1999-03-30 Microsoft Corporation Automatic transaction processing of component-based server applications
US6014666A (en) * 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6230318B1 (en) * 1998-02-24 2001-05-08 Microsoft Corporation Application programs constructed entirely from autonomous component objects
US6499137B1 (en) * 1998-10-02 2002-12-24 Microsoft Corporation Reversible load-time dynamic linking
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6438590B1 (en) * 1999-04-13 2002-08-20 Hewlett-Packard Company Computer system with preferential naming service
US6564377B1 (en) * 1999-07-26 2003-05-13 Microsoft Corporation Self-describing components within a software catalog
US6658659B2 (en) * 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US20030101251A1 (en) * 2001-11-27 2003-05-29 Varros Telecom Customizable element management system and method using element modeling and protocol adapters
US20050004942A1 (en) * 2003-04-02 2005-01-06 Madsen Mark E. Methods and systems for controlling network infrastructure devices
US7383541B1 (en) * 2003-08-07 2008-06-03 Cisco Technology, Inc. Method and apparatus providing interoperation of execution images of different versions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001022560A (ja) * 1999-07-05 2001-01-26 Toyo Commun Equip Co Ltd ライブラリ関数バージョンアップ方法
JP2001154831A (ja) * 1999-11-25 2001-06-08 Nec Software Hokkaido Ltd ダイナミックリンクライブラリ制御方式,方法および記録媒体
JP2001331324A (ja) * 2000-05-19 2001-11-30 Sony Corp 情報処理方法および装置、ならびに、記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009524129A (ja) * 2006-01-12 2009-06-25 マイクロソフト コーポレーション コンピュータアプリケーションにおけるアーキテクチャ的分割の組立時規則適用
JP2012527707A (ja) * 2009-05-21 2012-11-08 セールスフォース ドット コム インコーポレイティッド アプリケーションのコンポーネントをバージョン管理するシステム、方法及びコンピュータプログラムプロダクト

Also Published As

Publication number Publication date
ZA200500054B (en) 2006-09-27
NZ537385A (en) 2006-06-30
US20050177826A1 (en) 2005-08-11
IL166169A (en) 2010-03-28
BRPI0405607A (pt) 2005-09-27
RU2004139189A (ru) 2006-06-10
CN100507836C (zh) 2009-07-01
IL166169A0 (en) 2006-01-15
AU2005200252A1 (en) 2005-08-25
NO20050043D0 (no) 2005-01-04
RU2377648C2 (ru) 2009-12-27
CN1652077A (zh) 2005-08-10
EP1569093A3 (en) 2007-08-29
CA2491188A1 (en) 2005-08-05
MXPA05000366A (es) 2005-08-19
SG113547A1 (en) 2005-08-29
KR20050079625A (ko) 2005-08-10
EP1569093A2 (en) 2005-08-31
TW200527294A (en) 2005-08-16
NO20050043L (no) 2005-08-08

Similar Documents

Publication Publication Date Title
AU2005200252A1 (en) Versioning support in object-oriented programming languages and tools
US7539985B2 (en) Systems and methods for dynamic component versioning
US6301710B1 (en) System and method for creating a substitute registry when automatically installing an update program
EP1224543B1 (en) Fixing applications that are incompatible to the operating system by providing stubs for apis
JP5058450B2 (ja) 効率的なパッチ当て
US7472385B2 (en) Method and computer-readable medium for installing an upgrade to an application program
CN103559052B (zh) 固件更新的设备与方法
US7987459B2 (en) Application programming interface for identifying, downloading and installing applicable software updates
CN105373396B (zh) 插件平台中的插件更新加载方法和装置
US6317880B1 (en) Patch source list management
US7409675B2 (en) Code rewriting
US20010044935A1 (en) Information processing method and apparatus and recording medium
US9384364B1 (en) System and method of controlling access of a native image of a machine code to operating system resources
EP1952251A1 (en) Configuration of isolated extensions and device drivers
JP2007511816A (ja) 集中daマネージャを用いた動的アドレシング(da)
US8819196B2 (en) Selection and configuration of servers
US7673148B2 (en) Versioning component for applications
US9367686B1 (en) System and method for antivirus checking of native images of software assemblies
Meisami et al. A comprehensive survey of upgradeable smart contract patterns
Jackson Debian policy manual
US8117053B2 (en) Claims based factory pattern for creating objects
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
EP0854419A2 (en) Access mode objects

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110415

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110916