JP3771589B2 - コンピュータ・システム又はそれのプログラムの停止を必要としないオブジェクト指向メソッドを含むコンピュータ・システム、記録媒体、およびコンピュータ・プログラムの動作方法 - Google Patents
コンピュータ・システム又はそれのプログラムの停止を必要としないオブジェクト指向メソッドを含むコンピュータ・システム、記録媒体、およびコンピュータ・プログラムの動作方法 Download PDFInfo
- Publication number
- JP3771589B2 JP3771589B2 JP51509697A JP51509697A JP3771589B2 JP 3771589 B2 JP3771589 B2 JP 3771589B2 JP 51509697 A JP51509697 A JP 51509697A JP 51509697 A JP51509697 A JP 51509697A JP 3771589 B2 JP3771589 B2 JP 3771589B2
- Authority
- JP
- Japan
- Prior art keywords
- computer system
- version
- program
- client program
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/02—Arrangements for program control, e.g. control units using wired connections, e.g. plugboards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Description
【0001】
【発明の属する技術分野】
技術分野
本発明はデータ処理システムに関するものである。更に詳しく云えば、本発明はオブジェクト指向ソース・コードの保守に関するものである。
【従来技術】
背景技術
コンピュータ時代の始まりとして、1948年のEDVACコンピュータ・システムの開発が引用されることが多い。その時以来、コンピュータ・システムは現代の生活スタイルのあらゆる場に入り込んでいる。この急成長の1つの理由は、種々のタスクを効率的に遂行するというコンピュータ・システムの能力である。これらのタスクを遂行するためにコンピュータ・システムによって使用されるメカニズムがコンピュータ・プログラムと呼ばれる。
【0002】
コンピュータ・システムそのものと同様に、コンピュータ・プログラムの開発も長年にわたって発展してきた。EDVACシステムは、「1アドレス」コンピュータ・プログラミング言語と呼ばれるものを使用した。この言語は、最も基本的なコンピュータ・プログラムしか可能にするものではなかった。1960年代までは、コンピュータ・プログラミング言語の改良は、開発及び保守を管理及び制御することが難しい非常に大きく、且つ複雑なコンピュータ・プログラムを生じさせた。
【0003】
従って、1970年代の焦点は、大きなコンピュータ・プログラムの増大する複雑性及びコストをよりよく調整することができるプログラミング方法論及び環境を開発することに向けられていた。そのような方法論の1つがオブジェクト指向プログラミング(OOP)と呼ばれる。OOPの基本的な表記法が最初に開発されて以来ちょっと時間が経ったけれども、OOPを使用することはコンピュータ・プログラマの能率を大いに高めることを可能にするものと考えられるので、OOPシステムは益々一般的なものになりつつある。勿論、オブジェクトはOOPテクノロジの中心である。単一のオブジェクトが、そのオブジェクトによって制御される情報に関してコンピュータ・システムにより遂行される個々のオペレーション又は複数オペレーションのグループを表す。オブジェクトは、一定のタスクを遂行するために共同して働く自律的エージェントであると考えることができる。時には、コンピュータ・プログラム全体がオブジェクトのグループ化によって形成されることがあり、時には、オブジェクトが、1つの特定なタスク又はサブタスクを遂行するために、より伝統的なコンピュータ・プログラムによってアクセスされるだけのこともある。オブジェクトが他のオブジェクトによってアクセスされるか否かに関係なく、そのアクセスされたオブジェクトはサーバ・オブジェクトであると云われ、そのアクセスしたエンティティはそのオブジェクトのクライアントであると云われる。
【0004】
【発明が解決しようとする課題】
OOPの使用はプログラマの能率をより高いものに導いたけれども、その同じ使用が、従来技術の機構が克服しなければならない幾つかの難問をもたらしている。そのような難問の1つは、保守されるべき1つ又は複数のサーバ・オブジェクトへのアクセスを現在必要としているクライアントによって問題を引き起こさない方法でそのサーバ・オブジェクトを保守すること(即ち、更新すること及び補修すること)に関係する。既存のオブジェクト保守機構は、コンピュータ・システムを停止させることによって、又は保守を必要とするオブジェクトを使用しようとしている特定のプログラムを非活動化することによって、これらの問題を回避している。システム又はプログラムは、それが非活動にされた時に静止されると云われる。勿論、副次的な保守に過ぎないことを行うためにすべてのレベルのシステム活動を停止させることが望ましくないことは容易にわかる。これは、ビジネスが常にコンピュータ・システムに対する分刻みのアクセスに依存している銀行及び金融業界においては特にそうである。
【0005】
システム又はプログラム・ダウン時間を必要とすることなくオブジェクト保守を行うことができる機構がなければ、商業的コンピュータのユーザは、オブジェクト指向テクノロジの恩恵を十分に利用することができないであろう。
【0006】
【課題課題を解決するための手段】
発明の開示
本願では、拡張オブジェクト指向保守機構が開示される。
【0007】
本発明のメソッド保守機構は2つのサブメカニズム、即ち、メソッド更新機構及びメソッド呼出機構より成る。メソッド更新機構は既存のメソッドに変更を施す(即ち、強化又は補修する)ために使用される。重要なことは、これらの変更がコンピュータ・システム又はそれの如何なるプログラムも停止させることなく行われるということである。
【0008】
メソッド呼出マネージャは、プログラムが再活動化されるか或いは始めて活動化される時、アクティブ・プログラムが新しいメソッド・バージョンにアクセスを行うと同時に古いメソッド・バージョンを使用し続けることを可能にする方法でメソッドの呼出を管理する。換言すれば、本発明のメソッド呼出マネージャはサーバ・オブジェクトのデータに対する共用アクセスを種々のクライアントに与えるが、それにもかかわらず、同じクライアントがそのアクセスを達成するためにサーバ・オブジェクトのメソッドの種々なバージョンを使用することを可能にする。
【発明の実施の形態】
【0009】
発明を実施するための最良の形態
A.オブジェクト指向テクノロジの概要
背景技術の項で述べたように、オブジェクトは、コンピュータ・システムの必要なタスクを遂行するために共同して働く自律的エージェントであると考えることができる。単一のオブジェクトが、そのオブジェクトによって制御される情報に関してコンピュータ・システムによって遂行される個々のオペレーション又は複数オペレーションのグループを表す。オブジェクトのオペレーションは「メソッド」と呼ばれ、オブジェクトによって制御される情報は「オブジェクト・データ」又は単に「データ」と呼ばれる。オブジェクトは、「クラス」と呼ばれるもののメンバとして作成される(「インスタンス化される」とも云われる)。クラスはそれのメンバを定義するために使用される。クラスは、それらのメンバ・オブジェクトによって制御されるデータ、及びそれらのメンバ・オブジェクトがそのデータへのアクセスを行うべきメソッドを定義する。
【0010】
上述のように、オブジェクト又はプログラムが第2オブジェクトにより制御されるデータへのアクセスを必要とする時、それは第2オブジェクトのクライアントであると考えられる。第2オブジェクトによって制御されるデータをアクセスするために、クライアント・オブジェクトのメソッドの1つ(即ち、クライアント・メソッド)又はクライアント・プログラムは、そのオブジェクトによって制御されるデータへのアクセスを得るために第2オブジェクトをコールする、即ち、呼び出すであろう。呼び出されたオブジェクトのメソッドの1つ(即ち、この場合は、サーバ・メソッド)は、その呼び出されたオブジェクト(即ち、サーバ・オブジェクト)によって制御されるデータをアクセス又は操作するために使用されるであろう。
【0011】
B.詳細な説明
第1図は本発明のコンピュータ・システムのブロック図を示す。その好適な実施例のコンピュータ・システムは拡張IBM AS/400コンピュータ・システムである。しかし、コンピュータ・システムが複雑なマルチユーザ・コンピューティング装置であるか或いはシングル・ユーザ・ワークステーションであるかに関係なく、本発明の機構及び装置が任意のコンピュータ・システムに等しく適用することは当業者には明らかであろう。第1図の展開図に示されるように、コンピュータ・システム100は、メイン・メモリ140、端末装置(ディスプレイ)インターフェース145、大容量記憶装置インターフェース(DASD補助プロセッサ)155、及びネットワーク・インターフェース160に接続されたメイン又は中央処理装置(CPU)105を含む。これらのシステム・コンポーネントはシステム・バス150の使用を通して相互接続される。コンピュータ・システム100は単一のメインCPU及び単一のシステム・バスしか含まないように示されているけれども、本発明が、複数なCPUを持ったコンピュータ・システム及び各々が種々な機能を種々な方法で遂行する複数のバスを持ったコンピュータ・システムに等しく適用することは云うまでもない。
【0012】
好適な実施例において使用されるインターフェース(AS/400の用語では、入出力プロセッサと呼ばれる)は、それぞれ、CPU105からのオフロード計算・集中処理のために使用される個別の完全にプログラムされたマイクロプロセッサを含んでいる。しかし、本発明が、同様の機能を遂行するために単にI/Oアダプタを使用するだけのコンピュータ・システムにも等しく適用することは当業者には明らかであろう。端末装置インターフェース145は、1つ又は複数の端末装置をコンピュータ・システム100に直接接続するために使用される。非インテリジェントのワークステーション又は完全にプログラム可能なワークステーションでもよいこれらの端末装置は、システム管理者及びコンピュータ・プログラマがコンピュータ・システム100とコミュニケートすることを可能にするために使用される。ネットワーク・インターフェース160は、他のコンピュータ・システム又はワークステーションをコンピュータ・システム100にネットワーク態様で接続するために使用される。本発明は如何なるネットワーキング機構にも限定されるものではない。コンピュータ・システム100は、最新のアナログ又はディジタル技術の使用を通して、又は将来のネットワーキング機構を介して他のシステムに接続されることも可能である。
【0013】
大容量記憶装置インターフェース155は、DASD装置155のような大容量記憶装置をコンピュータ・システム100に接続するために使用される。
【0014】
メイン・メモリ140は、アプリケーション・プログラム110、コンパイラ172、及びオペレーティング・システム165を含む。アプリケーション・プログラム110及びオペレーティング・システム165はメイン・メモリ140に常駐するように示されているけれども、プログラムは一般には実行のために低速の大容量記憶装置から高速のメイン・メモリにロードされるという事実を表すために、これらのエンティティがこのように示されていることは当業者には明らかであろう。これらのプログラムをこのように示すことは、それらがすべて完全にメイン・メモリ140に同時に含まれることを意味するものと解釈されてはならない。又、コンピュータ・システム・メモリという用語が本願ではコンピュータ・システムのメモリを全体として(即ち、メイン・メモリ140、及びDASD185によって表されたものを)総称的に指すために使用されるということも留意すべきである。更に、メイン・メモリ140に示されたプログラムが必ずしもすべてコンピュータ・システム100に常駐する必要はないことも当業者には明らかであろう。例えば、アプリケーション・プログラム110のうちの1つ又は複数のプログラムが他のシステムに常駐し、コンピュータ・システム100に常駐する1つ又は複数のプログラムとの共同処理に参加することも可能である。これは、リモート・プロシージャ呼出(RPC)のような周知のクライアント・サーバ機構の1つを使用することによって達成することも可能である。
【0015】
更に、アプリケーション・プログラム110はオブジェクト112を含むように示される。オブジェクト112は、それぞれ、データ及び少なくとも1つのメソッドを含んでもよいがそれらは図示されていない。前述のように、クライアント・メソッドは、呼び出されたオブジェクトによって制御される情報へのアクセスを得るために又はその情報を操作するために、サーバ・メソッドを呼び出さなければならない。メソッドがクライアント・メソッド又はサーバ・メソッドであるというステートメントは関連性(relativity)の1つであることに留意すべきである。換言すれば、第2メソッドに関してクライアント・メソッドであると云われるメソッドは、完全に、第3メソッドに関してサーバ・メソッドであってもよい。アプリケーション・プログラム110は非オブジェクト指向プログラムを含み、それにもかかわらず、オブジェクト112に対するアクセスを有することも留意すべきである。更に、クライアント・プログラムという用語の使用は、クライアント・メソッド又は非オブジェクト指向クライアント・プログラムを総称的に指すものと解釈されるべきである。しかし、上記のクライアント・サーバ環境では、クライアント・プログラム(ここで使用されるような)はクライアント・コンピュータ・システムから到来するリクエストを処理するサーバ・コンピュータ・システム上の機構であって、クライアント・コンピュータ・システム上で実行しながらリクエストを発生するプログラムではないことに留意すべきである。
【0016】
コンパイラ172は、後述するように、ソース・コードを実行可能コードにコンパイルするために使用される。
【0017】
オペレーティング・システム165は、OS/400のような製造業において知られたマルチタスキング・オペレーティング・システムである。しかし、本発明の趣旨及び技術的範囲が如何なるオペレーティング・システムにも限定されないことは当業者には明らかであろう。更に、オペレーティング・システム165は、メソッド更新機構167及びメソッド呼出マネージャ170を含むメソッド保守機構166を含むものとして示される。メソッド更新機構167は、オブジェクト112のメソッドを補修又は更新するために使用される。第2図と関連した説明において更に詳細に示されるメソッド更新機構167は、オブジェクト112に対して変更を行う時、コンピュータ・システム110を停止させたり、如何なるアプリケーション・プログラム110も非活動にしたりすることはない。メソッド呼出マネージャ170は、実行プログラムがオブジェクト112の古いバージョンを使用して実行し続けることを可能にするが、それにもかかわらず、それらの処理が終了した後、同じ実行プログラムに新しいバージョンのオブジェクトへのアクセスを与えることを可能にするために使用される。
【0018】
十分に機能的なコンピュータ・システムに関連して本発明を説明した(及び説明を続ける)けれども、本発明のコンピュータ・プログラムは、フロッピ・ディスク、CD−ROM、又は他の形態の記録可能な媒体を介して、或いは任意のタイプの電子的伝送機構を介して、プログラム製品として配布し得ることは当業者には明らかであろう。
【0019】
第2図は、メソッド更新機構167の流れ図である。ブロック200では、コンピュータ・システム100のための新しいサービス・プログラムが作成される。「サービス・プログラム」という用語は、AS/400用語の特定の用法である。サービス・プログラムは、特定のクラスの各メソッドに割り当てられるタスク又はサブタスクを実行するためにCPU105において実行される実際のプログラム命令を含む。AS/400サービス・プログラムの概念は、別の用語(例えば、ユニックス・ライブラリ又はOS/2動的リンク・ライブラリのような)を使用してそれを説明し得るけれども、その概念がその分野において周知であることは当業者には明らかであろう。
【0020】
サービス・プログラムの初期作成は、任意の周知のソース・コード・エディタ又はジェネレータの使用を通して達成可能である。一旦サービス・プログラムが作成されてしまうと、ブロック205において、メソッド更新機構167はコンパイラ172によって新しいサービス・プログラムをコンパイルさせる。その分野では周知のように、サービス・プログラムのソース・コード・バージョンをコンパイルすることは、そのサービス・プログラムのオブジェクト・コード表示を作成させる。このステップは、コンピュータ・システム・メモリ・ロケーション・アソシエーションに対するプログラム名を暗黙的に作成する。一旦サービス・プログラムがコンパイルされてしまうと、コンパイラ172はサービス・プログラム名及びポインタをコンピュータ・システム100のディレクトリ・サービスに加える(ブロック210)。ディレクトリ・サービスは、コンピュータ・システム100のすべてのプログラムに対するコンピュータ・システム・メモリ・ロケーションを理解するという責任、及びプログラム名を与えられた時に正しい・メモリ・ロケーションを戻すという責任がある。一旦サービス・プログラム名及びポインタがディレクトリ・サービスに加えられてしまうと、メソッド更新機構167は新しいサービス・プログラムの名前でもってクラス・オブジェクトを更新する(ブロック215)。一旦クラス・オブジェクトが新しいサービス・プログラムを含むように更新されてしまうと、それはクライアント・プログラムによる使用のために利用可能である。この後者のステップの重要性に関しては、第3A図乃至第3D図と関連して後で説明することにする。メソッド更新機構167は、新しいサービス・プログラムを加える時、コンピュータ・システム100又は如何なるそれのプロセスも停止させないということに留意すべきである。
【0021】
第3A図はメソッド呼出マネージャ170の流れ図である。先ず、メソッド呼出マネージャ170は、従来のオブジェクト指向機構には見られない監視機構であるということに留意することが重要である。従来のサーバ・メソッド呼出ステートメントは、呼び出されたサーバ・メソッドをプロセッサに単に実行させる命令にコンパイルされる。これらの従来の機構とは違って、本発明のコンパイラ172はメソッド呼出ステートメントをコンパイルして、メソッド呼出マネージャ170を活動化し、そして呼び出されるべきサーバ・メソッドのメソッド・シグニチャをメソッド呼出マネージャ170に送る命令にする。メソッド呼出マネージャ170は、呼出を正しいメソッドに経路指定する責任がある。メソッド呼出マネージャ170をメソッド呼出パスに配置することは、メソッド呼出のために管理的機能を遂行することを可能にする。そのような機能の1つが、後述のメソッド・バージョニングである。
【0022】
ブロック305において、メソッド呼出マネージャ170は呼出を分析して正しいメソッド・テーブル・エントリにする。第3B図は、これを生じさせる方法の論理的な表示である。本発明のメソッド分析の正確な詳細に興味がある人は、米国特許第5,404,525号を参照して欲しい。一般的な例として、クライアント・メソッドがオブジェクト370のメソッドに対する呼出を行おうとしているものと仮定する。第3B図に示されるように、オブジェクト370は、オブジェクト・データ371及びクラス・オブジェクト・ポインタを含む。オブジェクト370は、メイン・メモリ140のうちの共用メモリとして知られている部分に常駐している。共用メモリの概念は、複数のプロセスが1回でしかも同時にアクセスし得るメイン・メモリ140の部分を意味するものとして当業者にはよく知られている。共用メモリは、単一のプロセスによる使用のために予約されたメイン・メモリの部分であるプロセス・ローカル・メモリとは概念的に逆のものである。
【0023】
メソッド呼出マネージャ170は、一旦呼び出されると、適正なメソッド・テーブル・エントリに対するその呼び出されたメソッドの名前を分析するように進む。メソッド呼出マネージャ170は、先ずオブジェクト370に含まれたクラス・オブジェクト・ポインタを使用することによってこれを行い、クラス・オブジェクト372の動作部分に対するアクセスを得る(クラス・オブジェクトの正確な詳細に興味ある人は前記米国特許を参照して欲しい)。クラス・オブジェクト372から、メソッド呼出マネージャ170はメソッド・テーブル376に対するアクセスを得て、正しいエントリ(エントリ378として示される)を見つける。ブロック310において、メソッド呼出マネージャ170は呼び出されたメソッドに対するメソッド・アレイ・ポインタを適正なメソッド・ロケーション・アレイ(第3B図のメソッド・ロケーション・アレイ380、381、及び382参照)まで追跡する。各メソッド・ロケーション・アレイは、通常、少なくとも1つのアレイ・エレメントを含むであろう。しかし、問題のメソッドが未だ呼び出されてない場合(即ち、これが最初のものである場合)、メソッド呼出マネージャ170は、それの処理のこの段階における空のアレイを見つけるであろう。これが実際である時、メソッド呼出マネージャ170はサービス・プログラム名374と関連したサービス・プログラムをロードしようとする(第3A図のブロック320)。サービス・プログラム名374はクラス・オブジェクト380に含まれる。
【0024】
サービス・プログラムは、当該クラス(即ち、この場合にはクラス・オブジェクト380のクラス)に対して定義され、実施されたすべてのメソッドに対する実際の実行可能コードを含む。サービス・プログラム名374は、そのクラスに対するサービス・プログラムの最新のバージョンの名前を含んでいる。ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック335)、制御を呼び出しメソッドに戻す(ブロック340)。サービス・プログラムのロードが成功である場合、メソッド呼出マネージャは、現在のプロセスに対するアクティブ・サービス・プログラムに新しいサービス・プログラムを加えるように進行する(ブロック326)。後者のステップについては、第3D図と関連して更に詳しく後述することにする。そこで、メソッド呼出マネージャは、そのクラスの各メソッド・ロケーション・アレイ(即ち、メソッド・ロケーション・アレイ380、381、及び382)の前に新しいエレメントを加えるように進行する。一旦これが達成されると、メソッド呼出マネージャはサービス・プログラムから適切なメソッドをアクセスして呼び出すように進行する(ブロック342及び350)。メソッド呼出マネージャ170は、各メソッド・ロケーション・アレイ・エレメントに含まれた情報へのアクセスを通してこれらのステップを達成する。
【0025】
第3C図は好適な実施例のメソッド・ロケーション・アレイ・エレメントを更に詳細に示す。メソッド・アレイ・エレメント386はサービス・プログラム・ポインタ387及びインプリメンテーション・エントリ番号388を含む。インプリメンテーション・エントリ番号388はサービス・プログラムまでのオフセットである。そこで、メソッド呼出マネージャ170はこのポインタ387及びインプリメンテーション・エントリ番号388を使用してそのメソッドの適切なインプリメンテーションをアクセスし、それを呼び出す。メソッド・インプリメンテーションがサービス・プログラム内のどこかに位置指定されることを可能にするために、好適な実施例ではインプリメンテーション・エントリ番号388が使用されるけれども、代替として、メソッド・テーブル・エントリにおけるメソッド・アレイ・ポインタの配列とサービス・プログラム内のメソッド・インプリメンテーションの配列との間の或タイプの論理的対応を単に強化することによって、オフセットを必要としないようにすることもできる。
【0026】
メソッド・テーブル・エントリと実行可能なコードとの間の間接的な処理が本発明のデータ共有及びメソッド・バージョニング機能の主要な局面である。その間接的な処理は、バージョニングを可能するメソッド・ロケーション・アレイを含むことを可能にする。しかし、間接的処理/アレイの結合が代替の構造を使用することにより得られること及び本発明がその特定の開示された構造に限定されないことは当業者には明らかであろう。メソッド・プログラムがそれの処理を終了した後、それはメソッド呼出マネージャ170に制御を戻す(ブロック352)。そこで、メソッド呼出マネージャ170は呼出メソッド(即ち、クライアント・メソッド)に制御を戻す(ブロック353)。
【0027】
説明を第3A図のブロック315に戻すと、ここでは、問題のメソッド・ロケーション・アレイが少なくとも1つのエレメントを含むものと仮定する。このとおりである時、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイにおいて識別されたサービス・プログラムの1つがアクティブ・プロセスによって前にロードされたかどうかを知るためのチェックを行う(ブロック330)。AS/400システムの場合、これはプロセス・リストへのアクセスを通して行われる。第3D図は好適な実施例のプロセス・リストを示す。プロセス・リスト390はコンピュータ・システム100におけるアクティブ・プロセスのリストである。各プロセス・リスト・エントリはアクティブ・サービス・プログラム・リスト(アクティブ・プログラム・リスト395、396、及び397参照)に対するポインタを含む。
【0028】
これらのリストの各々は、それぞれのプロセスに対してアクティブであるサービス・プログラムを示す。そのリストの各エレメントは、サービス・プログラムのポインタ(即ち、特定のクラスに対するすべてのメソッドの実際のインプリメンテーション)及び当該プロセスの一部分として実行しようとしているサービス・プログラムの特定なアクティベーションによって割り振られたすべての変数値を含む。本発明の焦点は、サーバ・メソッド及びアクティブ・サービス・プログラム・リストにおけるそれらのサービス・プログラムの存在にあることに留意して欲しい。又、「アクティベーション」という用語は、プロセスの一部として実行するためにロードされたサービス・プログラムを記述するために使用される特定のAS/400用語であることにも留意して欲しい。AS/400アクティベーションの概念は種々の用語(例えば、ロード済みイメージ、又はロード済み動的リンク・ライブラリ)を使用して説明可能であるけれども、その概念がその分野においてよく知られていることは当業者には明らかであろう。
【0029】
第3D図に示されるように、プロセス1及びプロセス32の両方ともサービス・プログラムXのアクティベーションを有する。しかし、これらのサービス・プログラムアクティベーションの各々が、サービス・プログラムXにおけるメソッド・インプリメンテーションによって定義されたグローバル変数(「変数」を表す「V」がサービス・プログラム名に後続して示される)内に種々の値を記憶させるであろう。変数値の処理が本発明によって克服された基本的なメソッド・バージョニング問題であることは当業者には明らかであろう。変数値は変数定義への変更によって破壊され易いので、クライアント・プログラムを1つのアクティベーションから他のアクティベーションに簡単に切り換えることはできない。本発明は、プロセスが自然に終了するまで、クライアント・プログラムが同じメソッド・バージョン及び関連の変数定義を使用し続けることを可能にすることによってこの問題を解決する。「自然に」は、プロセスがそれの処理を終了し、そしてそれが最早中央プロセッサにおいて実行することがないように或いは中央プロセッサにおいて正規の過程で実行すべくスケジュールされないように停止することを意味する。換言すれば、プロセスは、他の何れかのプロセス(例えば、従来のメソッド保守機構)によって早めに停止させられることなく終了することを可能にされる。
【0030】
メソッド・ロケーション・アレイにおける識別されたサービス・プログラムの1つが要求プロセスに対するアクティブ・サービス・プログラム・リストにも存在する場合、メソッド呼出マネージャ170はそのサービス・プログラムにおけるメソッド・インプリメンテーションをアクセスして呼び出すことを知る(ブロック342及び350)。当該メソッド・ロケーション・アレイによって識別されたサービス・プログラムが要求プロセスに対するアクティブ・サービス・プログラム・リストに全く存在しない場合、メソッド呼出マネージャ170はサービス・プログラム名374から新たなサービス・プログラムをロードしようとする(第3A図のブロック365)。メソッド呼出マネージャ170は、コンピュータ・システム100のディレクトリ・サービスを使用することによって、当該サービス・プログラムに対するポインタにサービス・プログラム名374をマップする(ディレクトリ・サービスに関しては、第2図に関連した記述において説明した)。
【0031】
ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック343)、しかる後、制御を呼出メソッドに戻す(ブロック344)。サービス・プログラムのロードが成功である場合、メソッド呼出マネージャ170は、現在のプロセスに対するアクティブ・サービス・プログラム・リストに新たなサービス・プログラムを加える(ブロック346)。そこで、メソッド呼出マネージャ170は、最も新しいサービス・プログラムに対するエレメント・ポインタがメソッド・ロケーション・アレイに存在するかどうか(当該クラスのメソッドのうちのどれかが最新のサービス・プログラムを使用して呼び出されたかどうか)をチェックする(ブロック349)。その結果が否定的である場合、メソッド呼出マネージャ170は、そのクラスに対する各メソッド・ロケーション・アレイ(即ち、メソッド・ロケーション・アレイ380、381、及び382)の前に新しいエレメントを加える。一旦これが達成されると、メソッド呼出マネージャ170は、前述のように、サービス・プログラムから適切なメソッドをアクセスして呼び出すように進行する(ブロック342及び350)。
【0032】
更なる特定の例として、メソッド呼出マネージャ170がプロセス1(第3D図)の下で実行するプログラムからの呼出を処理する方法と、メソッド呼出マネージャ170がプロセス32(第3D図)の下で実行するプログラムによる呼出を処理する方法とを比較することにする。両方のクライアント・プログラムがオブジェクト370の第1メソッド(即ち、メソッド・ロケーション・アレイ380によって表されたメソッド)を呼び出すものと仮定する。前述のように、各メソッドは、メソッド呼出マネージャ170を呼び出すこと及び呼び出されるべきメソッドのメソッド・シグニチャをメソッド呼出マネージャ170に送ることによってそれの呼出を行う。これは第3A図のブロック300に示される。ブロック305において、メソッド呼出マネージャ170はその呼出を正しいメソッド・テーブル・エントリに分解する。この例の両方の場合とも、エントリは第3B図のメソッド・テーブル・エントリ378となるであろう。
【0033】
ブロック310において、メソッド呼出マネージャ170は、メソッド370の第1メソッドに対するメソッド・アレイ・ポインタを適切なメソッド・ロケーション・アレイ(この場合、メソッド・ロケーション・アレイ380)までフォローするであろう。メソッド・ロケーション・アレイ380は、呼び出されたメソッドの3つの異なるバージョンがクライアントによって前に呼び出されたことを意味する3つのアレイ・エレメントを含む。従って、ブロック315は、プロセス1又はプロセス2のどちらが問題であるかに関係なく、肯定的に応えられるであろう。次に、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイ380におけるサービス・プログラムがアクティブ・プロセスによって前にロードされたかどうかを決定するであろう。前述のように、メソッド呼出マネージャは、第3D図のプロセス・リスト390を参照することによってこの決定を行うであろう。プロセス1の場合、メソッド呼出マネージャ170は、サービス・プログラムAが前にロードされたことを決定するであろう。従って、メソッド呼出マネージャ170はメソッド・ロケーション・アレイ380のエレメントに含まれた情報を使用してサービス・プログラムA(即ち、第3B図においてサービス・プログラム385として示される)のメソッド・インプリメンテーション2をアクセスして呼び出す(第3A図のブロック342及び350参照)。各サービス・プログラムは各メソッド・ロケーション・アレイに(即ち、第3B図に示されたように)論理的に接続されるけれども、各サービス・プログラムのアクティベーションも(第3D図に示されるように)それのプロセスに論理的に接続される。
【0034】
しかし、プロセス32の場合、メソッド呼出マネージャ170は、プロセス32によって前にロードされたサービスプログラムに関するロケーション情報をメソッド・ロケーション・アレイ380のアレイ・エレメントが全く持っていないことを確認するであろう。従って、メソッド呼出マネージャ170はサービス・プログラム名374から新しいサービス・プログラムをロードしようとするであろう(第3A図のブロック365)。ここでは、サービス・プログラム名374に含まれた名前はサービス・プログラムCという名前であると仮定する。
【0035】
ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック343)、しかる後、制御を呼出メソッドに戻す(ブロック344)。しかし、ここでは、サービス・プログラムCのロードが成功であると仮定する。そこで、メソッド呼出マネージャ170はプロセス32に対するアクティブ・サービス・プログラム・リストにサービス・プログラムCを加える(ブロック346)。そこで、メソッド呼出マネージャ170は、サービス・プログラムCがメソッド・ロケーション・アレイに存在するかどうか(即ち、当該クラスのメソッドのうち、サービス・プログラムCを使用して呼び出されたものがあるかどうか)をチェックする(ブロック349)。第3B図に示されるように、サービス・プログラムC(即ち、サービス・プログラム383)はメソッド・ロケーション・アレイに存在する。従って、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイ380のエレメントcに含まれた情報を使用してサービス・プログラムCのメソッド・インプリメンテーション1をアクセスして呼び出すであろう(第3A図のブロック342及び350参照)。
【0036】
上記の例は、2つの異なるプロセス(即ち、プロセス1及びプロセス32)が共にオブジェクト370のオブジェクト・データ371を共用することができるが、それにもかかわらず、同じメソッドの2つの異なるバージョン(即ち、サービス・プログラムA及びCのバージョン)を使用することができるということを示していることに留意し欲しい。又、プロセス1は、それが自然に実行を終了した後に(即ち、サービス・プログラムAはアクティブ・サービス・プログラム・リスト395から除去されるため)、最新のメソッド・バージョン(即ち、その例におけるサービス・プログラムCのバージョン)へのアクセスを自動的に与えられるであろうと云うことも留意して欲しい。
【0037】
産業上の利用可能性
本発明の第1の利点は、先ずコンピュータ・システム又はそれの如何なるプログラムも休止させる必要なくオブジェクトを更新及び補修するという機能である。
【0038】
本発明の第2の利点は、実行プログラムがそれらの処理を完全に終了してしまうまでその実行プログラムが古いバージョンのオブジェクトを使用して実行し続けることを可能にすることである。
【0039】
本発明の第3の利点は、新しいオブジェクト・バージョンが利用可能になった時、たとえ複数のプログラムが同じオブジェクトの古いオブジェクト・バージョンをアクセスしようとしていても、本発明がそれらのプログラムに新しいオブジェクト・バージョンへのアクセスを与えることである。
【0040】
本発明の第4の利点は、複数のプログラムがサーバ・オブジェクトのデータを共用することを可能にするが、それにもかかわらず、同じ複数のプログラムがそのサーバ・オブジェクトのメソッドの異なるバージョンを利用することを可能にすることである。
【0041】
本発明の第5の目的は、複数のプログラムがサーバ・オブジェクトのデータを共用することを可能にするが、それにもかかわらず、同じ複数のプログラムのサブセットがそのサーバ・メソッドの新しいバージョンを利用することを可能にすることである。
【0042】
本願で示された実施例は、本発明及びそれの実用的な応用を最もよく説明するために、及び当業者が本発明を作り及び使用することを可能にするために与えられた。しかし、前記説明及び例が単に説明及び例示の目的で与えられたことは当業者には明らかであろう。前記の説明は網羅的であることを意図するものではなく、或いは、開示された形態そのものに本発明を限定しようとするものでもない。上記の教示するところに照らして、本発明の精神及び技術的範囲を逸脱することなく、多くの修正及び変更が可能である。以下に、本発明を開示する。
【0043】
(1) バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスは、前記メソッドの前記第2バージョンが作成された後に開始される、コンピュータ・システム。
(2) メソッド呼出マネージャが記録されたコンピュータ可読な記録媒体であって、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスを、前記メソッドの前記第2バージョンが作成された後に開始させる、
コンピュータ可読な記録媒体。
(3) 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを含む前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスを、前記メソッドの前記第2バージョンが作成された後に、開始させる、
方法。
(4) バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、コンピュータ・システム。
(5) メソッド呼出マネージャが記録されたコンピュータ可読な記録媒体であって、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成、利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとに、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、
コンピュータ可読な記録媒体。
(6) 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを含む前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、
方法。
【図面の簡単な説明】
第1図は、本発明のコンピュータ・システムのブロック図である。
第2図は、好適な実施例に従って、本発明のメソッド更新機構を実行するために使用されるステップを示す流れ図である。
第3A図は、好適な実施例に従って、本発明のメソッド呼出マネージャを実行するために使用されるステップを示す流れ図である。
第3B図は、好適な実施例において使用されるデータ構造のブロック図である。
第3C図は、好適な実施例において使用されるメソッド・アレイ・エレメントのブロック図である。
第3D図は、好適な実施例において使用されるアクティブなサービス・プログラム・トラッキング機構のブロック図である。
【発明の属する技術分野】
技術分野
本発明はデータ処理システムに関するものである。更に詳しく云えば、本発明はオブジェクト指向ソース・コードの保守に関するものである。
【従来技術】
背景技術
コンピュータ時代の始まりとして、1948年のEDVACコンピュータ・システムの開発が引用されることが多い。その時以来、コンピュータ・システムは現代の生活スタイルのあらゆる場に入り込んでいる。この急成長の1つの理由は、種々のタスクを効率的に遂行するというコンピュータ・システムの能力である。これらのタスクを遂行するためにコンピュータ・システムによって使用されるメカニズムがコンピュータ・プログラムと呼ばれる。
【0002】
コンピュータ・システムそのものと同様に、コンピュータ・プログラムの開発も長年にわたって発展してきた。EDVACシステムは、「1アドレス」コンピュータ・プログラミング言語と呼ばれるものを使用した。この言語は、最も基本的なコンピュータ・プログラムしか可能にするものではなかった。1960年代までは、コンピュータ・プログラミング言語の改良は、開発及び保守を管理及び制御することが難しい非常に大きく、且つ複雑なコンピュータ・プログラムを生じさせた。
【0003】
従って、1970年代の焦点は、大きなコンピュータ・プログラムの増大する複雑性及びコストをよりよく調整することができるプログラミング方法論及び環境を開発することに向けられていた。そのような方法論の1つがオブジェクト指向プログラミング(OOP)と呼ばれる。OOPの基本的な表記法が最初に開発されて以来ちょっと時間が経ったけれども、OOPを使用することはコンピュータ・プログラマの能率を大いに高めることを可能にするものと考えられるので、OOPシステムは益々一般的なものになりつつある。勿論、オブジェクトはOOPテクノロジの中心である。単一のオブジェクトが、そのオブジェクトによって制御される情報に関してコンピュータ・システムにより遂行される個々のオペレーション又は複数オペレーションのグループを表す。オブジェクトは、一定のタスクを遂行するために共同して働く自律的エージェントであると考えることができる。時には、コンピュータ・プログラム全体がオブジェクトのグループ化によって形成されることがあり、時には、オブジェクトが、1つの特定なタスク又はサブタスクを遂行するために、より伝統的なコンピュータ・プログラムによってアクセスされるだけのこともある。オブジェクトが他のオブジェクトによってアクセスされるか否かに関係なく、そのアクセスされたオブジェクトはサーバ・オブジェクトであると云われ、そのアクセスしたエンティティはそのオブジェクトのクライアントであると云われる。
【0004】
【発明が解決しようとする課題】
OOPの使用はプログラマの能率をより高いものに導いたけれども、その同じ使用が、従来技術の機構が克服しなければならない幾つかの難問をもたらしている。そのような難問の1つは、保守されるべき1つ又は複数のサーバ・オブジェクトへのアクセスを現在必要としているクライアントによって問題を引き起こさない方法でそのサーバ・オブジェクトを保守すること(即ち、更新すること及び補修すること)に関係する。既存のオブジェクト保守機構は、コンピュータ・システムを停止させることによって、又は保守を必要とするオブジェクトを使用しようとしている特定のプログラムを非活動化することによって、これらの問題を回避している。システム又はプログラムは、それが非活動にされた時に静止されると云われる。勿論、副次的な保守に過ぎないことを行うためにすべてのレベルのシステム活動を停止させることが望ましくないことは容易にわかる。これは、ビジネスが常にコンピュータ・システムに対する分刻みのアクセスに依存している銀行及び金融業界においては特にそうである。
【0005】
システム又はプログラム・ダウン時間を必要とすることなくオブジェクト保守を行うことができる機構がなければ、商業的コンピュータのユーザは、オブジェクト指向テクノロジの恩恵を十分に利用することができないであろう。
【0006】
【課題課題を解決するための手段】
発明の開示
本願では、拡張オブジェクト指向保守機構が開示される。
【0007】
本発明のメソッド保守機構は2つのサブメカニズム、即ち、メソッド更新機構及びメソッド呼出機構より成る。メソッド更新機構は既存のメソッドに変更を施す(即ち、強化又は補修する)ために使用される。重要なことは、これらの変更がコンピュータ・システム又はそれの如何なるプログラムも停止させることなく行われるということである。
【0008】
メソッド呼出マネージャは、プログラムが再活動化されるか或いは始めて活動化される時、アクティブ・プログラムが新しいメソッド・バージョンにアクセスを行うと同時に古いメソッド・バージョンを使用し続けることを可能にする方法でメソッドの呼出を管理する。換言すれば、本発明のメソッド呼出マネージャはサーバ・オブジェクトのデータに対する共用アクセスを種々のクライアントに与えるが、それにもかかわらず、同じクライアントがそのアクセスを達成するためにサーバ・オブジェクトのメソッドの種々なバージョンを使用することを可能にする。
【発明の実施の形態】
【0009】
発明を実施するための最良の形態
A.オブジェクト指向テクノロジの概要
背景技術の項で述べたように、オブジェクトは、コンピュータ・システムの必要なタスクを遂行するために共同して働く自律的エージェントであると考えることができる。単一のオブジェクトが、そのオブジェクトによって制御される情報に関してコンピュータ・システムによって遂行される個々のオペレーション又は複数オペレーションのグループを表す。オブジェクトのオペレーションは「メソッド」と呼ばれ、オブジェクトによって制御される情報は「オブジェクト・データ」又は単に「データ」と呼ばれる。オブジェクトは、「クラス」と呼ばれるもののメンバとして作成される(「インスタンス化される」とも云われる)。クラスはそれのメンバを定義するために使用される。クラスは、それらのメンバ・オブジェクトによって制御されるデータ、及びそれらのメンバ・オブジェクトがそのデータへのアクセスを行うべきメソッドを定義する。
【0010】
上述のように、オブジェクト又はプログラムが第2オブジェクトにより制御されるデータへのアクセスを必要とする時、それは第2オブジェクトのクライアントであると考えられる。第2オブジェクトによって制御されるデータをアクセスするために、クライアント・オブジェクトのメソッドの1つ(即ち、クライアント・メソッド)又はクライアント・プログラムは、そのオブジェクトによって制御されるデータへのアクセスを得るために第2オブジェクトをコールする、即ち、呼び出すであろう。呼び出されたオブジェクトのメソッドの1つ(即ち、この場合は、サーバ・メソッド)は、その呼び出されたオブジェクト(即ち、サーバ・オブジェクト)によって制御されるデータをアクセス又は操作するために使用されるであろう。
【0011】
B.詳細な説明
第1図は本発明のコンピュータ・システムのブロック図を示す。その好適な実施例のコンピュータ・システムは拡張IBM AS/400コンピュータ・システムである。しかし、コンピュータ・システムが複雑なマルチユーザ・コンピューティング装置であるか或いはシングル・ユーザ・ワークステーションであるかに関係なく、本発明の機構及び装置が任意のコンピュータ・システムに等しく適用することは当業者には明らかであろう。第1図の展開図に示されるように、コンピュータ・システム100は、メイン・メモリ140、端末装置(ディスプレイ)インターフェース145、大容量記憶装置インターフェース(DASD補助プロセッサ)155、及びネットワーク・インターフェース160に接続されたメイン又は中央処理装置(CPU)105を含む。これらのシステム・コンポーネントはシステム・バス150の使用を通して相互接続される。コンピュータ・システム100は単一のメインCPU及び単一のシステム・バスしか含まないように示されているけれども、本発明が、複数なCPUを持ったコンピュータ・システム及び各々が種々な機能を種々な方法で遂行する複数のバスを持ったコンピュータ・システムに等しく適用することは云うまでもない。
【0012】
好適な実施例において使用されるインターフェース(AS/400の用語では、入出力プロセッサと呼ばれる)は、それぞれ、CPU105からのオフロード計算・集中処理のために使用される個別の完全にプログラムされたマイクロプロセッサを含んでいる。しかし、本発明が、同様の機能を遂行するために単にI/Oアダプタを使用するだけのコンピュータ・システムにも等しく適用することは当業者には明らかであろう。端末装置インターフェース145は、1つ又は複数の端末装置をコンピュータ・システム100に直接接続するために使用される。非インテリジェントのワークステーション又は完全にプログラム可能なワークステーションでもよいこれらの端末装置は、システム管理者及びコンピュータ・プログラマがコンピュータ・システム100とコミュニケートすることを可能にするために使用される。ネットワーク・インターフェース160は、他のコンピュータ・システム又はワークステーションをコンピュータ・システム100にネットワーク態様で接続するために使用される。本発明は如何なるネットワーキング機構にも限定されるものではない。コンピュータ・システム100は、最新のアナログ又はディジタル技術の使用を通して、又は将来のネットワーキング機構を介して他のシステムに接続されることも可能である。
【0013】
大容量記憶装置インターフェース155は、DASD装置155のような大容量記憶装置をコンピュータ・システム100に接続するために使用される。
【0014】
メイン・メモリ140は、アプリケーション・プログラム110、コンパイラ172、及びオペレーティング・システム165を含む。アプリケーション・プログラム110及びオペレーティング・システム165はメイン・メモリ140に常駐するように示されているけれども、プログラムは一般には実行のために低速の大容量記憶装置から高速のメイン・メモリにロードされるという事実を表すために、これらのエンティティがこのように示されていることは当業者には明らかであろう。これらのプログラムをこのように示すことは、それらがすべて完全にメイン・メモリ140に同時に含まれることを意味するものと解釈されてはならない。又、コンピュータ・システム・メモリという用語が本願ではコンピュータ・システムのメモリを全体として(即ち、メイン・メモリ140、及びDASD185によって表されたものを)総称的に指すために使用されるということも留意すべきである。更に、メイン・メモリ140に示されたプログラムが必ずしもすべてコンピュータ・システム100に常駐する必要はないことも当業者には明らかであろう。例えば、アプリケーション・プログラム110のうちの1つ又は複数のプログラムが他のシステムに常駐し、コンピュータ・システム100に常駐する1つ又は複数のプログラムとの共同処理に参加することも可能である。これは、リモート・プロシージャ呼出(RPC)のような周知のクライアント・サーバ機構の1つを使用することによって達成することも可能である。
【0015】
更に、アプリケーション・プログラム110はオブジェクト112を含むように示される。オブジェクト112は、それぞれ、データ及び少なくとも1つのメソッドを含んでもよいがそれらは図示されていない。前述のように、クライアント・メソッドは、呼び出されたオブジェクトによって制御される情報へのアクセスを得るために又はその情報を操作するために、サーバ・メソッドを呼び出さなければならない。メソッドがクライアント・メソッド又はサーバ・メソッドであるというステートメントは関連性(relativity)の1つであることに留意すべきである。換言すれば、第2メソッドに関してクライアント・メソッドであると云われるメソッドは、完全に、第3メソッドに関してサーバ・メソッドであってもよい。アプリケーション・プログラム110は非オブジェクト指向プログラムを含み、それにもかかわらず、オブジェクト112に対するアクセスを有することも留意すべきである。更に、クライアント・プログラムという用語の使用は、クライアント・メソッド又は非オブジェクト指向クライアント・プログラムを総称的に指すものと解釈されるべきである。しかし、上記のクライアント・サーバ環境では、クライアント・プログラム(ここで使用されるような)はクライアント・コンピュータ・システムから到来するリクエストを処理するサーバ・コンピュータ・システム上の機構であって、クライアント・コンピュータ・システム上で実行しながらリクエストを発生するプログラムではないことに留意すべきである。
【0016】
コンパイラ172は、後述するように、ソース・コードを実行可能コードにコンパイルするために使用される。
【0017】
オペレーティング・システム165は、OS/400のような製造業において知られたマルチタスキング・オペレーティング・システムである。しかし、本発明の趣旨及び技術的範囲が如何なるオペレーティング・システムにも限定されないことは当業者には明らかであろう。更に、オペレーティング・システム165は、メソッド更新機構167及びメソッド呼出マネージャ170を含むメソッド保守機構166を含むものとして示される。メソッド更新機構167は、オブジェクト112のメソッドを補修又は更新するために使用される。第2図と関連した説明において更に詳細に示されるメソッド更新機構167は、オブジェクト112に対して変更を行う時、コンピュータ・システム110を停止させたり、如何なるアプリケーション・プログラム110も非活動にしたりすることはない。メソッド呼出マネージャ170は、実行プログラムがオブジェクト112の古いバージョンを使用して実行し続けることを可能にするが、それにもかかわらず、それらの処理が終了した後、同じ実行プログラムに新しいバージョンのオブジェクトへのアクセスを与えることを可能にするために使用される。
【0018】
十分に機能的なコンピュータ・システムに関連して本発明を説明した(及び説明を続ける)けれども、本発明のコンピュータ・プログラムは、フロッピ・ディスク、CD−ROM、又は他の形態の記録可能な媒体を介して、或いは任意のタイプの電子的伝送機構を介して、プログラム製品として配布し得ることは当業者には明らかであろう。
【0019】
第2図は、メソッド更新機構167の流れ図である。ブロック200では、コンピュータ・システム100のための新しいサービス・プログラムが作成される。「サービス・プログラム」という用語は、AS/400用語の特定の用法である。サービス・プログラムは、特定のクラスの各メソッドに割り当てられるタスク又はサブタスクを実行するためにCPU105において実行される実際のプログラム命令を含む。AS/400サービス・プログラムの概念は、別の用語(例えば、ユニックス・ライブラリ又はOS/2動的リンク・ライブラリのような)を使用してそれを説明し得るけれども、その概念がその分野において周知であることは当業者には明らかであろう。
【0020】
サービス・プログラムの初期作成は、任意の周知のソース・コード・エディタ又はジェネレータの使用を通して達成可能である。一旦サービス・プログラムが作成されてしまうと、ブロック205において、メソッド更新機構167はコンパイラ172によって新しいサービス・プログラムをコンパイルさせる。その分野では周知のように、サービス・プログラムのソース・コード・バージョンをコンパイルすることは、そのサービス・プログラムのオブジェクト・コード表示を作成させる。このステップは、コンピュータ・システム・メモリ・ロケーション・アソシエーションに対するプログラム名を暗黙的に作成する。一旦サービス・プログラムがコンパイルされてしまうと、コンパイラ172はサービス・プログラム名及びポインタをコンピュータ・システム100のディレクトリ・サービスに加える(ブロック210)。ディレクトリ・サービスは、コンピュータ・システム100のすべてのプログラムに対するコンピュータ・システム・メモリ・ロケーションを理解するという責任、及びプログラム名を与えられた時に正しい・メモリ・ロケーションを戻すという責任がある。一旦サービス・プログラム名及びポインタがディレクトリ・サービスに加えられてしまうと、メソッド更新機構167は新しいサービス・プログラムの名前でもってクラス・オブジェクトを更新する(ブロック215)。一旦クラス・オブジェクトが新しいサービス・プログラムを含むように更新されてしまうと、それはクライアント・プログラムによる使用のために利用可能である。この後者のステップの重要性に関しては、第3A図乃至第3D図と関連して後で説明することにする。メソッド更新機構167は、新しいサービス・プログラムを加える時、コンピュータ・システム100又は如何なるそれのプロセスも停止させないということに留意すべきである。
【0021】
第3A図はメソッド呼出マネージャ170の流れ図である。先ず、メソッド呼出マネージャ170は、従来のオブジェクト指向機構には見られない監視機構であるということに留意することが重要である。従来のサーバ・メソッド呼出ステートメントは、呼び出されたサーバ・メソッドをプロセッサに単に実行させる命令にコンパイルされる。これらの従来の機構とは違って、本発明のコンパイラ172はメソッド呼出ステートメントをコンパイルして、メソッド呼出マネージャ170を活動化し、そして呼び出されるべきサーバ・メソッドのメソッド・シグニチャをメソッド呼出マネージャ170に送る命令にする。メソッド呼出マネージャ170は、呼出を正しいメソッドに経路指定する責任がある。メソッド呼出マネージャ170をメソッド呼出パスに配置することは、メソッド呼出のために管理的機能を遂行することを可能にする。そのような機能の1つが、後述のメソッド・バージョニングである。
【0022】
ブロック305において、メソッド呼出マネージャ170は呼出を分析して正しいメソッド・テーブル・エントリにする。第3B図は、これを生じさせる方法の論理的な表示である。本発明のメソッド分析の正確な詳細に興味がある人は、米国特許第5,404,525号を参照して欲しい。一般的な例として、クライアント・メソッドがオブジェクト370のメソッドに対する呼出を行おうとしているものと仮定する。第3B図に示されるように、オブジェクト370は、オブジェクト・データ371及びクラス・オブジェクト・ポインタを含む。オブジェクト370は、メイン・メモリ140のうちの共用メモリとして知られている部分に常駐している。共用メモリの概念は、複数のプロセスが1回でしかも同時にアクセスし得るメイン・メモリ140の部分を意味するものとして当業者にはよく知られている。共用メモリは、単一のプロセスによる使用のために予約されたメイン・メモリの部分であるプロセス・ローカル・メモリとは概念的に逆のものである。
【0023】
メソッド呼出マネージャ170は、一旦呼び出されると、適正なメソッド・テーブル・エントリに対するその呼び出されたメソッドの名前を分析するように進む。メソッド呼出マネージャ170は、先ずオブジェクト370に含まれたクラス・オブジェクト・ポインタを使用することによってこれを行い、クラス・オブジェクト372の動作部分に対するアクセスを得る(クラス・オブジェクトの正確な詳細に興味ある人は前記米国特許を参照して欲しい)。クラス・オブジェクト372から、メソッド呼出マネージャ170はメソッド・テーブル376に対するアクセスを得て、正しいエントリ(エントリ378として示される)を見つける。ブロック310において、メソッド呼出マネージャ170は呼び出されたメソッドに対するメソッド・アレイ・ポインタを適正なメソッド・ロケーション・アレイ(第3B図のメソッド・ロケーション・アレイ380、381、及び382参照)まで追跡する。各メソッド・ロケーション・アレイは、通常、少なくとも1つのアレイ・エレメントを含むであろう。しかし、問題のメソッドが未だ呼び出されてない場合(即ち、これが最初のものである場合)、メソッド呼出マネージャ170は、それの処理のこの段階における空のアレイを見つけるであろう。これが実際である時、メソッド呼出マネージャ170はサービス・プログラム名374と関連したサービス・プログラムをロードしようとする(第3A図のブロック320)。サービス・プログラム名374はクラス・オブジェクト380に含まれる。
【0024】
サービス・プログラムは、当該クラス(即ち、この場合にはクラス・オブジェクト380のクラス)に対して定義され、実施されたすべてのメソッドに対する実際の実行可能コードを含む。サービス・プログラム名374は、そのクラスに対するサービス・プログラムの最新のバージョンの名前を含んでいる。ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック335)、制御を呼び出しメソッドに戻す(ブロック340)。サービス・プログラムのロードが成功である場合、メソッド呼出マネージャは、現在のプロセスに対するアクティブ・サービス・プログラムに新しいサービス・プログラムを加えるように進行する(ブロック326)。後者のステップについては、第3D図と関連して更に詳しく後述することにする。そこで、メソッド呼出マネージャは、そのクラスの各メソッド・ロケーション・アレイ(即ち、メソッド・ロケーション・アレイ380、381、及び382)の前に新しいエレメントを加えるように進行する。一旦これが達成されると、メソッド呼出マネージャはサービス・プログラムから適切なメソッドをアクセスして呼び出すように進行する(ブロック342及び350)。メソッド呼出マネージャ170は、各メソッド・ロケーション・アレイ・エレメントに含まれた情報へのアクセスを通してこれらのステップを達成する。
【0025】
第3C図は好適な実施例のメソッド・ロケーション・アレイ・エレメントを更に詳細に示す。メソッド・アレイ・エレメント386はサービス・プログラム・ポインタ387及びインプリメンテーション・エントリ番号388を含む。インプリメンテーション・エントリ番号388はサービス・プログラムまでのオフセットである。そこで、メソッド呼出マネージャ170はこのポインタ387及びインプリメンテーション・エントリ番号388を使用してそのメソッドの適切なインプリメンテーションをアクセスし、それを呼び出す。メソッド・インプリメンテーションがサービス・プログラム内のどこかに位置指定されることを可能にするために、好適な実施例ではインプリメンテーション・エントリ番号388が使用されるけれども、代替として、メソッド・テーブル・エントリにおけるメソッド・アレイ・ポインタの配列とサービス・プログラム内のメソッド・インプリメンテーションの配列との間の或タイプの論理的対応を単に強化することによって、オフセットを必要としないようにすることもできる。
【0026】
メソッド・テーブル・エントリと実行可能なコードとの間の間接的な処理が本発明のデータ共有及びメソッド・バージョニング機能の主要な局面である。その間接的な処理は、バージョニングを可能するメソッド・ロケーション・アレイを含むことを可能にする。しかし、間接的処理/アレイの結合が代替の構造を使用することにより得られること及び本発明がその特定の開示された構造に限定されないことは当業者には明らかであろう。メソッド・プログラムがそれの処理を終了した後、それはメソッド呼出マネージャ170に制御を戻す(ブロック352)。そこで、メソッド呼出マネージャ170は呼出メソッド(即ち、クライアント・メソッド)に制御を戻す(ブロック353)。
【0027】
説明を第3A図のブロック315に戻すと、ここでは、問題のメソッド・ロケーション・アレイが少なくとも1つのエレメントを含むものと仮定する。このとおりである時、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイにおいて識別されたサービス・プログラムの1つがアクティブ・プロセスによって前にロードされたかどうかを知るためのチェックを行う(ブロック330)。AS/400システムの場合、これはプロセス・リストへのアクセスを通して行われる。第3D図は好適な実施例のプロセス・リストを示す。プロセス・リスト390はコンピュータ・システム100におけるアクティブ・プロセスのリストである。各プロセス・リスト・エントリはアクティブ・サービス・プログラム・リスト(アクティブ・プログラム・リスト395、396、及び397参照)に対するポインタを含む。
【0028】
これらのリストの各々は、それぞれのプロセスに対してアクティブであるサービス・プログラムを示す。そのリストの各エレメントは、サービス・プログラムのポインタ(即ち、特定のクラスに対するすべてのメソッドの実際のインプリメンテーション)及び当該プロセスの一部分として実行しようとしているサービス・プログラムの特定なアクティベーションによって割り振られたすべての変数値を含む。本発明の焦点は、サーバ・メソッド及びアクティブ・サービス・プログラム・リストにおけるそれらのサービス・プログラムの存在にあることに留意して欲しい。又、「アクティベーション」という用語は、プロセスの一部として実行するためにロードされたサービス・プログラムを記述するために使用される特定のAS/400用語であることにも留意して欲しい。AS/400アクティベーションの概念は種々の用語(例えば、ロード済みイメージ、又はロード済み動的リンク・ライブラリ)を使用して説明可能であるけれども、その概念がその分野においてよく知られていることは当業者には明らかであろう。
【0029】
第3D図に示されるように、プロセス1及びプロセス32の両方ともサービス・プログラムXのアクティベーションを有する。しかし、これらのサービス・プログラムアクティベーションの各々が、サービス・プログラムXにおけるメソッド・インプリメンテーションによって定義されたグローバル変数(「変数」を表す「V」がサービス・プログラム名に後続して示される)内に種々の値を記憶させるであろう。変数値の処理が本発明によって克服された基本的なメソッド・バージョニング問題であることは当業者には明らかであろう。変数値は変数定義への変更によって破壊され易いので、クライアント・プログラムを1つのアクティベーションから他のアクティベーションに簡単に切り換えることはできない。本発明は、プロセスが自然に終了するまで、クライアント・プログラムが同じメソッド・バージョン及び関連の変数定義を使用し続けることを可能にすることによってこの問題を解決する。「自然に」は、プロセスがそれの処理を終了し、そしてそれが最早中央プロセッサにおいて実行することがないように或いは中央プロセッサにおいて正規の過程で実行すべくスケジュールされないように停止することを意味する。換言すれば、プロセスは、他の何れかのプロセス(例えば、従来のメソッド保守機構)によって早めに停止させられることなく終了することを可能にされる。
【0030】
メソッド・ロケーション・アレイにおける識別されたサービス・プログラムの1つが要求プロセスに対するアクティブ・サービス・プログラム・リストにも存在する場合、メソッド呼出マネージャ170はそのサービス・プログラムにおけるメソッド・インプリメンテーションをアクセスして呼び出すことを知る(ブロック342及び350)。当該メソッド・ロケーション・アレイによって識別されたサービス・プログラムが要求プロセスに対するアクティブ・サービス・プログラム・リストに全く存在しない場合、メソッド呼出マネージャ170はサービス・プログラム名374から新たなサービス・プログラムをロードしようとする(第3A図のブロック365)。メソッド呼出マネージャ170は、コンピュータ・システム100のディレクトリ・サービスを使用することによって、当該サービス・プログラムに対するポインタにサービス・プログラム名374をマップする(ディレクトリ・サービスに関しては、第2図に関連した記述において説明した)。
【0031】
ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック343)、しかる後、制御を呼出メソッドに戻す(ブロック344)。サービス・プログラムのロードが成功である場合、メソッド呼出マネージャ170は、現在のプロセスに対するアクティブ・サービス・プログラム・リストに新たなサービス・プログラムを加える(ブロック346)。そこで、メソッド呼出マネージャ170は、最も新しいサービス・プログラムに対するエレメント・ポインタがメソッド・ロケーション・アレイに存在するかどうか(当該クラスのメソッドのうちのどれかが最新のサービス・プログラムを使用して呼び出されたかどうか)をチェックする(ブロック349)。その結果が否定的である場合、メソッド呼出マネージャ170は、そのクラスに対する各メソッド・ロケーション・アレイ(即ち、メソッド・ロケーション・アレイ380、381、及び382)の前に新しいエレメントを加える。一旦これが達成されると、メソッド呼出マネージャ170は、前述のように、サービス・プログラムから適切なメソッドをアクセスして呼び出すように進行する(ブロック342及び350)。
【0032】
更なる特定の例として、メソッド呼出マネージャ170がプロセス1(第3D図)の下で実行するプログラムからの呼出を処理する方法と、メソッド呼出マネージャ170がプロセス32(第3D図)の下で実行するプログラムによる呼出を処理する方法とを比較することにする。両方のクライアント・プログラムがオブジェクト370の第1メソッド(即ち、メソッド・ロケーション・アレイ380によって表されたメソッド)を呼び出すものと仮定する。前述のように、各メソッドは、メソッド呼出マネージャ170を呼び出すこと及び呼び出されるべきメソッドのメソッド・シグニチャをメソッド呼出マネージャ170に送ることによってそれの呼出を行う。これは第3A図のブロック300に示される。ブロック305において、メソッド呼出マネージャ170はその呼出を正しいメソッド・テーブル・エントリに分解する。この例の両方の場合とも、エントリは第3B図のメソッド・テーブル・エントリ378となるであろう。
【0033】
ブロック310において、メソッド呼出マネージャ170は、メソッド370の第1メソッドに対するメソッド・アレイ・ポインタを適切なメソッド・ロケーション・アレイ(この場合、メソッド・ロケーション・アレイ380)までフォローするであろう。メソッド・ロケーション・アレイ380は、呼び出されたメソッドの3つの異なるバージョンがクライアントによって前に呼び出されたことを意味する3つのアレイ・エレメントを含む。従って、ブロック315は、プロセス1又はプロセス2のどちらが問題であるかに関係なく、肯定的に応えられるであろう。次に、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイ380におけるサービス・プログラムがアクティブ・プロセスによって前にロードされたかどうかを決定するであろう。前述のように、メソッド呼出マネージャは、第3D図のプロセス・リスト390を参照することによってこの決定を行うであろう。プロセス1の場合、メソッド呼出マネージャ170は、サービス・プログラムAが前にロードされたことを決定するであろう。従って、メソッド呼出マネージャ170はメソッド・ロケーション・アレイ380のエレメントに含まれた情報を使用してサービス・プログラムA(即ち、第3B図においてサービス・プログラム385として示される)のメソッド・インプリメンテーション2をアクセスして呼び出す(第3A図のブロック342及び350参照)。各サービス・プログラムは各メソッド・ロケーション・アレイに(即ち、第3B図に示されたように)論理的に接続されるけれども、各サービス・プログラムのアクティベーションも(第3D図に示されるように)それのプロセスに論理的に接続される。
【0034】
しかし、プロセス32の場合、メソッド呼出マネージャ170は、プロセス32によって前にロードされたサービスプログラムに関するロケーション情報をメソッド・ロケーション・アレイ380のアレイ・エレメントが全く持っていないことを確認するであろう。従って、メソッド呼出マネージャ170はサービス・プログラム名374から新しいサービス・プログラムをロードしようとするであろう(第3A図のブロック365)。ここでは、サービス・プログラム名374に含まれた名前はサービス・プログラムCという名前であると仮定する。
【0035】
ロードが不成功である場合、メソッド呼出マネージャ170はエラー信号を発生し(ブロック343)、しかる後、制御を呼出メソッドに戻す(ブロック344)。しかし、ここでは、サービス・プログラムCのロードが成功であると仮定する。そこで、メソッド呼出マネージャ170はプロセス32に対するアクティブ・サービス・プログラム・リストにサービス・プログラムCを加える(ブロック346)。そこで、メソッド呼出マネージャ170は、サービス・プログラムCがメソッド・ロケーション・アレイに存在するかどうか(即ち、当該クラスのメソッドのうち、サービス・プログラムCを使用して呼び出されたものがあるかどうか)をチェックする(ブロック349)。第3B図に示されるように、サービス・プログラムC(即ち、サービス・プログラム383)はメソッド・ロケーション・アレイに存在する。従って、メソッド呼出マネージャ170は、メソッド・ロケーション・アレイ380のエレメントcに含まれた情報を使用してサービス・プログラムCのメソッド・インプリメンテーション1をアクセスして呼び出すであろう(第3A図のブロック342及び350参照)。
【0036】
上記の例は、2つの異なるプロセス(即ち、プロセス1及びプロセス32)が共にオブジェクト370のオブジェクト・データ371を共用することができるが、それにもかかわらず、同じメソッドの2つの異なるバージョン(即ち、サービス・プログラムA及びCのバージョン)を使用することができるということを示していることに留意し欲しい。又、プロセス1は、それが自然に実行を終了した後に(即ち、サービス・プログラムAはアクティブ・サービス・プログラム・リスト395から除去されるため)、最新のメソッド・バージョン(即ち、その例におけるサービス・プログラムCのバージョン)へのアクセスを自動的に与えられるであろうと云うことも留意して欲しい。
【0037】
産業上の利用可能性
本発明の第1の利点は、先ずコンピュータ・システム又はそれの如何なるプログラムも休止させる必要なくオブジェクトを更新及び補修するという機能である。
【0038】
本発明の第2の利点は、実行プログラムがそれらの処理を完全に終了してしまうまでその実行プログラムが古いバージョンのオブジェクトを使用して実行し続けることを可能にすることである。
【0039】
本発明の第3の利点は、新しいオブジェクト・バージョンが利用可能になった時、たとえ複数のプログラムが同じオブジェクトの古いオブジェクト・バージョンをアクセスしようとしていても、本発明がそれらのプログラムに新しいオブジェクト・バージョンへのアクセスを与えることである。
【0040】
本発明の第4の利点は、複数のプログラムがサーバ・オブジェクトのデータを共用することを可能にするが、それにもかかわらず、同じ複数のプログラムがそのサーバ・オブジェクトのメソッドの異なるバージョンを利用することを可能にすることである。
【0041】
本発明の第5の目的は、複数のプログラムがサーバ・オブジェクトのデータを共用することを可能にするが、それにもかかわらず、同じ複数のプログラムのサブセットがそのサーバ・メソッドの新しいバージョンを利用することを可能にすることである。
【0042】
本願で示された実施例は、本発明及びそれの実用的な応用を最もよく説明するために、及び当業者が本発明を作り及び使用することを可能にするために与えられた。しかし、前記説明及び例が単に説明及び例示の目的で与えられたことは当業者には明らかであろう。前記の説明は網羅的であることを意図するものではなく、或いは、開示された形態そのものに本発明を限定しようとするものでもない。上記の教示するところに照らして、本発明の精神及び技術的範囲を逸脱することなく、多くの修正及び変更が可能である。以下に、本発明を開示する。
【0043】
(1) バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスは、前記メソッドの前記第2バージョンが作成された後に開始される、コンピュータ・システム。
(2) メソッド呼出マネージャが記録されたコンピュータ可読な記録媒体であって、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスを、前記メソッドの前記第2バージョンが作成された後に開始させる、
コンピュータ可読な記録媒体。
(3) 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを含む前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有し、前記第2プロセスを、前記メソッドの前記第2バージョンが作成された後に、開始させる、
方法。
(4) バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、コンピュータ・システム。
(5) メソッド呼出マネージャが記録されたコンピュータ可読な記録媒体であって、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成、利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとに、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、
コンピュータ可読な記録媒体。
(6) 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを含む前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記メソッド呼出マネージャは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記メソッドの前記第1バージョンが前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとは、前記クライアント・プログラムのかわりに前記データのすべてを共有させる、
方法。
【図面の簡単な説明】
第1図は、本発明のコンピュータ・システムのブロック図である。
第2図は、好適な実施例に従って、本発明のメソッド更新機構を実行するために使用されるステップを示す流れ図である。
第3A図は、好適な実施例に従って、本発明のメソッド呼出マネージャを実行するために使用されるステップを示す流れ図である。
第3B図は、好適な実施例において使用されるデータ構造のブロック図である。
第3C図は、好適な実施例において使用されるメソッド・アレイ・エレメントのブロック図である。
第3D図は、好適な実施例において使用されるアクティブなサービス・プログラム・トラッキング機構のブロック図である。
Claims (4)
- バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョン及び前記メソッドの前記第2バージョンは、前記クライアント・プログラムが使用する前記データのすべてを共有し、前記第2プロセスは、前記メソッドの前記第2バージョンが作成された後に開始される、コンピュータ・システム。 - 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを前記第2コンピュータ・システムに実現する前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記第2コンピュータ・システムは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記メソッドの前記第1バージョンは、前記コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記第2コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記第2コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョン及び前記メソッドの前記第2バージョンは、前記クライアント・プログラムが使用する前記データのすべてを共有し、前記第2プロセスを、前記メソッドの前記第2バージョンが作成された後に開始させる、
方法。 - バスと、
中央処理装置と、
前記バスを介して前記中央処理装置に接続されたコンピュータ・システム・メモリと、
マルチタスキング・オペレーティング・システムの制御の下に前記中央処理装置において実行される第1プロセスと、
前記第1プロセスの一部分として前記中央処理装置において実行されるクライアント・プログラムと、
前記コンピュータ・システム・メモリに記憶され、メソッド及びデータを含む少なくとも1つのオブジェクトとを含み、
前記メソッドは、前記コンピュータ・システム内に記憶され前記中央処理装置において実行されるとともに第1バージョンと第2バージョンとを有し、前記メソッドの前記第1バージョンが、その時点において前記クライアント・プログラムにより使用され、
メソッド呼出マネージャは、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を、前記メソッドの前記第1バージョンに経路指定するとともに、前記クライアント・プログラムが第2プロセスの一部として実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンへと経路指定しており、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとに、前記クライアント・プログラムが使用する前記データのすべてを共有させる、コンピュータ・システム。 - 第1コンピュータ・システムから第2コンピュータ・システムにコンピュータ・プログラムを伝送して該コンピュータ・プログラムを動作させる方法にして、
前記第1コンピュータ・システム及び前記第2コンピュータ・システムの間に接続を確立するステップと、
前記第1コンピュータ・システムから前記第2コンピュータ・システムにメソッド呼出マネージャを前記第2コンピュータ・システムに実現する前記コンピュータ・プログラムを伝送するステップと、
を含み、
前記第2コンピュータ・システムは、少なくとも1つのオブジェクトがコンピュータ・システム・メモリに記憶されるコンピュータ・システムにおいて使用され、前記少なくとも1つのオブジェクトは中央処理装置における実行のために前記コンピュータ・システム・メモリに記憶される第1バージョンと第2バージョンとを含むメソッド及びデータを含み、
前記メソッドの前記第1バージョンは、前記第2コンピュータ・システムにおける実行のために前記第2バージョンが作成・利用されるより前に、前記コンピュータ・システムにおける実行のために作成・利用され、
前記メソッド呼出マネージャは、前記第2コンピュータ・システムに対して、クライアント・プログラムが第1プロセスの一部分として前記中央処理装置において実行されている場合には、前記第1プロセスが自然に終了するまで前記クライアント・プログラムから生じた呼出を前記メソッドの前記第1バージョンに経路指定し、かつ第2プロセスの一部分として前記クライアント・プログラムが実行されている場合には、前記クライアント・プログラムからの呼出を前記メソッドの前記第2バージョンに経路指定し、前記メソッドの前記第1バージョンと前記メソッドの前記第2バージョンとに、前記クライアント・プログラムが使用する前記データのすべてを共有させる、
方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/542,147 US6112253A (en) | 1995-10-12 | 1995-10-12 | Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs |
US08/542,147 | 1995-10-12 | ||
PCT/US1996/015834 WO1997014091A1 (en) | 1995-10-12 | 1996-10-02 | Object-oriented method maintenance mechanism that does not require cessation of the computer system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10512079A JPH10512079A (ja) | 1998-11-17 |
JP3771589B2 true JP3771589B2 (ja) | 2006-04-26 |
Family
ID=24162538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51509697A Expired - Fee Related JP3771589B2 (ja) | 1995-10-12 | 1996-10-02 | コンピュータ・システム又はそれのプログラムの停止を必要としないオブジェクト指向メソッドを含むコンピュータ・システム、記録媒体、およびコンピュータ・プログラムの動作方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6112253A (ja) |
EP (1) | EP0855056B1 (ja) |
JP (1) | JP3771589B2 (ja) |
KR (1) | KR100301274B1 (ja) |
DE (1) | DE69618221T2 (ja) |
TW (1) | TW459200B (ja) |
WO (1) | WO1997014091A1 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE29611558U1 (de) | 1996-07-05 | 1997-08-07 | Siemens Ag | Vorrichtung zur Erfassung von analogen Meßsignalen für die akustische Diagnose von Prüflingen |
US6175855B1 (en) * | 1996-12-20 | 2001-01-16 | Siemens Aktiengesellschaft | Method for instantiating a class having different versions |
DE19734413C1 (de) * | 1997-08-08 | 1999-01-07 | Ericsson Telefon Ab L M | Verfahren zum Aufrüsten einer Datenbank |
US6442753B1 (en) * | 1997-08-28 | 2002-08-27 | International Business Machines Corporation | Apparatus and method for checking dependencies among classes in an object-oriented program |
US6272521B1 (en) * | 1997-12-08 | 2001-08-07 | Object Technology Licensing Corporation | Apparatus and method for allowing object-oriented programs created with different framework versions to communicate |
GB2334117A (en) * | 1998-02-04 | 1999-08-11 | Ibm | Performing semantic concurrency control in dispatching server computer client requests |
US6377546B1 (en) * | 1998-05-12 | 2002-04-23 | International Business Machines Corporation | Rate guarantees through buffer management |
EP1194841A2 (en) * | 1999-06-18 | 2002-04-10 | Symantec Corporation | Method and apparatus to rename open files |
US6560614B1 (en) * | 1999-11-12 | 2003-05-06 | Xosoft Inc. | Nonintrusive update of files |
DE19954407A1 (de) * | 1999-11-12 | 2001-05-17 | Gfs Systemtechnik Gmbh & Co Kg | Verfahren zum direkten Aufrufen einer Funktion mittels eines Softwaremoduls durch einen Prozessor mit einer Memory-Management-Unit (MMU) |
US6735774B1 (en) * | 2000-10-23 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for system call management |
US7031989B2 (en) * | 2001-02-26 | 2006-04-18 | International Business Machines Corporation | Dynamic seamless reconfiguration of executing parallel software |
US7010791B2 (en) * | 2001-09-20 | 2006-03-07 | Intel Corporation | Method for implementing multiple type hierarchies |
WO2004055685A1 (ja) * | 2002-12-18 | 2004-07-01 | International Business Machines Corporation | Webサービス提供システム、そのためのサーバ装置、コンピュータ・システムをWebサービス提供システムのためのサーバ装置として制御するための制御方法、および該制御方法を実行するためのプログラムおよび記録媒体 |
US6978452B2 (en) * | 2003-04-02 | 2005-12-20 | Beach Unlimited Llc | Upgrading digital media servers |
US20050039196A1 (en) * | 2003-08-13 | 2005-02-17 | Sasidharan Prasanth Nalini | Method and system for using a library |
GB2412192B (en) * | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
US7665077B2 (en) * | 2004-10-18 | 2010-02-16 | Microsoft Corporation | System and method for sharing objects between applications in a virtual runtime environment |
US8051426B2 (en) * | 2007-01-04 | 2011-11-01 | Microsoft Corporation | Co-routines native to a virtual execution environment |
US20090076628A1 (en) * | 2007-09-18 | 2009-03-19 | David Mark Smith | Methods and apparatus to upgrade and provide control redundancy in process plants |
US20090172645A1 (en) * | 2007-12-27 | 2009-07-02 | Sap Ag | Call stack evaluation to assure proper framework access |
CN102467832A (zh) * | 2010-11-04 | 2012-05-23 | 信诺科技有限公司 | 物件导向的复合功能电子书 |
CN103853527A (zh) | 2012-11-29 | 2014-06-11 | 国际商业机器公司 | 切换多线程程序中的对象锁定模式的方法和系统 |
US9509697B1 (en) * | 2014-09-15 | 2016-11-29 | Symantec Corporation | Systems and methods for authorizing attempts to access shared libraries |
JP6895803B2 (ja) * | 2017-05-24 | 2021-06-30 | 三菱電機株式会社 | プラント監視制御システムの保守計算機及び保守プログラム |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4500952A (en) * | 1980-05-23 | 1985-02-19 | International Business Machines Corporation | Mechanism for control of address translation by a program using a plurality of translation tables |
US4498132A (en) * | 1981-05-22 | 1985-02-05 | Data General Corporation | Data processing system using object-based information and a protection scheme for determining access rights to such information and using multilevel microcode techniques |
US4731734A (en) * | 1983-10-17 | 1988-03-15 | Data General Corporation | Digital computer system incorporating object-based addressing and access control and tables defining derivation of addresses of data from operands in instructions |
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
US5179703A (en) * | 1987-11-17 | 1993-01-12 | International Business Machines Corporation | Dynamically adaptive environment for computer programs |
US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
US5297283A (en) * | 1989-06-29 | 1994-03-22 | Digital Equipment Corporation | Object transferring system and method in an object based computer operating system |
US5187790A (en) * | 1989-06-29 | 1993-02-16 | Digital Equipment Corporation | Server impersonation of client processes in an object based computer operating system |
AU650242B2 (en) * | 1989-11-28 | 1994-06-16 | International Business Machines Corporation | Methods and apparatus for dynamically managing input/output (I/O) connectivity |
US5495610A (en) * | 1989-11-30 | 1996-02-27 | Seer Technologies, Inc. | Software distribution system to build and distribute a software release |
US5181162A (en) * | 1989-12-06 | 1993-01-19 | Eastman Kodak Company | Document management and production system |
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
JP2591217B2 (ja) * | 1990-02-06 | 1997-03-19 | 日本電気株式会社 | オブジェクトクラス定義情報実装装置 |
US5265206A (en) * | 1990-10-23 | 1993-11-23 | International Business Machines Corporation | System and method for implementing a messenger and object manager in an object oriented programming environment |
EP0496494A3 (en) * | 1991-01-22 | 1993-05-12 | International Business Machines Corporation | Software maintenance system |
US5263155A (en) * | 1991-02-21 | 1993-11-16 | Texas Instruments Incorporated | System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks |
JPH05257664A (ja) * | 1991-12-12 | 1993-10-08 | Internatl Business Mach Corp <Ibm> | バージョン独立のオブジェクト指向アプリケーション・プログラムを生成するシステム及び方法 |
US5276901A (en) * | 1991-12-16 | 1994-01-04 | International Business Machines Corporation | System for controlling group access to objects using group access control folder and group identification as individual user |
GB9126779D0 (en) * | 1991-12-17 | 1992-02-12 | Int Computers Ltd | Security mechanism for a computer system |
US5493661A (en) * | 1992-03-06 | 1996-02-20 | International Business Machines Corporation | Method and system for providing a program call to a dispatchable unit's base space |
US5414812A (en) * | 1992-03-27 | 1995-05-09 | International Business Machines Corporation | System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem |
US5274823A (en) * | 1992-03-31 | 1993-12-28 | International Business Machines Corporation | Interrupt handling serialization for process level programming |
US5327562A (en) * | 1992-05-06 | 1994-07-05 | Microsoft Corporation | Method for implementing virtual function tables in a compiler for an object-oriented programming language |
US5339430A (en) * | 1992-07-01 | 1994-08-16 | Telefonaktiebolaget L M Ericsson | System for dynamic run-time binding of software modules in a computer system |
US5410703A (en) * | 1992-07-01 | 1995-04-25 | Telefonaktiebolaget L M Ericsson | System for changing software during computer operation |
US5392433A (en) * | 1992-09-25 | 1995-02-21 | International Business Machines Corporation | Method and apparatus for intraprocess locking of a shared resource in a computer system |
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
JPH06110678A (ja) * | 1992-09-30 | 1994-04-22 | Toshiba Corp | プログラム実行方式及び実行プログラムの動的変更方法 |
US5596754A (en) * | 1992-10-29 | 1997-01-21 | Digital Equipment Corporation | Method for performing private lock management |
US5414852A (en) * | 1992-10-30 | 1995-05-09 | International Business Machines Corporation | Method for protecting data in a computer system |
US5359730A (en) * | 1992-12-04 | 1994-10-25 | International Business Machines Corporation | Method of operating a data processing system having a dynamic software update facility |
JPH06187134A (ja) * | 1992-12-18 | 1994-07-08 | Fujitsu Ltd | ロードモジュール更新方法 |
JPH076106A (ja) * | 1992-12-18 | 1995-01-10 | Internatl Business Mach Corp <Ibm> | ソフトウェア配布方法及びシステム |
US5535389A (en) * | 1993-01-26 | 1996-07-09 | International Business Machines Corporation | Business process objects with associated attributes such as version identifier |
JPH07200279A (ja) * | 1993-12-28 | 1995-08-04 | Toshiba Corp | オブジェクト管理システム及びネットワーク管理システム |
US5586304A (en) * | 1994-09-08 | 1996-12-17 | Compaq Computer Corporation | Automatic computer upgrading |
US5682533A (en) * | 1994-09-27 | 1997-10-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Updating software within a telecommunications switch without interrupting existing communication and neither moving nor converting data |
-
1995
- 1995-10-12 US US08/542,147 patent/US6112253A/en not_active Expired - Lifetime
-
1996
- 1996-01-16 TW TW085100437A patent/TW459200B/zh not_active IP Right Cessation
- 1996-01-31 US US08/594,204 patent/US6029206A/en not_active Expired - Fee Related
- 1996-10-02 DE DE69618221T patent/DE69618221T2/de not_active Expired - Lifetime
- 1996-10-02 KR KR1019980702504A patent/KR100301274B1/ko not_active IP Right Cessation
- 1996-10-02 EP EP96937647A patent/EP0855056B1/en not_active Expired - Lifetime
- 1996-10-02 JP JP51509697A patent/JP3771589B2/ja not_active Expired - Fee Related
- 1996-10-02 WO PCT/US1996/015834 patent/WO1997014091A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP0855056A1 (en) | 1998-07-29 |
DE69618221T2 (de) | 2002-08-22 |
US6029206A (en) | 2000-02-22 |
JPH10512079A (ja) | 1998-11-17 |
TW459200B (en) | 2001-10-11 |
WO1997014091A1 (en) | 1997-04-17 |
EP0855056A4 (en) | 1999-01-13 |
EP0855056B1 (en) | 2001-12-19 |
US6112253A (en) | 2000-08-29 |
KR19990064026A (ko) | 1999-07-26 |
DE69618221D1 (de) | 2002-01-31 |
KR100301274B1 (ko) | 2001-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3771589B2 (ja) | コンピュータ・システム又はそれのプログラムの停止を必要としないオブジェクト指向メソッドを含むコンピュータ・システム、記録媒体、およびコンピュータ・プログラムの動作方法 | |
US6119145A (en) | Multithreaded client application storing a separate context for each transaction thus allowing threads to resume transactions started by other client threads | |
US6324543B1 (en) | Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment | |
JP4891225B2 (ja) | 依存性グラフのパラメータのスコーピング | |
US8473906B2 (en) | Systems and methods for parallel distributed programming | |
US6922827B2 (en) | Iterative software development environment with prioritized build rules | |
KR970008524B1 (ko) | 멀티프로세서 시스템의 시스템 자원 할당 제어 방법 | |
US6157960A (en) | Technique for programmatically creating distributed object programs | |
US6892202B2 (en) | Optimistic transaction compiler | |
JPH02188833A (ja) | アプリケーションとデータベース管理システム間の相互通信システム及び方法 | |
EP1645959A2 (en) | Grouping of run-time components in entity domains | |
US7721278B2 (en) | Modular server architecture for multi-environment HTTP request processing | |
JP2526020B2 (ja) | 例外条件処理方法及び装置 | |
US20060117320A1 (en) | Sharing dynamically changing resources in software systems | |
JPH08506912A (ja) | ユーザー・インターフェイスを含むインターセプション・システムと方法 | |
JP3019915B2 (ja) | 手続き呼出し方法 | |
US20230419160A1 (en) | 3-tier quantum computing execution model | |
US11748074B2 (en) | User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods | |
US20220308940A1 (en) | Allocating and using file descriptors for an application executing on a plurality of nodes | |
JP3293821B2 (ja) | 動的リンクシステム | |
JPH0229867A (ja) | 設計実行管理方式 | |
JPH09212364A (ja) | 実行時オブジェクト・インスタンス管理のための方法及びシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060105 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20060201 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060210 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |