JP3343354B2 - コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置 - Google Patents

コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置

Info

Publication number
JP3343354B2
JP3343354B2 JP52465994A JP52465994A JP3343354B2 JP 3343354 B2 JP3343354 B2 JP 3343354B2 JP 52465994 A JP52465994 A JP 52465994A JP 52465994 A JP52465994 A JP 52465994A JP 3343354 B2 JP3343354 B2 JP 3343354B2
Authority
JP
Japan
Prior art keywords
provider
version
component
client
provider component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP52465994A
Other languages
English (en)
Other versions
JPH08509830A (ja
Inventor
リリック、アラン、ダブリュ.
Original Assignee
アップル コンピューター インコーポレーテッド
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 アップル コンピューター インコーポレーテッド filed Critical アップル コンピューター インコーポレーテッド
Publication of JPH08509830A publication Critical patent/JPH08509830A/ja
Application granted granted Critical
Publication of JP3343354B2 publication Critical patent/JP3343354B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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

Description

【発明の詳細な説明】 著作権の限定的放棄 本発明に関する特許文書の開示部分は著作権による保
護の請求の対象となる材料を含んでいる。著作権者は米
国特許商標局の記録に残されたこの特許文書ないし特許
的開示につき複製されることに対し何ら異議を唱えな
い。しかしそれ以外については全面的に権利を保持す
る。
発明の分野 本発明はコンピュータシステムのさまざまなコンポー
ネント間における互換性に関する。より具体的には、一
定の互換性範囲内でオペレートされている複数のコンポ
ーネント間に互換性があるか否かをチェックすることに
関する。
発明の背景 コンピュータシステムにおいては、そのシステムのハ
ードウエア及びソフトウエアの両者に亙るさまざまなコ
ンポーネント間が互換可能であることは重要である。現
コンポーネントに対する新しいコンポーネントすなわち
グレードアップされたコンポーネントは、同システム中
の他のコンポーネントと互換性がないかもしれず、シス
テム全体を不正確、無効果にしている。したがってシス
テムのコンポーネント間に互換性があることを確認する
メカニズムを備えることは重要なことである。
互換性はプロバイダ・コンポーネント(以下、単にプ
ロバイダと呼ぶこともある)がクライアント・コンポー
ネント(以下、単にクライアントと呼ぶこともある)に
サービスを提供するというクライアント/プロバイダ関
係において重要な役割を果たす。プロバイダはクライア
ントの期待に応えられるのが重要だからである。クライ
アント/プロバイダ関係は2つのコンピュータ・ソフト
ウエア・プログラム間、2つのコンピュータ・ハードウ
エア・コンポーネント間、あるいはソフトウエア・プロ
グラムとハードウエア・コンポーネント間に存在する。
クライアント/プロバイダ関係の1例は、あるコンピュ
ータ・プログラムに対し複数の他のコンピュータ・プロ
グラムがアクセスできるルーチン集合であるシェアード
・ライブラリ(プロバイダ)と、そのライブラリ中のル
ーチンにアクセスする上記あるコンピュータ・プログラ
ム(クライアント)との間の関係がそうである。
普通、コンピュータ・プログラムが修正されたり、グ
レードアップされたり、そのほか何らかの方法で改良さ
れると、そのコンピュータ・プログラムのニュー・バー
ジョンが発表される。あるコンピュータ・プログラムの
さまざまなバージョン間を識別させるため、新しく発表
するたびにバージョン・ナンバーが割り当てられるのが
通例である。普通、バージョン・ナンバーはコンピュー
タ・プログラムの、より新しいバージョンが、そのコン
ピュータ・プログラムの古いバージョンより高いバージ
ョン・ナンバーをもつように割り振りされる。例えばあ
るコンピュータ・プログラムのあるバージョンがバージ
ョン・ナンバー2を付けられている場合には、その次の
バージョンは2よりも大きいバージョン・ナンバーを付
けられる。
コンピュータ・プログラムは、CとかPascalのような
コンピュータ言語またはアセンブリ言語でソース・コー
ドに最初は書き込まれるのが普通である。コンピュータ
・システムにプログラムを実行させる準備をするため、
コンパイラ(またはアセンブラ)は1つ又は2つ以上の
ソース・コード・モジュールを1つのオブジェクト・コ
ード・ファイルに変換する。コンパイラ(又はアセンブ
ラ)は使われる言語にのみ、また、それが実行されるコ
ンピュータ・システムにのみ特異的にされる。別にされ
たプログラムかコンパイラの一部とされているリンカー
・ルーチンは、複数のオブジェクト・コード・ファイル
を「実行可能な」オブジェクト・コード・ファイルであ
る単一のアウトプット・ファイルにまとめる。次に1個
または2個以上の実行可能なファイルがローダー・プロ
グラムによってメモリーにまとめてロードされ、コント
ロールがスタート・アドレスに移されてプログラムの実
行を開始する。
普通、2個のソフトウエア・プログラム間のクライア
ント/プロバイダ関係においては、クライアントにリン
クされたシェアード・ライブラリのように、プロバイダ
のバージョンとクライアントの実行中に使われるプロバ
イダ(シェアード・ライブラリ)のバージョンとの間に
互換性が存在することが重要である。クライアント/プ
ロバイダ関係にリンク中に、インポート(クライアント
内の解読されていない外来文字)はプロバイダからのエ
クスポート(クライアントには見ることができるプロバ
イダ内の文字)に解読される。リンク時にはプロバイダ
は文字の定義(API)を提供するが、ルーチンや変数
(コード)の実際の具現内容[actual implementatio
n]は提供しない。このようなリンク時に使われるプロ
バイダのバージョンを「定義バージョン」と呼ぶ。
クライアントが実行されると、クライアントのインポ
ートはプロバイダのその関連しているエクスポートに接
続される。この接続はハードウエアではワイヤなどであ
り、ソフトウエアではオペレーティング・システム、コ
ード・フラグメント・マネージャ、あるいはその他のシ
ェアード・ライブラリやコード・マネージャである。ラ
ンタイム時には、プロバイダはルーチンや変数、つまり
コードの実際の具現内容[actual implementation]を
提供する。APIはリンク時に提供され、コードはランタ
イム時に提供されるので、リンク時にプロバイダに提供
される定義がランタイム時に使われるプロバイダの具現
内容と互換性を有していることが重要である。
Digital Equipment Corp.,Inc.のVMSオペレーティン
グ・システムにおいては、プロバイダのバージョンは普
通、前のバージョンと互換性があるように設計されてい
る、つまりプロバイダのバージョンはバックワード・コ
ンパチブル[backwards compatiblue]である(古い方
向に向けて互換性がある)。VMSはDigital Equipment C
orporationの商標である。このようにクライアントは、
それで構築されたバージョンより新しいプロバイダのバ
ージョンを使って実行されることができる。しかしクラ
イアントを構築するのに使ったバージョンより古いプロ
バイダのバージョンは、プロバイダの新しいバージョン
が利用できる機能をサポートできないこともある。した
がって古いプロバイダは新しいバージョンと互換性がな
いこともあるので、クライアントはクライアントを構築
するのに使ったバージョンより古いプロバイダのバージ
ョンを使って実行できない。
VMSでは、「VAX/VMS Internals and Data Structure
s」バージョン4.4,Lawrence J.Kenah,Ruth E.Goldberg,
Simon F.Bate(Digital Press:1988)セクション21.1.
1.2に記載されているように、プロバイダはメイジャー
・ナンバー・コンポーネント[a major number compone
nt]とマイナー・コンポーネント[a minor componen
t]からなる改定番号を普通もっており、大概「major・
minor」あるいは「major/minor」のように記されてい
る。VAXはDigital Equipment Corporation.の商標であ
る。プロバイダの新しい改定版がプロバイダの従来例か
ら相当に変更されているときは、メイジャー・ナンバー
は増補[increment]される。しかしその変更が僅かに
過ぎないときは、マイナー・ナンバーしか増補されな
い。リンク時に、定義を規定しているプロバイダの改定
された番号は実行可能なオブジェクト・コード中にスト
アされる。実行時にクライアントのそのストアされた改
定番号のメイジャー・ナンバーは、クライアントに具現
内容を供給するためアクセスされるプロバイダの改定さ
れたコード中のメイジャー・ナンバーと比較される。具
現内容[implementation]プロバイダの改定されたメイ
ジャー・ナンバーがクライアントの実行可能なオブジェ
クト・コード中にストアされた改定番号のメイジャー・
ナンバーより小さいときは、クライアントとプロバイダ
は実際に両者が互換性があるか否かに関係なく、互換性
がないと判断される。
例えば、もしクライアントが改定番号7.1のプロバイ
ダとリンクされたときは、6.5,5.0など7より小さいメ
イジャー・ナンバーを有しているプロバイダとは互換性
がないと判断されるが、7.5,8.0などの7より大きいメ
イジャー・ナンバーをもつプロバイダとは互換性がある
と判断される。
VMSのバックワード・コンパチビリティ方式はいくつ
かの問題を供する。第1に、それは古いバージョンに割
り当てられたものより高いメイジャー・ナンバーを、仮
令それがプロバイダの古いバージョンから相当に異なる
ものであっても、開発されたプロバイダの現バージョン
にプロバイダの開発者が割り当てるのを躊躇させる。
第2に、このようなバージョン方式では古いバージョ
ンでは利用できなかった機能や改良を利用するためにオ
ペレーティング・システムの最新バージョンを使うのが
普通好ましい。しかしオペレーティング・システムの最
新バージョンはシェアード・ライブラリの最新バージョ
ンと互換性があるが、古いバージョンとは互換性がない
のが普通である。したがってシェアード・ライブラリの
新しい方のバージョンを使って開発者のシステム上に構
築されたクライアントは、エンド・ユーザーのシステム
上にシェアード・ライブラリの古い方のバージョンを使
っては実行され得ない。このように開発者はプロバイダ
の最も古い利用可能なバージョンとリンクするために、
古いシステムのインストレーション[installation]を
維持しがちである。しかもシェアード・ライブラリの古
いバージョンはシェアード・ライブラリの古いバージョ
ンで構築されたクライアントを実行するだけのために維
持されてしまうおそれがある。したがって古いバージョ
ンがメモリー・スペースを占領してしまって、そうでな
ければ他の目的に使えるものを無にしてしまうおそれが
ある。
例えばバージョン・ナンバー2.0の初期のバージョン
とバージョン・ナンバー4.2の後期のバージョンという
プロバイダの2つのバージョンがリンク時に利用可能な
場合について考察する。4.2のバージョンは2.0のバージ
ョンにはない機能で、クライアントが使うと有利な機能
を有しているとする。この有利な機能を利用するために
4.2のバージョンとリンクするのが好ましい。しかしラ
ンタイム時にプロバイダのどちらのバージョンが利用可
能なのか分からないので、ランタイム時に利用可能なバ
ージョンと互換性がある可能性の最も高いバージョンと
リンクするのが好ましくもある。この場合、バージョン
2.0が2.0と同じ又は2.0より大きいバージョンと互換性
があり、4.2は4.2と同じ又は4.2より大きいバージョン
と互換性があるので、バージョン2.0の方がバージョン
4.2よりもプロバイダの利用可能なバージョンと互換性
がある可能性が高い。このように、クライアントはバー
ジョン4.2の有利な機能を利用する方を選ぶか、バージ
ョン2.0との互換可能性の高さを選ぶかのいずれかとな
る。ランタイム時における互換可能性の高さを選んで利
用可能なプロバイダの最も古いバージョンとリンクする
ことによって、やはり利用可能で、実際には初期のバー
ジョンとも互換性があるかもしれないそのプロバイダの
後期のバージョンの有利な機能を看過する[forego]こ
とになる。
OS/2のような他のオペレーティング・システムでは、
“Inside OS/2"Gordon Letwin,(Microsoft Press:198
8)のセクション7.11.3及びWindowsで論じられているよ
うに、バージョン・ナンバーはシェアード・ライブラリ
のようなプロバイダには使われていない。OS/2はIntern
ational Business Machines Corporationの登録商標で
ある。こうしたシステムでは、古い方のバージョンは新
しい方のバージョンと互換性があるように設計され、ま
た新しい方のバージョンは古い方のバージョンと互換性
があるように設計されている。つまりプロバイダのバー
ジョンは、そのプロバイダの他のバージョンとバックワ
ード・コンパチブルでもあり、アップワード・コンパチ
ブルでもある。しかしこれはシェアード・ライブラリの
開発者に負担となる。つまり変更が広範に亙る場合と
か、古いバージョンが稀にしか使われないような場合で
も互換性を維持しなければならないという負担がかかっ
ている。
発明の概要 本発明は、クライアント/プロバイダ関係を共有する
本システム構築のために使われるプロバイダのバージョ
ンが、本システムを実行もしくはランするために使われ
るプロバイダのバージョンとは異なるというコンピュー
タ・システムのモジュラー・コンポーネント間の互換性
を制御し確認する方法ならびに装置に関する。要約すれ
ば本発明は、プロバイダ・インジケータ、プロバイダの
現インジケータ、及び互換性範囲を、クライアントなら
びにプロバイダの各々につき定義する。プロバイダ・イ
ンジケータはプロバイダの具体的なタイプを同定する。
プロバイダの現インジケータはプロバイダのそのバージ
ョンを特定する。クライアントがプロバイダのバージョ
ンにリンクされると、そのプロバイダの現インジケータ
は作り出された実行可能なクライアント中にストアさ
れ、それによってプロバイダのバージョンを同定する。
これはクライアントを構築するのに使われるもので「定
義プロバイダ」と以下呼ばれることがある。
クライアントについての互換性範囲は、そのクライア
ントを実行するのに使うことができる、すなわち定義プ
ロバイダから供給される定義と互換性のある[compatib
le with]具現内容を有するプロバイダのバージョン範
囲を確認することである。好ましくは、クライアントに
ついての互換性範囲は、そのクライアントを実行するの
に使うことができるプロバイダの最も古いバージョンを
特定するのがよい。プロバイダのための互換性範囲は、
そのプロバイダの現バージョンでオペレートすることが
できるクライアントを構築するのに使うことができるプ
ロバイダのバージョン範囲を確認する。好ましくは、プ
ロバイダについての互換性範囲は、互換性のあるクライ
アントを構築するのに使うことができたそのプロバイダ
の最も古いバージョンを指定するのがよい。好ましく
は、2つの互換性範囲各々の内にあるバージョンは現バ
ージョンより古いか同年代であるのがよい。
本発明はまた、クライアントと、そのクライアントを
実行するのに使われるであろうプロバイダ(以下「具現
内容プロバイダ」[implementation provider])とを
ランタイム時に接続するためのコネクタを有する。これ
はそのクライアントとその実施プロバイダ間の互換性を
判定するためである。互換性のチェックはクライアント
と、それがリンクされたプロバイダ、つまり具現内容プ
ロバイダの利用可能なバージョン間で行われる。各タイ
プのプロバイダの各々利用可能なバージョンにとって、
クライアントとの互換性は以下の3つの状態のうちのい
ずれかである。第1は、クライアント中に指定された定
義プロバイダと具現内容プロバイダとが、そのプロバイ
ダの同一バージョンであるときは、そのクライアントと
プロバイダは互換性があるという状態である。第2は、
クライアント中に指定された定義プロバイダが具現内容
プロバイダより新しいときで、かつ、その具現内容プロ
バイダのバージョンがクライアント中に指定された最も
古い具現内容プロバイダよりも古くないときは、それら
両者は互換性があり、そうでないときは互換性がないと
いう状態である。第3は、クライアント中に指定された
定義プロバイダが具現内容プロバイダより古いときで、
かつ、クライアント中に指定された定義プロバイダがそ
の具現内容プロバイダ中に指定された最も古い定義プロ
バイダより古くないときは、それら両者は互換性がある
という状態である。
本発明は、多数のクライアントおよびプロバイダがあ
るシステムで使うことができる。この場合、各クライア
ントのためにプロバイダのリストが維持される。そうし
たリスト中の各プロバイダにつき、現在のバージョン
[current version](以下、現バージョン)ならびに
互換性範囲が明らかにされる。ランタイム時には、互換
性のあるプロバイダが存在するなら、それらプロバイダ
を見出すためにこのリストをサーチすることができる。
好ましくは2つ以上の互換性あるプロバイダを見出した
なら、最良のものを選択することである。例えば、最良
のプロバイダとは、互換性のあるプロバイダの最も新し
いバージョンであるか、または定義プロバイダのバージ
ョンに最も近いプロバイダのバージョンである。
クライアントまたはプロバイダのための互換性範囲を
明らかにすることによって、本発明は次のような利点を
提供する。第1に、クライアントを構築するのに使うプ
ロバイダの定義バージョンより古いプロバイダのバージ
ョンでクライアントに実行させることができる。したが
ってクライアントは、プロバイダの最も古いバージョン
をもってしか構築されない制限を受けなくなる。このこ
とはクライアントの開発者に、クライアント構築をする
のに使われるプロバイダのバージョン決定にフレキシビ
リティを付与することになる。また、クライアントにと
ってはプロバイダの最も古いバージョンより新しいバー
ジョンとリンクされ得るので、最も古いプロバイダには
存在しない比較的新しいプロバイダにある機能や改良を
利用することができる。新しい機能や改良は前のバージ
ョンとは明確に異なることがある。例えば前のバージョ
ンではどんな形式においても利用できなかった機能とか
新しいメカニズムがその機能を利用することによって使
うことができる。あるいは新機能や改良は暗黙のうちに
異なることがある。例えば現在利用できる機能の実行が
新しいバージョンでは改良されているような場合であ
る。好ましくはクライアントが明確にそれら機能や改良
を利用できることを確認できるのがよい。
第2に本発明はクライアントより新しいプロバイダ、
すなわちそのクライアントを構築するのに使ったプロバ
イダのバージョンより新しいプロバイダで実行すること
をクライアントのために可能にする。したがってプロバ
イダの開発者はプロバイダのバージョン・ナンバーを自
由に変更することができ、プロバイダに対するその変更
がクライアントの古いバージョンとの互換性を害しない
限り、クライアントおよびプロバイダの互換性に影響し
ない。その場合は、プロバイダの互換性範囲は互換性に
おける変化を反映するように変化する。
図面の簡単な説明 本発明に関し上述したこと、ならびに他の利点につ
き、添付の図面に沿って述べる説明で、よりよく理解さ
れるであろう。
図1は本発明のシステムを示す簡略化したブロック・
ダイヤグラムである。
図2は本発明のコンピュータ・システムを示す簡略化
したブロック・ダイヤグラムである。
図3は図2のコンピュータ・システムのディスク・ド
ライブ内部を示す。
図4A及び図4Bは各々、図2のコンピュータ・システム
のメモリーのリンク時の開始時と終了時の内容を示す。
図5は図2のコンピュータ・システムのメモリーの実
行時の内容を示す。
図6は本発明のステップを大略して示すフローチャー
トである。
図7は図6のブロック100のステップを示す詳細なフ
ローチャートである。
図8は図6のブロック102のステップを示す詳細なフ
ローチャートである。
図9は図6のブロック104のステップを示す詳細なフ
ローチャートである。
図10は図9のブロック162のステップを示す詳細なフ
ローチャートである。
図11は図9のブロック162において好ましいステップ
を示す詳細なフローチャートである。
図12はプロバイダのさまざまなタイプとクライアント
とがリンクされたとき使われるプロバイダ・リストであ
る。
図13はプロバイダのさまざまなタイプとクライアント
とがリンクされたときの図6のブロック102のステップ
を示すフローチャートである。
図14はクライアント実行時にプロバイダのさまざまな
バージョンが利用可能なとき使われる遂行プロバイダ・
リストである。
図15はプロバイダのさまざまなバージョンがクライア
ント実行時に利用可能なときの図6のブロック104にお
ける互換性を判断するための好ましいステップを示すフ
ローチャートである。
図面の詳細な説明 図1の数字30は本発明のシステムの全体を指す。シス
テム30はハードウエアでも、ソフトウエアでも、あるい
はそれらの組合せでもよく、クライアントからの情報と
プロバイダからの情報が比較できるようにコネクタ36で
連結されたクライアント32とプロバイダ34とがある。
図2はコンピュータ・システム40を示すもので、本発
明を具現化する[implement]ハードウエアとソフトウ
エアとからなる。コンピュータ・システム40は中央処理
装置(CPU)のようなプロセッサ44と、メモリー46と、
ディスク・ドライブ48、およびこれらをつなぐバス42と
を有する。いろいろなタイプのコンピュータ・システム
を使うことができるが、本実施例では、コンピュータ・
ソフトウエアはディスク・ドライブ48に通常ストアさ
れ、プロセッサ44によってバス42からメモリー46に入れ
込まれる。
図3に示すように、クライアントをプロバイダにリン
クする前に、このコンピュータ・ソフトウエアは例えば
Macintosh System 7とかAIXのようなオペレーティング
・システム50、IBM xlcまたはx1Cコンパイラのようなコ
ンパイラ52、およびIBM 1dリンカーのようなリンカー54
を有している。Macintosh System 7およびAIXは共に市
販されている。Macintosh System 7オペレーティング・
システムについての基本的知識はAddison−Wesley Publ
ishing Co.,Inc.1991“Inside Macintosh",第6巻に、A
IXオペレーティング・システムに関してはIBM 1990、19
91“Calls and Subroutines,AIX Version 3 for RISC S
ystem/600"第1巻〜第6巻に各々記載がある。IBM x1c
コンパイラについてはIBM Corporation,1990の“XLC Us
er's Guide,AIX Version 3 for RISC System/6000",第
2章〜第4章に記載がある。上記“Inside Macintosh",
第6巻(第1号証)Addison−Wesley Publishing Co.,I
nc.,1991,pp.9−23,9−24を要すると次の通りである。
「この文献はアプリケーションのためのバージョン情報
を記録するのに使うことができる“vers"リソースに関
する。“vers"リソースはアプリケーションがバージョ
ン番号とか、バージョン・メッセージ、領域等を記憶す
ることができるようにする。“vers"リソースは個々の
ファイルにバージョン情報を割り当てるのにも使うこと
ができ、ファイルが大きなファイル・コレクション中の
1部分なら、それらファイルのスーパーセット全体に割
り当てるのにも使える。バージョン・リソースはアプリ
ケーションに限らずどんな種類のファイルにも記憶する
ことができる。」 また、“XLC User's Guide,AIX Version 3 for RISC
System/6000"第2章〜第4章(第2号証)は、White Pl
ains,N.Y.,IBM Corporation,1990,pp.7−9;pp.11−39で
あるが、その要約は次の通りである。「これはXL Cコン
パイラについて記載している。XL CコンパイラはCソー
ス・プログラムの作成方法や同プログラムの構造につい
て記載している。またプログラムの作成方法、コンパイ
ルの仕方、リンク・エディッティング、実行方法等「C
プログラムのイロハから利用法に至る各段階」を記述す
る。このリンク・エディッティングが実行ファイルを作
成する」。emは、International Business Machines Co
rporationの商標である。1dリンカーについてはIBM,“R
6000 InforExplorer"(CD−ROM 1991)に発表された“1
d Command"と題する一文に記載されている。この“Id C
ommand"についての記載があるRS6000 Infoexplorer(CD
−ROM 1991)(第3号証),White Plains,N.Y.,IBM Cor
poration,1991,pp.1−12を要約すると次の通りである。
「オブジェクト・ファイルや、ライブラリ、インポート
・リストなどをリンクして実行できるオブジェクト・フ
ァイルを作成するリンケージ・エディタについて記述す
る。XCOFFのオブジェクト・ファイルのローダー部に置
かれて、実行時に適当なオブジェクト・ファイルを捜し
出すシステム・ローダーに使われるXCOFF共通ライブラ
リのオブジェクト・ファイル・ネームについて記載して
いる。
コンパイラ52とリンカー54とは、別々のプログラムで
はなく同一コンピュータ・プログラムの部分をなしてい
るものでもよい。また、コンパイラ52とリンカー54はク
ライアント32やプロバイダ34とは別のコンピュータ・シ
ステム40に設けられていてもよい。
コンピュータ・ソフトウエアはまた、1または2以上
のクライアント・プログラム60および1または2以上の
プロバイダ・プログラム62を備えている。例えば、クラ
イアント・プログラム60はシェアード・ライブラリ(プ
ロバイダ62)内のルーチンにアクセスするアプリケーシ
ョン・プログラムである場合もある。このようなソフト
ウエアはメモリー46中に設置することもできる。クライ
アント・プログラム60は、コンパイラのアウトプットと
してオブジェクト・コードを作り出すコンパイラを介し
てクライアントにソース・コードをパスすることによっ
て作られるオブジェクト・コード・フォーマットに通常
されている。プロバイダ・プログラム62は実行可能なオ
ブジェクト・コード・フォーマットにされているか、ま
たはリンクするときに使われる定義を提供するために特
別に構築される定義ファイルである。例えば、シェアー
ド・ライブラリの複数のオブジェクト・コード・モジュ
ールが、実行可能なオブジェクト・コードであるプロバ
イダ・プログラム62を形成するように一緒にリンクさ
れ、次にそれがクライアント・プログラム・オブジェク
ト・コード60にリンクされて、そのクライアント・プロ
グラムの実行可能なオブジェクト・コード64を形成する
のである。
さらに、コンピュータ・ソフトウエアは、クライアン
ト・プログラム60およびプロバイダ・プログラム62のた
めのソース・コード(図示せず)を有していてもよい。
クライアントのソース・コードはコンパイラによってオ
ブジェクト・コード60に変換される。プロバイダのソー
ス・コードは、もしそれが定義ファイルでないなら、コ
ンパイラ52とリンカー54を組合せて実行可能なオブジェ
クト・コードに変換される。
実行可能なオブジェクト・コード・ファイルには多数
のフォーマットがある。実行可能なオブジェクト・コー
ド・ファイルの1フォーマットにはXCOFFと呼ばれるも
のがある。XCOFFについてはIBM,“R6000 Explorer"(CD
−ROM 1991)に公表された下記の記事に記載がある。こ
の“R6000 Explorer"(CD−ROM 1991)(第4号証),Wh
ite Plains,N.Y.,IBM Corporation,1991,pp.1−12を要
約すると次の通りである。
「“a.out File Format":リンケージ・エディタが作成
するアウトプット・ファイルのフォーマットについて記
載する。
“Optional Auxiliary for the a.out File":リンク
・エディタが作成するオプショナルなヘッダについて記
載する。
“Section Headers for the a.out File":XCOFFファ
イルの未加工のデータ・セクションに対応する各セクシ
ョン・ヘッダについて記載する。
“Raw Data Sections for the a.out File":XCOFFフ
ァイルのデータ・セクションについて記載する。
“Special Data Sections for the a.out File":XCOF
Fファイル用の定義がある特別のセクションで、ローダ
・セクション、デバッグ・セクション、タイプチェック
・セクション、イクセプション・セクションなどがあ
る。
“Relocation Information for the a.out File":リ
ンケージ・エディタが作成するリロケーション・エント
リーについて記載する。
“xcoff.h":共通のオブジェクト・ファイル・フォー
マットについて記載する。
“filehdr.h":COFFの拡張オブジェクト・ファイル・
フォーマット用のファイル・ヘッダ・フォーマットにつ
いて記載する。
“scnhdr.h":セクション・ヘッダのフォーマットと
「特別」セクション名称の定数について記載する。
“loader.h":ローダ・ヘッダについて記載する。える
ものとする。すなわち、 “a.out File Format", “Optional Auxiliary Header for the a.out File", “Section Headers for the a.out File", “Raw Data Sections for the a.out File", “Special Data Sections for the a.out File", “Relocation Information for the a.out File", “xcoff.h", “filehdr.h", “scnhdr.h", “loader.h", 実行可能なオブジェクト・コード・ファイルのもう一
つのフォーマットが、Atari ST ComputerのGEMディスク
・オペレーティング・システムに使われている。K.Peel
著“The Choice Atari ST 68000 Programmer's Referen
ce Guide",Glentop Publishers,1986、特にその第2頁
第21行〜第2頁第24行を参照せよ。このPeel氏のガイ
ド、すなわち“The Concise Atrai ST 68000 Programme
r's Reference Guide",Glentop Publishers(第5号
証),1986,pp.2−21〜pp.2−24を要約すると次の通りで
ある。「この文献はGEMディスク・オペレーション・シ
ステムについて記載する。すなちGEMDOSフォーマット、
ファイル・ヘッダ・フォーマット及びリンカーからオプ
ショナルに作成されるリロケーション・テーブルなどで
ある。またファイルの操作ツールについても記載してい
る。」 さらに別の実行可能なオブジェクト・コード・ファイ
ル用フォーマットは、PEFと呼ばれるものである。PEFに
ついては、本願と同時係属の出願人を共通にする1993年
3月23日出願の“Load Time Relocation Engine"と題す
る特許出願中に記載されている。この1993年3月23日付
の出願(第6号証)は出願番号第35750号を付与され、
その後一部継続出願となって出願第212153号を付与さ
れ、さらにその継続出願として出願第654013号を付与さ
れた。その発明は1998年6月9日付で米国特許第特許第
5764987号として特許権を付与されている。その明細書
の記載中本願発明に関連する事項のみを要約すると次の
通りである。「実行できるオブジェクト・コード・ファ
イル中のリロケーション・テーブル・エントリーは個々
のスペックとしてもより具体的な各々のリロケーション
可能な情報事項のためのリロケーション命令として解釈
されるものであることを記載する。また実行できるオブ
ジェクト・コード・ファイルのフォーマット、XCOFFフ
ァイル・フォーマット、PEFフォーマットコンピュータ
の実行のためメモリにソフトウエアをローディングする
方法について記載する。」 図4Aおよび図4Bは各々、クライアント・プログラム60
が1又は2以上のプロバイダ62とリンクされる前と後の
メモリー46の内容を示す。図4Aに見られるように、リン
クされる前はメモリー46は、場合によってはオペレーテ
ィング・システム、コンパイラおよびリンカーに加え
て、クライアント・プログラム60のオブジェクト・コー
ドと、そのクライアント60とリンクされる各プロバイダ
62のほとんどすべて実行可能なオブジェクト・コードで
あるオブジェクト・コードを有している。リンクする
と、リンカー・ルーチンはクライアント60、プロバイダ
62のオブジェクト・コードをインプットして実行可能な
オブジェクト・コード64(図4B)をアウトプットする。
各プロバイダ62のオブジェクト・コードは、プロバイ
ダ・インジケータ68、そのプロバイダ62のバージョンを
識別する「定義プロバイダ」とも呼ばれるカレント・イ
ンジケータ70、及びそのプロバイダ62にリンク後それで
クライアント60がオペレートすることができるプロバイ
ダの最も古いバージョンを識別する最古の実装インジケ
ータ72[oldest implementation indicator](OII)を
少なくとも指定する。換言すれば、OII72はリンク時に
使われるプロバイダ・バージョンによって供給される定
義と互換性がある実装を持つプロバイダ62の最古のバー
ジョンのことである。
プロバイダ・インジケータ68は、複数のプロバイダの
中から1プロバイダを特異的に同定ないし識別する。例
えば、プロバイダ・インジケータ68は空終端の[null−
terminated]文字列であるか、整数か英数字値などであ
る。
バージョンは具体的に指定されるか、もしくは一定の
タイプの分類基準に基づき行われる比較を可能にする何
らかの方法で指定される。例えば、バージョンは文字
列、数値または英数字値によって指定される。Macintos
hオペレーティング・システムで使われるバージョン情
報の有り得るフォーマットは、Addison−Wesley Publis
hing Co.,Inc.,1991の“Inside Macintosh"第6巻、第
9頁23行と第9頁24行(第7号証)に記載がある。その
内容を要約すると次の通りである。「この文献はアプリ
ケーションのためのバージョン情報を記録するのに使う
ことができる“vers"リソースに関する。“vers"リソー
スはアプリケーションがバージョン番号とか、バージョ
ン・メッセージ、領域等を記憶することができるように
する。“vers"リソースは個々のファイルにバージョン
情報を割り当てるのにも使うことができ、ファイルが大
きなファイル・コレクション中の1部分なら、それらフ
ァイルのスーパーセット全体に割り当てるのにも使え
る。バージョン・リソースはアプリケーションに限らず
どんな種類のファイルにも記憶することができる。」記
載されているように、バージョンは4バイトの数値で表
される。
プロバイダ・インジケータ68、現インジケータ70およ
びOII72は、そのプロバイダに関する総体的情報を有す
るヘッダにストアされているのが好ましい。例えば、と
きとしてコンテナと呼ばれる実行可能なオブジェクト・
コードは、PEFフォーマットで、プロバイダ・インジケ
ータ68、現インジケータ70およびOII72を他の情報と共
に有するコンテナ・ヘッダを備えている。OCOFFのヘッ
ダに関する知識については“Optional Auxiliary Heade
r for the a.out File"および“filehdr.h"と題する記
事を参照せよ。これらは上記第4号証中の記事である。
リンクの際、プロバイダ・インジケータ68、現インジ
ケータ70およびOII72で指定された値は、図4Bに示すよ
うに実行可能なオブジェクト・コード64中にコピーされ
るかストアされるか、その他何らかの方法で組み込まれ
る。プロバイダ・インジケータ68の値はプロバイダ・イ
ンジケータ74にストアされる。現インジケータ70の値は
現インジケータ76にストアされ、OII72の値はOII78にス
トアされる。
PEFフォーマットではプロバイダ・インジケータ74、
現インジケータ76およびOII78は、クライアントの実行
可能なオブジェクト・コード64内のインポート・コンテ
ナidテーブル中にストアされるのが好ましい。XCOFFフ
ォーマットでは、これらの値は適切に修正されたインポ
ート・ファイルIDテーブル中にストアされるのが好まし
い。
クライアントは、それが指定するバージョンより古く
ないバージョンと互換性があることを確認したならば、
OII78によって示されたバージョンを変更することがで
きる。例えば、プロバイダのバージョン3.0はバージョ
ン2.0を指定するOIIを有するとする。バージョン2.0は
本質的にはバージョン1.0と同じであるが有利な機能が
追加されているものである。こうした追加された機能を
使っていないクライアントはバージョン1.0とも互換性
があるかもしれない。この場合は、バージョン3とリン
クされたクライアントはOII78を変更することができ、
バージョン2.0よりバージョン1.0を示す。クライアント
がOII78値を変更されても、現インジケータ76の値は変
更されずに、クライアントが構築されたプロバイダのバ
ージョンを相変わらず示す。
図5はクライアント・プログラム60が実行されるとき
のメモリー46の内容を示している。そのときメモリー46
は、オペレーティング・システムのほかに、クライアン
ト32のための実行可能なオブジェクト・コード64および
各プロバイダ34のための実行可能なオブジェクト・コー
ド80を有している。「具現内容プロバイダ」[implemen
tation provider](プロバイダは定義プロバイダおよ
び具現内容プロバイダの両者であることもある)とも呼
ばれる各プロバイダのための実行可能なオブジェクト・
コード80は、好ましくはヘッダ中で、少なくともプロバ
イダ・インジケータ68、現インジケータ70およびこの現
インジケータ70によって指定されたプロバイダのバージ
ョンによって供給される具体的内容[implementation]
と互換性のある定義のあるプロバイダの最古のバージョ
ンを同定する最古定義インジケータ84[oldest definit
ion indicator](ODI)とを指定する。
プロバイダの定義と具体的内容が1個のプログラム中
にパッケージされるときは、ODI84はそのプロバイダの
オブジェクト・コード62中に定義されていてもよい。こ
の場合は、ODI84は現インジケータ70によって指定され
たプロバイダのバージョンと互換性のある定義を有する
プロバイダの最古のバージョンを同定する。
図6は本発明の大略のステップを示すフローチャート
である。プロバイダ・プログラムのバージョンが開発さ
れたら、ブロック100で、その開発されたバージョンに
つき、現バージョンと互換性範囲とが明らかにされる。
クライアント・プログラムがプロバイダとリンクされる
と、ブロック102で、そのバージョンに関する情報とそ
のプロバイダの互換性の範囲が、そのリンク・プロセス
で作成されたクライアントの実行可能なコードでストア
される。ブロック104でクライアントが実行されると、
そのクライアントと具現内容プロバイダの利用可能なバ
ージョン間との互換性が判定される。好ましくは、具現
内容プロバイダの互換可能なバージョンが1つ以上利用
可能なときは、これらバージョンのうちの最良のものが
クライアントを実行するのに使われるのがよい。最良の
互換可能バージョンを決定するのに使われる基準および
ステップについては図14および図15を参照しながら後述
する。
決定ブロック106で、プロバイダにとって利用できる
互換性あるバージョンがあるなら、ブロック108でクラ
イアントが実行される、あるいは互換性があることが示
される。しかしブロック106でプロバイダにとって互換
性あるバージョンがない場合は、互換性がないとブロッ
ク110で示され、この互換不能性の厳しさの程度次第
で、クライアントが実行可能か実行不能かが決まる。場
合によっては、互換不能であってもクライアントは最適
ではないまでも十分なレベルで実行することが可能なこ
ともある。こうした互換不能性を示す方法にはさまざま
あるが、本発明の利点は利用される方法の如何を問わな
い。
図7は図6のブロック100のステップの好ましい1実
施例の詳細を示すフローチャートである。ブロック120
で現インジケータ70(図4A、図4Bおよび図5)がプロバ
イダのために明らかにされる。好ましくはプロバイダの
現インジケータ70は、その値がそのプロバイダの前のバ
ージョンの現インジケータの値より大きくなるように明
らかにされる。ブロック122で最古具現内容インジケー
タ(図4AのOII72)がそのプロバイダのために明らかに
され、ブロック124で最古定義インジケータ(図5のODI
84)がそのプロバイダのために明らかにされる。ブロッ
ク120、122および124は順序を問わない。好ましくはOII
72とODI84は各々、現インジケータ70と等しいかそれよ
り小さいのがよい。
図8は、図6のブロック102のステップの好ましい1
実施例の詳細を示すフローチャートである。ブロック13
8および140で、クライアントとリンクされるプロバイダ
のプロバイダ・インジケータ68と現インジケータ70によ
って指定された値が各々、コピーされたりストアされた
り、その他の方法でクライアントに転送され、クライア
ントの実行可能なオブジェクト・コード64中に置かれる
(図5)。ブロック142で、クライアントとリンクされ
たプロバイダからのOII72がコピーされたりストアされ
たり、その他の方法でクライアントに転送される。ブロ
ック138、140、142の実行の順序は問わない。
図9は、図6のブロック104のステップの好ましい1
実施例の詳細を示すフローチャートである。ブロック15
8で利用可能なプロバイダが決定される。ブロック160で
はコネクタ36(図1)がクライアントとプロバイダのイ
ンプルメンテーション・バージョンとを接続する。コネ
クタ36はオペレーティング・システムまたはその他のク
ライアントとプロバイダ間の交信を提供するコード・フ
ラグメント・マネージャで、各々から供給される値の比
較を実行する。あるいはコネクタ36は、クライアントと
プロバイダ間のシグナル交換を可能にし、それらシグナ
ル同士の比較を可能にするワイヤのようなハードウエア
であってもよい。
ブロック162で、クライアントから供給された値を具
現内容プロバイダから供給された値と比較して互換性如
何が決定される。図10はブロック162で行われる比較に
ついて概略示すフローチャートである。決定ブロック18
0で、クライアントとリンクされたプロバイダのバージ
ョンが実行時に利用可能なプロバイダのバージョンと同
じものなら、ブロック182で互換性があると判定され
る。逆に決定ブロック184でクライアント中にストアさ
れた値によって指定されたプロバイダのバージョン、つ
まり定義プロバイダが、具現内容プロバイダより新しく
て、かつ、決定ブロック186で具現内容プロバイダがそ
のクライアントにとって古過ぎるならば、互換不能であ
ることがブロック188で示され、そうでなければ互換性
があるとブロック182で示される。もしブロック184で具
現内容プロバイダが定義プロバイダより新しく、かつ、
決定ブロック190でクライアントがその具現内容プロバ
イダにとって古過ぎるなら、ブロック188で互換性がな
いと示され、逆ならブロック182で互換性ありと示され
る。
図11は図9のブロック162で行われるステップの詳細
を示すフローチャートである。決定ブロック200でクラ
イアントの現バージョンが具現内容プロバイダの現イン
ジケータと同じバージョンを指定しているなら、ブロッ
ク202で互換性があると判定される。そうでなければ、
決定ブロック204でクライアントの現インジケータ76の
値(または絶対値)が具現内容プロバイダの現インジケ
ータ70の値(または、クライアントの絶対値と比較され
るなら絶対値)より大きければ、さらに進んでブロック
206で比較が行われる。そうでなければ、さらにブロッ
ク208で比較が行われる。決定ブロック206でクライアン
トのOII78の値(または絶対値)が具現内容プロバイダ
の現インジケータ70の値(または、クライアントのOII
の絶対値に比較されるなら絶対値)と等しいか、それよ
り小さいときは、ブロック202で互換性があるとされ
る。そうでなければ、ブロック210で互換性なしとす
る。
ブロック208で具現内容プロバイダのODI84値(または
絶対値)がクライアントの現インジケータ76の値(また
は、プロバイダのODI絶対値と比較されるなら絶対値)
と等しいか、それより小さいときは、ブロック202で互
換性があるとされる。そうでなければブロック212で互
換性なしとされる。
プロバイダがシェアード・ライブラリの場合は、ブロ
ック206、208における比較はインプルメンテーション・
ライブラリとリンク時にライブラリから供給される定義
とが比較可能なものかどうかを必ずチェックする。ブロ
ック206で、クライアントがオペレートすることができ
るライブラリの最古のバージョンより古くないインプル
メンテーション・ライブラリのバージョンであるかどう
かを判定するチェックが行なわれる。もしそうなら、イ
ンプルメンテーション・ライブラリはクライアントを構
築するのに使われるプロバイダのバージョンによって供
給される定義と互換性がある具体的内容をおそらく有す
るものと考えられる。ブロック208で、リンク時に使わ
れるプロバイダのバージョンが、具現内容プロバイダの
具体的内容と互換性があるクライアントへ定義を供給し
たかどうかを判定するチェックが行われる。リンク時に
使われるプロバイダのバージョンが、具現内容プロバイ
ダの具体的内容と互換性がある定義を有するプロバイダ
の最古のバージョンより古くないときは、それら2つは
互換性がある。
本発明は、そのプロバイダの従来のバージョンとリン
クされていたクライアントと必ずしも互換性ないとは限
らない場合に、プロバイダの開発者が新しいプロバイダ
の発売物に自由に新しいバージョン・ナンバーを割り当
てることができるバージョニング・システムを提供する
ものである。プロバイダの新しいバージョンがそのプロ
バイダの従来のバージョンと互換性がないとき、その新
しいバージョンのODI及び/又はOIIがそのようにセット
される、つまりプロバイダのその新しいバージョンと互
換性があるプロバイダのうちの最も初期のバージョンを
示す。
本発明はまた、クライアントをしてそれと互換性があ
るプロバイダのバージョン数を増やすようにプロバイダ
の利用可能なものの最古のバージョンとリンクすること
を奨励するようなことはしないバージョニング・システ
ムを提供する。クライアントは利用可能なプロバイダの
比較的新しいバージョンとリンクすることができ、従来
のバージョンでは利用できなかったそのバージョンに特
有の利点や機能を享受することができ、しかもそのプロ
バイダの比較的初期の互換性あるバージョンで実行する
ことができる。例えばプロバイダの2つのバージョンが
リンク時に利用可能である状態を想定すると、1.0のバ
ージョン・ナンバーの初期のバージョンと2.0のバージ
ョン・ナンバーの後期のバージョンとなる。これら1.0
と2.0のバージョン間には互換性があり、バージョン2.0
はバージョン1.0にはない有利な機能や改良点を有して
いる。バージョン2.0のOIIは2.0バージョンとリンクし
たクライアントが1.0バージョンで実行することができ
ることを表示してバージョン1.0を指定する。初期のバ
ージョンを使用することがバージョン1.0およびそれよ
り後期のものと互換性があることを確認するのであれ
ば、クライアントはまた、OIIで表示されたバージョン
を1.0より早期のバージョンを指定するように変更する
こともできる。ランタイム時には、クライアントはクラ
イアントにストアされたOIIで指定されたバージョンよ
り古くないプロバイダのバージョンが利用可能で、その
利用可能なバージョンのODIが2.0と等しいかそれより小
さいバージョンを指定するものである限り実行すること
ができる。このように本発明は、ランタイム時での互換
の可能性を必ずしも減少させることなくリンク時に利用
可能なプロバイダの後期のバージョンの利点をクライア
ントが利用できるようにする。
図12に示すように、クライアントはさまざまなタイプ
のプロバイダにリンクすることができる。図12は、クラ
イアントがさまざまなタイプのプロバイダにリンクされ
るとき形成されることが好ましいプロバイダ・リスト23
0を図示する。例えばクライアントはさまざまに異なる
種類のシェアード・ライブラリ、シェアード・ライブラ
リA、シェアード・ライブラリB、シェアード・ライブ
ラリC、とリンクされることもできる。この場合は、プ
ロバイダ・リスト230はクライアント中に形成されスト
アされる。プロバイダ・リスト230はどんなリスト・デ
ータ構造でもよく、つまり具体的な事項を求めてサーチ
されることができるアレイ、リンクされたリスト、でよ
い。
プロバイダ・リスト230は、クライアントにリンクさ
れているプロバイダごとに1つのフィールドとなる1ま
たは2以上のプロバイダ・フィールド232、を有する。
各プロバイダ・フィールド232はプロバイダ・インジケ
ータ234、現インジケータ236、そしてOII238を有する。
プロバイダ・インジケータ234は1プロバイダを特異的
に同定し、ランタイム時にプロバイダをロケーティング
することを可能にする。プロバイダ・インジケータ234
は前述のプロバイダ・インジケータ68、74と同じもので
ある。現インジケータ236およびOII238は各々、現イン
ジケータ70およびOII72(図4)に相当するもので、そ
れらの値はそこから派生している。
図6に示した概略ステップがクライアントがさまざま
なプロバイダとリンクされるときも適用されるが、図13
に示すように部分的には詳細につき変更がある。図13は
この場合に使われる図6のブロック102のステップのフ
ローチャートである。プロバイダの各タイプにつきその
プロバイダのバージョンに関する情報とそのプロバイダ
の互換性範囲に関する情報が、プロバイダ・リスト230
のプロバイダ・フィールド232にストアされる。
ブロック240で、新しいプロバイダ・フィールド232が
プロバイダ・リスト230に追加される。ブロック242で、
その新しいプロバイダ・フィールド232のプロバイダ・
インジケータ234が、リンクされたプロバイダを特異的
に同定するようにセットされる。ブロック244で、新し
いプロバイダ・フィールド232の現インジケータ236が、
リンクされたプロバイダの現インジケータ70が表示する
値にセットされる(図4A)。ブロック246で、新しいプ
ロバイダ・フィールド232のOII238が、リンクされたプ
ロバイダのOII72が指示する値にセットされる。ブロッ
ク242、244および246はその実行順序を問わない。
クライアント/プロバイダの互換性は、図9〜図11に
関して述べた方法と実質的に同様の方法で判定される。
ただしプロバイダに相当するプロバイダ・フィールド23
2がまずプロバイダ・リスト230中にロケーティングさ
れ、クライアントにストアされた現インジケータおよび
クライアントにストアされたOIIに相当する何らかのレ
ファレンスが、そのロケーティングされたプロバイダ・
フィールド中の値に相当する実際のレファレンスである
という点が異なる。クライアントにストアされたプロバ
イダ・インジケータは、現インジケータおよびそのプロ
バイダのODIが得られるプロバイダにレファレンスをつ
ける。
プロバイダの2以上のインプルメンテーション・バー
ジョンがクライアントのランタイム時に利用可能なとき
は、本発明は使用すべき互換性あるバージョンのうちの
最良のものを決定するのが好ましい。この場合は、図14
に示すように、具現内容プロバイダ・リスト260をラン
タイム時に好ましくはコネクタ36で形成することができ
る。具現内容プロバイダ・リスト260は、プロバイダ・
インジケータ234と同様のプロバイダ・インジケータ261
と、好ましくは1具現内容プロバイダの利用可能な各バ
ージョンごとに1つの、1つまたは2以上のプロバイダ
・フィールド262とを有する。各プロバイダ・フィール
ド262は、プロバイダ・ロケーション263、現インジケー
タ236と同様の現インジケータ266、およびODI268を有す
る。プロバイダ・ロケーション263は物理的な場所を指
示するが、現インジケータおよびODIは、プロバイダ
(図5)の現インジケータ70とODI84から各々派生した
ものである。
具現内容プロバイダ・リスト260は、クライアントと
互換性がある具現内容プロバイダのバージョンを求めて
サーチされるもので、好ましくは、互換性ある最良のバ
ージョンが選択される。互換性は図15に示すステップに
従って判定される。最良の互換性バージョンを判定する
には多種類の判定基準が使われる。例えば最良のバージ
ョンはクライアントと互換性がある最も最近のバージョ
ンであるか、リンク時に使われたプロバイダのバージョ
ンを指定したバージョンに最も近いバージョンである。
換言すれば、プロバイダのインジケータ値は、クライア
ントのインジケータ値が指定するバージョンに数字的に
最も近いバージョンを指定する。
好ましくは、互換性インジケータ270(図14)はサー
チされている間維持されるのがよい。サーチが行われて
いる間中、互換性インジケータは、サーチされたフィー
ルドで同定されるバージョンのうちの最良のものがどの
バージョンなのかを指定する具現内容プロバイダ・リス
ト260内のバージョンもしくはフィールド262を指定す
る。互換性インジケータ270は、例えばプロバイダ・リ
ストを指すポインタであるか、あるいは具現内容プロバ
イダ・リスト260中のフィールド262と同じ構造および情
報をもつデータ構造かである。
図15は具現内容プロバイダの1以上のバージョンがク
ライアントのランタイム時に利用可能であるときの図6
のブロック104で行われるステップを示すものである。
ブロック278で具現内容プロバイダ・リストが形成され
る。各プロバイダの論理名[logical name]がクライア
ントから回復され、メモリーとディスクが各プロバイダ
をロケーティングするためにサーチされる。ブロック28
0で互換性インジケータ270は初期化される。
ブロック282で、具現内容プロバイダ・リスト260中に
サーチされていないフィールド262が1つまたは2つ以
上あったときは、ブロック284でサーチされていないフ
ィールドが検査された現フィールドとして選択される。
そうでないときはサーチを完了し、互換性の存否を表示
し、存在するならどのバージョンが使用されるべきかを
表示して、コントロールは図6のブロック106にリター
ンする。
決定ブロック286でクライアントと現フィールドのプ
ロバイダ・ロケーション263によって指定されたプロバ
イダのバージョンと間の互換性が、図10および図11のス
テップに従い判定される。互換性があるなら、ブロック
288で現フィールド中に指定されたバージョンが互換性
インジケータによって指定されたバージョンより良いか
否かが判定される。互換性がブロック286で見出されな
いなら、コントロールはブロック282にリターンする。
ブロック288で現フィールドのバージョンがより良い
バージョンであるなら、互換性インジケータはその現フ
ィールドを指定するか、または現フィールドによって表
示されたバージョンを指定するように更新される。いず
れの場合もコントロールはその後ブロック282へリター
ンする。
クライアントとさまざまな利用可能な具現内容プロバ
イダとの互換性如何を判定するメカニズムを提供するこ
とによって、本発明はいくつもの利点をもたらす。第1
にプロバイダの複数の利用可能なバージョン間の互換不
能性を見出すことは、少なくとも1つ互換性あるバージ
ョンを発見することが出来る限り、クライアントをして
実行を妨害しない。第2にプロバイダの利用可能なバー
ジョンのリストをサーチすることによって、本発明は最
良の、すなわち最適のバージョンを発見するメカニズム
を提供するものとなる。どのバージョンが最良であるか
を決定するのに準拠される判定基準次第で、これがなけ
ればアクセスすることができなかったプロバイダの後期
のバージョンの利点を利用してクライアントが便宜を得
ることを可能にする。第3に本発明は、従来のバージョ
ニング・システムよりたくさんのプロバイダ選択肢を提
供するので、より多数のクライアントによる利用を可能
にする。相対的に古いクライアントは相対的に新しいプ
ロバイダで実行することができ、相対的に新しいクライ
アントは相対的に古いプロバイダで実行することができ
る。第4に本発明はプロバイダのバージョンが過去のプ
ロバイダと互換性がなくても差し支えないようにする。
つまりバックワード・コンパチビリティが要求されな
い。したがって本発明は、プロバイダがバックワード・
コンパチブルかフロントワード・コンパチブルかを問わ
ず選択することができるので、従来のバージョニング方
式に比し高いフレキシビリティをもたらす。
添付の別紙はクライアント・プログラムとプロバイダ
・プログラムとを結合するソフトウエア・マネージャの
ようなメカニズムをもったMacintoshコンピュータにお
いて本発明を実施するソース・コードを含むMacintosh
Programmer's Workshop(MPW)テキスト・ファイルを示
す。MPWはApple Computer,Inc.の登録商標である。
図16は本発明を組み込むことができるハードウエアの
1例である。符号300は外部デバイスをバスに接続する
システムの全体を指している。このようなシステムの例
としては、Small Computer Standard Interface(SCS
I)及びApple Desktop Bus(ADB)などがある。両方と
もケーブル322とコネクタ324の特殊な組合せ経由で従属
デバイス320を接続し、上記ケーブル越しに電気信号の
特殊な組合せを交換するためのスタンダードを有してい
る。Apple Desktop BusはApple Computer,Inc.の商標で
ある。このケーブルは通常、データ・バリューを伝送す
るのに使われる1本または2本以上のワイヤ326Aと、制
御信号を伝送するのに使われる1本または2本以上のワ
イヤ326Bとを有している。一般にデバイスのバージョニ
ングを表示するために固定的なインターフェイスまたは
専用のワイヤが備えられている。例えば、デバイスの最
近のバージョンは「フローティング」、つまり非接続状
態のままにされるコントロール・ワイヤを追加されてい
るのがしばしばである。これら追加されたコントロール
・ワイヤは新しいデバイスによって一定電圧にセットさ
れている。したがって2つのデバイスは、一方が他方と
は逆方向の一対のワイヤを設置され、一方のデバイスに
よってサポートされるスタンダードのバージョンを検出
することができる。あるいはここにスタンダードは特定
のデバイス対を特定の方向に接続するための一定のルー
ルをもっていてもよく、単一の「バージョン」ワイヤの
使用を可能にしてもよい。ワイヤの制御に係るデバイス
は、そのバージョンを別のデバイスに送信する。すると
その別のデバイスは互換性があるのか否かを判定する。
図17は図16に示したシステムに組み込まれた本発明の
ステップを示すフローチャートである。ここでデバイス
は「センダー」(クライアント)または「レシーバ」
(プロバイダ)とされている。ブロック348で、前述し
た所と同様に、現インジケータおよびOIIがセンダー中
に構築され、そして前述した所と同様に、現インジケー
タとODIがレシーバ中に構築される。これらバージョン
・チェック・シグナルは、ハードウエア・スタンダード
に基づいて外部的に明らかにすることができる。ブロッ
ク350に記載されているように、デバイスがシステムに
接続されると、シグナル交信されてセンダーとレシーバ
を接続する。ブロック352で、センダーはその現インジ
ケータをレシーバに伝送する。
ブロック354でセンダーからの現インジケータとレシ
ーバの現インジケータとが同一のバージョンを指定して
いるときは、レシーバはセンダーに両者が互換性あるこ
とをブロック356で送信する。そうでないときは、ブロ
ック358でレシーバの現インジケータはセンダーからの
現インジケータが指定したバージョンより新しいバージ
ョンを指定する。するとコントロールはブロック360へ
パスされる。そうでないときはコントロールはブロック
362へパスされる。
ブロック360で、センダーからの現インジケータで指
定されたバージョンがレシーバのODIより古いときは、
レシーバは互換性のないことをセンダーにブロック364
で送信する。そうでないときはブロック374で、レシー
バは互換性があるとセンダーに送信する。
ブロック362で、レシーバはセンダーに、センダーが
互換性の如何を判定するべきであると送信し、ブロック
368でレシーバはその現インジケータをセンダーに送信
する。ブロック370で、レシーバからの現インジケータ
によって指定されたバージョンがセンダーのOIIに指定
されたバージョンより古いときは、センダーは互換性な
しとブロック364でレシーバに送信する。そうでないと
きはブロック374でセンダーは互換性ありとレシーバに
送信する。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−177426(JP,A) 特開 平4−239301(JP,A) 特開 平3−95627(JP,A) 特開 平5−100830(JP,A) 特開 平1−279326(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/06 - 9/54 G06F 15/16 - 15/177 CSDB(日本国特許庁)

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも一つのプロセッサ(44)と、少
    なくとも1つのクライアント・コンポーネント(60)
    と、少なくとも1つのプロバイダ・コンポーネント(6
    2)とを備え、該プロバイダ・コンポーネント(62)は
    1または2以上のバージョンを持っていて、クライアン
    ト・コンポーネント(60)の実行可能なファイルの作成
    中クライアント・コンポーネント(60)は上記プロバイ
    ダ・コンポーネント(62)の1バージョンにリンクされ
    て、上記クライアント・コンポーネント(60)にサービ
    スを提供することができるようにされ、プロセッサ(4
    4)の実行中、上記クライアント・コンポーネント(6
    0)は実行時において上記システム(30)内で利用でき
    るプロバイダ・コンポーネント(62)の1バージョンを
    使うもので、この実行中に使われるプロバイダ・コンポ
    ーネント(62)の1バージョンが、クライアント・コン
    ポーネント(60)のリンクされるプロバイダ・コンポー
    ネント(62)のバージョンと異なるものである、複数の
    コンポーネント間に於ける互換性の有無を検査する方法
    であって、次のステップを含むことを特徴とする、シス
    テム内のコンポーネント間の互換性有無確認方法。すな
    わち、 プロバイダ・コンポーネントのタイプを見分けて該プロ
    バイダ・コンポーネント(62)を複数の他のプロバイダ
    ・コンポーネント(62)から区別できるように個別にす
    る、各プロバイダ・コンポーネント(62)のためのプロ
    バイダ・インジケータ(68)を指定し、 そのプロバイダ・コンポーネント(62)の他のバージョ
    ンから一つのバージョンを識別するようにそのプロバイ
    ダ・コンポーネント(62)の一つのバージョンを識別す
    る値を持つカレント・インジケータ(70)を各プロバイ
    ダ・コンポーネント(62)の各バージョンにつき指定
    し、 各プロバイダ・コンポーネント(62)の各バージョンに
    対して、当該プロバイダ・コンポーネント(62)の当該
    バージョンの互換性範囲であって、当該互換性範囲のも
    のと特定されるプロバイダ・コンポーネント(62)のバ
    ージョンを用いてクライアント・コンポーネント(60)
    が構築されているかぎり、当該プロバイダ・コンポーネ
    ント(62)の当該バージョンが、上記クライアント・コ
    ンポーネント(60)の実行中に利用可能であるという意
    味で、当該プロバイダ・コンポーネント(62)の当該バ
    ージョンと互換性がある互換性範囲を指定し、 各クライアント・コンポーネント(60)に対して、当該
    クライアント・コンポーネント(60)がリンクされる各
    プロバイダ・コンポーネント(62)の互換性範囲であっ
    て、上記クライアント・コンポーネント(60)を実行す
    るときに用いることができるプロバイダ・コンポーネン
    ト(62)の範囲を特定する互換性範囲を指定し、 上記少なくとも一つのクライアント・コンポーネント
    (60)を実行可能なクライアント・コンポーネント(6
    0)構築のためにプロバイダ・コンポーネント(62)に
    リンクし、 上記少なくとも一つのクライアント・コンポーネント
    (60)を、リンクされたプロバイダ・コンポーネント
    (62)のカレント・インジケータ(70)に関連付け、 クライアント・コンポーネント(60)が実行されたと
    き、上記少なくとも一つのプロバイダ・コンポーネント
    (62)とその複数のバージョンのうちのどれがそのシス
    テムに於いて利用可能かを判断し、クライアント・コン
    ポーネント(60)とその利用可能な少なくとも一つのプ
    ロバイダ・コンポーネント(62)を接続し、カレント・
    インジケータ(70)と、プロバイダ・コンポーネント
    (62)に対する互換性範囲、リンク中のクライアント・
    コンポーネント(60)と接続されるプロバイダ・コンポ
    ーネント(62)のカレント・インジケータ(70)、及び
    クライアント・コンポーネント(60に対するの互換性範
    囲のような情報を交換できるようにし、 クライアント・コンポーネント(60)と上記接続された
    少なくとも一つのプロバイダ・コンポーネント(62)間
    の互換性を判断し、その判断は、上記少なくとも一つの
    プロバイダ・コンポーネント(62)のカレント・インジ
    ケータ(70)と、リンク時に上記クライアント・コンポ
    ーネントと関連付けられたプロバイダ・コンポーネント
    のカレント・インジケータ(70)と、上記少なくとも一
    つのプロバイダ・コンポーネント(62)および上記クラ
    イアント・コンポーネント(60)のうちのより新しい方
    についての互換性範囲とに基づくものであり、上記少な
    くとも一つのプロバイダ・コンポーネント(62)のカレ
    ント・インジケータ(70)および上記リンクされたプロ
    バイダ・コンポーネント(62)のカレント・インジケー
    タ(70)が、プロバイダ・コンポーネントの実質的に同
    一なバージョンであることを示すときに、互換性がある
    と判断し、また、上記少なくとも一つのプロバイダ・コ
    ンポーネント(62)および上記クライアント・コンポー
    ネント(60)のうちのより古い方のカレント・インジケ
    ータ(70)が、上記少なくとも一つのプロバイダ・コン
    ポーネント(62)および上記クライアント・コンポーネ
    ント(60)のうちのより新しい方についての互換性範囲
    の中に属するときに互換性があると判断し、 さらに互換性がある否かを示す。
  2. 【請求項2】互換性有無を判断するステップおよび互換
    性有無を示すステップが、 接続されたプロバイダ・コンポーネント(62)のカレン
    ト・インジケータ(70)の値をそのクライアント・コン
    ポーネント(60)のカレント・インジケータ(76)の値
    とリンク中に比較し、これら2値が大略同じバージョン
    を示しているなら互換性有りと表示し、 これら2値が大略同一でなく、クライアント・コンポー
    ネント(60)に接続のカレント・インジケータ(76)の
    値がプロバイダ・コンポーネント(62)のカレント・イ
    ンジケータ(70)の値が示すバージョンより新しいバー
    ジョンを示し、プロバイダ・コンポーネント(62)のカ
    レント・インジケータ(70)の値が示すバージョンがク
    ライアント・コンポーネント(60)の互換性範囲内にあ
    るなら、互換性有りと、そうでないなら互換性無しと、
    表示し、 プロバイダ・コンポーネント(62)のカレント・インジ
    ケータ(70)の値がクライアント・コンポーネント(6
    0)にストアされているカレント・インジケータ(76)
    の値が示すバージョンより新しいバージョンを示し、ク
    ライアント・コンポーネント(60)に接続されたカレン
    ト・インジケータ(76)の値が示すバージョンがその接
    続されたプロバイダ・コンポーネント(62)の互換性範
    囲内にあるなら、互換性有りと、そうでないなら互換性
    無しと表示することを特徴とする請求項1に記載の方
    法。
  3. 【請求項3】少なくとも一つのプロセッサ(44)と、少
    なくとも一つのクライアント・コンポーネント(60)
    と、少なくとも1つのプロバイダ・コンポーネント(6
    2)とを備え、該プロバイダ・コンポーネント(62)は
    1または2以上のバージョンを持っていて、クライアン
    ト・コンポーネント(60)の実行可能なファイルの作成
    中クライアント・コンポーネント(60)は上記プロバイ
    ダ・コンポーネント(62)の1バージョンにリンクされ
    て、上記クライアント・コンポーネント(60)にサービ
    スを提供することができるようにされ、プロセッサ(4
    4)の実行中、上記クライアント・コンポーネント(6
    0)は実行時において上記システム(30)内で利用でき
    るプロバイダ・コンポーネント(62)の1バージョンを
    使うもので、この実行中に使われるプロバイダ・コンポ
    ーネント(62)の1バージョンが、クライアント・コン
    ポーネント(60)のリンクされるプロバイダ・コンポー
    ネント(62)のバージョンと異なるものであり、 上記リンクされたプロバイダ・コンポーネント(62)は
    定義または実装またはその両者を供給することができる
    もので上記クライアント・コンポーネント(60)にアプ
    リケーション・インターフェイスの定義を供給できる、
    複数のコンポーネント間に於ける互換性の有無を検査す
    る方法であって、次のステップを含むことを特徴とす
    る、システム内のコンポーネント間の互換性有無確認方
    法。 すなわち、 プロバイダ・コンポーネントのタイプを見分けて該プロ
    バイダ・コンポーネント(62)を複数の他のプロバイダ
    ・コンポーネント(62)から区別できるように個別にす
    る、各プロバイダ・コンポーネント(62)のためのプロ
    バイダ・インジケータ(68)を指定し、 そのプロバイダ・コンポーネント(62)の他のバージョ
    ンから一つのバージョンを識別するようにそのプロバイ
    ダ・コンポーネント(62)の一つのバージョンを識別す
    る値を持つカレント・インジケータ(70)を各プロバイ
    ダ・コンポーネント(62)の各バージョンにつき指定
    し、 プロバイダ・コンポーネント(62)の各バージョンが供
    給する定義と互換性がある実装を持つプロバイダ・コン
    ポーネント(62)の最古のバージョンを示す最古の実装
    インジケータ(72)をプロバイダ・コンポーネント(6
    2)の各バージョンにつき指定し、 プロバイダ・コンポーネント(62)の各バージョンの実
    装と互換性がある定義を供給するプロバイダ・コンポー
    ネント(62)の最古のバージョンを示す最古の定義イン
    ジケータ(84)をプロバイダ・コンポーネント(62)の
    各バージョンにつき指定し、 クライアント・コンポーネント(60)が実行されたと
    き、上記プロバイダ・コンポーネント(62)とその複数
    のバージョンのうちのどれがそのシステムに於いて利用
    可能かを判断し、プロバイダ・インジケータ(68)、接
    続されているプロバイダ・コンポーネント(62)のカレ
    ント・インジケータ(70)、リンク中にクライアント・
    コンポーネント(60)に接続されているプロバイダ・コ
    ンポーネント(62)のカレント・インジケータ(76)、
    最古の実装インジケータ(72)及び最古の定義インジケ
    ータ(84)などの情報を、接続されたクライアント・コ
    ンポーネント(60)と利用可能なプロバイダ・コンポー
    ネント(62)間で交換できるようにクライアント・コン
    ポーネント(60)と利用可能なプロバイダ・コンポーネ
    ント(62)とを接続し、 クライアント・コンポーネント(60)と上記接続された
    プロバイダ・コンポーネント(62)間の互換性を、プロ
    バイダ・インジケータ(68)の値、接続されているプロ
    バイダ・コンポーネント(62)のカレント・インジケー
    タ(70)の値、リンク中にクライアント・コンポーネン
    ト(60)と接続されるプロバイダ・コンポーネント(6
    2)のカレント・インジケータ(76)の値、最古の実装
    インジケータ(72)の値、及び最古の定義インジケータ
    (84)の値に基づき判断し、さらに接続されたプロバイ
    ダ・コンポーネント(62)のカレント・インジケータ
    (70)に示されたバージョンと、その接続されたプロバ
    イダ・コンポーネント(62)のカレント・インジケータ
    (70)に示されたバージョンのうち新しい方のバージョ
    ンに基づいて判断して、 互換性の有無を示すというステップ。
  4. 【請求項4】請求項3に記載の方法であって、互換性の
    有無を判断し、互換性の有無を示すステップが〈/U〉次
    のステップを含むもの。すなわち、 接続されたプロバイダ・コンポーネント(62)のカレン
    ト・インジケータ(70)の値をクライアント・コンポー
    ネント(60)のカレント・インジケータ(76)の値と比
    較し、これら2値が略同一のバージョンを示しているな
    ら互換性有りと表示し、 これら2値が略同一でないなら、クライアント・コンポ
    ーネント(60)のカレント・インジケータ(76)の値が
    接続されているプロバイダ・コンポーネント(62)のカ
    レント・インジケータ(70)の値が示すバージョンより
    新しいバージョンを示すのであれば、またクライアント
    ・コンポーネント(60)の最古の実装インジケータ(7
    2)がプロバイダ・コンポーネント(62)のカレント・
    インジケータ(70)の値が示すバージョンと同じ若しく
    はそれより古いときは、互換性有りと表示し、逆の場合
    は無しと表示し、 プロバイダ・コンポーネント(62)のカレント・インジ
    ケータ(70)の値がクライアント・コンポーネント(6
    0)のカレント・インジケータ(76)の値が示すバージ
    ョンより新しいバージョンを示すのであって、プロバイ
    ダ・コンポーネント(62)の最古の実装インジケータ
    (72)の値が示すバージョンがクライアント・コンポー
    ネント(60)のカレント・インジケータ(76)の値が示
    すバージョンと同じか又はそれより古いときは、互換性
    有りと表示し、逆の場合は無しと表示する。
  5. 【請求項5】請求項3に記載の方法であって、互換性の
    有無を判断し、互換性の有無を示すステップが次のステ
    ップを含むもの。すなわち、 1又は複数のプロバイダ・コンポーネント(62)の利用
    可能なバージョンのリスト(260)であって、各プロバ
    イダ・コンポーネント(62)の各バージョンに対して1
    エレメント(262)を具備し、各エレメントは、当該エ
    レメントが指定するプロバイダ・コンポーネント(62)
    のバージョンに関して、プロバイダ・インジケータ(6
    8)と、カレント・インジケータ(70)と、最古の定義
    実装(84)とを指定するリストを、作成し、 該リスト(260)に記載のエレメント(262)に含まれる
    バージョン・インジケータが指定するバージョン中に存
    在するなら、最良の互換性が有るバージョンを指定する
    互換性インジケータ(270)を初期化し、 上記エレメント(262)のカレント・インジケータ(7
    0)が指定するプロバイダ・コンポーネント(62)のバ
    ージョンとクライアント・コンポーネント(60)のバー
    ジョン間の互換性を各エレメント(262)のために決定
    することでプロバイダ・コンポーネント(62)の最良互
    換バージョンを求めるリスト(260)のフィールドを探
    し、もし互換性があるなら、当該エレメント(262)の
    カレント・インジケータ(70)が指定するバージョンを
    互換性インジケータ(270)が指定するバージョンと比
    較し、もしエレメント(262)のカレント・インジケー
    タ(70)が指定するバージョンの方が良いなら、そのカ
    レント・インジケータ(70)が指定するバージョンを示
    す互換性インジケータ(270)をセットし、 互換性有るバージョンが有ったか否かを表示し、もし有
    るならどちらのバージョンが最良の互換バージョンなの
    かを表示する。
  6. 【請求項6】少なくとも一つのプロセッサ(44)と、少
    なくとも一つのクライアント・コンポーネント(60)
    と、該クライアント・コンポーネント(60)にアプリケ
    ーション・インターフェイスの定義を供給する少なくと
    も1つのプロバイダ・コンポーネント(62)とを備え、
    かつ、メモリ(46)とディスク・ドライブ(48)とをも
    備えたシステム中のコンポーネント間の互換性の有無を
    確認する装置であって、 上記ディスク・ドライブ(48)にストアされた1つまた
    は2つ以上のクライアント・コンポーネント(60)と、 上記ディスク・ドライブ(48)にストアされた各々1つ
    または2つ以上のバージョンを有する1つまたは2つ以
    上のプロバイダ・コンポーネント(62)と、 クライアント・コンポーネント(60)の実行可能なファ
    イルを作成するため1つまたは2つ以上のプロバイダ・
    コンポーネント(62)にクライアント・コンポーネント
    (60)をリンクする、上記ディスク・ドライブ(48)に
    ストアされるリンカ(54)と、 1つまたは2つ以上のクライアント・コンポーネント
    (60)と1つまたは2つ以上のプロバイダ・コンポーネ
    ント(62)をメモリ(46)にロードしてリンカ(54)を
    実行できるプロセッサ(44)と、 他のプロバイダ・コンポーネント(62)からそのプロバ
    イダ・コンポーネント(62)を区別するようにプロバイ
    ダ・コンポーネントのタイプを認識してプロバイダ・コ
    ンポーネント(62)を特異的に識別するプロバイダ・イ
    ンジケータ(68)であって、クライアント・コンポーネ
    ント(60)がプロバイダ・コンポーネント(62)にリン
    クされたときクライアント・コンポーネント(60)に接
    続されているプロバイダ・インジケータ(68)を各プロ
    バイダ・コンポーネント(62)につき指定する手段と、 カレント・インジケータ(70)クライアント・コンポー
    ネント(60)がプロバイダ・コンポーネント(62)にリ
    ンクされたときクライアント・コンポーネント(60)に
    接続されているカレント・インジケータ(70)であっ
    て、プロバイダ・コンポーネント(62)の他の値からそ
    の値を区別するようにプロバイダ・コンポーネントのバ
    ージョンを識別するバージョンを持つものを各プロバイ
    ダ・コンポーネント(62)の各バージョンにつき指定す
    る手段と、 各プロバイダ・コンポーネント(62)及び該プロバイダ
    ・コンポーネント(62)に接続された各クライアント・
    コンポーネント(60)のための互換性範囲であって、ク
    ライアント・コンポーネント(60)がプロバイダ・コン
    ポーネント(62)にリンクされるときクライアント・コ
    ンポーネント(60)に関連付けられる互換性範囲を指定
    する手段と、 プロバイダ・インジケータ(68)、カレント・インジケ
    ータ(70)、互換性範囲のような情報が、接続されたク
    ライアント・コンポーネント(60)と利用可能な1つ又
    は2つ以上のプロバイダ・インジケータ(68)との間に
    交換可能なように、クライアント・コンポーネント(6
    0)の実行時に利用可能なプロバイダ・コンポーネント
    (62)を決定し、1つ又は2つ以上の利用可能なプロバ
    イダ・コンポーネント(62)にクライアント・コンポー
    ネント(60)を接続するコネクタと、 接続されたプロバイダ・コンポーネント(62)のカレン
    ト・インジケータ(70)の値に基づき互換性有無を判断
    する手段であって、関連付けられたプロバイダ・コンポ
    ーネント(62)のカレント・インジケータ(70)と接続
    されたプロバイダ・コンポーネント(62)のカレント・
    インジケータ(70)とが略同一のバージョンを示すとき
    か、又は関連付けられたプロバイダ・コンポーネント
    (62)のカレント・インジケータ(70)と接続されたプ
    ロバイダ・コンポーネント(62)のカレント・インジケ
    ータ(70)とが上記バージョン中の新しい方の互換性範
    囲内にあるなら互換性有りと判断する手段と、 互換性の有無を表示する手段と、 を有することを特徴とする装置。
  7. 【請求項7】少なくとも一つのクライアント・コンポー
    ネント(60)と、1つ又は2つ以上のバージョンを持つ
    少なくとも1つのプロバイダ・コンポーネント(62)と
    を備え、該プロバイダ・コンポーネント(62)はクライ
    アント・コンポーネント(60)にサービス供給できるよ
    うにされたシステム(30)中のコンポーネント間に互換
    性範囲を供給する方法であって、 あるプロバイダ・コンポーネント(62)を他のプロバイ
    ダ・コンポーネント(62)から区別できるようにプロバ
    イダ・コンポーネントのタイプを識別しプロバイダ・コ
    ンポーネント(62)を特異的に識別する、各プロバイダ
    ・コンポーネント(62)のプロバイダ・インジケータ
    (68)を指定し、 プロバイダ・コンポーネント(62)の持つバージョンの
    うち他のバージョンからあるバージョンを区別するよう
    にプロバイダ・コンポーネント(62)の1バージョンを
    識別する値を持つカレント・インジケータ(70)を、プ
    ロバイダ・コンポーネント(62)の各バージョンにつき
    指定し、 特定のバージョンと互換性および相互運用性があるプロ
    バイダ・コンポーネント(62)のバージョン範囲を識別
    する特定のバージョンの互換性範囲を、各プロバイダ・
    コンポーネント(62)の各バージョンにつき指定するも
    ので、 上記カレント・インジケータ(70)と互換性範囲がプロ
    バイダ・コンポーネント(62)の第1のバージョンと第
    2のバージョン間に互換性が有るように定義され、上記
    プロバイダ・コンポーネント(62)の第1のバージョン
    はクライアント・コンポーネント(60)にリンクされ、
    上記プロバイダ・コンポーネント(62)の第2のバージ
    ョンは,(A)プロバイダ・コンポーネント(62)の第
    1のバージョンのカレント・インジケータとプロバイダ
    ・コンポーネント(62)の第2のバージョンのカレント
    ・インジケータとがプロバイダ・コンポーネント(62)
    の略同一のバージョンを表示するか、又は(B)プロバ
    イダ・コンポーネント(62)の第2のバージョンのカレ
    ント・インジケータがプロバイダ・コンポーネント(6
    2)の第1のバージョンのカレント・インジケータより
    新しいバージョンを表示し、かつ、プロバイダ・コンポ
    ーネント(62)の第1のバージョンがプロバイダ・コン
    ポーネント(62)の第2のバージョンの互換性範囲内に
    あるか、又は(C)プロバイダ・コンポーネント(62)
    の第1のバージョンのカレント・インジケータがプロバ
    イダ・コンポーネント(62)の第2のバージョンのカレ
    ント・インジケータより新しいバージョンを表示し、か
    つ、プロバイダ・コンポーネント(62)の第2のバージ
    ョンがプロバイダ・コンポーネント(62)の第1のバー
    ジョンの互換性範囲内にあるとき、プロバイダ・コンポ
    ーネント(62)の第1のバージョンがクライアント・コ
    ンポーネント(60)にリンクされ、プロバイダ・コンポ
    ーネント(62)の第2のバージョンがプロセッサ上でク
    ライアント・コンポーネント(60)の実行時に利用可能
    になっている、方法。
  8. 【請求項8】少なくとも一つのクライアント・コンポー
    ネント(60)と、1つ又は2つ以上のバージョンを持つ
    少なくとも1つのプロバイダ・コンポーネント(62)と
    を備え、該プロバイダ・コンポーネント(62)はクライ
    アント・コンポーネント(60)にサービス供給できるよ
    うにされたシステム(30)中のコンポーネント間に互換
    性範囲を供給する方法であって、 あるプロバイダ・コンポーネント(62)を他のプロバイ
    ダ・コンポーネント(62)から区別できるようにプロバ
    イダ・コンポーネントのタイプを識別しプロバイダ・コ
    ンポーネント(62)を特異的に識別する、各プロバイダ
    ・コンポーネント(62)のプロバイダ・インジケータ
    (68)を指定し、 プロバイダ・コンポーネント(62)の持つバージョンの
    うち他のバージョンからあるバージョンを区別するよう
    にプロバイダ・コンポーネント(62)の1バージョンを
    識別する値を持つカレント・インジケータ(70)を、プ
    ロバイダ・コンポーネント(62)の各バージョンにつき
    指定し、 プロバイダ・コンポーネント(62)の各バージョンが供
    給する定義と互換性がある実装を備えたプロバイダ・コ
    ンポーネント(62)の最古のバージョンを表示する最古
    の実装インジケータ(72)を各プロバイダ・コンポーネ
    ント(62)の各バージョンにつき指定し、 プロバイダ・コンポーネント(62)の各バージョンの実
    装と互換性がある定義を供給するプロバイダ・コンポー
    ネント(62)の最古のバージョンを表示する最古の定義
    インジケータ(84)をプロバイダ・コンポーネントの各
    バージョンにつき指定し、 上記カレント・インジケータ(70)と互換性範囲がプロ
    バイダ・コンポーネント(62)の第1のバージョンと第
    2のバージョン間に互換性が有るように定義され、上記
    プロバイダ・コンポーネント(62)の第1のバージョン
    はクライアント・コンポーネント(60)にリンクされ、
    上記プロバイダ・コンポーネント(62)の第2のバージ
    ョンは,(A)プロバイダ・コンポーネント(62)の第
    1のバージョンのカレント・インジケータとプロバイダ
    ・コンポーネント(62)の第2のバージョンのカレント
    ・インジケータとがプロバイダ・コンポーネント(62)
    の略同一のバージョンを表示するか、又は(B)プロバ
    イダ・コンポーネント(62)の第2のバージョンのカレ
    ント・インジケータがプロバイダ・コンポーネント(6
    2)の第1のバージョンのカレント・インジケータより
    新しいバージョンを表示し、かつ、プロバイダ・コンポ
    ーネント(62)の第1のバージョンがプロバイダ・コン
    ポーネント(62)の第2のバージョンの互換性範囲内に
    あるか、又は(C)プロバイダ・コンポーネント(62)
    の第1のバージョンのカレント・インジケータがプロバ
    イダ・コンポーネント(62)の第2のバージョンのカレ
    ント・インジケータより新しいバージョンを表示し、か
    つ、プロバイダ・コンポーネント(62)の第2のバージ
    ョンがプロバイダ・コンポーネント(62)の第1のバー
    ジョンの互換性範囲内にあるとき、プロバイダ・コンポ
    ーネント(62)の第1のバージョンがクライアント・コ
    ンポーネント(60)にリンクされ、プロバイダ・コンポ
    ーネント(62)の第2のバージョンがプロセッサ上でク
    ライアント・コンポーネント(60)の実行時に利用可能
    になっている、方法。
  9. 【請求項9】クライアント・コンポーネント(60)をプ
    ロバイダ・コンポーネント(62)の1バージョンにリン
    クし、 そのクライアント・コンポーネント(60)をプロバイダ
    ・インジケータ(68)と、カレント・インジケータ(7
    0)と、そのクライアント・コンポーネント(60)にリ
    ンクされたプロバイダ・コンポーネント(62)のバージ
    ョンの最古の実装インジケータ(72)とに接続する、 ステップをさらに含むことを特徴とする請求項8に記載
    の方法。
JP52465994A 1993-05-05 1994-05-03 コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置 Expired - Lifetime JP3343354B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5834593A 1993-05-05 1993-05-05
US08/058,345 1993-05-05
PCT/US1994/004983 WO1994025918A1 (en) 1993-05-05 1994-05-03 Method and apparatus for verifying compatibility between modular components in a computer system

Publications (2)

Publication Number Publication Date
JPH08509830A JPH08509830A (ja) 1996-10-15
JP3343354B2 true JP3343354B2 (ja) 2002-11-11

Family

ID=22016251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52465994A Expired - Lifetime JP3343354B2 (ja) 1993-05-05 1994-05-03 コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置

Country Status (8)

Country Link
US (1) US5613101A (ja)
EP (1) EP0698238B1 (ja)
JP (1) JP3343354B2 (ja)
AT (1) ATE160032T1 (ja)
AU (1) AU6783394A (ja)
CA (1) CA2162033A1 (ja)
DE (1) DE69406660D1 (ja)
WO (1) WO1994025918A1 (ja)

Families Citing this family (44)

* 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
US7330870B1 (en) * 1997-02-11 2008-02-12 International Business Machines Corporation Streaming computer system and method with multi-version protocol compatibility
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US7080371B1 (en) * 1998-03-03 2006-07-18 Siebel Systems, Inc. Method, system, apparatus and program product for distribution and instantiation of software upgrades
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6202205B1 (en) * 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US6185734B1 (en) * 1998-07-21 2001-02-06 Hewlett-Packard Company Hierarchical registry structure for managing multiple versions of software components
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US6868425B1 (en) * 1999-03-05 2005-03-15 Microsoft Corporation Versions and workspaces in an object repository
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
DE10008245A1 (de) * 2000-02-23 2001-09-06 Siemens Ag Verfahren zur Sicherstellung der Kompatibilität und Verfahren zur Datensicherung innerhalb eines mehrere Teilrechnersysteme aufweisenden verteilten Rechnersystems
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) * 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
WO2002023331A2 (en) * 2000-09-14 2002-03-21 Sun Microsystems, Inc. Remote incremental program binary compatibility verification using api definitions
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
EP1202168A3 (en) * 2000-10-30 2006-08-23 Microsoft Corporation System and method for dynamically veryfying the compatibility of a user interface resource
JP2002318704A (ja) * 2001-04-24 2002-10-31 Sony Corp 電子機器
US20030191870A1 (en) * 2002-04-02 2003-10-09 Dominic Duggan Method and apparatus for updating software libraries
US6898768B1 (en) * 2002-05-17 2005-05-24 Cisco Technology, Inc. Method and system for component compatibility verification
JP5036770B2 (ja) * 2002-07-19 2012-09-26 株式会社リコー 装置及びラッピング処理方法並びにプログラム
EP1387268A3 (en) * 2002-07-31 2005-03-02 Ricoh Company Image forming apparatus, information processing apparatus and version check method
JP4026456B2 (ja) * 2002-09-13 2007-12-26 日本電気株式会社 計算機システム及び情報収集方法
US7055147B2 (en) * 2003-02-28 2006-05-30 Sun Microsystems, Inc. Supporting interactions between different versions of software for accessing remote objects
DE60314844T2 (de) * 2003-05-07 2008-03-13 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Sprachausgabe, Datenträger mit Sprachdaten
CN100483372C (zh) * 2004-04-01 2009-04-29 宝马股份公司 用于识别包括多个控制设备的总线系统中不兼容性的方法
WO2006055838A2 (en) * 2004-11-18 2006-05-26 America Online, Inc. Runtime environment
US20060161910A1 (en) * 2005-01-14 2006-07-20 International Business Machines Corporation Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
EP1739552A1 (en) * 2005-06-21 2007-01-03 Hewlett-Packard Development Company, L.P. Software installation method and computer system
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US8146109B2 (en) * 2007-02-15 2012-03-27 Microsoft Corporation Version resiliency for a host application and custom code
US8181188B2 (en) * 2007-02-15 2012-05-15 Microsoft Corporation Version resiliency for a host application and managed code
US20150207757A1 (en) * 2009-03-25 2015-07-23 Hewlett-Packard Development Company, L.P. Shared resource allocation control
US8694981B2 (en) 2010-11-17 2014-04-08 Apple Inc. Shared resource dependencies
US9064134B1 (en) * 2010-12-06 2015-06-23 Adobe Systems Incorporated Method and apparatus for mitigating software vulnerabilities
US8930901B2 (en) * 2011-08-15 2015-01-06 International Business Machines Corporation Automatic selection of lowest configuration feature level by functionality exploited
US9489184B2 (en) 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
US9317269B2 (en) 2012-09-28 2016-04-19 Wal-Mart Stores, Inc. Systems and methods for installing, managing, and provisioning applications
US8949824B2 (en) 2012-09-28 2015-02-03 Wal-Mart Stores, Inc. Systems and methods for installing, managing, and provisioning applications
US9235491B2 (en) 2012-09-28 2016-01-12 Wal-Mart Stores, Inc. Systems and methods for installing, managing, and provisioning applications
US9128792B2 (en) 2012-09-28 2015-09-08 Wal-Mart Stores, Inc. Systems and methods for installing, managing, and provisioning applications
US10338907B2 (en) * 2016-12-04 2019-07-02 Sap Se Cloud service framework for toolkit deployment
US10572495B2 (en) * 2018-02-06 2020-02-25 Cisco Technology Inc. Network assurance database version compatibility
US11226839B2 (en) * 2019-02-27 2022-01-18 International Business Machines Corporation Maintaining compatibility for complex functions over multiple machine generations

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
JPS6276954A (ja) * 1985-09-30 1987-04-09 Toshiba Corp 通信制御装置
CA2048306A1 (en) * 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
US5579509A (en) * 1991-02-08 1996-11-26 International Business Machines Corporation Apparatus and method for verifying compatibility of system components

Also Published As

Publication number Publication date
JPH08509830A (ja) 1996-10-15
US5613101A (en) 1997-03-18
ATE160032T1 (de) 1997-11-15
DE69406660D1 (de) 1997-12-11
AU6783394A (en) 1994-11-21
EP0698238A1 (en) 1996-02-28
EP0698238B1 (en) 1997-11-05
CA2162033A1 (en) 1994-11-10
WO1994025918A1 (en) 1994-11-10

Similar Documents

Publication Publication Date Title
JP3343354B2 (ja) コンピュータシステム中にある複数のモジュラーコンポーネント間に互換性如何を確認する方法ならびに装置
EP0752647B1 (en) Method and apparatus for internal versioning of objects using a map file
US6757893B1 (en) Version control system for software code
US6063128A (en) Object-oriented computerized modeling system
Richter Applied Microsoft. NET framework programming
US5815415A (en) Computer system for portable persistent modeling
US6920631B2 (en) Software installation and validation using custom actions
US5903753A (en) Name space registry with backward compatibility for older applications
US6957439B1 (en) Method, system, and program for mapping objects in different language formats
US6298481B1 (en) System for modifying the functionality of compiled computer code at run-time
US5481713A (en) Method and apparatus for patching code residing on a read only memory device
US6484309B2 (en) Enabling software designed for one operating system to operate on another operating system
US7162709B2 (en) System and method for common code generation
AU773769B2 (en) Method and apparatus for dispatch table construction
US20040059703A1 (en) Cascading behavior of package generation/installation based on variable parameters
EP1202168A2 (en) System and method for dynamically veryfying the compatibility of a user interface resource
US20070006202A1 (en) Dynamic mapping of shared libraries
US6941520B1 (en) Method, system, and program for using a user interface program to generate a user interface for an application program
WO1994027220A1 (en) Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
JPH10111802A (ja) 分散オブジェクトシステムの応用分野におけるコード生成器
US5781902A (en) Method, computer program product, and system for extending the capabilities of an existing process to store and display foreign data
US6944620B2 (en) File system creator
US7512899B1 (en) Method and apparatus for a unified user interface
US6845502B1 (en) Extended attribute information retention file format for object files
Manual HP OpenVMS Linker Utility Manual

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080823

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 7

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090823

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100823

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110823

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110823

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120823

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130823

Year of fee payment: 11

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term