JPH10111802A - 分散オブジェクトシステムの応用分野におけるコード生成器 - Google Patents
分散オブジェクトシステムの応用分野におけるコード生成器Info
- Publication number
- JPH10111802A JPH10111802A JP9178588A JP17858897A JPH10111802A JP H10111802 A JPH10111802 A JP H10111802A JP 9178588 A JP9178588 A JP 9178588A JP 17858897 A JP17858897 A JP 17858897A JP H10111802 A JPH10111802 A JP H10111802A
- Authority
- JP
- Japan
- Prior art keywords
- symbol table
- network
- loading
- program
- schema
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/465—Distributed object oriented systems
Abstract
(57)【要約】
【課題】 分散オブジェクトシステムにおいて、ネット
ワーク上に存在するオブジェクトを利用して、アプリケ
ーションを組み立てて行く場合に、オブジェクトの情報
を定型化し、それを利用することによって、自動的にコ
ードを生成し、アプリケーション開発の効率を高める。 【解決手段】 ネットワーク上の言語に依存しないオブ
ジェクトを自動的に組み立てて分散オブジェクトシステ
ム上で用いられるネットワーク・アプリケーションを作
成する技術は、シンボル表とプログラム・テンプレート
を用いる。 ネットワーク・アプリケーションのスキー
マ表現は視覚的なアプリケーション構築器によって形成
される。スキーマ表現は以前に定義された分散オブジェ
クトを表現したものの間に接続を定義する。 これらの
接続は、 コンポーネントと名づけられた分散オブジェ
クト表現であるパーツ、 プラグ、 ソケットの間で形成
される。
ワーク上に存在するオブジェクトを利用して、アプリケ
ーションを組み立てて行く場合に、オブジェクトの情報
を定型化し、それを利用することによって、自動的にコ
ードを生成し、アプリケーション開発の効率を高める。 【解決手段】 ネットワーク上の言語に依存しないオブ
ジェクトを自動的に組み立てて分散オブジェクトシステ
ム上で用いられるネットワーク・アプリケーションを作
成する技術は、シンボル表とプログラム・テンプレート
を用いる。 ネットワーク・アプリケーションのスキー
マ表現は視覚的なアプリケーション構築器によって形成
される。スキーマ表現は以前に定義された分散オブジェ
クトを表現したものの間に接続を定義する。 これらの
接続は、 コンポーネントと名づけられた分散オブジェ
クト表現であるパーツ、 プラグ、 ソケットの間で形成
される。
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は分散計算機システ
ム、クライアント-サーバ・システム、 およびオブジェ
クト指向プログラミングに関わるものである。具体的に
は、アプリケーションプログラムを分散オブジェクトシ
ステム上に作成し、インストールする技術に関する発明
である。
ム、クライアント-サーバ・システム、 およびオブジェ
クト指向プログラミングに関わるものである。具体的に
は、アプリケーションプログラムを分散オブジェクトシ
ステム上に作成し、インストールする技術に関する発明
である。
【0002】
【従来の技術】オブジェクト指向に関する方法論は過去
数年に渡ってますます注目を集めてきた。これは従来的
なプログラミングの方法によるソフトウェア開発では時
間と予算がかかり過ぎることによる。オブジェクト指向
のプログラミング方法論は手続きよりもむしろデータ操
作にフォーカスを置く。したがって、プログラマーにと
っては実世界の問題に対してより直観的なアプローチが
可能になる。加えて、オブジェクトとはそれに関係する
データと手続きをカプセル化したものであり、このオブ
ジェクトのインタフェースにあるデータと手続きだけを
アクセス可能にし、それ以外の他のプログラムの部分を
切り分けておくことができる。したがって、あるオブジ
ェクトのデータと手続き部分の変更は他の部分に影響し
ない。このやり方は、 あるオブジェクトの仕様変更が
他のオブジェクトを干渉しない点で、 従来的なプログ
ラミング方法論に比べてコードのメンテナンスをより容
易にするものである。さらには、オブジェクトにはモジ
ュールという考え方が内在しているため、あるオブジェ
クトを他のプログラムの中で転用することができる。し
たがって、 プログラマーは「試用され、機能する」オ
ブジェクトをライブラリとして貯め込み、何度も他のア
プリケーションで使うことができる。信頼性のあるコー
ドを繰り返し使うことは、ソフトウェア全体の信頼性を
高め、開発時間を短縮することになる。
数年に渡ってますます注目を集めてきた。これは従来的
なプログラミングの方法によるソフトウェア開発では時
間と予算がかかり過ぎることによる。オブジェクト指向
のプログラミング方法論は手続きよりもむしろデータ操
作にフォーカスを置く。したがって、プログラマーにと
っては実世界の問題に対してより直観的なアプローチが
可能になる。加えて、オブジェクトとはそれに関係する
データと手続きをカプセル化したものであり、このオブ
ジェクトのインタフェースにあるデータと手続きだけを
アクセス可能にし、それ以外の他のプログラムの部分を
切り分けておくことができる。したがって、あるオブジ
ェクトのデータと手続き部分の変更は他の部分に影響し
ない。このやり方は、 あるオブジェクトの仕様変更が
他のオブジェクトを干渉しない点で、 従来的なプログ
ラミング方法論に比べてコードのメンテナンスをより容
易にするものである。さらには、オブジェクトにはモジ
ュールという考え方が内在しているため、あるオブジェ
クトを他のプログラムの中で転用することができる。し
たがって、 プログラマーは「試用され、機能する」オ
ブジェクトをライブラリとして貯め込み、何度も他のア
プリケーションで使うことができる。信頼性のあるコー
ドを繰り返し使うことは、ソフトウェア全体の信頼性を
高め、開発時間を短縮することになる。
【0003】
【発明が解決しようとする課題】分散オブジェクトシス
テムにおいてオブジェクト指向プログラミングを用いる
利点は多いが、このことを実装(インプリメンテーショ
ン、implementation)するとなると大きな問題が残る。
一般に、プログラミングの過程でソフトウェアの再利用
することは、オブジェクト指向の世界においても難しい
ことである。特に、プログラマーは自分の理解があまり
及ばないようなコードを用いるのを嫌がるものである。
分散オブジェクトシステムではこの問題は倍化する。あ
るコードの開発者のコメントやインストラクションは新
しいアプリケーションの開発者の耳には届きにくくなる
からである。したがって、 分散システムからは多くの
コードが利用可能でありその恩恵を被ることが本来でき
るはずであるのに、実際は既存のコードを書き直すこと
を余儀なくされることになる。
テムにおいてオブジェクト指向プログラミングを用いる
利点は多いが、このことを実装(インプリメンテーショ
ン、implementation)するとなると大きな問題が残る。
一般に、プログラミングの過程でソフトウェアの再利用
することは、オブジェクト指向の世界においても難しい
ことである。特に、プログラマーは自分の理解があまり
及ばないようなコードを用いるのを嫌がるものである。
分散オブジェクトシステムではこの問題は倍化する。あ
るコードの開発者のコメントやインストラクションは新
しいアプリケーションの開発者の耳には届きにくくなる
からである。したがって、 分散システムからは多くの
コードが利用可能でありその恩恵を被ることが本来でき
るはずであるのに、実際は既存のコードを書き直すこと
を余儀なくされることになる。
【0004】分散オブジェクトモデルにおいて現在のコ
ードを共有化する技術は不十分である。現在のコード共
有化とは、ライブラリの使用、一般に公開されているデ
ィレクトリのヘッダ・ファイルの使用、広く流布した文
書(電子的にも紙の形でも)の使用などが含まれる。こ
れらの方法は、しかしながら、分散オブジェクト環境に
は充分なじまないものである。分散オブジェクト環境で
は、再利用される単位がファイル・ベースではなく、イ
ンタフェース・ベースなのである。さらにまた、 分散
環境における再利用の方法においては、プログラマーも
開発されるコードも「共同体」意識をさらに高める努力
をする必要がある。このように、分散オブジェクトシス
テムにおけるオブジェクトの再利用をより活発化したい
ならば、ユーザから見たオブジェクトの識別、目的、利
用法などを容易にするべきである。
ードを共有化する技術は不十分である。現在のコード共
有化とは、ライブラリの使用、一般に公開されているデ
ィレクトリのヘッダ・ファイルの使用、広く流布した文
書(電子的にも紙の形でも)の使用などが含まれる。こ
れらの方法は、しかしながら、分散オブジェクト環境に
は充分なじまないものである。分散オブジェクト環境で
は、再利用される単位がファイル・ベースではなく、イ
ンタフェース・ベースなのである。さらにまた、 分散
環境における再利用の方法においては、プログラマーも
開発されるコードも「共同体」意識をさらに高める努力
をする必要がある。このように、分散オブジェクトシス
テムにおけるオブジェクトの再利用をより活発化したい
ならば、ユーザから見たオブジェクトの識別、目的、利
用法などを容易にするべきである。
【0005】分散オブジェクト環境におけるプログラミ
ングのもう一つの挑戦課題は、「反復使用語句(boiler
plate)」型のコンピュータコードをより多く供給する
ことである。これにより、分散オブジェクトシステムの
中で動くよう開発されたオブジェクトやアプリケーショ
ンは、そのシステムの中でより確実に動作するようにな
る。特に、C++ オブジェクトのような通常のオブジェク
トが分散オブジェクトとして機能できるような基礎的な
コンピュータ・コード体系が供給される必要がある。し
かしながら、既存のオブジェクトを最大限再利用したい
と願うプログラマーは、 同様な、しかし多少異なった
挑戦課題に直面している。プログラマーが開発中のアプ
リケーションの中のオブジェクトを使いたいと思ったと
きは、そのオブジェクトの開発者など基礎的な情報を明
記し初期化情報なども合わせて持たねばならない。さら
に、いろいろなメイクファイル (makefile; システム
のその環境でのインストール手続きファイル)やヘッダ
ファイル、ライブラリの依存関係などが、他のコードの
中に送られる前に全部付加されていなければならない。
さらにはプログラマー自身によっていろいろな例外処理
機構、デバッグやトレースの情報なども付加されなけれ
ばならない。繰り返すと、プログラミング技法に習熟し
ている人たちにはよく知られていることであるが、その
ようなルーチンを実装(インプリメンテーション)する
ことは労多く、繰り返しの多い、誤りを犯しがちな作業
である。適切にコード化されたオブジェクトのアプリケ
ーションの開発は極度に時間を喰う大変な仕事である。
それゆえに、このような「ハウスキーピング(housekee
ping)、つまりプログラムを適切に実行させるためにし
なければならないシステムタスクを行う」ようなコード
の作成は、自動化されることが望ましいのである。
ングのもう一つの挑戦課題は、「反復使用語句(boiler
plate)」型のコンピュータコードをより多く供給する
ことである。これにより、分散オブジェクトシステムの
中で動くよう開発されたオブジェクトやアプリケーショ
ンは、そのシステムの中でより確実に動作するようにな
る。特に、C++ オブジェクトのような通常のオブジェク
トが分散オブジェクトとして機能できるような基礎的な
コンピュータ・コード体系が供給される必要がある。し
かしながら、既存のオブジェクトを最大限再利用したい
と願うプログラマーは、 同様な、しかし多少異なった
挑戦課題に直面している。プログラマーが開発中のアプ
リケーションの中のオブジェクトを使いたいと思ったと
きは、そのオブジェクトの開発者など基礎的な情報を明
記し初期化情報なども合わせて持たねばならない。さら
に、いろいろなメイクファイル (makefile; システム
のその環境でのインストール手続きファイル)やヘッダ
ファイル、ライブラリの依存関係などが、他のコードの
中に送られる前に全部付加されていなければならない。
さらにはプログラマー自身によっていろいろな例外処理
機構、デバッグやトレースの情報なども付加されなけれ
ばならない。繰り返すと、プログラミング技法に習熟し
ている人たちにはよく知られていることであるが、その
ようなルーチンを実装(インプリメンテーション)する
ことは労多く、繰り返しの多い、誤りを犯しがちな作業
である。適切にコード化されたオブジェクトのアプリケ
ーションの開発は極度に時間を喰う大変な仕事である。
それゆえに、このような「ハウスキーピング(housekee
ping)、つまりプログラムを適切に実行させるためにし
なければならないシステムタスクを行う」ようなコード
の作成は、自動化されることが望ましいのである。
【0006】不幸なことに、現存する多くのオブジェク
トは分散オペレーティングシステム上に置いて機能する
ようには書かれていない。分散システムのためのオブジ
ェクトの実装とは、現存するオブジェクト・ソフトウェ
アの再編成を要求するものとなる。このことは、既存の
プログラミング・オブジェクトが分散オブジェクトシス
テム上で容易に利用可能でないと同様、オブジェクト・
プログラミング方法論の魅力を半減させるものである。
トは分散オペレーティングシステム上に置いて機能する
ようには書かれていない。分散システムのためのオブジ
ェクトの実装とは、現存するオブジェクト・ソフトウェ
アの再編成を要求するものとなる。このことは、既存の
プログラミング・オブジェクトが分散オブジェクトシス
テム上で容易に利用可能でないと同様、オブジェクト・
プログラミング方法論の魅力を半減させるものである。
【0007】分散オブジェクトシステムの上で分散オブ
ジェクトを実装する上では、さらにオブジェクトがイン
ストールされた時点でその存在をアナウンスする必要が
ある。すべてのクライアントの要求は、オブジェクト要
求ブローカー (object request broker:ORB)を通じて
処理される。したがって、ORBは常にその時点で現存す
るオブジェクトを把握している必要がある。さらには、
分散オブジェクトシステムにおいては、開発途中にある
オブジェクトと分散システム上のユーザに既に利用可能
になったオブジェクトを明示して区別しておくことが望
ましい。このような公開情報を供給することは、それで
なくても開発の重荷と分散オブジェクトシステムの利点
を利用するための「ハウスキーピング」労働に追われる
プログラマーにとって、新たな困難を課すことになる。
ジェクトを実装する上では、さらにオブジェクトがイン
ストールされた時点でその存在をアナウンスする必要が
ある。すべてのクライアントの要求は、オブジェクト要
求ブローカー (object request broker:ORB)を通じて
処理される。したがって、ORBは常にその時点で現存す
るオブジェクトを把握している必要がある。さらには、
分散オブジェクトシステムにおいては、開発途中にある
オブジェクトと分散システム上のユーザに既に利用可能
になったオブジェクトを明示して区別しておくことが望
ましい。このような公開情報を供給することは、それで
なくても開発の重荷と分散オブジェクトシステムの利点
を利用するための「ハウスキーピング」労働に追われる
プログラマーにとって、新たな困難を課すことになる。
【0008】プログラマーにとってもユーザにとって
も、分散オブジェクトを作りインストールするのに相対
的に透明性のあるやり方が望ましい。ここで透明性と
は、異なった計算機上、異なったプログラミング言語で
開発されたオブジェクトでも、さらなるコードの書き換
えなど不当な労働をユーザに課すことなく、分散システ
ム上で利用可能にできるという意味である。このよう
に、分散オブジェクトの形成とインストールに関して
は、プログラマーやユーザが分散オブジェクトシステム
の細かいことまで知らずともできるようにすることが望
ましい。さらには、分散されることを念頭に置かずに開
発されたオブジェクトもプログラマーやユーザから見て
相対的に透明に分散オブジェクトに作り替えられればも
っと喜ばしい。
も、分散オブジェクトを作りインストールするのに相対
的に透明性のあるやり方が望ましい。ここで透明性と
は、異なった計算機上、異なったプログラミング言語で
開発されたオブジェクトでも、さらなるコードの書き換
えなど不当な労働をユーザに課すことなく、分散システ
ム上で利用可能にできるという意味である。このよう
に、分散オブジェクトの形成とインストールに関して
は、プログラマーやユーザが分散オブジェクトシステム
の細かいことまで知らずともできるようにすることが望
ましい。さらには、分散されることを念頭に置かずに開
発されたオブジェクトもプログラマーやユーザから見て
相対的に透明に分散オブジェクトに作り替えられればも
っと喜ばしい。
【0009】
【発明を解決するための手段】本発明の実施例は、ネッ
トワーク上の言語に依存しないオブジェクトを自動的に
組み立てネットワーク・アプリケーションとする方法に
関するものである。このネットワーク・アプリケーショ
ンは分散オブジェクトシステムで使われるものとする。
このネットワーク・アプリケーションのモデル,あるい
はスキーマ表現は、コンポジション構築器の中で形成さ
れる。このコンポジション構築器はスキーマ表現を作成
するのに適した開発ツールとなりうる。一度スキーマ表
現が用意されると、ネットワーク・アプリケーションの
スキーマ表現を受け取る一ステップが実行される。スキ
ーマ表現はそれ以前に定義された数多く分散オブジェク
トのリンクを定義している。次に、ネットワーク・アプ
リケーションのスキーマ表現はシンボル表上にロードさ
れ、スキーマ表現の部分はシンボル表のエントリとして
貯えられる。次のステップでは、生成されるべきソース
プログラムのファイルが少なくとも一つ決定し、そのソ
ースファイルを生成するのに対応するプログラムのテン
プレートが決まる。このテンプレートはシンボル表の複
数のエントリへのレファランスを含んでいる。次のステ
ップでは、シンボル表の多数のエントリが、少なくとも
一つのプログラムテンプレートに組み合わされ、対応す
るプログラム・ソースを生成することになる。このプロ
グラムのソースファイルはコンパイルするとネットワー
ク・アプリケーションの一部になるようにできている。
トワーク上の言語に依存しないオブジェクトを自動的に
組み立てネットワーク・アプリケーションとする方法に
関するものである。このネットワーク・アプリケーショ
ンは分散オブジェクトシステムで使われるものとする。
このネットワーク・アプリケーションのモデル,あるい
はスキーマ表現は、コンポジション構築器の中で形成さ
れる。このコンポジション構築器はスキーマ表現を作成
するのに適した開発ツールとなりうる。一度スキーマ表
現が用意されると、ネットワーク・アプリケーションの
スキーマ表現を受け取る一ステップが実行される。スキ
ーマ表現はそれ以前に定義された数多く分散オブジェク
トのリンクを定義している。次に、ネットワーク・アプ
リケーションのスキーマ表現はシンボル表上にロードさ
れ、スキーマ表現の部分はシンボル表のエントリとして
貯えられる。次のステップでは、生成されるべきソース
プログラムのファイルが少なくとも一つ決定し、そのソ
ースファイルを生成するのに対応するプログラムのテン
プレートが決まる。このテンプレートはシンボル表の複
数のエントリへのレファランスを含んでいる。次のステ
ップでは、シンボル表の多数のエントリが、少なくとも
一つのプログラムテンプレートに組み合わされ、対応す
るプログラム・ソースを生成することになる。このプロ
グラムのソースファイルはコンパイルするとネットワー
ク・アプリケーションの一部になるようにできている。
【0010】ある実施例では、スキーマ(schematic)
表現は視覚的なアプリケーション作成器によって形成さ
れ、クライアント・オブジェクトかサーバ・オブジェク
トに整形される。また、分散オブジェクトの複数リンク
はパーツ、プラグ、ソケットといったコンポーネントの
組み合わせによって形成される。ここでロードを行なう
モジュールでは、スキーマ表現のパーツ、プラグ、ソケ
ットをシンボル表にロードする過程を含む。
表現は視覚的なアプリケーション作成器によって形成さ
れ、クライアント・オブジェクトかサーバ・オブジェク
トに整形される。また、分散オブジェクトの複数リンク
はパーツ、プラグ、ソケットといったコンポーネントの
組み合わせによって形成される。ここでロードを行なう
モジュールでは、スキーマ表現のパーツ、プラグ、ソケ
ットをシンボル表にロードする過程を含む。
【0011】シンボル表の実施例では、シンボル表は対
応する値にマップする識別子を含む。多数のエントリを
結びつける操作は、プログラム・テンプレートの中の識
別子へのレファランスをシンボル表からの適当な値に置
換することで行なわれる。
応する値にマップする識別子を含む。多数のエントリを
結びつける操作は、プログラム・テンプレートの中の識
別子へのレファランスをシンボル表からの適当な値に置
換することで行なわれる。
【0012】他の実施例では、ネットワーク・アプリケ
ーションのスキーマ表現を視覚的なアプリケーション生
成器の中に生成するステップと、プログラム・ソース・
ファイルをネットワーク・アプリケーションにコンパイ
ルし実行可能形式にリンクするようなオブジェクト開発
機能を要求するステップを含む。
ーションのスキーマ表現を視覚的なアプリケーション生
成器の中に生成するステップと、プログラム・ソース・
ファイルをネットワーク・アプリケーションにコンパイ
ルし実行可能形式にリンクするようなオブジェクト開発
機能を要求するステップを含む。
【0013】本発明の一つの実施例は、シンボル表の情
報をロードする手法に関するものである。この実施例は
ネットワーク・アプリケーションのスキーマ表現をロー
ドする計算機による方法である。これにより、ネットワ
ーク上の言語に依存しないオブジェクトを分散オブジェ
クト・システムの中で使用するネットワーク・アプリケ
ーションに仕立てあげるのを自動化するのを補助する。
シンボル表は多数の識別子を対応する多数の値にマップ
するよう変換される。スキーマ表現は、値を持つ識別子
に対応する要素を含んでいる。この方法はどの順序で実
行されてもよい、いろいろなステップから成る。最初の
ステップでは、スキーマ表現のトップレベルにあるシン
ボルはシンボル表にロードされ、トップレベル・シンボ
ルに関連した識別子は対応する値を持つようになる。二
番目のステップでは、スキーマ表現のパーツがシンボル
表上にロードされ、そのパーツに関連した識別子は対応
する値にマップされる。三番目のステップでは、スキー
マ表現の接続関係はシンボル表上にロードされ、接続に
関連した識別子は対応する値にマップされる。他の実施
例では、ファイル記述子、プラグ、ソケットを同様なや
り方でロードするステップを含む。
報をロードする手法に関するものである。この実施例は
ネットワーク・アプリケーションのスキーマ表現をロー
ドする計算機による方法である。これにより、ネットワ
ーク上の言語に依存しないオブジェクトを分散オブジェ
クト・システムの中で使用するネットワーク・アプリケ
ーションに仕立てあげるのを自動化するのを補助する。
シンボル表は多数の識別子を対応する多数の値にマップ
するよう変換される。スキーマ表現は、値を持つ識別子
に対応する要素を含んでいる。この方法はどの順序で実
行されてもよい、いろいろなステップから成る。最初の
ステップでは、スキーマ表現のトップレベルにあるシン
ボルはシンボル表にロードされ、トップレベル・シンボ
ルに関連した識別子は対応する値を持つようになる。二
番目のステップでは、スキーマ表現のパーツがシンボル
表上にロードされ、そのパーツに関連した識別子は対応
する値にマップされる。三番目のステップでは、スキー
マ表現の接続関係はシンボル表上にロードされ、接続に
関連した識別子は対応する値にマップされる。他の実施
例では、ファイル記述子、プラグ、ソケットを同様なや
り方でロードするステップを含む。
【0014】
1. 物理的実施例と分散オブジェクトシステムの背景 本発明は分散オブジェクトシステムに向けてのものであ
り、添付した図のようなある望ましい形での実施例に関
して詳述を行なう。本発明は、CORBA のもとで定義され
たものかあるいは適切な仕様のものであれば、どの分散
オブジェクトシステムであれば実行可能となる。しかし
ながら、図で示したように、本発明の実施例に関して
は、オブジェクト・管理・グループ(Object Managemen
t Group:OMG) 改訂2.0版(1995年7月)によるCORBA
の仕様で実装されたオブジェクト要求ブローカ(Object
Request Broker:ORB) を主に念頭に置いて行なう。図
1は本発明の実施例を実装する上で適当な代表的な分散
オブジェクトシステムの全体像を示している。
り、添付した図のようなある望ましい形での実施例に関
して詳述を行なう。本発明は、CORBA のもとで定義され
たものかあるいは適切な仕様のものであれば、どの分散
オブジェクトシステムであれば実行可能となる。しかし
ながら、図で示したように、本発明の実施例に関して
は、オブジェクト・管理・グループ(Object Managemen
t Group:OMG) 改訂2.0版(1995年7月)によるCORBA
の仕様で実装されたオブジェクト要求ブローカ(Object
Request Broker:ORB) を主に念頭に置いて行なう。図
1は本発明の実施例を実装する上で適当な代表的な分散
オブジェクトシステムの全体像を示している。
【0015】分散オブジェクトシステム10は、図1に記
号で示したように、典型的にはORB(Object Request Br
oker)11を含んでいる。ORB 11はクライアントからの呼
びかけをサーバ (遠隔オブジェクト) に伝えその答を
返すのに必要なすべての情報、すなわち、位置、送信メ
カニズム、設備を供給する。クライアントとサーバは同
じプロセスに同居している場合もあれば、同じマシンの
違うプロセス、異なるマシンの場合もある。議論の都合
上、クライアント20は分散オブジェクトに何か操作を起
こすコードであるとし、それ自身が分散オブジェクトや
プロセスの形態をとっているかどうかは問わないことに
する。分散オブジェクトの表現にはいろいろな方法があ
りうる。この例では分散オブジェクトはアプリケーショ
ン開発者によって用意された C++ のオブジェクトであ
ってもよい。あるいは、分散オブジェクトは視覚的アプ
リケーション構築器(視覚的アプリケーションビルダ)
15で実装されたものかも知れない。この視覚的アプリケ
ーション構築器は、新オブジェクトを実装するにあた
り、開発者に画面からカタログでオブジェクトの型を選
別し、他からの必要に応じてそのオブジェクトのもつサ
ービス機能 (属性、引数、結果など)を接合するもの
である。
号で示したように、典型的にはORB(Object Request Br
oker)11を含んでいる。ORB 11はクライアントからの呼
びかけをサーバ (遠隔オブジェクト) に伝えその答を
返すのに必要なすべての情報、すなわち、位置、送信メ
カニズム、設備を供給する。クライアントとサーバは同
じプロセスに同居している場合もあれば、同じマシンの
違うプロセス、異なるマシンの場合もある。議論の都合
上、クライアント20は分散オブジェクトに何か操作を起
こすコードであるとし、それ自身が分散オブジェクトや
プロセスの形態をとっているかどうかは問わないことに
する。分散オブジェクトの表現にはいろいろな方法があ
りうる。この例では分散オブジェクトはアプリケーショ
ン開発者によって用意された C++ のオブジェクトであ
ってもよい。あるいは、分散オブジェクトは視覚的アプ
リケーション構築器(視覚的アプリケーションビルダ)
15で実装されたものかも知れない。この視覚的アプリケ
ーション構築器は、新オブジェクトを実装するにあた
り、開発者に画面からカタログでオブジェクトの型を選
別し、他からの必要に応じてそのオブジェクトのもつサ
ービス機能 (属性、引数、結果など)を接合するもの
である。
【0016】オブジェクト開発器(オブジェクト開発フ
ァシリティ、object development facility)16は分散
オブジェクトを単に生成し、インストールするものであ
る。これは開発したオブジェクトを分散オブジェクトの
コードに包み込みカプセル化するものである。このよう
に、オブジェクト開発器16は開発したオブジェクトをOR
B オブジェクト14に変換する。この例では、ORBオブジ
ェクト14は図の中の位置からサーバとして示されてい
る。開発者はORBオブジェクトとのインタフェースを定
義するためにインタフェース定義言語を用い、開発用オ
ブジェクトのふるまいを決めて実装し、そののちにオブ
ジェクト開発器16を用いて ORBオブジェクト14を実装す
る。このORBオブジェクト(サーバント・オブジェク
ト)のインスタンスは実行時に生成されるが、その際に
は実装されたORBオブジェクトが利用される。オブジェ
クト開発器はある時点でクライアントの役を受け持つオ
ブジェクトを生成することも可能である。
ァシリティ、object development facility)16は分散
オブジェクトを単に生成し、インストールするものであ
る。これは開発したオブジェクトを分散オブジェクトの
コードに包み込みカプセル化するものである。このよう
に、オブジェクト開発器16は開発したオブジェクトをOR
B オブジェクト14に変換する。この例では、ORBオブジ
ェクト14は図の中の位置からサーバとして示されてい
る。開発者はORBオブジェクトとのインタフェースを定
義するためにインタフェース定義言語を用い、開発用オ
ブジェクトのふるまいを決めて実装し、そののちにオブ
ジェクト開発器16を用いて ORBオブジェクト14を実装す
る。このORBオブジェクト(サーバント・オブジェク
ト)のインスタンスは実行時に生成されるが、その際に
は実装されたORBオブジェクトが利用される。オブジェ
クト開発器はある時点でクライアントの役を受け持つオ
ブジェクトを生成することも可能である。
【0017】クライアント20はスタブ(stub)21、下請け
層(サブコントラクト、subcontract)36、ときにより
フィルタ40、トランスポート層38を通じてサーバントと
通信する。スタブ21はサロゲート(surrogate)22、メ
ソッド・テーブル24、スタブ関数25からなる。クライア
ント20は最初クライアントにとってサーバントに見える
サロゲート22と通信する。あるいは、クライアント20は
サロゲート22、メソッド・テーブル 24、スタブ関数25
を介する代わりに、動的起動(動的呼び出し)インタフ
ェース(Dynamic Invocation Interface:DII) 26を通じ
て直接通信する場合もある。DII 26はクライアントが動
的に要求を作るのを可能にする。
層(サブコントラクト、subcontract)36、ときにより
フィルタ40、トランスポート層38を通じてサーバントと
通信する。スタブ21はサロゲート(surrogate)22、メ
ソッド・テーブル24、スタブ関数25からなる。クライア
ント20は最初クライアントにとってサーバントに見える
サロゲート22と通信する。あるいは、クライアント20は
サロゲート22、メソッド・テーブル 24、スタブ関数25
を介する代わりに、動的起動(動的呼び出し)インタフ
ェース(Dynamic Invocation Interface:DII) 26を通じ
て直接通信する場合もある。DII 26はクライアントが動
的に要求を作るのを可能にする。
【0018】下請け層36は特定の下請け名で指定された
いろいろなサービス(あるいは属性やオブジェクト・メ
カニズム)を実装する下請けを利用するためにオブジェ
クトから来る要求を受け付ける機能を有している。下請
けは、ある個別のオブジェクトにより利用されるかも知
れない分散オブジェクトシステムによって供給されるサ
ービスの質を決定する。例えば、下請けはある特定オブ
ジェクトによって使われる安全性の特徴を同定したりす
る。それぞれの下請けは実行時に動的にサーバント・オ
ブジェクトに結びつけられる。フィルタ40が使われる
と、いろいろなタスク、例えば圧縮、暗号化、トレース
やデバッグなどを実行し、オブジェクトとのやりとりに
使われる。トランスポート層 38は、一般にはクライア
ントとは別のプロセスにあるサーバントへ情報を転送し
たり物理的に流したりする。
いろいろなサービス(あるいは属性やオブジェクト・メ
カニズム)を実装する下請けを利用するためにオブジェ
クトから来る要求を受け付ける機能を有している。下請
けは、ある個別のオブジェクトにより利用されるかも知
れない分散オブジェクトシステムによって供給されるサ
ービスの質を決定する。例えば、下請けはある特定オブ
ジェクトによって使われる安全性の特徴を同定したりす
る。それぞれの下請けは実行時に動的にサーバント・オ
ブジェクトに結びつけられる。フィルタ40が使われる
と、いろいろなタスク、例えば圧縮、暗号化、トレース
やデバッグなどを実行し、オブジェクトとのやりとりに
使われる。トランスポート層 38は、一般にはクライア
ントとは別のプロセスにあるサーバントへ情報を転送し
たり物理的に流したりする。
【0019】標準実装スイート(標準インプリメンテー
ションスイート、standard implementation suite)28
(オブジェクト・アダプタ)は、例えばオブジェクト・
キー・マネジメントのように、ORBオブジェクト14と相
互作用する下請けの一群を表わす。ここで、下請けは複
数の実装スーツに属することもある。スケルトンは、静
的なスケルトン32と動的なスケルトン30の両方の形態を
とることがあり、要求をサーバント・オブジェクトに合
う形に変換するのに用いられる。したがって、スケルト
ン30と32は適当なサーバント・オブジェクトと呼ばれ
る。静的スケルトン32はインタフェースに特定したオブ
ジェクトの実装14を呼び出すのに用いられ、動的スケル
トン30はインタフェースを特定できるオブジェクトがな
いときに用いられる。ORBインタフェース34は、直接ORB
のところに行くインタフェースであり、これはどのORB
にも共通である。すなわち、 オブジェクトのインタフ
ェースやオブジェクト・アダプタに依存しない。ORBデ
ーモン46はオブジェクト・サーバがクライアントから呼
び出された時、それが稼働中であることを確認する機能
を持つ。
ションスイート、standard implementation suite)28
(オブジェクト・アダプタ)は、例えばオブジェクト・
キー・マネジメントのように、ORBオブジェクト14と相
互作用する下請けの一群を表わす。ここで、下請けは複
数の実装スーツに属することもある。スケルトンは、静
的なスケルトン32と動的なスケルトン30の両方の形態を
とることがあり、要求をサーバント・オブジェクトに合
う形に変換するのに用いられる。したがって、スケルト
ン30と32は適当なサーバント・オブジェクトと呼ばれ
る。静的スケルトン32はインタフェースに特定したオブ
ジェクトの実装14を呼び出すのに用いられ、動的スケル
トン30はインタフェースを特定できるオブジェクトがな
いときに用いられる。ORBインタフェース34は、直接ORB
のところに行くインタフェースであり、これはどのORB
にも共通である。すなわち、 オブジェクトのインタフ
ェースやオブジェクト・アダプタに依存しない。ORBデ
ーモン46はオブジェクト・サーバがクライアントから呼
び出された時、それが稼働中であることを確認する機能
を持つ。
【0020】信頼性プロトコル(安全プロトコル)42は
ORB のインターネット間のプロトコルを確保するもので
あり、トランスポート層38を通じて情報が安全に移送で
きるようにするためのものである。これは統合性保護、
機密性などを意味する。インターネットのORB 間プロト
コルは異なるマシン上のプロセス間での通信を行なうた
めのものであるが、ときには同じマシン上のプロセス間
でも用いられることがある。セキュリティ・ サーバ54
は安全性を管理するサーバで、異なるコンピュータ上の
プロセス間で用いられるサービスの安全性を確保するた
めのものである。
ORB のインターネット間のプロトコルを確保するもので
あり、トランスポート層38を通じて情報が安全に移送で
きるようにするためのものである。これは統合性保護、
機密性などを意味する。インターネットのORB 間プロト
コルは異なるマシン上のプロセス間での通信を行なうた
めのものであるが、ときには同じマシン上のプロセス間
でも用いられることがある。セキュリティ・ サーバ54
は安全性を管理するサーバで、異なるコンピュータ上の
プロセス間で用いられるサービスの安全性を確保するた
めのものである。
【0021】Typecode/Any モジュール44は「Typecod
e」および「Any」オブジェクトを実装するためのもので
ある。Typecodeはインタフェース定義言語(IDL)のデ
ータタイプを記述し、そこではタイプ記述がクライアン
トとサーバ間で転送されることを許す。IDLデータタイ
プのインスタンスは「Any」オブジェクトによってカプ
セル化される。Anyオブジェクトはカプセルの中のデー
タのタイプコードとデータの一般的なコード化を参照す
る。
e」および「Any」オブジェクトを実装するためのもので
ある。Typecodeはインタフェース定義言語(IDL)のデ
ータタイプを記述し、そこではタイプ記述がクライアン
トとサーバ間で転送されることを許す。IDLデータタイ
プのインスタンスは「Any」オブジェクトによってカプ
セル化される。Anyオブジェクトはカプセルの中のデー
タのタイプコードとデータの一般的なコード化を参照す
る。
【0022】実装貯蔵庫(インプリメンテーション・レ
ポジトリ、implementation repository)50は、オブジ
ェクト・サーバに関する情報を貯えるのに用いられる。
特に実装貯蔵庫50は、サーバのプロセスをスタートさせ
るのに必要な情報を貯蔵している。例えば、実装貯蔵庫
50はサーバ・プログラムのある場所、プログラムの引
数、プログラム渡す環境変数などの情報を貯蔵してい
る。
ポジトリ、implementation repository)50は、オブジ
ェクト・サーバに関する情報を貯えるのに用いられる。
特に実装貯蔵庫50は、サーバのプロセスをスタートさせ
るのに必要な情報を貯蔵している。例えば、実装貯蔵庫
50はサーバ・プログラムのある場所、プログラムの引
数、プログラム渡す環境変数などの情報を貯蔵してい
る。
【0023】簡便持続機能(単純パーシステンス、simp
le persistence)56は、IDLが定義するタイプとそれをI
DLコンパイラに渡した結果を他のコードといっしょに用
い、ディスク上に読み込んだり書き込んだりできるよう
にする。名前づけサービス(ネーミングサービス)52は
ORBオブジェクトを名前づけするのに用いられる。クラ
イアントはこのサービスを用いて必要なオブジェクトを
名前で検索することができる。名前づけサービス52はは
オブジェクトへのレファランスを返すが、代わってそれ
はそのオブジェクトに何か情報を渡すのに用いられる。
インタフェース貯蔵庫48(IFR)は分散オブジェクトシ
ステム内にあるすべてのオブジェクトに関してのインタ
フェースを把握している。
le persistence)56は、IDLが定義するタイプとそれをI
DLコンパイラに渡した結果を他のコードといっしょに用
い、ディスク上に読み込んだり書き込んだりできるよう
にする。名前づけサービス(ネーミングサービス)52は
ORBオブジェクトを名前づけするのに用いられる。クラ
イアントはこのサービスを用いて必要なオブジェクトを
名前で検索することができる。名前づけサービス52はは
オブジェクトへのレファランスを返すが、代わってそれ
はそのオブジェクトに何か情報を渡すのに用いられる。
インタフェース貯蔵庫48(IFR)は分散オブジェクトシ
ステム内にあるすべてのオブジェクトに関してのインタ
フェースを把握している。
【0024】本発明は計算機システムの内部にあるデー
タとともにいろいろなステップをとる。これらのステッ
プは物理量を操作する物理操作を要求する。通常これら
の物理量は電子的あるいは磁気的な信号の形態を取るこ
とが多く、これらは記憶されたり、転送されたり、ある
いは相互に結びつけられ、比較されるなどの操作を受け
る。これらの信号はビット、値、要素、変数、文字、デ
ータ構造などを単位に扱うのが便利である。それは他で
の使い方と共通性を持たせるためである。しかしなが
ら、これら、あるいは他の同様な用語は常に適当な物理
量と関連づけらけていることを忘れてはならず、これら
の用語は実際の量を言及するための便利なラベルである
に過ぎない。
タとともにいろいろなステップをとる。これらのステッ
プは物理量を操作する物理操作を要求する。通常これら
の物理量は電子的あるいは磁気的な信号の形態を取るこ
とが多く、これらは記憶されたり、転送されたり、ある
いは相互に結びつけられ、比較されるなどの操作を受け
る。これらの信号はビット、値、要素、変数、文字、デ
ータ構造などを単位に扱うのが便利である。それは他で
の使い方と共通性を持たせるためである。しかしなが
ら、これら、あるいは他の同様な用語は常に適当な物理
量と関連づけらけていることを忘れてはならず、これら
の用語は実際の量を言及するための便利なラベルである
に過ぎない。
【0025】さらには、行なわれる操作は、しばしば同
定、実行(running)、比較などの用語を用いて述べら
れる。本発明の中に述べられるこれらの操作はいずれも
機械の行なう操作である。本発明の操作を実行するのに
適した計算機は、一般のデジタル計算機かあるいはそれ
と同様な装置である。いずれの場合にせよ、計算機に対
して操作を実行させる方法と計算そのものの方法とは、
異なることを常に心に銘記すべきである。本発明は計算
機に操作をさせる方法に関するものであり、そこでは電
気的かあるいは他の物理信号を処理し、望む形の物理信
号を生成することになる。
定、実行(running)、比較などの用語を用いて述べら
れる。本発明の中に述べられるこれらの操作はいずれも
機械の行なう操作である。本発明の操作を実行するのに
適した計算機は、一般のデジタル計算機かあるいはそれ
と同様な装置である。いずれの場合にせよ、計算機に対
して操作を実行させる方法と計算そのものの方法とは、
異なることを常に心に銘記すべきである。本発明は計算
機に操作をさせる方法に関するものであり、そこでは電
気的かあるいは他の物理信号を処理し、望む形の物理信
号を生成することになる。
【0026】本発明は、これらの操作を実行する上での
装置(apparatus) 器具にも関係している。この器具は
特に特別な目的のために作られている可能性があるし、
またどのような目的にも対応できるように計算機内のプ
ログラムによって選んだ機能が作動したりその使途を再
構成できるようになっているかも知れない。この中に記
述されたプロセスは特に計算機やあるいは他の器具を限
定していない。特に、各種一般的なマシンがここでの仕
様に基づくプログラムで使われることもあれば、本プロ
セスを専用に実行できる特別な器具を構築すればより便
利となることもある。これらマシンに要求される構造は
以下に記述される。
装置(apparatus) 器具にも関係している。この器具は
特に特別な目的のために作られている可能性があるし、
またどのような目的にも対応できるように計算機内のプ
ログラムによって選んだ機能が作動したりその使途を再
構成できるようになっているかも知れない。この中に記
述されたプロセスは特に計算機やあるいは他の器具を限
定していない。特に、各種一般的なマシンがここでの仕
様に基づくプログラムで使われることもあれば、本プロ
セスを専用に実行できる特別な器具を構築すればより便
利となることもある。これらマシンに要求される構造は
以下に記述される。
【0027】この中に記述された計算機に実装されるべ
き方法は、計算機科学の技法に基づき計算機システム上
でプログラムを実行する良く知られた技術と器具を用い
て実装可能である。ここで使われた「計算機システム」
という用語は、処理装置(中央演算装置; CPU)、ある
いはそれに相当するものを持ち、一つあるいは複数のデ
ータ保持装置からデータおよび命令を読みだし、組み合
わせ、処理する機構を指す。ここでデータ保持装置とは
RAM、ROM、CD-ROM、ハードディスク、あるいは他の同様
な機器を指す。データ保持装置は直接処理装置にかかる
こともあれば、ネットワークを介して遠隔の処理装置に
かかることもある。遠隔のデータ保持装置がネットワー
クを介して遠隔の処理装置にかかるとき、特定のワーク
ステーション上で実行できるようプログラムを送ること
ができればありがたい。加えて、処理装置が(並列処理
装置として)同じ機械の中の他の処理装置と、あるいは
(分散処理装置として)ネットワークを介して遠隔の処
理装置と組合わさって動作することもある。このような
遠隔地のデータ保持装置と処理装置の組み合わせは計算
機技術の中の技法として一般的になっていくであろう。
き方法は、計算機科学の技法に基づき計算機システム上
でプログラムを実行する良く知られた技術と器具を用い
て実装可能である。ここで使われた「計算機システム」
という用語は、処理装置(中央演算装置; CPU)、ある
いはそれに相当するものを持ち、一つあるいは複数のデ
ータ保持装置からデータおよび命令を読みだし、組み合
わせ、処理する機構を指す。ここでデータ保持装置とは
RAM、ROM、CD-ROM、ハードディスク、あるいは他の同様
な機器を指す。データ保持装置は直接処理装置にかかる
こともあれば、ネットワークを介して遠隔の処理装置に
かかることもある。遠隔のデータ保持装置がネットワー
クを介して遠隔の処理装置にかかるとき、特定のワーク
ステーション上で実行できるようプログラムを送ること
ができればありがたい。加えて、処理装置が(並列処理
装置として)同じ機械の中の他の処理装置と、あるいは
(分散処理装置として)ネットワークを介して遠隔の処
理装置と組合わさって動作することもある。このような
遠隔地のデータ保持装置と処理装置の組み合わせは計算
機技術の中の技法として一般的になっていくであろう。
【0028】ここで「コンピュータ・ネットワーク」と
いうことばは、相互につながった計算機システムとそれ
を結ぶ通信チャネル全体を含むものとして定義される。
通信チャネルは、電線(ねじれ二重線)、同軸ケーブ
ル、光ファイバー、衛星リンク、デジタル超音波など伝
達メディアを指す。計算機システムは大規模に広域(数
十、数百、数千マイル;WAN)に分散しているか、あるい
は局地的な(数フィートから数百フィート;LAN)ネット
ワークに分散していることもある。さらにまた、いろい
ろなLANやWANが相互につながって計算機システムの集合
体をなしていることもある。このひとつの例は「インタ
ーネット」と呼ばれるものである。
いうことばは、相互につながった計算機システムとそれ
を結ぶ通信チャネル全体を含むものとして定義される。
通信チャネルは、電線(ねじれ二重線)、同軸ケーブ
ル、光ファイバー、衛星リンク、デジタル超音波など伝
達メディアを指す。計算機システムは大規模に広域(数
十、数百、数千マイル;WAN)に分散しているか、あるい
は局地的な(数フィートから数百フィート;LAN)ネット
ワークに分散していることもある。さらにまた、いろい
ろなLANやWANが相互につながって計算機システムの集合
体をなしていることもある。このひとつの例は「インタ
ーネット」と呼ばれるものである。
【0029】本発明の実施例では、図2の100のところ
で図示したように、分散オブジェクトは相互に結合した
ネットワークの中の計算機の中にあってもよいし、一台
の中にあってもよい。図のように、ネットワーク100は
計算機102を含み、その計算機はさらにネットワーク104
につながっている。ネットワーク104は、さらにサー
バ、ルータ、あるいはそれに類した計算機106につなが
り、さらに計算機108、110、 112につながっている。デ
ータと実行命令はすべてこのネットワークを辿っていく
ことができる。コンピュータ・ネットワークの設計、構
築、実装は一般的な技法となりつつある。
で図示したように、分散オブジェクトは相互に結合した
ネットワークの中の計算機の中にあってもよいし、一台
の中にあってもよい。図のように、ネットワーク100は
計算機102を含み、その計算機はさらにネットワーク104
につながっている。ネットワーク104は、さらにサー
バ、ルータ、あるいはそれに類した計算機106につなが
り、さらに計算機108、110、 112につながっている。デ
ータと実行命令はすべてこのネットワークを辿っていく
ことができる。コンピュータ・ネットワークの設計、構
築、実装は一般的な技法となりつつある。
【0030】計算機102、106、108、110、112は、図3
の200のところで図式的に表現されている。計算機シス
テム200は、プロセッサ(中央演算装置; CPU)202をあ
る数含んでおり、それらは主記憶装置206(ランダム・
アクセス・メモリ; RAM)、主記憶装置204(読みだし専
用メモリ; RAM)を含んでいる。この技術ではよく知ら
れているように、204はデータや命令をCPUに向かって単
方向に送るのに対して、206は双方向に送ることができ
る。これら主記憶装置両方とも上に述べたようなメディ
アで計算機から読みだしができるようになっている。大
容量記憶装置208は、典型的にはハードディスクのよう
な二次記憶装置でプログラムやデータを貯えておくこと
ができるが、主記憶装置に比べて遅い。大容量記憶装置
208の中の情報は、場合によっては主記憶装置206の一部
として仮想記憶となって使うことも通常行なわれる。CD
-ROM 209のような特別な大容量記憶装置はCPUに一方向
にデータを送る。
の200のところで図式的に表現されている。計算機シス
テム200は、プロセッサ(中央演算装置; CPU)202をあ
る数含んでおり、それらは主記憶装置206(ランダム・
アクセス・メモリ; RAM)、主記憶装置204(読みだし専
用メモリ; RAM)を含んでいる。この技術ではよく知ら
れているように、204はデータや命令をCPUに向かって単
方向に送るのに対して、206は双方向に送ることができ
る。これら主記憶装置両方とも上に述べたようなメディ
アで計算機から読みだしができるようになっている。大
容量記憶装置208は、典型的にはハードディスクのよう
な二次記憶装置でプログラムやデータを貯えておくこと
ができるが、主記憶装置に比べて遅い。大容量記憶装置
208の中の情報は、場合によっては主記憶装置206の一部
として仮想記憶となって使うことも通常行なわれる。CD
-ROM 209のような特別な大容量記憶装置はCPUに一方向
にデータを送る。
【0031】CPU 202はインタフェース210を含む。イン
タフェースはビデオ・モニタ、トラック・ボール、マウ
ス、キーボード、マイクロフォン、タッチパネル付き画
面、カード読み取り機、磁気・紙テープ読み取り機、タ
ブレット、尖筆(stylus)、声あるいは手書き文字認識装
置、その他のよく知られた入出力が複数からなる。他の
計算機がインタフェースになることもある。最後に、CP
U 202は計算機や遠隔通信のネットワークと組合わさっ
て用いられる。このネットワーク接続は、図の212で一
般的に示されている。このようなネットワーク接続にお
いて、上記示した方法により、CPUは処理の過程を通じ
てネットワークから情報を受けとり、あるいはまた情報
をネットワークに向かって発信することがわかる。今ま
で述べた機器や道具は計算機のハードウェアあるいはソ
フトウェアの技術として良く知られたものである。
タフェースはビデオ・モニタ、トラック・ボール、マウ
ス、キーボード、マイクロフォン、タッチパネル付き画
面、カード読み取り機、磁気・紙テープ読み取り機、タ
ブレット、尖筆(stylus)、声あるいは手書き文字認識装
置、その他のよく知られた入出力が複数からなる。他の
計算機がインタフェースになることもある。最後に、CP
U 202は計算機や遠隔通信のネットワークと組合わさっ
て用いられる。このネットワーク接続は、図の212で一
般的に示されている。このようなネットワーク接続にお
いて、上記示した方法により、CPUは処理の過程を通じ
てネットワークから情報を受けとり、あるいはまた情報
をネットワークに向かって発信することがわかる。今ま
で述べた機器や道具は計算機のハードウェアあるいはソ
フトウェアの技術として良く知られたものである。
【0032】2. 分散オブジェクトシステムにインスト
ールされるアプリケーションを構築するコード生成器 図4の400は、分散オブジェクトシステムにアプリケー
ションを作成しインストールするシステムの実施例を摸
式的に示している。図のシステムは、コンポジション構
築器402(視覚的なアプリケーション構築器と呼ばれる
ものと同じ)を含み、ユーザ 特にプログラマーが、上
記図1で示したような分散オブジェクトシステム上へイ
ンストールされるアプリケーションを作成するのに用い
られる。このコンポジション構築器はコンポーネント・
サービス404(後述)とともにユーザ(あるいはプログ
ラマー)が分散オブジェクトシステム上で利用可能なオ
ブジェクトをアクセスする機能を提供する。コンポジシ
ョン構築器402は、さらにコード生成器408と連係し(こ
れはさらにプログラムのテンプレート貯蔵庫406とつな
がっている)、コンポジション構築器によって作成され
たものを410で示すようなプログラム・ソースファイル
に仕立てあげる。
ールされるアプリケーションを構築するコード生成器 図4の400は、分散オブジェクトシステムにアプリケー
ションを作成しインストールするシステムの実施例を摸
式的に示している。図のシステムは、コンポジション構
築器402(視覚的なアプリケーション構築器と呼ばれる
ものと同じ)を含み、ユーザ 特にプログラマーが、上
記図1で示したような分散オブジェクトシステム上へイ
ンストールされるアプリケーションを作成するのに用い
られる。このコンポジション構築器はコンポーネント・
サービス404(後述)とともにユーザ(あるいはプログ
ラマー)が分散オブジェクトシステム上で利用可能なオ
ブジェクトをアクセスする機能を提供する。コンポジシ
ョン構築器402は、さらにコード生成器408と連係し(こ
れはさらにプログラムのテンプレート貯蔵庫406とつな
がっている)、コンポジション構築器によって作成され
たものを410で示すようなプログラム・ソースファイル
に仕立てあげる。
【0033】プログラム・ソースファイル410は、さら
にオブジェクト開発器ODFのコンパイラ/リンカ414に送
られる。オブジェクト・アクセス・ソフトウェア412と
接合したODFコンパイラ/リンカは、今度はコンポーネン
ト・サービス404と連係する。ODFコンパイラ/リンカ414
はオブジェクト・ソフトウェア416とネットワーク・ア
プリケーション418の両方を生成し、今度は420で示した
ネットワーク・オブジェクト422にアクセスする。これ
らのネットワーク・オブジェクトは、図の点線矢印で示
したように、コンポーネント・サービス404かあるいはO
DFコンパイラ/リンカと連係して使われるオブジェクト
・アクセス・ソフトウェア412に用いられる。オブジェ
クト・アクセス・ソフトウェア412は、典型的には削除
されたヘッダ・ファイルかあるいは削除されたアプリケ
ーション・プログラム・インタフェース(API)であ
る。APIはクライアントにとって利用可能であり、ファ
クトリ・サービスを含むこともある。
にオブジェクト開発器ODFのコンパイラ/リンカ414に送
られる。オブジェクト・アクセス・ソフトウェア412と
接合したODFコンパイラ/リンカは、今度はコンポーネン
ト・サービス404と連係する。ODFコンパイラ/リンカ414
はオブジェクト・ソフトウェア416とネットワーク・ア
プリケーション418の両方を生成し、今度は420で示した
ネットワーク・オブジェクト422にアクセスする。これ
らのネットワーク・オブジェクトは、図の点線矢印で示
したように、コンポーネント・サービス404かあるいはO
DFコンパイラ/リンカと連係して使われるオブジェクト
・アクセス・ソフトウェア412に用いられる。オブジェ
クト・アクセス・ソフトウェア412は、典型的には削除
されたヘッダ・ファイルかあるいは削除されたアプリケ
ーション・プログラム・インタフェース(API)であ
る。APIはクライアントにとって利用可能であり、ファ
クトリ・サービスを含むこともある。
【0034】図4のこれらの要素をここで詳述する。コ
ンポジション構築器402は、アプリケーション開発者に
対して分散オブジェクトを用いて視覚的にアプリケーシ
ョン・プログラムを構築することを可能にするものであ
る。現存する、あるいは以前に開発されたオブジェクト
のカタログがあるので、開発者は新しいアプリケーショ
ンプログラムを開発する際、容易に遠隔にあるオブジェ
クトを同定し取ってくることができる。加えて、これら
のオブジェクトは新しいオブジェクトを作る際、構築器
の中で再利用されるため、コードの再利用を許す。構築
器の中であるオブジェクトが利用のために選ばれたと
き、それはある種のサービスを提供することもあるし、
あるいは逆に利用のためのサービスを要求することもあ
る。例として、オブジェクトは何か値をとる属性を持つ
かも知れないし、何か引数をとって結果を返す操作(メ
ソッド)を持つかも知れない。オブジェクトにより要求
されるサービスとは、オブジェクトの属性に対しては
値、操作に対しては引数である。同様に、オブジェクト
によって供給されるサービスとは値が既に決まった属性
であるし、操作結果である。アプリケーションを構築す
るときには、オブジェクトによって供給されるサービス
は、それを処理上必要としているオブジェクトに「接続
され」、配送されることもある。例えば、あるオブジェ
クトの属性値は他のオブジェクトの操作の引数として用
いられるかも知れない。与えられたオブジェクトによ
り、どのサービスが供給されどのサービスが必要となる
かを決定できるようにすることは、オブジェクトの結合
上大事なことである。
ンポジション構築器402は、アプリケーション開発者に
対して分散オブジェクトを用いて視覚的にアプリケーシ
ョン・プログラムを構築することを可能にするものであ
る。現存する、あるいは以前に開発されたオブジェクト
のカタログがあるので、開発者は新しいアプリケーショ
ンプログラムを開発する際、容易に遠隔にあるオブジェ
クトを同定し取ってくることができる。加えて、これら
のオブジェクトは新しいオブジェクトを作る際、構築器
の中で再利用されるため、コードの再利用を許す。構築
器の中であるオブジェクトが利用のために選ばれたと
き、それはある種のサービスを提供することもあるし、
あるいは逆に利用のためのサービスを要求することもあ
る。例として、オブジェクトは何か値をとる属性を持つ
かも知れないし、何か引数をとって結果を返す操作(メ
ソッド)を持つかも知れない。オブジェクトにより要求
されるサービスとは、オブジェクトの属性に対しては
値、操作に対しては引数である。同様に、オブジェクト
によって供給されるサービスとは値が既に決まった属性
であるし、操作結果である。アプリケーションを構築す
るときには、オブジェクトによって供給されるサービス
は、それを処理上必要としているオブジェクトに「接続
され」、配送されることもある。例えば、あるオブジェ
クトの属性値は他のオブジェクトの操作の引数として用
いられるかも知れない。与えられたオブジェクトによ
り、どのサービスが供給されどのサービスが必要となる
かを決定できるようにすることは、オブジェクトの結合
上大事なことである。
【0035】本発明の実施例では、「コンポーネント
(componnent)」、「パーツ(part)」、「プラグ(pl
ug)」、「ソケット(socket)」、「接続(connectio
n)」は次の意味を持つ。 まず、コンポーネントは、あ
るオブジェクトあるいはオブジェクトタイプ、それが提
供するサービス、その実装されたもの、および分散オブ
ジェクトシステムの名前づけサービスにおけるそれの名
前を表す。コンポーネントはコンポーネント・カタログ
に登録されており、ユーザがアプリケーションを構築す
るにときにコンポーネントを調べ、選択できる。ユーザ
が構築中のアプリケーションにコンポーネントを加えよ
うとするとき、ここに説明されている構築のメカニズム
によって特定メソッドを用いてコンポーネントの中にあ
る情報から「パーツ」を引き出す。パーツとは、コンポ
ーネントによって表されるオブジェクトの将来の実行時
のインスタンスを保持する場所である。これは、他のオ
ブジェクトと接続し属性値を定義するために実行時のイ
ンスタンスとして取り扱うことになる。構築器によって
アプリケーションが完成し実行されるとき、パーツとと
もにそのアプリケーションにおける他のオブジェクトと
の連携によるアクションを表現するコードが生成され
る。こうして最終的にアプリケーションが実行されると
き、オブジェクトの実行時インスタンスが生成されパー
ツに代わって配置される。
(componnent)」、「パーツ(part)」、「プラグ(pl
ug)」、「ソケット(socket)」、「接続(connectio
n)」は次の意味を持つ。 まず、コンポーネントは、あ
るオブジェクトあるいはオブジェクトタイプ、それが提
供するサービス、その実装されたもの、および分散オブ
ジェクトシステムの名前づけサービスにおけるそれの名
前を表す。コンポーネントはコンポーネント・カタログ
に登録されており、ユーザがアプリケーションを構築す
るにときにコンポーネントを調べ、選択できる。ユーザ
が構築中のアプリケーションにコンポーネントを加えよ
うとするとき、ここに説明されている構築のメカニズム
によって特定メソッドを用いてコンポーネントの中にあ
る情報から「パーツ」を引き出す。パーツとは、コンポ
ーネントによって表されるオブジェクトの将来の実行時
のインスタンスを保持する場所である。これは、他のオ
ブジェクトと接続し属性値を定義するために実行時のイ
ンスタンスとして取り扱うことになる。構築器によって
アプリケーションが完成し実行されるとき、パーツとと
もにそのアプリケーションにおける他のオブジェクトと
の連携によるアクションを表現するコードが生成され
る。こうして最終的にアプリケーションが実行されると
き、オブジェクトの実行時インスタンスが生成されパー
ツに代わって配置される。
【0036】ある実施例ではパーツは「プラグ」と「ソ
ケット」を持つ。それぞれは視覚的にプラグ・アイコン
とソケット・アイコンで表示される。上に述べたよう
に、オブジェクトはその属性に対して値を要求し、操作
に対して引数を要求する。「プラグ」とはこのようにオ
ブジェクトにとって必要なサービスを指すのに用いられ
る。分散オブジェクト・システムの技法に熟練した人で
あれば、他の種類のサービスもプラグとして表現するこ
とができる。例えば、プラグはパーツの属性か、あるい
は値を埋める必要のあるパーツの引数を表す。さらに、
プラグはコンポーネントのファクトリ・メソッドの引数
を表す場合もある。これらの引数は、コンポーネントの
ファクトリ・メソッドのによってパーツの実行時インス
タンスを作るのに用いられる。
ケット」を持つ。それぞれは視覚的にプラグ・アイコン
とソケット・アイコンで表示される。上に述べたよう
に、オブジェクトはその属性に対して値を要求し、操作
に対して引数を要求する。「プラグ」とはこのようにオ
ブジェクトにとって必要なサービスを指すのに用いられ
る。分散オブジェクト・システムの技法に熟練した人で
あれば、他の種類のサービスもプラグとして表現するこ
とができる。例えば、プラグはパーツの属性か、あるい
は値を埋める必要のあるパーツの引数を表す。さらに、
プラグはコンポーネントのファクトリ・メソッドの引数
を表す場合もある。これらの引数は、コンポーネントの
ファクトリ・メソッドのによってパーツの実行時インス
タンスを作るのに用いられる。
【0037】同様にオブジェクトによって提供されるど
のサービスも「ソケット」と呼ばれる。 例として、ソ
ケットはパーツの既に値を持った属性を表す場合もある
し、ある値を返す操作を表す場合もある。このように、
ソケットはプラグが必要としているサービスを表現して
いる。プラグが必要している値を埋めるには多くの異な
った型の値ががあり、かつソケットの方も異なった型が
あることが考えられる。例えば、値としてオブジェクト
型を用いることがある。このようにプラグとソケットは
相補的な性質を持ち、サービスを要求するオブジェクト
とサービスを供給するオブジェクトの間の通信をを可能
にすることがわかる。実施例ではこのような通信はプラ
グを第一のパーツ、ソケットを第二のパーツとした「接
続」と表現される。
のサービスも「ソケット」と呼ばれる。 例として、ソ
ケットはパーツの既に値を持った属性を表す場合もある
し、ある値を返す操作を表す場合もある。このように、
ソケットはプラグが必要としているサービスを表現して
いる。プラグが必要している値を埋めるには多くの異な
った型の値ががあり、かつソケットの方も異なった型が
あることが考えられる。例えば、値としてオブジェクト
型を用いることがある。このようにプラグとソケットは
相補的な性質を持ち、サービスを要求するオブジェクト
とサービスを供給するオブジェクトの間の通信をを可能
にすることがわかる。実施例ではこのような通信はプラ
グを第一のパーツ、ソケットを第二のパーツとした「接
続」と表現される。
【0038】上に述べたように、コンポジション構築器
(composition builder)402は、分散オブジェクトのア
プリケーションを作るための開発装置として用いられ
る。このモデルは、「コンポジション」と呼ばれ、コン
ポジション構築器のコンポジション・ワークシートによ
って形成される。このコンポジションは、分散オブジェ
クトのアプリケーションの図式表現とも考えられる。こ
のコンポジションはパーツ、ソケット、プラグ、接続な
どの要素を含み、加えてインタフェースやモジュールの
名前などのトップレベル情報も含む。このような要素す
べては、シンボル表にロードされるときに値を決定す
る。このことは以下に述べる。
(composition builder)402は、分散オブジェクトのア
プリケーションを作るための開発装置として用いられ
る。このモデルは、「コンポジション」と呼ばれ、コン
ポジション構築器のコンポジション・ワークシートによ
って形成される。このコンポジションは、分散オブジェ
クトのアプリケーションの図式表現とも考えられる。こ
のコンポジションはパーツ、ソケット、プラグ、接続な
どの要素を含み、加えてインタフェースやモジュールの
名前などのトップレベル情報も含む。このような要素す
べては、シンボル表にロードされるときに値を決定す
る。このことは以下に述べる。
【0039】典型的には、コンポーネント・サービス40
4を介して他の前からあるオブジェクトを用いて構築器
(Builder)の中でオブジェクトを実装できる。より詳
しく言えば、コンポーネント・サービスは、コンポジシ
ョン・ワークシートの中でシンボル的に組み合わせるこ
とのできるコンポーネントを提供している。このコンポ
ジションは実際のオブジェクトを含んでいるわけではな
く、オブジェクトの型へのレファランスを持っている。
コンポーネント・サービスは構築器に対してコンポーネ
ントの記述を行なうインタフェースとそのための道具の
セットである。
4を介して他の前からあるオブジェクトを用いて構築器
(Builder)の中でオブジェクトを実装できる。より詳
しく言えば、コンポーネント・サービスは、コンポジシ
ョン・ワークシートの中でシンボル的に組み合わせるこ
とのできるコンポーネントを提供している。このコンポ
ジションは実際のオブジェクトを含んでいるわけではな
く、オブジェクトの型へのレファランスを持っている。
コンポーネント・サービスは構築器に対してコンポーネ
ントの記述を行なうインタフェースとそのための道具の
セットである。
【0040】構築器の中でコンポジションが完成したと
き、多くの場合、コードに変換されコンパイルの対象に
なるようないろいろな「断片(piece)」ができ、それ
らはコード生成器408に送られる。コンポジションは、
ユーザが使いたいと思っているパーツ、プラグ、ソケッ
ト、コンポーネントからなる拡張グラフを含んでいる。
また、コンポジション・ワークシートの中で作られるオ
ブジェクトの細かいインタフェース仕様の定義と、とき
には作成中のオブジェクトで開発者が定義したメソッド
を実装するためのソースコードが含まれることもある。
これらの「破片」は、コンポジション構築器の中から
「build」コマンドで実行され、コード生成器に送られ
る生の材料である。
き、多くの場合、コードに変換されコンパイルの対象に
なるようないろいろな「断片(piece)」ができ、それ
らはコード生成器408に送られる。コンポジションは、
ユーザが使いたいと思っているパーツ、プラグ、ソケッ
ト、コンポーネントからなる拡張グラフを含んでいる。
また、コンポジション・ワークシートの中で作られるオ
ブジェクトの細かいインタフェース仕様の定義と、とき
には作成中のオブジェクトで開発者が定義したメソッド
を実装するためのソースコードが含まれることもある。
これらの「破片」は、コンポジション構築器の中から
「build」コマンドで実行され、コード生成器に送られ
る生の材料である。
【0041】コード生成器は、コンポジション・サービ
スを介してコンポジションにアクセスするのが望まし
い。コンポジション・サービスはある特定のコンポジシ
ョンの中身を記憶するために使われるインタフェースの
セットである。コンポジションは構築器が編集するコン
ポジションの下にある主「文書」である。コード生成器
のAPIはネットワーク・オブジェクトであるから、「bui
ld」コマンドによって、コード生成器はコンポジション
を完成するために、オブジェクトへのレファランスを渡
される。そのときはいっしょにプログラム・テンプレー
トの貯蔵庫から適当なテンプレートが渡される。コード
生成器がコンポジション・サービスからの情報を要求す
るとき、コンポジション・サービスのオブジェクトへの
レファランスを通じて適当な呼びかけをすることによ
り、この情報にアクセスする。
スを介してコンポジションにアクセスするのが望まし
い。コンポジション・サービスはある特定のコンポジシ
ョンの中身を記憶するために使われるインタフェースの
セットである。コンポジションは構築器が編集するコン
ポジションの下にある主「文書」である。コード生成器
のAPIはネットワーク・オブジェクトであるから、「bui
ld」コマンドによって、コード生成器はコンポジション
を完成するために、オブジェクトへのレファランスを渡
される。そのときはいっしょにプログラム・テンプレー
トの貯蔵庫から適当なテンプレートが渡される。コード
生成器がコンポジション・サービスからの情報を要求す
るとき、コンポジション・サービスのオブジェクトへの
レファランスを通じて適当な呼びかけをすることによ
り、この情報にアクセスする。
【0042】開発者が初期の段階で決定するのはクライ
アントとサーバのどちらを作るかである。すなわちコン
ポジション構築器は、クライアント・オブジェクトを作
るのにもサーバ・オブジェクトを作るのにも使われる
が、開発者は陽にどちらかの選択を行なう。一度この選
択がなされると、プログラム・テンプレート貯蔵庫406
は、クライアントなりサーバなりのテンプレートを提供
することができる。プログラム・テンプレートは、クラ
イアントなりサーバなりがどのような見えるかをレイア
ウトしたスケルトンのファイルである。しかし、これは
コンポジション構築器のコンポジションとは結びつけら
れているわけでないから、まだ特定のアプリケーション
・コードを持っていない。図5から図12を通して、コ
ード生成器がコンポジションをソースファイル410の形
式のアプリケーション・プログラム変換していく過程を
以下に詳しく述べる。
アントとサーバのどちらを作るかである。すなわちコン
ポジション構築器は、クライアント・オブジェクトを作
るのにもサーバ・オブジェクトを作るのにも使われる
が、開発者は陽にどちらかの選択を行なう。一度この選
択がなされると、プログラム・テンプレート貯蔵庫406
は、クライアントなりサーバなりのテンプレートを提供
することができる。プログラム・テンプレートは、クラ
イアントなりサーバなりがどのような見えるかをレイア
ウトしたスケルトンのファイルである。しかし、これは
コンポジション構築器のコンポジションとは結びつけら
れているわけでないから、まだ特定のアプリケーション
・コードを持っていない。図5から図12を通して、コ
ード生成器がコンポジションをソースファイル410の形
式のアプリケーション・プログラム変換していく過程を
以下に詳しく述べる。
【0043】プログラム・ソースファイルは、ODF414に
供給され、次の二種類の出力をする可能性がある。ま
ず、ODFはネットワーク・アプリケーション、すなわち
分散オブジェクト・システムの中で走る「フロント-エ
ンド」ソフトウェアを作成する場合がある。あるいはま
た、ODFはオブジェクト・ソフトウェア416を作成する場
合がある。オブジェクト・ソフトウェア416はオブジェ
クトにアクセスするために走るソフトウェアであり、必
ずしもアプリケーションではない。ある実施例において
は、オブジェクトのインタフェースはIDLで定義され
る。IDLはプログラミング言語に依存しない。このIDF
は、ODF414に供給され、オブジェクト・ソフトウェア41
6を生成する。これはプログラミング言語に依存しない
ソフトウェアであり、IDLで定義されたオブジェクトに
ある属性や操作へアクセスすることができるようにな
る。すなわち、オブジェクト・ソフトウェア416は、IDL
で定義されたオブジェクトにアクセスする分散オブジェ
クト・アプリケーションによって使われるソフトウェア
のライブラリのように見える。
供給され、次の二種類の出力をする可能性がある。ま
ず、ODFはネットワーク・アプリケーション、すなわち
分散オブジェクト・システムの中で走る「フロント-エ
ンド」ソフトウェアを作成する場合がある。あるいはま
た、ODFはオブジェクト・ソフトウェア416を作成する場
合がある。オブジェクト・ソフトウェア416はオブジェ
クトにアクセスするために走るソフトウェアであり、必
ずしもアプリケーションではない。ある実施例において
は、オブジェクトのインタフェースはIDLで定義され
る。IDLはプログラミング言語に依存しない。このIDF
は、ODF414に供給され、オブジェクト・ソフトウェア41
6を生成する。これはプログラミング言語に依存しない
ソフトウェアであり、IDLで定義されたオブジェクトに
ある属性や操作へアクセスすることができるようにな
る。すなわち、オブジェクト・ソフトウェア416は、IDL
で定義されたオブジェクトにアクセスする分散オブジェ
クト・アプリケーションによって使われるソフトウェア
のライブラリのように見える。
【0044】図5の500のところは、本発明の実施例と
して広汎に分散オブジェクト・コードが生成されるよう
すを表している。コンポジションの構築に続いて、完成
したコンポジションはコード生成器に渡されている。コ
ード生成器はコンポーネントとコンポジション・サービ
スの「顔のない(faceless)」クライアントである。そ
の仕事はコンポジションとコンポーネント・データから
コンパイルされることになるコードを生成することであ
る。これから創り出されるそれぞれのプログラム・ソー
スファイルにとっては、それに相当するテンプレートが
あるのが望ましい。このテンプレートは、コード生成器
がその中のメタシンボルを実際のコードに置換した結果
である。コード生成器は、後に詳述するように、メタシ
ンボルを置換するのを助けるのにシンボル表を用いる。
言い替えれば、コード生成器はプログラム・テンプレー
ト・ファイルとシンボル表を用い、これらプログラム・
ソースファイルを作るものである。本発明の実施例とし
ては、プログラム・ソースファイルは、C++のソースフ
ァイルであり、コンポジションと名付けられた分散オブ
ジェクト・アプリケーションに対しては、これらのソー
ス・ファイルは「composition.cc」、「compositon.h
h」、「main.cc」、「Imakefile」を含む。
して広汎に分散オブジェクト・コードが生成されるよう
すを表している。コンポジションの構築に続いて、完成
したコンポジションはコード生成器に渡されている。コ
ード生成器はコンポーネントとコンポジション・サービ
スの「顔のない(faceless)」クライアントである。そ
の仕事はコンポジションとコンポーネント・データから
コンパイルされることになるコードを生成することであ
る。これから創り出されるそれぞれのプログラム・ソー
スファイルにとっては、それに相当するテンプレートが
あるのが望ましい。このテンプレートは、コード生成器
がその中のメタシンボルを実際のコードに置換した結果
である。コード生成器は、後に詳述するように、メタシ
ンボルを置換するのを助けるのにシンボル表を用いる。
言い替えれば、コード生成器はプログラム・テンプレー
ト・ファイルとシンボル表を用い、これらプログラム・
ソースファイルを作るものである。本発明の実施例とし
ては、プログラム・ソースファイルは、C++のソースフ
ァイルであり、コンポジションと名付けられた分散オブ
ジェクト・アプリケーションに対しては、これらのソー
ス・ファイルは「composition.cc」、「compositon.h
h」、「main.cc」、「Imakefile」を含む。
【0045】本発明のコード生成器(コードジェネレー
タ)は、ステップ502で始まり、コンポジションができ
た知らせを受ける。典型的な例では、これは開発者がコ
ンポジションを完成して「build」コマンドを発行した
ときである。ある実施例においてはコンポジションは視
覚的なアプリケーション構築器と連結して作られる。こ
のアプリケーション構築器は、分散オブジェクトのコン
ポーネントのカタログといっしょに用いられる。
タ)は、ステップ502で始まり、コンポジションができ
た知らせを受ける。典型的な例では、これは開発者がコ
ンポジションを完成して「build」コマンドを発行した
ときである。ある実施例においてはコンポジションは視
覚的なアプリケーション構築器と連結して作られる。こ
のアプリケーション構築器は、分散オブジェクトのコン
ポーネントのカタログといっしょに用いられる。
【0046】次にステップ504では、コード生成器はコ
ンポジションをシンボル表の中にロードする。構築器の
中でコンポジションから分散オブジェクト・アプリケー
ションを作るに際し、シンボル表がどのように使われる
かは以下に詳述する。基本的には、ロードするステップ
では、コンポジションから識別子(キーあるいは変数と
呼ばれる)を取り出し、それらを対応する値にマップす
る。それぞれの識別子の値はシンボル表を介して記憶さ
れ、それぞれの識別子-値のペアはシンボル表のエント
リと呼ばれる。それぞれの値はシンボル表、整数、文字
列あるいは文字列ベクタである。これらの識別子は、シ
ンボル表の値にマップされ、プログラム・テンプレート
にとってシンボル表がアクセスできるようになり、ソー
ス・プログラム・ファイルを作る上でそれ自身の識別子
は適当な値に置換される。言い替えればこのコンポジシ
ョンをロードするステップは、プログラムテンプレート
の中で使われる識別子と値をシンボル表に「供給する
(seed)」ことである。
ンポジションをシンボル表の中にロードする。構築器の
中でコンポジションから分散オブジェクト・アプリケー
ションを作るに際し、シンボル表がどのように使われる
かは以下に詳述する。基本的には、ロードするステップ
では、コンポジションから識別子(キーあるいは変数と
呼ばれる)を取り出し、それらを対応する値にマップす
る。それぞれの識別子の値はシンボル表を介して記憶さ
れ、それぞれの識別子-値のペアはシンボル表のエント
リと呼ばれる。それぞれの値はシンボル表、整数、文字
列あるいは文字列ベクタである。これらの識別子は、シ
ンボル表の値にマップされ、プログラム・テンプレート
にとってシンボル表がアクセスできるようになり、ソー
ス・プログラム・ファイルを作る上でそれ自身の識別子
は適当な値に置換される。言い替えればこのコンポジシ
ョンをロードするステップは、プログラムテンプレート
の中で使われる識別子と値をシンボル表に「供給する
(seed)」ことである。
【0047】次にステップ506では、作られるべきファ
イル名のリストがそれぞれ対応するテンプレートを伴っ
てコンポジションから取り出される。このときそれぞれ
のファイル名に対応して一つのテンプレートがあること
が望ましい。ファイル名のリストはコンポジションの中
で暗に作られている。すなわち、開発者は最初クライア
ントを作るかサーバを作るか選択するときにどちらのテ
ンプレートセットを使うか示しているのである。テンプ
レートは、希望のファイルを作るためにシンボル表の中
の値と結びつけられる。コンポジションをシンボル表の
上にロードし、ファイル名と対応するするテンプレート
を取り出すと、次はステップ508でこれらりテンプレー
トとシンボル表からのシンボルの値を使ってプログラム
・ソースファイルが生成される。ひとつのソースファイ
ルはひとつのテンプレートから作られることが望まし
い。このステップは図6とともに、以下により詳しく述
べる。最後に、ソースファイルができあがってしまう
と、ステップ510で示すように結果のファイルはODFに送
られることがある。ODFは、ファイルを実行可能な形式
にコンパイルしリンクする。
イル名のリストがそれぞれ対応するテンプレートを伴っ
てコンポジションから取り出される。このときそれぞれ
のファイル名に対応して一つのテンプレートがあること
が望ましい。ファイル名のリストはコンポジションの中
で暗に作られている。すなわち、開発者は最初クライア
ントを作るかサーバを作るか選択するときにどちらのテ
ンプレートセットを使うか示しているのである。テンプ
レートは、希望のファイルを作るためにシンボル表の中
の値と結びつけられる。コンポジションをシンボル表の
上にロードし、ファイル名と対応するするテンプレート
を取り出すと、次はステップ508でこれらりテンプレー
トとシンボル表からのシンボルの値を使ってプログラム
・ソースファイルが生成される。ひとつのソースファイ
ルはひとつのテンプレートから作られることが望まし
い。このステップは図6とともに、以下により詳しく述
べる。最後に、ソースファイルができあがってしまう
と、ステップ510で示すように結果のファイルはODFに送
られることがある。ODFは、ファイルを実行可能な形式
にコンパイルしリンクする。
【0048】図6の600の箇所は、本発明の実施例とし
て606で示されるソースファイルを作るために604のシン
ボル表と602のプログラム・テンプレートを結び付ける
ようすを示している。一般に、テンプレートは結果とな
るソースファイルへと「マップ」される。テンプレート
のある部分(ジェネリックなヘッダ部分など)は文字通
りソースファイルにコピーされ、識別子などの他の部分
はシンボル表により実際の値に置き換わる。この置き換
えは識別子がシンボル表を検索したときに起こり、対応
する値に変わる。(これはマクロ置換と呼ばれる) 例
えば、サーバ・オブジェクトが作られるときには、その
インタフェースが定義される必要がある。このサーバの
アウトラインのスケルトンは、テンプレート602で与え
られる。ある実施例では、テンプレート602は、手続き
呼び出しやメソッド・ルーチンに使われるジェネリック
・ヘッダを含んでいる。602に示されているように、ひ
とつのヘッダは "class@(interface.module)::@(interf
ace.name)" という形式の行である。この"@"シンボル
は、それに続く識別子がシンボル表の中の値に置き換わ
ることを示している。この例では、テンプレートの"cla
ss@(interface.module)::@(interface.name)"が、シン
ボル表の値に結びつけられる。シンボル表604は、識別
子から値を与えるエントリを持っている。この例で
は、"interface.module"という識別子が"foo"という値
を持ち、"interface.name"という識別子が"bar"という
値を持っている。シンボル表の中のエントリは、テンプ
レートと結びつけられてソースファイルを作り、"class
foo::bar"というコードを持つことになる。
て606で示されるソースファイルを作るために604のシン
ボル表と602のプログラム・テンプレートを結び付ける
ようすを示している。一般に、テンプレートは結果とな
るソースファイルへと「マップ」される。テンプレート
のある部分(ジェネリックなヘッダ部分など)は文字通
りソースファイルにコピーされ、識別子などの他の部分
はシンボル表により実際の値に置き換わる。この置き換
えは識別子がシンボル表を検索したときに起こり、対応
する値に変わる。(これはマクロ置換と呼ばれる) 例
えば、サーバ・オブジェクトが作られるときには、その
インタフェースが定義される必要がある。このサーバの
アウトラインのスケルトンは、テンプレート602で与え
られる。ある実施例では、テンプレート602は、手続き
呼び出しやメソッド・ルーチンに使われるジェネリック
・ヘッダを含んでいる。602に示されているように、ひ
とつのヘッダは "class@(interface.module)::@(interf
ace.name)" という形式の行である。この"@"シンボル
は、それに続く識別子がシンボル表の中の値に置き換わ
ることを示している。この例では、テンプレートの"cla
ss@(interface.module)::@(interface.name)"が、シン
ボル表の値に結びつけられる。シンボル表604は、識別
子から値を与えるエントリを持っている。この例で
は、"interface.module"という識別子が"foo"という値
を持ち、"interface.name"という識別子が"bar"という
値を持っている。シンボル表の中のエントリは、テンプ
レートと結びつけられてソースファイルを作り、"class
foo::bar"というコードを持つことになる。
【0049】より洗練された方法で置換ができればなお
良く、例で示したような特別な形式や構文でなくてもこ
れができればありがたい。例として、次に、どのように
この置換が行なわれるのかをさらに説明する。上に述べ
たように、コード生成器はプログラム・ソースファイル
とシンボル表を作る。テンプレート・ファイルは、"@"
で始まる特別な形式を含んでいて、それがシンボル表か
らの値に置き換わる。テンプレート・ファイルの他の情
報は、出力となるファイルにそのまま文字通りコピーさ
れる。例えば、テンプレート・ファイルが、 My @(animal) has @(insect). と言う行を含んでいたとすると、シンボル表"st"は次の
ように初期化される。
良く、例で示したような特別な形式や構文でなくてもこ
れができればありがたい。例として、次に、どのように
この置換が行なわれるのかをさらに説明する。上に述べ
たように、コード生成器はプログラム・ソースファイル
とシンボル表を作る。テンプレート・ファイルは、"@"
で始まる特別な形式を含んでいて、それがシンボル表か
らの値に置き換わる。テンプレート・ファイルの他の情
報は、出力となるファイルにそのまま文字通りコピーさ
れる。例えば、テンプレート・ファイルが、 My @(animal) has @(insect). と言う行を含んでいたとすると、シンボル表"st"は次の
ように初期化される。
【0050】 st.setValue("animal", "dog"); st.setValue("insect", "fleas"); コード生成器は、 My dog has fleas. を生成する。
【0051】"@(identifier)"という特殊な形式はシン
ボル表の中の識別子に対する値に置換される。識別子は
任意の文字列であってよい。識別子はパス(path)を表
現し、パス・コンポーネントはピリオドで区切られてい
る。それぞれのパス・コンポーネントはシンボル表から
分別して取り出され、最後のコンポーネント以外の値は
全部シンボル表である。例えば 、@(foo.bar) の値は、
@(foo)の値であるシンボル表の中の"@(bar)"の値を検索
することによって取り出される。このようにして、「シ
ンボル表」はシンボル表の木構造になっており、ピリオ
ド"."で区切られたパスによってインデックスされてい
る。
ボル表の中の識別子に対する値に置換される。識別子は
任意の文字列であってよい。識別子はパス(path)を表
現し、パス・コンポーネントはピリオドで区切られてい
る。それぞれのパス・コンポーネントはシンボル表から
分別して取り出され、最後のコンポーネント以外の値は
全部シンボル表である。例えば 、@(foo.bar) の値は、
@(foo)の値であるシンボル表の中の"@(bar)"の値を検索
することによって取り出される。このようにして、「シ
ンボル表」はシンボル表の木構造になっており、ピリオ
ド"."で区切られたパスによってインデックスされてい
る。
【0052】次の例では、テンプレートファイルは次の
ように書かれてあるものとする。
ように書かれてあるものとする。
【0053】 The big @(story .homeowner) wanted to eat @(story.protagonist). またシンボル表 "st" は次のように初期化されているも
のとする。
のとする。
【0054】 CG::SymbolTable *story = new CG:: SymbolTable; story.setValue ("homeowner", "brown bear"); story.setValue ("protagonist", "Goldilocks"); st.setValue ("story", story); このとき、 コード生成器は次のコード The big brown bear wanted to eat Goldilocks. を生成する。
【0055】シンボル表は、隠れていたシンボル表を自
動的に生成できるのでより簡単な方法で初期化できる。
動的に生成できるのでより簡単な方法で初期化できる。
【0056】 st.setValue ("story.homeowner", "brown bear"); st.setValue ("story.protagonist","Goldilocks"); シンボル表のエントリの値は再びシンボル表であるか、
あるいは整数、文字列、文字列ベクタである。整数値を
持つシンボル表のエントリは、@if/@else表現も用いる
ことができる。例えば、ゼロでない値はtrueであると
き、 @if (flag) Hi Ho @else Hi No は、flag の値が次のとき、 st.set.Value("flag",0); "Hi No"となり、そうでないとき"Hi Ho"となる。コード
生成器は、"@elseif"という表現も持ち、通常どおりに
解釈される。
あるいは整数、文字列、文字列ベクタである。整数値を
持つシンボル表のエントリは、@if/@else表現も用いる
ことができる。例えば、ゼロでない値はtrueであると
き、 @if (flag) Hi Ho @else Hi No は、flag の値が次のとき、 st.set.Value("flag",0); "Hi No"となり、そうでないとき"Hi Ho"となる。コード
生成器は、"@elseif"という表現も持ち、通常どおりに
解釈される。
【0057】ベクタの値を持つシンボル表は、@foreach
という形式 The letters are: @foreach (letter all-letters) @(l
etter) @end. を持つ。
という形式 The letters are: @foreach (letter all-letters) @(l
etter) @end. を持つ。
【0058】もし、シンボル表が次のように初期化され
ている場合、 CG::StringVector v; v.insert("letterA"); v.insert("letterB"); v.insert("letterC"); st.setValue("all-letters", v); st.setValue("letterA", "A"); st.setValue("letterB", "B"); st.setValue("letterC", "C"); コード生成器は次のようなコード The letters are: A B C. を生成する。
ている場合、 CG::StringVector v; v.insert("letterA"); v.insert("letterB"); v.insert("letterC"); st.setValue("all-letters", v); st.setValue("letterA", "A"); st.setValue("letterB", "B"); st.setValue("letterC", "C"); コード生成器は次のようなコード The letters are: A B C. を生成する。
【0059】@foreach 節のボディ(body)は文字列ベ
クタの中のそれぞれの項につき一回翻訳される。 ベク
タのそれぞれの要素の(文字列)の値は@foreach ルー
プの変数に束縛され、ループのボディの中で束縛子とし
て用いられる。ループ変数が識別子に出会ったとき、そ
れはその値に変換され、結果となる識別子はシンボル表
の中から取り出される。例えば、ループの最初の一回め
でletterの値はletterAになり、@(letter)は@(letter
A)となり、 結果 A という値になる。
クタの中のそれぞれの項につき一回翻訳される。 ベク
タのそれぞれの要素の(文字列)の値は@foreach ルー
プの変数に束縛され、ループのボディの中で束縛子とし
て用いられる。ループ変数が識別子に出会ったとき、そ
れはその値に変換され、結果となる識別子はシンボル表
の中から取り出される。例えば、ループの最初の一回め
でletterの値はletterAになり、@(letter)は@(letter
A)となり、 結果 A という値になる。
【0060】@foreach節のボディの中では、文字列ベク
タ: var:index, var:is-first,var:is-last のそれぞれ
の要素に対してさらに三つの変数が束縛される。これら
の値はベクタの要素(いまループ変数 "var" に束縛さ
れる)に対する整数のインデックスであり、整数フラッ
グが "1" のとき最初かあるいは最後のベクタの要素が
束縛されている。同じ ABC のシンボル表が与えられて
いるとして、 @foreach (leter all-letters) int @(letter) = @(letter:index) @if(letter:is-las
t);@else,@end @end コード生成器は以下のコード A=1, A=2, C=3; を生成する。
タ: var:index, var:is-first,var:is-last のそれぞれ
の要素に対してさらに三つの変数が束縛される。これら
の値はベクタの要素(いまループ変数 "var" に束縛さ
れる)に対する整数のインデックスであり、整数フラッ
グが "1" のとき最初かあるいは最後のベクタの要素が
束縛されている。同じ ABC のシンボル表が与えられて
いるとして、 @foreach (leter all-letters) int @(letter) = @(letter:index) @if(letter:is-las
t);@else,@end @end コード生成器は以下のコード A=1, A=2, C=3; を生成する。
【0061】C の識別子を構成するときには、ひとつか
あるいはそれ以上の @if/@else/@end か @foreach@end
表現を用いると便利なことがある。この場合、コード生
成器は、@{else}と@{end}を @else と @end のように扱
う。そこで次のように書いた場合、 FOO@if(NEVER)HOOO@{else}BAR@{end}BAZ "never" が "0" に束縛されたとすると、コード生成器
は期待どおり"FOOBARBAZ"を生成する。
あるいはそれ以上の @if/@else/@end か @foreach@end
表現を用いると便利なことがある。この場合、コード生
成器は、@{else}と@{end}を @else と @end のように扱
う。そこで次のように書いた場合、 FOO@if(NEVER)HOOO@{else}BAR@{end}BAZ "never" が "0" に束縛されたとすると、コード生成器
は期待どおり"FOOBARBAZ"を生成する。
【0062】コード生成器は一般目的のコードの生成器
であるが、一応 C++/Objective Cのソースとヘッダ、Im
akefileを生成することを意図したものである。また、
識別子のコンポーネントは、次のように二重に間接的で
ある。
であるが、一応 C++/Objective Cのソースとヘッダ、Im
akefileを生成することを意図したものである。また、
識別子のコンポーネントは、次のように二重に間接的で
ある。
【0063】 @foreach (var list) list element @(var) is: @(foo.var.value) ここで、@(var)は新しい識別子のパスを作るために@(fo
o.bar.value)のように一度検索され、完全なパスの値が
取り出される。
o.bar.value)のように一度検索され、完全なパスの値が
取り出される。
【0064】一般にテンプレート・ファイルは、分散オ
ブジェクトのアプリケーションを規範に基づき表現す
る。いろいろな種類の分散オブジェクト・システムや分
散オブジェクト・アプリケーションになる可能性のある
テンプレート・ファイルの技術において、熟練している
人たちに有意義であろう。テンプレート・ファイルの特
別な例については、上で述べたとおりである。
ブジェクトのアプリケーションを規範に基づき表現す
る。いろいろな種類の分散オブジェクト・システムや分
散オブジェクト・アプリケーションになる可能性のある
テンプレート・ファイルの技術において、熟練している
人たちに有意義であろう。テンプレート・ファイルの特
別な例については、上で述べたとおりである。
【0065】図に戻って、図7の700は図5の504で示し
たシンボル表の構築の実施例を表している。ステップ70
2で、探索パスがコンパイル・ツールによってロードさ
れており、後に使うことになる。これらの探索パスは、
コード生成器が用いるファイルのファイル名かディレク
トリ名のリストである。このステップの一部として、コ
ンポーネント・サービスがいくつかのコンポーネントを
束ねることがある。例えば、二つの異なるコンポーネン
トが同じヘッダ・ファイルを使い、同じ探索パスの情報
を記憶している場合がある ステップ704では、シンボル
木の中に置かれるトップレベルのシンボルがロードされ
る。これらのトップレベル・シンボルは、それぞれのど
のコンポジションにも関連づけられる大域的な名前であ
る。いろいろな種類のトップレベル・シンボルがシンボ
ル表の木にロードされる可能性がある。 例えば、これ
らのトップレベル・シンボルは、インタフェースの名
前、インタフェース・モジュール、すべてのパーツのリ
ストである可能があるし、あるいはもっと一般に、コン
ポジションのどのパーツ、プラグ、ソケットにも関連し
ない可能性もある。
たシンボル表の構築の実施例を表している。ステップ70
2で、探索パスがコンパイル・ツールによってロードさ
れており、後に使うことになる。これらの探索パスは、
コード生成器が用いるファイルのファイル名かディレク
トリ名のリストである。このステップの一部として、コ
ンポーネント・サービスがいくつかのコンポーネントを
束ねることがある。例えば、二つの異なるコンポーネン
トが同じヘッダ・ファイルを使い、同じ探索パスの情報
を記憶している場合がある ステップ704では、シンボル
木の中に置かれるトップレベルのシンボルがロードされ
る。これらのトップレベル・シンボルは、それぞれのど
のコンポジションにも関連づけられる大域的な名前であ
る。いろいろな種類のトップレベル・シンボルがシンボ
ル表の木にロードされる可能性がある。 例えば、これ
らのトップレベル・シンボルは、インタフェースの名
前、インタフェース・モジュール、すべてのパーツのリ
ストである可能があるし、あるいはもっと一般に、コン
ポジションのどのパーツ、プラグ、ソケットにも関連し
ない可能性もある。
【0066】次にステップ706では、コンポジションに
関係あるファイルのファイル記述子がロードされ、それ
らのうち適当なテンプレートが決定する。このステップ
は、図8でより詳細に説明される。ステップ708では、
コンポジションで定義されたコンポーネントがロードさ
れている。このステップは、コンポーネント・サービス
に、コンポジションの中でパーツによって言及されてい
るすべてのコンポーネントのリストを要求することで完
結する場合がある。このステップは、図9においてより
詳しく説明される。一度コンポーネントがロードし終る
と、ステップ710 でこれらコンポーネントに対応するパ
ーツがロードされる。このステップは、図10 で詳細
に説明される。ステップ712ではコンポジションの中で
定義されたプラグ、ソケット、ベース・インタフェース
がロードされる。このステップは、図11でより詳細に
説明される。ステップ718では接続がロードされる。こ
のステップは、図12および図13でより詳細に説明さ
れる。
関係あるファイルのファイル記述子がロードされ、それ
らのうち適当なテンプレートが決定する。このステップ
は、図8でより詳細に説明される。ステップ708では、
コンポジションで定義されたコンポーネントがロードさ
れている。このステップは、コンポーネント・サービス
に、コンポジションの中でパーツによって言及されてい
るすべてのコンポーネントのリストを要求することで完
結する場合がある。このステップは、図9においてより
詳しく説明される。一度コンポーネントがロードし終る
と、ステップ710 でこれらコンポーネントに対応するパ
ーツがロードされる。このステップは、図10 で詳細
に説明される。ステップ712ではコンポジションの中で
定義されたプラグ、ソケット、ベース・インタフェース
がロードされる。このステップは、図11でより詳細に
説明される。ステップ718では接続がロードされる。こ
のステップは、図12および図13でより詳細に説明さ
れる。
【0067】図8は、ステップ706を詳細に説明したも
のである。このステップはコンポジションに関係したい
ろいろなファイルのファイル記述子をロードし、どのフ
ァイルがテンプレートであるか決定する。ファイル記述
子は、ファイルを二つの次元から型に分ける。最初に、
ファイルは中に何を含むかで分類される。ファイルは宣
言、定義、IDLコードなどを含んでいる。次に、ファイ
ルは何がもとになっているかで分類ができる。最初のカ
テゴリーでは、ファイルはコード生成器によって作られ
たものである。これらのファイルはフラグのついたテン
プレートを持っていて、そのファイルを生成するのに敵
したテンプレートを指定してある。二番目のカテゴリー
は、開発者によって提供されたファイルであり、C++ の
ようなメソッドの定義を実装したソースコードを含んで
いる。三番目のカテゴリーは、図4のオブジェクト・ア
クセス・ソフトウェア412のようにクロス・レファラン
スだけのものである。これらのクロス・レファランスに
より、コード生成器はオブジェクト・アクセス・ソフト
ウェアで利用できるファイルを見つける技術を提供す
る。802から始めて、ファイルはまず生成されたものか
そうでないかの類別を行なう。ステップ804では、非生
成ファイルはさらに中身(内容の型(content type))
による類別を行なう。プログラム・テンプレートのいく
つかは非生成ファイル名を型によって言及するので、こ
の方法は有用である。例えば、Imakefileはこれを行な
う。
のである。このステップはコンポジションに関係したい
ろいろなファイルのファイル記述子をロードし、どのフ
ァイルがテンプレートであるか決定する。ファイル記述
子は、ファイルを二つの次元から型に分ける。最初に、
ファイルは中に何を含むかで分類される。ファイルは宣
言、定義、IDLコードなどを含んでいる。次に、ファイ
ルは何がもとになっているかで分類ができる。最初のカ
テゴリーでは、ファイルはコード生成器によって作られ
たものである。これらのファイルはフラグのついたテン
プレートを持っていて、そのファイルを生成するのに敵
したテンプレートを指定してある。二番目のカテゴリー
は、開発者によって提供されたファイルであり、C++ の
ようなメソッドの定義を実装したソースコードを含んで
いる。三番目のカテゴリーは、図4のオブジェクト・ア
クセス・ソフトウェア412のようにクロス・レファラン
スだけのものである。これらのクロス・レファランスに
より、コード生成器はオブジェクト・アクセス・ソフト
ウェアで利用できるファイルを見つける技術を提供す
る。802から始めて、ファイルはまず生成されたものか
そうでないかの類別を行なう。ステップ804では、非生
成ファイルはさらに中身(内容の型(content type))
による類別を行なう。プログラム・テンプレートのいく
つかは非生成ファイル名を型によって言及するので、こ
の方法は有用である。例えば、Imakefileはこれを行な
う。
【0068】ステップ806では生成されたファイルのリ
ストが貯えられる。この生成ファイルのリストは図5の
506で必要とされたとき、アクセスされ利用される。
ストが貯えられる。この生成ファイルのリストは図5の
506で必要とされたとき、アクセスされ利用される。
【0069】図9の900は図7のステップ708を詳しく説
明している。このステップでは、コンポジションの中で
言及されたコンポーネントをシンボル表にロードする。
このステップではコンポーネント・サービスによって実
行され、コンポジションの中で使われるすべてのパー
ツ、プラグ、ソケットその他をスキャンして、これらに
よって使われるすべてのコンポーネントのリストを作成
する。いくつかのパーツは、同じコンポーネントを使う
ことがあるので、リストを作成する際は重複のないよう
に、ちょっとしたチェックプログラムを走らせる必要が
ある。ステップ904では、コンポーネントの名前は対応
する型とともにシンボル表に加えられる。コンポーネン
ト・ファクトリは複合的な型であるので、このデータは
いくつかの要素を含むことがある。これらはファクトリ
のクリエータの型とクリエータの名前を含み、ファクト
リの名前は名前づけサービスによって登録される。ファ
クトリはコンポーネントのインスタンスを動作時に作る
ために用いられる。この実行時コードはインスタンスを
作るために適当なファクトリを探す。
明している。このステップでは、コンポジションの中で
言及されたコンポーネントをシンボル表にロードする。
このステップではコンポーネント・サービスによって実
行され、コンポジションの中で使われるすべてのパー
ツ、プラグ、ソケットその他をスキャンして、これらに
よって使われるすべてのコンポーネントのリストを作成
する。いくつかのパーツは、同じコンポーネントを使う
ことがあるので、リストを作成する際は重複のないよう
に、ちょっとしたチェックプログラムを走らせる必要が
ある。ステップ904では、コンポーネントの名前は対応
する型とともにシンボル表に加えられる。コンポーネン
ト・ファクトリは複合的な型であるので、このデータは
いくつかの要素を含むことがある。これらはファクトリ
のクリエータの型とクリエータの名前を含み、ファクト
リの名前は名前づけサービスによって登録される。ファ
クトリはコンポーネントのインスタンスを動作時に作る
ために用いられる。この実行時コードはインスタンスを
作るために適当なファクトリを探す。
【0070】図10の1000は、図7のステップ710を詳
細に述べたものである。このステップは、コンポジショ
ンの中で使われたすべてのパーツをシンボル表にロード
する。1002から始めて、パーツのリストが決定する。こ
のステップは、コンポジション・サービスが必要なすべ
てのパーツのリストを要求することで実行される。次に
ステップ1004では、パーツの名前が、パーツのコンポー
ネントへのクロス・レファランスを伴ってシンボル表に
貯えられる。図9で各々のコンポーネントに対するシン
ボル表のエントリができるので、これらのシンボル表の
名前は、それぞれのパーツのコンポーネントをクロス・
レファランスするために貯えられる。ステップ1006で
は、それぞれパーツのクリエータ関数の引数が記憶され
る。それぞれのコンポーネントはファクトリを持ってい
て、それは今度はクリエータ関数になる。より正確に言
えばステップ1006は、それぞれのパーツのコンポーネン
トのファクトリのクリエータ関数の引数を持っているこ
とになる。このステップではシンボル表のエントリが作
られて、この値はシンボル表で、そのファクトリのクリ
エータ関数によって必要とされるすべての引数へとマッ
プされる。この引数の集合はファクトリ関数を呼び出す
コードを生成するとき必要となる値の集合である。ステ
ップ1008ではシンボル表にパーツの初期化する値を貯え
る。パーツのそれぞれの属性はこのステップで初期化さ
れる。
細に述べたものである。このステップは、コンポジショ
ンの中で使われたすべてのパーツをシンボル表にロード
する。1002から始めて、パーツのリストが決定する。こ
のステップは、コンポジション・サービスが必要なすべ
てのパーツのリストを要求することで実行される。次に
ステップ1004では、パーツの名前が、パーツのコンポー
ネントへのクロス・レファランスを伴ってシンボル表に
貯えられる。図9で各々のコンポーネントに対するシン
ボル表のエントリができるので、これらのシンボル表の
名前は、それぞれのパーツのコンポーネントをクロス・
レファランスするために貯えられる。ステップ1006で
は、それぞれパーツのクリエータ関数の引数が記憶され
る。それぞれのコンポーネントはファクトリを持ってい
て、それは今度はクリエータ関数になる。より正確に言
えばステップ1006は、それぞれのパーツのコンポーネン
トのファクトリのクリエータ関数の引数を持っているこ
とになる。このステップではシンボル表のエントリが作
られて、この値はシンボル表で、そのファクトリのクリ
エータ関数によって必要とされるすべての引数へとマッ
プされる。この引数の集合はファクトリ関数を呼び出す
コードを生成するとき必要となる値の集合である。ステ
ップ1008ではシンボル表にパーツの初期化する値を貯え
る。パーツのそれぞれの属性はこのステップで初期化さ
れる。
【0071】図11は、図7のステップ712を例示して
いる。このステップでは、コンポジションの中で使われ
るすべてのプラグ、ソケット、ベース・インタフェース
が、シンボル表に貯えられる。最初ステップ1102でプラ
グのリスト、ソケットのリスト、ベース・インタフェー
スのリストが決定する。これらのリストは、コンポジシ
ョン・サービスをに問い合わせることで決定できること
もある。一度これらの要素が決定すれば、次にステップ
1104でそれぞれのプラグの名前と型、それぞれのソケッ
トの名前と型、それぞれのベース・インタフェースの名
前と型がシンボル表に読み込まれる(stored)。プラグ
やソケットの型は、IDL型のオブジェクトで、ソケット
から渡されたり、プラグから受けとったりする。それは
接続を受けるオブジェクトの型である。ベース・インタ
フェースは、他のインタフェースから導かれるものては
ない。 言い替えれば、 ベース・インタフェースでない
インタフェースは他から引き出されたインタフェースで
ある。
いる。このステップでは、コンポジションの中で使われ
るすべてのプラグ、ソケット、ベース・インタフェース
が、シンボル表に貯えられる。最初ステップ1102でプラ
グのリスト、ソケットのリスト、ベース・インタフェー
スのリストが決定する。これらのリストは、コンポジシ
ョン・サービスをに問い合わせることで決定できること
もある。一度これらの要素が決定すれば、次にステップ
1104でそれぞれのプラグの名前と型、それぞれのソケッ
トの名前と型、それぞれのベース・インタフェースの名
前と型がシンボル表に読み込まれる(stored)。プラグ
やソケットの型は、IDL型のオブジェクトで、ソケット
から渡されたり、プラグから受けとったりする。それは
接続を受けるオブジェクトの型である。ベース・インタ
フェースは、他のインタフェースから導かれるものては
ない。 言い替えれば、 ベース・インタフェースでない
インタフェースは他から引き出されたインタフェースで
ある。
【0072】図12と図13は、本発明の実施例に従っ
て図7のステップ718を説明している。このステップ
は、コンポジションから接続をシンボル表に読み込んで
いる。接続は、コンポジション構築器でアプリケーショ
ンを作成ときに開発者によって形成されるものである。
接続はあるパーツのソケットから別のパーツのプラグへ
とつながるものである。慣例では、ソケットはプラグが
必要としているオブジェクトを使うためにソケットがオ
ブジェクトを提供するものである。これは電気機器のプ
ラグとソケットを模倣したものである。電気的なプラグ
が電気的なソケットに差し込まれたとき、ソケットはプ
ラグに電力を供給する。同様に、実行時には、接続はオ
ブジェクトへのレファランスをソケットからプラグに渡
すように見えるものである。さらに、接続はコンポジシ
ョン・ソケットからパーツへ、あるいはコンポジション
・プラグからパーツへとつながるものである場合もあ
る。ここで「コンポジション」ソケット/プラグは、コ
ンポジションの中から外へアクセスできるようにするも
のである。言い替えれば、コンポジション・ソケット/
プラグは、コンポジションの公的なIDLインタフェース
である。
て図7のステップ718を説明している。このステップ
は、コンポジションから接続をシンボル表に読み込んで
いる。接続は、コンポジション構築器でアプリケーショ
ンを作成ときに開発者によって形成されるものである。
接続はあるパーツのソケットから別のパーツのプラグへ
とつながるものである。慣例では、ソケットはプラグが
必要としているオブジェクトを使うためにソケットがオ
ブジェクトを提供するものである。これは電気機器のプ
ラグとソケットを模倣したものである。電気的なプラグ
が電気的なソケットに差し込まれたとき、ソケットはプ
ラグに電力を供給する。同様に、実行時には、接続はオ
ブジェクトへのレファランスをソケットからプラグに渡
すように見えるものである。さらに、接続はコンポジシ
ョン・ソケットからパーツへ、あるいはコンポジション
・プラグからパーツへとつながるものである場合もあ
る。ここで「コンポジション」ソケット/プラグは、コ
ンポジションの中から外へアクセスできるようにするも
のである。言い替えれば、コンポジション・ソケット/
プラグは、コンポジションの公的なIDLインタフェース
である。
【0073】ステップ1202から始まって、接続のリスト
はコンポジション・サービスから得られる。この接続関
係が一度得られれば、次のステップ1204から終了(EN
D)までが実行され、それぞれの接続はシンボル表にロ
ードされる。図11で前に示したようにコンポジション
のすべてのプラグとソケットは、既にシンボル表にロー
ドされている。さらに、ソケットはオブジェクトへのレ
ファランスをプラグに渡すようになっているが、これら
のレファランスが実際に渡されるのは実行時である。さ
らに、正しいオブジェクトのレファランスが取り出され
るためには、実行時に一連の操作がソケットに対して行
なわれなければならないし、プラグに正しいオブジェク
トのレファランスをを渡すためにも、プラグに一連の操
作を施す必要がある。ステップ1204では、現時点での接
続のプラグのクロス・レファランスがシンボル表に記憶
される。次にステップ1206では、このプラグに対する操
作列もシンボル表に貯えられる。このように、プログラ
ムは適当なタイミングでこの一連の操作列(sequence o
f operation)が呼び出されて生成される。
はコンポジション・サービスから得られる。この接続関
係が一度得られれば、次のステップ1204から終了(EN
D)までが実行され、それぞれの接続はシンボル表にロ
ードされる。図11で前に示したようにコンポジション
のすべてのプラグとソケットは、既にシンボル表にロー
ドされている。さらに、ソケットはオブジェクトへのレ
ファランスをプラグに渡すようになっているが、これら
のレファランスが実際に渡されるのは実行時である。さ
らに、正しいオブジェクトのレファランスが取り出され
るためには、実行時に一連の操作がソケットに対して行
なわれなければならないし、プラグに正しいオブジェク
トのレファランスをを渡すためにも、プラグに一連の操
作を施す必要がある。ステップ1204では、現時点での接
続のプラグのクロス・レファランスがシンボル表に記憶
される。次にステップ1206では、このプラグに対する操
作列もシンボル表に貯えられる。このように、プログラ
ムは適当なタイミングでこの一連の操作列(sequence o
f operation)が呼び出されて生成される。
【0074】操作列の例を述べる。ソケットは何も引数
をとらずに値を返す操作であるとする。すなわち、操作
"part.get_value" は、何も引数をとらず値だけ返す。
この構築器はユーザにソケットに対する操作列を作成で
きるようになっている。この操作は前のソケット操作の
値に依存して変わるかも知れない。例えば、次の操作: Type1 var1 = part.get_value1(); Type2 var2 = var1.get_value2(); Type3 var3 = var2.get_value3(); は、最終の値が"var3"になる操作列を定義している。
をとらずに値を返す操作であるとする。すなわち、操作
"part.get_value" は、何も引数をとらず値だけ返す。
この構築器はユーザにソケットに対する操作列を作成で
きるようになっている。この操作は前のソケット操作の
値に依存して変わるかも知れない。例えば、次の操作: Type1 var1 = part.get_value1(); Type2 var2 = var1.get_value2(); Type3 var3 = var2.get_value3(); は、最終の値が"var3"になる操作列を定義している。
【0075】ステップ1208は、その時点での接続のソケ
ットのクロス・レファランスをシンボル表に記憶してい
る。次のステップ1210では、このソケットに対する操作
列がシンボル表に記憶される。次に、1214、1218、122
2、1226のステップに従って接続がソートされる。接続
は、その終端がソケットであるかどうか(コンポジショ
ン・ソケットがパーツに接続されたとき)、プラグであ
るかどうか(コンポジション・プラグがパーツに接続さ
れたとき)、単に二つのパーツが接続されただけである
かどうか(あるパーツのソケッがもう一方でもう一つの
パーツのプラグに接続されているとき)、あるいは接続
のプラグ終端がそのパーツのクリエータ関数への引数に
なるものであるかどうかによってソートされる。
ットのクロス・レファランスをシンボル表に記憶してい
る。次のステップ1210では、このソケットに対する操作
列がシンボル表に記憶される。次に、1214、1218、122
2、1226のステップに従って接続がソートされる。接続
は、その終端がソケットであるかどうか(コンポジショ
ン・ソケットがパーツに接続されたとき)、プラグであ
るかどうか(コンポジション・プラグがパーツに接続さ
れたとき)、単に二つのパーツが接続されただけである
かどうか(あるパーツのソケッがもう一方でもう一つの
パーツのプラグに接続されているとき)、あるいは接続
のプラグ終端がそのパーツのクリエータ関数への引数に
なるものであるかどうかによってソートされる。
【0076】最初ステップ1214では、接続の終端がコン
ポジション・ソケットであるかどうかを決定する。もし
このステップ1214の答えが"YES"であれば、ステップ121
6においてソケットから接続へのクロス・レファランス
がシンボル表内に生成される。このようにして、シンボ
ル表の中にソケット記述へレファランスが付加される。
いずれの場合にも、 ステップ1218で接続のどちらかの
終端がコンポジション・プラグであるかどうかが決定さ
れる。もし1218の答えが"YES"であれば、ステップ1220
において、プラグから接続へのクロス・レファランスが
生成され、シンボル表の中に記憶される。さらに、この
答えがいずれの場合でも、ステップ1222に進み、二つの
パーツの間で接続があるかどうかが決定される。この質
問1222の答えが"YES"である場合、ステップ1224におい
てこの接続が、初期接続を並べてあったシンボル表に加
えられる。この初期接続は、アプリケーションが開始時
に実行されるものである。もし1222の答えが"NO"である
なら、制御は次のステップ1226に直接進む。ステップ12
26では、接続のプラグ終端が、そのパーツのクリエータ
関数から導き出されたのであるかどうかを決定する。こ
のとき、それぞれのパーツはクリエータ関数を持つコン
ポーネントに対応する。もしもこのクリエータ関数が引
数を持つなら、これらの引数はそのパーツのプラグを形
成する。なぜなら、それら引数はオブジェクトの値によ
って埋められなければならないからである。もしここで
ステップ1226で問題になっている接続のプラグ終端が存
在すれば、パーツのクリエータ関数の引数を埋める(あ
るいは引数から導き出される)ことになり、次の制御ス
テップ1228に進む。ステップ1228ではシンボル表でパー
ツのクリエータ関数の引数リストに接続が付加される。
ステップ1228ののち、あるいはもしステップ1226の答え
が"NO"であれば、このルーチンは終る。
ポジション・ソケットであるかどうかを決定する。もし
このステップ1214の答えが"YES"であれば、ステップ121
6においてソケットから接続へのクロス・レファランス
がシンボル表内に生成される。このようにして、シンボ
ル表の中にソケット記述へレファランスが付加される。
いずれの場合にも、 ステップ1218で接続のどちらかの
終端がコンポジション・プラグであるかどうかが決定さ
れる。もし1218の答えが"YES"であれば、ステップ1220
において、プラグから接続へのクロス・レファランスが
生成され、シンボル表の中に記憶される。さらに、この
答えがいずれの場合でも、ステップ1222に進み、二つの
パーツの間で接続があるかどうかが決定される。この質
問1222の答えが"YES"である場合、ステップ1224におい
てこの接続が、初期接続を並べてあったシンボル表に加
えられる。この初期接続は、アプリケーションが開始時
に実行されるものである。もし1222の答えが"NO"である
なら、制御は次のステップ1226に直接進む。ステップ12
26では、接続のプラグ終端が、そのパーツのクリエータ
関数から導き出されたのであるかどうかを決定する。こ
のとき、それぞれのパーツはクリエータ関数を持つコン
ポーネントに対応する。もしもこのクリエータ関数が引
数を持つなら、これらの引数はそのパーツのプラグを形
成する。なぜなら、それら引数はオブジェクトの値によ
って埋められなければならないからである。もしここで
ステップ1226で問題になっている接続のプラグ終端が存
在すれば、パーツのクリエータ関数の引数を埋める(あ
るいは引数から導き出される)ことになり、次の制御ス
テップ1228に進む。ステップ1228ではシンボル表でパー
ツのクリエータ関数の引数リストに接続が付加される。
ステップ1228ののち、あるいはもしステップ1226の答え
が"NO"であれば、このルーチンは終る。
【0077】前述の発明について明確な理解を得てもら
うために説明をしてきたが、後に添付したクレームの範
囲内である変更や改変がなされる必要があるのは明らか
であろう。例えば、コード生成器はどの適当な分散オブ
ジェクト・システムに対してもコードを生成する場合が
ある。プログラム・テンプレートで用いられるためにあ
る特定のシンタックスが示されてきたが、これはどのよ
うなシンタックスでもよい。加えてここに示したシンボ
ル表は、識別子を値に結びつけるある一つの可能な場合
を示した。この識別子を値に結びつけるやり方にはまだ
いろいろなやり方がありうる。さらに、シンボル表にい
ろいろな要素をロードする際にはある特定の順序を提示
したが、異なる適当な順序でよい。したがって、ここで
述べた実施例は例証するためのものであり、制限ではな
い。したがって、本発明はここに詳細に与えた方法に限
らず、特許請求の範囲の主張によって、同じいかような
方法であっても定義できる。
うために説明をしてきたが、後に添付したクレームの範
囲内である変更や改変がなされる必要があるのは明らか
であろう。例えば、コード生成器はどの適当な分散オブ
ジェクト・システムに対してもコードを生成する場合が
ある。プログラム・テンプレートで用いられるためにあ
る特定のシンタックスが示されてきたが、これはどのよ
うなシンタックスでもよい。加えてここに示したシンボ
ル表は、識別子を値に結びつけるある一つの可能な場合
を示した。この識別子を値に結びつけるやり方にはまだ
いろいろなやり方がありうる。さらに、シンボル表にい
ろいろな要素をロードする際にはある特定の順序を提示
したが、異なる適当な順序でよい。したがって、ここで
述べた実施例は例証するためのものであり、制限ではな
い。したがって、本発明はここに詳細に与えた方法に限
らず、特許請求の範囲の主張によって、同じいかような
方法であっても定義できる。
【図1】図1は、本発明に対応する分散オブジェクト・
システムの概略図である。
システムの概略図である。
【図2】図2は、本発明に対応するコンピュータ・ネッ
トワークの構成図である。
トワークの構成図である。
【図3】図3は、本発明に対応するコンピュータ・シス
テムのブロック図である。
テムのブロック図である。
【図4】図4は、本発明に関して,分散オブジェクトシ
ステムにおけるオブジェクト指向アプリケーションの構
築を説明する構成図である。
ステムにおけるオブジェクト指向アプリケーションの構
築を説明する構成図である。
【図5】図5は、本発明に関するネットワーク・アプリ
ケーションのコードを自動生成する方法を示すフローチ
ャートである。
ケーションのコードを自動生成する方法を示すフローチ
ャートである。
【図6】図6は、本発明の実施例において,テンプレー
トとシンボル表情報を組合せてソースファイルを生成す
る様子を示す構成図である。
トとシンボル表情報を組合せてソースファイルを生成す
る様子を示す構成図である。
【図7】図7は、図5のステップ504のフローチャート
であり、 本発明の実施例において、 ネットワーク・ア
プリケーションがシンボル表にロードされるようすを図
式化したものである。
であり、 本発明の実施例において、 ネットワーク・ア
プリケーションがシンボル表にロードされるようすを図
式化したものである。
【図8】図8は、本発明の実施例に関して図7のステッ
プ706を詳細化したもので、 ファイル識別子がシンボル
表にロードされるのを示す流れ図である。
プ706を詳細化したもので、 ファイル識別子がシンボル
表にロードされるのを示す流れ図である。
【図9】図9は、本発明の実施例に関して図7のステッ
プ708を詳細化したもので、 コンポーネントがシンボル
表にロードされるのを示す流れ図である。
プ708を詳細化したもので、 コンポーネントがシンボル
表にロードされるのを示す流れ図である。
【図10】図10は、本発明の実施例に関して図7のス
テップ710を詳細化したもので、パーツがシンボル表に
ロードされるのを示す流れ図である。
テップ710を詳細化したもので、パーツがシンボル表に
ロードされるのを示す流れ図である。
【図11】図11は、本発明の実施例に関して図7のス
テップ712を詳細化したもので、プラグ、 ソケット、
ベース・インタフェースがシンボル表にロードされるの
を示す流れ図である。
テップ712を詳細化したもので、プラグ、 ソケット、
ベース・インタフェースがシンボル表にロードされるの
を示す流れ図である。
【図12】図12は、本発明の実施例に関して図7のス
テップ718を詳細化したもので、接続情報がシンボル表
にロードされるのを示す流れ図である。
テップ718を詳細化したもので、接続情報がシンボル表
にロードされるのを示す流れ図である。
【図13】図13は、本発明の実施例に関して図7のス
テップ718を詳細化したもので、接続情報がシンボル表
にロードされるのを示す流れ図である。
テップ718を詳細化したもので、接続情報がシンボル表
にロードされるのを示す流れ図である。
10…分散オブジェクトシステム、14…ORBオブジ
ェクト・インプリメンテーション、16…オブジェクト
開発ファシリティ、20…クライアント、22…サロゲ
ート 24…メソッド表(メソッド・テーブル)、25…スタ
ブ関数、26…動的起動インタフェイス、28…標準イ
ンプリメンテーション・スイート 30…動的スケルトン、32…静的スケルトン、34…
ORBインタフェイス、36…サブコントラクト、38
…トランスポート層、42…安全プロトコル、44…タ
イプコード/ANY、46…ORBデーモン、48…イ
ンタフェース・レポジトリ、50…インプリメンテーシ
ョン・レポジトリ、52…ネーミング・サービス、54
…セキュリティ・サーバ、56…単純パージステンス
ェクト・インプリメンテーション、16…オブジェクト
開発ファシリティ、20…クライアント、22…サロゲ
ート 24…メソッド表(メソッド・テーブル)、25…スタ
ブ関数、26…動的起動インタフェイス、28…標準イ
ンプリメンテーション・スイート 30…動的スケルトン、32…静的スケルトン、34…
ORBインタフェイス、36…サブコントラクト、38
…トランスポート層、42…安全プロトコル、44…タ
イプコード/ANY、46…ORBデーモン、48…イ
ンタフェース・レポジトリ、50…インプリメンテーシ
ョン・レポジトリ、52…ネーミング・サービス、54
…セキュリティ・サーバ、56…単純パージステンス
フロントページの続き (72)発明者 グレゴリー ビー. ニュイエンズ アメリカ合衆国, カリフォルニア州, メンロ パーク, ローレル アヴェニュ ー 403 (72)発明者 ハンズ イー. ムッラー アメリカ合衆国, カリフォルニア州, サラトガ, メローウッド ドライヴ 12160
Claims (14)
- 【請求項1】 ネットワーク上にあり(networked)言
語に独立なオブジェクト(indepentent object)を自動
的に組み立てて、分散オブジェクト・システムに用いる
ネットワーク・アプリケーションを生成する計算機にイ
ンプリメントされる(computer-implemented)方法であ
って、 前記ネットワーク・アプリケーションのスキーマ表現
(schematic representation)を受けるステップであっ
て、前記スキーマ表現は前記分散オブジェクト表現の間
の(among)複数のリンクを定義し、 前記ネットワーク・アプリケーションの前記スキーマ表
現をシンボル表中へロードすると共に、前記スキーマ表
現の部分(portion)を前記シンボル表にある複数のエ
ントリ(entry)として格納する(store)ロードステッ
プと、 少なくとも一つ生成されるべきプログラム・ソース・フ
ァイルと、プログラム・ソース・ファイルの発生に使用
するための対応する少なくとも一つのプログラム・テン
プレートと、を決定するステップであって、前記プログ
ラム・テンプレートは前記シンボル表にある複数のエン
トリ(entry)へのレファランス(reference)を含み、 前記シンボル表にある複数のエントリを対応する少なく
とも一つの前記プログラム・テンプレートと組み合わ
せ、それによって、コンパイルされ前記ネットワーク・
アプリケーションの一部を形成するために適する、少な
くとも一つの前記プログラム・ソース・ファイルを作る
ステップと、を備える方法。 - 【請求項2】 前記ネットワーク・アプリケーションの
前記スキーマ表現は、視覚的アプリケーションビルダ
(builder)内に形成され、クライアント・オブジェク
トおよびサーバ・オブジェクトの一方を示すように配置
される、請求項1に記載の方法。 - 【請求項3】 分散オブジェクトの表現の間の前記複数
のリンクは、パーツ(parts)、プラグ(plugs)および
ソケット(sockets)を含む要素(element)の組み合わ
せによって形成される、請求項1または請求項2に記載
の方法。 - 【請求項4】 スキーマ表現をロードするロードステッ
プは、前記スキーマ表現のパーツ、プラグ、ソケットを
ロードすることを含む、請求項1から請求項3のいずれ
かに記載の方法。 - 【請求項5】 前記シンボル表にある前記複数のエント
リの各一つは対応する値にマップする(map)識別子(i
dentifier)を含み、且つ前記複数のエントリを組み合
わる前記ステップは、前記プログラム・テンプレートに
ある前記識別子への前記レファランスをシンボル表から
の対応する値に置換するように作用する、請求項1から
請求項4のいずれかに記載の方法。 - 【請求項6】 少なくとも一つの前記ソースファイルが
コンパイルされ、ネットワーク・アプリケーションの一
部となることを要求するステップを含む、請求項1から
請求項5のいずれかに記載の方法。 - 【請求項7】 ネットワーク上にあり言語に独立なオブ
ジェクトを自動的に組み立てて、分散オブジェクト・シ
ステムに用いるネットワーク・アプリケーションを生成
する計算機にインプリメントされる方法であって、 前記ネットワーク・アプリケーションの前記スキーマ表
現を視覚的アプリケーションビルダを用いて生成するス
テップであって、前記スキーマ表現はクライアント・オ
ブジェクトおよびサーバ・オブジェクトの一方を表示す
るように配置され、スキーマ表現は分散オブジェクトの
表現の間の複数のリンクを定義し、 前記ネットワーク・アプリケーションの前記スキーマ表
現をシンボル表にロードし、前記スキーマ表現の部分を
前記シンボル表にある複数のエントリとして格納するス
テップと、 生成されるべき少なくとも一つプログラム・ソース・フ
ァイルと、前記プログラム・ソース・ファイルを作るた
めの対応する少なくとも一つのプログラム・テンプレー
トとを決定するステップであって、前記プログラム・テ
ンプレート前記前記シンボル表にある複数のエントリの
レファランスを含み、 前記シンボル表にある複数のエントリを対応する少なく
とも一つのプログラム・テンプレートと組み合わせ、そ
れによって、コンパイルされネットワーク・アプリケー
ションの一部を形成するために適する、少なくとも一つ
の前記ソース・ファイルを形成するステップと、を備え
る方法。 - 【請求項8】 分散オブジェクトの表現の間の複数の前
記リンクは、パーツ、プラグ、およびソケットを含む要
素の組み合わせによって形成される、請求項7に記載の
方法。 - 【請求項9】 前記スキーマ表現をロードするステップ
は、前記スキーマ表現の要素をロードすることを含む、
請求項8に記載の方法。 - 【請求項10】 前記シンボル表にある複数の前記エン
トリの各一つは対応する値にマップする識別子を含み、
且つ複数のエントリを組み合わせるステップは、前記プ
ログラム・テンプレートにある前記識別子への前記レフ
ァランスを前記シンボル表にある対応する値に置換する
ように作用する、請求項7から請求項9のいずれかに記
載の方法。 - 【請求項11】 少なくとも一つの前記ソースファイル
がコンパイルされ、前記ネットワーク・アプリケーショ
ンの一部となることを要求するステップを更に含む、請
求項7から請求項10のいずれかに記載の方法。 - 【請求項12】 ネットワーク・アプリケーションのス
キーマ表現をシンボル表にロードし、それにより、ネッ
トワーク上にあり言語に独立なオブジェクトを自動的に
組み立てて、分散オブジェクト・システムに用いるネッ
トワーク・アプリケーションを生成することを補助する
計算機にインプリメントされる方法であって、前記シン
ボル表は複数の識別子を対応する値にマップするよう配
置され、前記スキーマ表現は値を有する識別子に関連づ
けられる要素を含み、 該スキーマ表現からトップレベル・シンボルをシンボル
表へロードし、前記トップレベル・シンボルに関連づけ
られた識別子を対応する値へマップするステップと、 該スキーマ表現から接続をシンボル表へロードし、前記
接続に関連づけられた識別子を対応する値へマップする
ステップと、を備える方法。 - 【請求項13】 スキーマ表現の構築に用いられるファ
イルを指示すると共に生成されるべきファイルを指示す
るファイル記述子(file descriptor)をロードするス
テップと、 該スキーマ表現からプラグを該シンボル表にロードし、
前記プラグに関連づけられる識別子を対応する値にマッ
プするステップと、 スキーマ表現からソケットをシンボル表にロードし、前
記ソケットに関連づけられる識別子を対応する値にマッ
プするステップと、を更に備える請求項12に記載の方
法。 - 【請求項14】 ネットワーク上にあり言語に独立なオ
ブジェクトを自動的に組み立てて、分散オブジェクト・
システムに用いるネットワーク・アプリケーションを生
成するために使用する計算機装置(computer apparatu
s)であって、 処理ユニットと、 前記処理ユニットに結合する入力/出力デバイス(devic
e)と前記処理ユニットと通信する記憶デバイスと、 前記ネットワーク・アプリケーションの、分散オブジェ
クトの表現に間の複数のリンクを定義するスキーマ表現
を受ける手段と、 前記ネットワーク・アプリケーションの前記スキーマ表
現をシンボル表にロードすると共に、前記スキーマ表現
の一部を前記シンボル表にある複数のエントリとして格
納する手段と、 生成されるべき少なくとも一つのファイルと、前記ソー
スファイルを生成するために使用する対応する少なくと
も一つのプログラム・テンプレートとを決定する手段で
あって、前記プログラム・テンプレートは前記シンボル
表にある複数のエントリへのレファランスを含み、 前記シンボル表にある複数のエントリを対応する少なく
とも一つのプログラム・テンプレートを少なくとも一つ
組み合わせ、それによって、コンパイルされネットワー
ク・アプリケーションの一部を形成するために適する、
少なくとも一つの前記ソースファイルを作成する手段
と、を備える計算機装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/674828 | 1996-07-03 | ||
US08/674,828 US5860004A (en) | 1996-07-03 | 1996-07-03 | Code generator for applications in distributed object systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH10111802A true JPH10111802A (ja) | 1998-04-28 |
Family
ID=24708039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9178588A Pending JPH10111802A (ja) | 1996-07-03 | 1997-07-03 | 分散オブジェクトシステムの応用分野におけるコード生成器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5860004A (ja) |
EP (1) | EP0817033A3 (ja) |
JP (1) | JPH10111802A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000047888A (ja) * | 1998-07-31 | 2000-02-18 | Digital Vision Laboratories:Kk | コンピュータ、並列分散システムおよび機能呼び出し方法 |
US6996801B2 (en) | 2000-07-14 | 2006-02-07 | Nec Corporation | System and method for automatically generating program |
JP2009048485A (ja) * | 2007-08-21 | 2009-03-05 | Ricoh Co Ltd | 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理プログラムを記録する記録媒体 |
JP2011521339A (ja) * | 2008-05-14 | 2011-07-21 | エアバス オペラシオン | 共同サービス向けワークショップにおけるプロセス管理方法 |
JP2011521340A (ja) * | 2008-05-14 | 2011-07-21 | エアバス オペラシオン | 共同サービス指向ワークショップにおけるデータのトレーサビリティのための方法 |
Families Citing this family (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875331A (en) * | 1994-09-30 | 1999-02-23 | International Business Machines Corp. | System and method for generating target language code utilizing an object oriented code generator |
SE506535C2 (sv) * | 1995-06-16 | 1998-01-12 | Ericsson Telefon Ab L M | Metod och anordning för att härleda instansinformation i ett informationshanterande system |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6938263B2 (en) | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US6393497B1 (en) * | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6226746B1 (en) | 1998-03-20 | 2001-05-01 | Sun Microsystems, Inc. | Stack-based system and method to combine security requirements of methods |
US6182083B1 (en) | 1997-11-17 | 2001-01-30 | Sun Microsystems, Inc. | Method and system for multi-entry and multi-template matching in a database |
US6446070B1 (en) * | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6578044B1 (en) * | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
US6708171B1 (en) | 1996-04-23 | 2004-03-16 | Sun Microsystems, Inc. | Network proxy |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6272559B1 (en) | 1997-10-15 | 2001-08-07 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading for event notification in a distributed system |
US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6832223B1 (en) * | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
JP3763937B2 (ja) * | 1996-06-28 | 2006-04-05 | 富士通株式会社 | オブジェクト指向プログラミング装置、およびオブジェクト結合プログラム記憶媒体 |
US5991535A (en) * | 1996-07-03 | 1999-11-23 | Sun Microsystems, Inc. | Visual composition tool for constructing application programs using distributed objects on a distributed object network |
US5949998A (en) * | 1996-07-03 | 1999-09-07 | Sun Microsystems, Inc. | Filtering an object interface definition to determine services needed and provided |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
US5999988A (en) * | 1997-03-31 | 1999-12-07 | Sun Microsystems, Inc. | Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems |
US5978579A (en) * | 1997-08-12 | 1999-11-02 | International Business Machines Corporation | Architecture for customizable component system |
US5970252A (en) * | 1997-08-12 | 1999-10-19 | International Business Machines Corporation | Method and apparatus for loading components in a component system |
US6865734B2 (en) * | 1997-10-06 | 2005-03-08 | Sun Microsystems, Inc. | Method and apparatus for performing byte-code optimization during pauses |
US6253256B1 (en) | 1997-10-15 | 2001-06-26 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading in a distributed system |
US6125400A (en) * | 1997-11-10 | 2000-09-26 | International Business Machines Corporation | Method and system of running object oriented programs across a network through compression and distillation of remote method invocation |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
KR20010034514A (ko) | 1998-02-26 | 2001-04-25 | 케네쓰 올센 | 원격 메소드를 식별하는 해시 판정 방법 및 시스템 |
WO1999049387A1 (fr) * | 1998-03-20 | 1999-09-30 | Information System Development Institute | Dispositif et procede servant a produire un logiciel |
US6222916B1 (en) * | 1998-05-22 | 2001-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for introducing and modifying telecommunications services |
US6490623B1 (en) * | 1998-08-24 | 2002-12-03 | International Business Machines Corporation | System, method and computer readable code for encapsulating system, language and device independent communications socket functionality in a lightweight uniform communications object model |
US6167563A (en) * | 1998-09-17 | 2000-12-26 | Unisys Corporation | Method and system for building components in a framework useful in developing integrated business-centric applications |
US7039673B1 (en) * | 1998-12-24 | 2006-05-02 | Computer Associates Think, Inc. | Method and apparatus for dynamic command extensibility in an intelligent agent |
US6421739B1 (en) * | 1999-01-30 | 2002-07-16 | Nortel Networks Limited | Fault-tolerant java virtual machine |
US6421821B1 (en) * | 1999-03-10 | 2002-07-16 | Ronald J. Lavallee | Flow chart-based programming method and system for object-oriented languages |
US6347397B1 (en) * | 1999-03-29 | 2002-02-12 | International Business Machines Corporation | System, method, and program for providing an object-oriented install architecture |
US6434742B1 (en) * | 1999-05-10 | 2002-08-13 | Lucent Technologies Inc. | Symbol for automatically renaming symbols in files during the compiling of the files |
US6560633B1 (en) | 1999-06-10 | 2003-05-06 | Bow Street Software, Inc. | Method for creating network services by transforming an XML runtime model in response to an iterative input process |
US6877163B1 (en) | 1999-06-14 | 2005-04-05 | Sun Microsystems, Inc. | Method and system for dynamic proxy classes |
US7152228B2 (en) * | 1999-07-08 | 2006-12-19 | Science Applications International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
US6760912B1 (en) | 1999-08-03 | 2004-07-06 | International Business Machines Corporation | Determining browser type in an open Java environment |
WO2001022228A1 (en) * | 1999-09-17 | 2001-03-29 | Nortel Networks Limited | System and method for producing a verification system for verifying procedure interfaces |
AU7993900A (en) | 1999-10-05 | 2001-05-10 | Togethersoft Corporation | Method for generating and defining a pattern |
US6865732B1 (en) * | 1999-11-01 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | Providing an embedded application specific web server |
US6976258B1 (en) | 1999-11-30 | 2005-12-13 | Ensim Corporation | Providing quality of service guarantees to virtual hosts |
US6973639B2 (en) * | 2000-01-25 | 2005-12-06 | Fujitsu Limited | Automatic program generation technology using data structure resolution unit |
US6711607B1 (en) | 2000-02-04 | 2004-03-23 | Ensim Corporation | Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service |
US6560613B1 (en) * | 2000-02-08 | 2003-05-06 | Ensim Corporation | Disambiguating file descriptors |
US6754716B1 (en) | 2000-02-11 | 2004-06-22 | Ensim Corporation | Restricting communication between network devices on a common network |
US7343421B1 (en) * | 2000-02-14 | 2008-03-11 | Digital Asset Enterprises Llc | Restricting communication of selected processes to a set of specific network addresses |
US6948003B1 (en) | 2000-03-15 | 2005-09-20 | Ensim Corporation | Enabling a service provider to provide intranet services |
US7577834B1 (en) | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US7016966B1 (en) | 2000-05-09 | 2006-03-21 | Sun Microsystems, Inc. | Generating results gates in a distributed computing environment |
US6792466B1 (en) | 2000-05-09 | 2004-09-14 | Sun Microsystems, Inc. | Trusted construction of message endpoints in a distributed computing environment |
US7370091B1 (en) | 2000-05-09 | 2008-05-06 | Sun Microsystems, Inc. | Method and apparatus for obtaining space advertisements |
US6850979B1 (en) | 2000-05-09 | 2005-02-01 | Sun Microsystems, Inc. | Message gates in a distributed computing environment |
US7243356B1 (en) | 2000-05-09 | 2007-07-10 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
US7080078B1 (en) | 2000-05-09 | 2006-07-18 | Sun Microsystems, Inc. | Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US6950875B1 (en) | 2000-05-09 | 2005-09-27 | Sun Microsystems, Inc. | Message conductors in a distributed computing environment |
US6789077B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment |
US6898618B1 (en) | 2000-05-09 | 2005-05-24 | Sun Microsystems, Inc. | Client-specified display services in a distributed computing environment |
US7716492B1 (en) | 2000-05-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus to obtain service capability credentials |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US7188251B1 (en) | 2000-05-09 | 2007-03-06 | Sun Microsystems, Inc. | System and method for secure message-based leasing of resources in a distributed computing environment |
US7065574B1 (en) | 2000-05-09 | 2006-06-20 | Sun Microsystems, Inc. | Messaging system using pairs of message gates in a distributed computing environment |
US6970869B1 (en) | 2000-05-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus to discover services and negotiate capabilities |
US6868447B1 (en) | 2000-05-09 | 2005-03-15 | Sun Microsystems, Inc. | Mechanism and apparatus for returning results of services in a distributed computing environment |
US6918084B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Spawning new repository spaces using information provided in advertisement schema messages |
US7200848B1 (en) | 2000-05-09 | 2007-04-03 | Sun Microsystems, Inc. | Migrating processes using data representation language representations of the processes in a distributed computing environment |
US6643650B1 (en) | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US7072967B1 (en) | 2000-05-09 | 2006-07-04 | Sun Microsystems, Inc. | Efficient construction of message endpoints |
US7395333B1 (en) | 2000-05-09 | 2008-07-01 | Sun Microsystems, Inc. | Method and apparatus to obtain negotiated service advertisement |
US8001232B1 (en) | 2000-05-09 | 2011-08-16 | Oracle America, Inc. | Event message endpoints in a distributed computing environment |
US7010573B1 (en) | 2000-05-09 | 2006-03-07 | Sun Microsystems, Inc. | Message gates using a shared transport in a distributed computing environment |
US6789126B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Addressing message gates in a distributed computing environment |
US8135796B1 (en) | 2000-05-09 | 2012-03-13 | Oracle America, Inc. | Mechanism and apparatus for accessing and addressing services in a distributed computing environment |
US6973493B1 (en) | 2000-05-09 | 2005-12-06 | Sun Microsystems, Inc. | Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment |
US6917976B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Message-based leasing of resources in a distributed computing environment |
US7260543B1 (en) | 2000-05-09 | 2007-08-21 | Sun Microsystems, Inc. | Automatic lease renewal with message gates in a distributed computing environment |
US6985937B1 (en) | 2000-05-11 | 2006-01-10 | Ensim Corporation | Dynamically modifying the resources of a virtual server |
US6907421B1 (en) | 2000-05-16 | 2005-06-14 | Ensim Corporation | Regulating file access rates according to file type |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US6763440B1 (en) | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6865657B1 (en) | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6854115B1 (en) | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US6874148B1 (en) * | 2000-06-14 | 2005-03-29 | National Instruments Corporation | System and method for exporting a graphical program to a shared library |
US7143024B1 (en) | 2000-07-07 | 2006-11-28 | Ensim Corporation | Associating identifiers with virtual processes |
US6909691B1 (en) | 2000-08-07 | 2005-06-21 | Ensim Corporation | Fairly partitioning resources while limiting the maximum fair share |
DE10041072A1 (de) * | 2000-08-22 | 2002-03-14 | Siemens Ag | Verfahren zur automatischen Erzeugung von Programmcode |
US6732211B1 (en) | 2000-09-18 | 2004-05-04 | Ensim Corporation | Intercepting I/O multiplexing operations involving cross-domain file descriptor sets |
US20020091872A1 (en) * | 2000-11-29 | 2002-07-11 | Bourke-Dunphy Erin M. | Virtualization of an integrated system across one or more computers |
US7219354B1 (en) | 2000-12-22 | 2007-05-15 | Ensim Corporation | Virtualizing super-user privileges for multiple virtual processes |
CA2704080C (en) * | 2001-07-26 | 2012-08-28 | Irise | System and process for cooperatively programming a simulation program of a computer application to be developed |
JP4045399B2 (ja) * | 2001-08-24 | 2008-02-13 | 富士ゼロックス株式会社 | 構造化文書管理装置及び構造化文書管理方法 |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7660887B2 (en) * | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US20030051029A1 (en) * | 2001-09-07 | 2003-03-13 | Reedy Dennis G. | Dynamic provisioning of sevice components in a distributed system |
WO2003036469A2 (en) * | 2001-10-26 | 2003-05-01 | Codagen Technologies Inc. | A template-based method and system for reverse engineering |
JP2005510790A (ja) * | 2001-11-28 | 2005-04-21 | ボウ・ストリート・ソフトウェア・インコーポレーテッド | ソフトウェア・オブジェクトを作成する方法と装置 |
US20040015835A1 (en) * | 2002-01-24 | 2004-01-22 | Sasank Kotnur | Dynamic distribution and integration of computer code objects |
US20030192038A1 (en) * | 2002-04-09 | 2003-10-09 | Thomas Hagmann | Linking data objects to a project development system |
US7024664B2 (en) * | 2002-04-22 | 2006-04-04 | Intel Corporation | Symbolic assembly language |
EP1387261A1 (fr) * | 2002-07-30 | 2004-02-04 | Sereneo | Logiciel de generation de code d'application informatique et langage de description de logiciel |
US7571172B2 (en) * | 2003-05-06 | 2009-08-04 | Novell, Inc. | Methods, data stores, data structures, and systems for electronic identity aggregation |
US7433878B2 (en) * | 2003-06-23 | 2008-10-07 | American Express Travel Related Services Company, Inc. | Method and system for interfacing with accounting systems |
US7380235B1 (en) * | 2003-06-27 | 2008-05-27 | Microsoft Corporation | Application program interface call replay tool |
US7610587B2 (en) * | 2003-11-05 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | System and method for creating a best-match object at run time |
US7376945B1 (en) * | 2003-12-02 | 2008-05-20 | Cisco Technology, Inc. | Software change modeling for network devices |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
US7305652B2 (en) * | 2004-03-11 | 2007-12-04 | International Business Machines Corporation | Standard application development template |
US7305653B2 (en) * | 2004-03-11 | 2007-12-04 | International Business Machines Corporation | Standard application development framework |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
US7975256B2 (en) * | 2004-06-30 | 2011-07-05 | International Business Machines Corporation | Optimizing application performance through data mining |
US7571430B2 (en) * | 2005-01-24 | 2009-08-04 | Lsi Logic Corporation | Adaptive dispatch table based on templates |
US7921216B2 (en) * | 2005-02-01 | 2011-04-05 | Microsoft Corporation | System and method for building and using communication binding objects |
US7761848B1 (en) | 2005-03-15 | 2010-07-20 | Open Invention Network, Llc | Code generator tool for building software applications with reusable components |
DE202006000135U1 (de) * | 2006-01-05 | 2006-04-20 | Framework Systems Gmbh | Vorrichtung zum Erzeugen von Programmcode eines Nutzerprogrammes |
US20080126376A1 (en) * | 2006-09-22 | 2008-05-29 | Avraham Leff | Enabling multi-view applications based on a relational state machine paradigm |
US8065658B1 (en) * | 2007-08-07 | 2011-11-22 | Network Appliance, Inc. | Tool for visualizing software architecture |
US8631385B2 (en) | 2009-02-26 | 2014-01-14 | International Business Machines Corporation | Optimizing code generation system with input data integration |
EP2625606A4 (en) | 2010-10-08 | 2014-11-26 | Irise | SYSTEM AND METHOD FOR EXTENDING A VISUALIZATION PLATFORM |
US9672030B2 (en) | 2015-10-14 | 2017-06-06 | International Business Machines Corporation | Generating comprehensive symbol tables for source code files |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63181033A (ja) * | 1987-01-23 | 1988-07-26 | Hitachi Ltd | プログラム自動生成方式 |
US5283900A (en) * | 1989-10-02 | 1994-02-01 | Spectron Microsystems, Inc. | Real-time operating system and virtual digital signal processor for the control of a digital signal processor |
GB9105278D0 (en) * | 1990-04-27 | 1991-04-24 | Sun Microsystems Inc | Method and apparatus for implementing object-oriented programming using unmodified c for a window-based computer system |
US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
US5699310A (en) * | 1990-06-29 | 1997-12-16 | Dynasty Technologies, Inc. | Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications |
EP0501610B1 (en) * | 1991-02-25 | 1999-03-17 | Hewlett-Packard Company | Object oriented distributed computing system |
JP3055970B2 (ja) * | 1991-06-20 | 2000-06-26 | 富士通株式会社 | オブジェクト指向言語間インタフェース実現方法および装置 |
US5261098A (en) * | 1991-08-28 | 1993-11-09 | Sun Microsystems, Inc. | Method and apparatus for deriving object type and obtaining object type attribute values |
GB2270242A (en) * | 1992-08-29 | 1994-03-02 | Ibm | A method of editing for an object oriented computer system |
US5339433A (en) * | 1992-11-19 | 1994-08-16 | Borland International, Inc. | Symbol browsing in an object-oriented development system |
US5671415A (en) * | 1992-12-07 | 1997-09-23 | The Dow Chemical Company | System and method for facilitating software development |
CA2128387C (en) * | 1993-08-23 | 1999-12-28 | Daniel F. Hurley | Method and apparatus for configuring computer programs from available subprograms |
US5875331A (en) * | 1994-09-30 | 1999-02-23 | International Business Machines Corp. | System and method for generating target language code utilizing an object oriented code generator |
US5659735A (en) * | 1994-12-09 | 1997-08-19 | Object Technology Licensing Corp. | Object-oriented system for program version and history database management system for various program components |
US5692183A (en) * | 1995-03-31 | 1997-11-25 | Sun Microsystems, Inc. | Methods and apparatus for providing transparent persistence in a distributed object operating environment |
US5724589A (en) * | 1995-10-13 | 1998-03-03 | Borland International, Inc. | Development system with a property-method-event programming model for developing context-free reusable software components |
US5721911A (en) * | 1996-06-25 | 1998-02-24 | International Business Machines Corporation | Mechanism for metadata for an information catalog system |
-
1996
- 1996-07-03 US US08/674,828 patent/US5860004A/en not_active Expired - Lifetime
-
1997
- 1997-06-12 EP EP97304093A patent/EP0817033A3/en not_active Withdrawn
- 1997-07-03 JP JP9178588A patent/JPH10111802A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000047888A (ja) * | 1998-07-31 | 2000-02-18 | Digital Vision Laboratories:Kk | コンピュータ、並列分散システムおよび機能呼び出し方法 |
US6996801B2 (en) | 2000-07-14 | 2006-02-07 | Nec Corporation | System and method for automatically generating program |
JP2009048485A (ja) * | 2007-08-21 | 2009-03-05 | Ricoh Co Ltd | 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理プログラムを記録する記録媒体 |
JP2011521339A (ja) * | 2008-05-14 | 2011-07-21 | エアバス オペラシオン | 共同サービス向けワークショップにおけるプロセス管理方法 |
JP2011521340A (ja) * | 2008-05-14 | 2011-07-21 | エアバス オペラシオン | 共同サービス指向ワークショップにおけるデータのトレーサビリティのための方法 |
Also Published As
Publication number | Publication date |
---|---|
US5860004A (en) | 1999-01-12 |
EP0817033A3 (en) | 2003-04-23 |
EP0817033A2 (en) | 1998-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10111802A (ja) | 分散オブジェクトシステムの応用分野におけるコード生成器 | |
US9086931B2 (en) | System for translating diverse programming languages | |
US7533365B1 (en) | Development system with methodology for run-time restoration of UML model from program code | |
US9965259B2 (en) | System for translating diverse programming languages | |
US6189138B1 (en) | Visual composition tool for constructing application programs using distributed objects on a distributed object network | |
US8745584B2 (en) | Dependency injection by static code generation | |
US6063128A (en) | Object-oriented computerized modeling system | |
US8332828B2 (en) | System for translating diverse programming languages | |
US5815415A (en) | Computer system for portable persistent modeling | |
US5920868A (en) | Cataloging apparatus for facilitating the re-use of distributed objects in a distributed object system | |
US6230117B1 (en) | System for automated interface generation for computer programs operating in different environments | |
US6549955B2 (en) | System and method for dynamic generation of remote proxies | |
US8656372B2 (en) | System for translating diverse programming languages | |
US20080270974A1 (en) | Enterprise JavaBeans Metadata Model | |
US20090254881A1 (en) | Code generation techniques for administrative tasks | |
US20090018822A1 (en) | Methods and apparatus for business rules authoring and operation employing a customizable vocabulary | |
US20100287528A1 (en) | Systems and Methods for Modifying Code Generation Templates | |
JP2002525744A (ja) | テキスト・オブジェクトのコンパイル方法およびシステム | |
US7665062B1 (en) | System and methodology for design-time dynamic class type construction | |
US7657869B2 (en) | Integration of external tools into an existing design environment | |
Cortesi | Pyinstaller manual | |
Gschwind | Adaptation and composition techniques for component-based software engineering | |
Feigenbaum | Go for Java Programmers | |
US20100023923A1 (en) | Method for medeling objects in a hetrogenious computing environment | |
Chen et al. | RoadMapAssembler: A new pattern-based J2EE development tool |