JP2002132502A - 言語機能解釈による分散オブジェクト自動生成システム及び方法 - Google Patents
言語機能解釈による分散オブジェクト自動生成システム及び方法Info
- Publication number
- JP2002132502A JP2002132502A JP2000325652A JP2000325652A JP2002132502A JP 2002132502 A JP2002132502 A JP 2002132502A JP 2000325652 A JP2000325652 A JP 2000325652A JP 2000325652 A JP2000325652 A JP 2000325652A JP 2002132502 A JP2002132502 A JP 2002132502A
- Authority
- JP
- Japan
- Prior art keywords
- source
- client
- server
- class
- generating
- 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
- 238000000034 method Methods 0.000 title claims abstract description 140
- 230000006870 function Effects 0.000 title description 17
- 230000008569 process Effects 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 42
- 238000012546 transfer Methods 0.000 claims description 15
- 239000000284 extract Substances 0.000 claims description 6
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
プログラムを作成する為に、ユーザが行っていた実行位
置決定、サーバオブジェクトのIDL記述、マーシャリ
ング、アンマーシャリング処理コーディング等を不要に
する。 【解決手段】 クライアントプログラム生成部1は、ユ
ーザ記述言語ソース6からクラスを抽出し実行位置を判
別するオブジェクト分割部10、サーバオブジェクトに
ついてIDL定義27、インプリメンテーション26、
メソッド25、代理オブジェクト24を生成し、ソース
6のサーバオブジェクト以外の部分のサーバへのアクセ
スを代理に置換しクライアントソース23を生成する主
生成部11と、ソース23、代理オブジェクト24、I
DL定義27をコンパイルリンクするクライアント生成
部14と、コード転送部13とを有し、サーバプログラ
ム生成部3は、受信したソースをコンパイルリンクする
サーバ生成手段とを有す。
Description
自動生成するシステム及び方法に関し、特にユーザ記述
言語で書かれたソースコードのみからサーバ実行の分散
オブジェクトとクライアント側のプログラムを自動生成
するシステムおよび方法に関する。
する手段として、オブジェクト指向とクライアント/サ
ーバを融合した分散オブジェクト技術であるCORBA
(Common Object Request Bro
ker Architecture)を用いる場合、開発
の手順としてはサーバマシン上で動作するオブジェクト
の抽出、サーバマシン上で動作するオブジェクトのID
L(インタフェース定義言語)の定義、IDLコンパイ
ラの起動、その後、生成されたスタブコードとスタブヘ
ッダを用いてコンパイルやリンク等を行い、クライアン
トマシンでのクライアントプログラムの生成、およびサ
ーバマシンでのサーバプログラムの生成を行う必要があ
る。
には、次の様な問題点があった。
るオブジェクトとクライアントマシンでのみ動作するオ
ブジェクトを切り分けながら設計することは容易ではな
く、又、機能拡張時にオブジェクトの動作環境を変更す
ることが困難であるということである。
があり、IDLに手を加えた場合サーバ、クライアント
共にプログラムに手を加える必要が発生する為である。
たユーザ記述言語以外にIDL言語を習得する必要があ
り、又、ユーザ記述言語からCORBA規約にそった引
数パッキングへの変換(以下マーシャリングと呼ぶ)、
CORBA規約にそったオブジェクト呼び出しの様に、
利用者が高度なCORBA規約やIDL言語知識を習得
する必要があると言うことである。
にはIDLコンパイラから出力されたプログラムソース
にロジックを記述せねばならず、又クライアントプログ
ラムはIDLコンパイラから出力された代理オブジェク
トに対する呼び出し処理を記述する必要があり、その際
ユーザ記述言語での機能呼び出し時の引数を一旦マーシ
ャリング記述にする必要があり、又、反対にサーバプロ
グラムではCORBA規約にそった引数パッキングをユ
ーザ記述言語が理解出来る形に戻す処理(以下アンマー
シャリングと呼ぶ)が必要である為である。
を容易に変更出来ず、オブジェクトの動作位置を変更す
るにはIDLの定義、プログラムの修正という大きな工
数負担となることである。
更する為には第1及び第2の問題点で示した作業が発生
する為である。
異なるマシン間で動作するオブジェクトをミスなく記述
することは容易ではなく、又デバッグが複雑であると言
うことである。
で記述したオブジェクトはユーザが記述したXというル
ーチン呼び出しを行った場合、即座にXルーチンが呼び
出されるが、CORBA通信を挟んでいる場合には、マ
ーシャリング処理、サーバオブジェクトへの接続、サー
バオブジェクト呼び出し、アンマーシャリング処理を経
て漸く利用者ルーチンXの処理を行うことが出来る為、
バグの混入を未然に全て防ぐのは容易ではなく、バグが
混入した場合の箇所特定も容易ではない為である。
異なるマシン間で動作するオブジェクトを作成するに
は、実行マシンに合わせてコンパイル及びリンクを行う
必要があり、利用者にとって不便であると言うことであ
る。
ドの転送、IDL定義の転送を行った後、サーバマシン
でのIDLコンパイルの実行、ソースコードのコンパイ
ル及びリンクの実行を経て漸く分散オブジェクトが完成
する為、単一マシンや単一ユーザ言語で記述した場合に
比べはるかに手間がかかる為である。
照や画面機能の使用を行っているオブジェクトをオブジ
ェクト分割することは利用者への大きな工数負担となっ
ていると言うことである。
グラムからの利用を前提とし作成されているのが通常で
あるが、利用者がその都度クライアント側機能かサーバ
側機能かを分割する必要がある為である。
は関数呼び出しパラメータを追加するなどの工夫をする
必要があるが、利用者にとっては単純だが、プログラム
修正インパクトは、比較的大きい為である。
オブジェクト自動生成システムは、ユーザ記述言語で書
かれたソースコードのみからサーバ実行の分散オブジェ
クトとクライアント側のクライアントプログラムを自動
生成するシステムであって、クライアントプログラム生
成手段と分散オブジェクトを生成するサーバプログラム
生成手段とを含み、前記クライアントプログラム生成手
段は、前記ソースコードからクラス処理を抽出しその実
行位置をキーワードを用い判別するオブジェクト分割手
段と、サーバ実行と判定されたオブジェクトについてI
DL定義、オブジェクトインプリメンテーションソー
ス、サーバメソッドソースを作成し、オブジェクトイン
プリメンテーションに対応しクライアント側に設ける代
理クラスソースを生成すると共に前記ユーザ記述言語の
ソースの非抽出部分とクライアント実行クラスをメイン
ソースとしメインソースのサーバクラスへの処理を前記
代理クラスへのアクセス処理に置換しクライアントソー
スを生成する主生成手段と、前記クライアントソース、
代理クラスソース、IDL定義を入力とし、これらをコ
ンパイル及びリンクして実行形式クライアントプログラ
ムを生成するクライアント生成手段と、前記IDL定義
とオブジェクトインプリメンテーションソースとメソッ
ドソースとをサーバに転送するコード転送手段とを有
し、前記サーバプログラム生成手段は、転送されたコー
ドを受信する手段と受信したコードをコンパル及びリン
クして実行形式サーバプログラムを生成するサーバ生成
手段とを有すことを特徴とする。
生成システムは、ユーザ記述言語で書かれたソースコー
ドのみからサーバ実行の分散オブジェクトとクライアン
ト側のクライアントプログラムを自動生成するシステム
であって、クライアントプログラム生成手段と分散オブ
ジェクトを生成するサーバプログラム生成手段とを含
み、前記クライアントプログラム生成手段は、前記ソー
スコードからクラス処理を抽出しその実行位置をキーワ
ードを用い判別するオブジェクト分割手段と、前記ソー
スコード及びオブジェクト分割情報からグローバル変数
を抽出しこれらのIDL定義とこれらを管理するグロー
バル変数オブジェクトとこれに対応しクライアントに設
けるグローバル変数代理クラスとを生成するグローバル
変数クラス生成手段と、前記分割でサーバ実行と判定さ
れたオブジェクトについてIDL定義、オブジェクトイ
ンプリメンテーションソース、サーバメソッドソースを
作成し、オブジェクトインプリメンテーションに対応し
クライアント側に設ける代理クラスソースを作成すると
共に前記ユーザ記述言語のソースの非抽出部分とクライ
アント実行クラスとをメインソースとし、メインソース
のサーバクラスへの処理を前記代理クラスへのアクセス
処理に置換し、グローバル変数への参照、代入処理を前
記グローバル変数代理クラスへのアクセス処理に置換し
てクライアントソースを生成する主生成手段と、前記ク
ライアントソース、代理クラスソース、IDL定義、グ
ローバル変数代理クラス、グローバル変数IDL定義を
入力とし、これらをコンパイル及びリンクして実行形式
クライアントプログラムを生成するクライアント生成手
段と、前記IDL定義とオブジェクトインプリメンテー
ションソースとメソッドソースとグローバル変数クラス
とそのIDL定義とをサーバに転送するコード転送手段
とを有し、前記サーバプログラム生成手段は、前記転送
されたコードを受信する手段と受信したコードをコンパ
イル及びリンクして実行形式サーバプログラムを生成す
るサーバ生成手段とを有すことを特徴とする。
生成システムは、前記クライアントプログラム生成手段
は、前記代理クラスが、クライアントソースから呼び出
され受けた引数のセットを、オブジェクトリクエストブ
ローカの定める形式に変換する処理を含ませて、前記代
理クラスを生成し、前記オブジェクトインプリメンテー
ションがオブジェクトリクエストブローカから受けた引
数のセットをサーバメソッドプログラムの形式に変換す
る処理を含ませて、前記オブジェクトインプリメンテー
ションソースを生成することを特徴とする。
生成システムは、前記クライアントプログラム生成手段
は、前記グローバル変数代理クラスが、クライアントソ
ースから呼び出され受けた引数のセットを、オブジェク
トリクエストブローカの定める形式に変換する処理を含
ませ、前記グローバル変数代理クラスを生成し、前記グ
ローバル変数クラスがオブジェクトリクエストブローカ
から受けた引数のセットをサーバメソッドプログラムの
形式に変換する処理を含ませ、前記グローバル変数クラ
スを生成することを特徴とする。
生成システムは、前記オブジェクト分割手段は複数種類
のユーザ記述言語に対応して、その種類毎にキーワード
情報を備え、各キーワード情報は、1個以上のキーワー
ドとキーワード間の論理式と論理成立時の実行位置指定
値とを有すことを特徴とする。
生成システムは、前記オブジェクト分割手段は、前記抽
出したクラス処理について、先ずユーザ記述言語のソー
ス上にマークされた明示的な実行位置指定情報に従って
実行位置を決める手段と、明示的な実行位置指定が無い
クラス処理の実行位置を前記キーワード情報により判定
する手段とを有すことを特徴とする。
生成方法は、ユーザ記述言語で書かれたソースコードの
みからサーバ実行の分散オブジェクトとクライアント側
のクライアントプログラムを自動生成する方法であっ
て、クライアントプログラム生成手順と分散オブジェク
トを生成するサーバプログラム生成手順とを含み、前記
クライアントプログラム生成手順は、前記ソースコード
からクラス処理を抽出しその実行位置をキーワードを用
い判別するオブジェクト分割手順と、サーバ実行と判定
されたオブジェクトについてIDL定義、オブジェクト
インプリメンテーションソース、サーバメソッドソース
を作成し、オブジェクトインプリメンテーションに対応
しクライアント側に設ける代理クラスソースを生成する
と共に前記ユーザ記述言語のソースの非抽出部分とクラ
イアント実行クラスとをメインソースとしメインソース
のサーバクラスへの処理を前記代理クラスへのアクセス
処理に置換しクライアントソースを生成する主生成手順
と、前記クライアントソース、代理クラスソース、ID
L定義を入力とし、これらをコンパイル及びリンクして
実行形式クライアントプログラムを生成するクライアン
ト生成手順と、前記IDL定義とオブジェクトインプリ
メンテーションソースとメソッドソースとをサーバに転
送するコード転送手順とを有し、前記サーバプログラム
生成手順は、転送されたコードを受信する手順と受信し
たコードをコンパイル及びリンクして実行形式サーバプ
ログラムを生成するサーバ生成手順とを有すことを特徴
とする。
生成方法は、ユーザ記述言語で書かれたソースコードの
みからサーバ実行の分散オブジェクトとクライアント側
のクライアントプログラムを自動生成する方法であっ
て、クライアントプログラム生成手順と分散オブジェク
トを生成するサーバプログラム生成手順とを含み、前記
クライアントプログラム生成手順は、前記ソースコード
からクラス処理を抽出しその実行位置をキーワードを用
い判別するオブジェクト分割手順と、前記ソースコード
及びオブジェクト分割情報からグローバル変数を抽出し
これらのIDL定義とこれらを管理するグローバル変数
オブジェクトとこれに対応しクライアントに設けるグロ
ーバル変数代理クラスとを生成するグローバル変数クラ
ス生成手順と、前記分割でサーバ実行と判定されたオブ
ジェクトについてIDL定義、オブジェクトインプリメ
ンテーションソース、サーバメソッドソースを作成し、
オブジェクトインプリメンテーションに対応しクライア
ント側に設ける代理クラスソースを作成すると共に前記
ユーザ記述言語のソースの非抽出部分とクライアント実
行クラスとをメインソースとしメインソースのサーバク
ラスへの処理を前記代理クラスへのアクセス処理に置換
しグローバル変数への参照、代入処理を前記グローバル
変数代理クラスへのアクセス処理に置換してクライアン
トソースを生成する主生成手順と、前記クライアントソ
ース、代理クラスソース、IDL定義、グローバル変数
代理クラス、グローバル変数IDL定義を入力とし、こ
れらをコンパイル及びリンクして実行形式クライアント
プログラムを生成するクライアント生成手順と、前記I
DL定義とオブジェクトインプリメンテーションソース
とメソッドソースとグローバル変数クラスとそのIDL
定義とをサーバに転送するコード転送手順とを有し、前
記サーバプログラム生成手順は、前記転送されたコード
を受信する手順と受信したコードをコンパイル及びリン
クして実行形式サーバプログラムを生成するサーバ生成
手順とを有すことを特徴とする。
生成方法は、前記クライアントプログラム生成手順は、
前記代理クラスが、クライアントソースから呼び出され
受けた引数のセットを、オブジェクトリクエストブロー
カの定める形式に変換する処理を含ませて、前記代理ク
ラスを生成し、前記オブジェクトインプリメンテーショ
ンがオブジェクトリクエストブローカから受けた引数の
セットをサーバメソッドの形式に変換する処理を含ませ
て、前記オブジェクトインプリメンテーションソースを
生成することを特徴とする。
生成方法は、前記クライアントプログラム生成手順は、
前記グローバル変数代理クラスが、クライアントソース
から呼び出され受けた引数のセットを、オブジェクトリ
クエストブローカの定める形式に変換する処理を含ま
せ、前記グローバル変数代理クラスを生成し、前記グロ
ーバル変数クラスが、オブジェクトリクエストブローカ
から受けた引数のセットをサーバメソッドプログラムの
形式に変換する処理を含ませ、前記グローバル変数クラ
スを生成することを特徴とする。
生成方法は、前記オブジェクト分割手順は複数種類のユ
ーザ記述言語に対応して、その種類毎にキーワード情報
を備え、各キーワード情報は、1個以上のキーワードと
キーワード間の論理式と論理成立時の実行位置指定値と
を有すことを特徴とする。
生成方法は、前記オブジェクト分割手順は、前記抽出し
たクラス処理について、先ずユーザ記述言語のソース上
にマークされた明示的な実行位置指定情報に従って実行
位置を決める手順と、明示的な実行位置指定が無いクラ
ス処理の実行位置を前記キーワード情報により判定する
手順とを有すことを特徴とする。
オブジェクト自動生成システム及び方法は、単一マシン
上で動作可能なユーザ記述言語で記述されたプログラム
を入力とし、その意味解析を行い、自動的にクライアン
トオブジェクトとサーバオブジェクトとを判断し、クラ
イアントプログラム側にはクライアント代理オブジェク
トへのマーシャリング処理、接続処理、サーバメソッド
呼び出し処理(以下、代理オブジェクト制御記述と呼
ぶ)を自動生成し、サーバオブジェクト側にはアンマー
シャリング処理、メソッド呼び出し処理(以下、サーバ
インプリメンテーションと呼ぶ)を自動生成出来る構成
を提供するものである。
ないものは、単一マシン上で動作可能なユーザ記述言語
で記述されたプログラムであり、IDL定義や代理オブ
ジェクト制御記述及びサーバインプリメンテーションは
管理不要と出来る構成を提供するものである。
たソースプログラムを単に変換することにとどまらず、
クライアントマシン上へ実行可能形式クライアントプロ
グラムを自動生成し、サーバマシン上へも分散オブジェ
クトを実行可能形式として自動生成する構成を提供する
ものである。
字、記号、或いはワードを振ることによって、機能をサ
ーバに配置するか、クライアントに配置するかを利用者
が明示的に指定することを可能とすることにより、オブ
ジェクト配置位置を瞬時に切り替え可能とする。
したキーワードによりクラス処理の実行位置の自動判定
を可能とする。
参照し説明する。図1を参照し、本発明の言語機能解釈
による分散オブジェクト自動生成システム及び方法の一
実施例は、プログラム制御により動作する。
200、201はネットワーク300で接続されてお
り、クライアントマシン100はクライアントプログラ
ム生成部1を有し、サーバマシン200、201は、サ
ーバプログラム生成部3を有する。
オブジェクトへの要求を行うクライアントプログラム2
を生成する手段である。サーバプログラム生成部3は、
クライアントプログラム2からの要求を受け付けるサー
バ分散オブジェクト4、5を生成する手段である。
サーバプログラム生成部3の構成及びこれらの入出力内
容を示したブロック図である。
ジェクト分割部10、主生成部11、グローバル変数ク
ラス生成部12、コード転送部13、クライアント生成
部14を有す。
部13の受信部とサーバ生成部30を有す。
語ソースファイル6を入力としサーバに配置するオブジ
ェクトとクライアントに配置するオブジェクトを決定・
分割する。 その為に、複数種類のユーザ記述言語に対
応して、その種類毎にキーワード定義101を備え、各
キーワード定義は、1個以上のキーワードとキーワード
間の論理式と論理成立時の実行位置指定値(サ−バ/ク
ライアント)からなる情報を単位としてこれらを複数組
有す。
とサーバメソッドソース25を自動生成する。
内容に沿って、代理オブジェクト制御記述を持つ代理オ
ブジェクトソース24とサーバインプリメンテーション
を司るオブジェクトインプリメンテーション26を自動
生成する。分散オブジェクト間を結ぶ為のIDL定義2
7を自動生成する。
ーバル変数への代理オブジェクト制御記述、サーバオブ
ジェクトインプリメンテーションだけを一纏めにした、
グローバル変数クラス及びIDL定義28を自動生成す
る。
ソース23、代理オブジェクトソース24、IDL定義
27、グローバル変数クラス及びIDL定義28を入力
とし、クライアントプログラム2を自動生成する。
生成する為に必要なファイルをサーバに転送し、この受
信部はサーバ生成部30に対して、サーバメソッドソー
ス25’、オブジェクトインプリメンテーション2
6’、IDL定義27’、グローバル変数クラス及びI
DL定義28’を入力する。
クト4とグローバル変数(サーバ)5を自動生成する。
ユーザ記述言語からクライアントプログラムやサーバプ
ログラムを自動生成することを可能にする。
実施形態の全体の動作について詳細に説明する。
語ソースファイル6を読み込み、言語構文解析・意味解
析を行い、クラスを抽出し、サーバ動作可能なものにつ
いてサーバクラス、クライアントクラスにクラス分けを
行なう。
ローバル変数クラス及びIDL定義28、オブジェクト
インプリメンテーション26、代理オブジェクトソース
24、サーバメソッドソース25、クライアントソース
23の各ファイルを作成する。(ステップ1)。
を生成する為に必要な図2のサーバメセッドソース2
5、オブジェクトインプリメンテーション26、IDL
定義27、グローバル変数クラス及びIDL定義28の
各ファイルをサーバに転送する(ステップ2)。
部30にサーバメソッドソース25’、オブジェクトイ
ンプリメンテーション26’、IDL定義27’、グロ
ーバル変数クラス及びIDL定義28’を渡しサーバプ
ログラムの生成を要求する(ステップ3)。
ース23、代理オブジェクトソース24、IDL定義2
7、グローバル変数クラス及びIDL定義28を入力と
し、これらをコンパイルしクライアントプログラム2を
自動生成する(ステップ4)。
願の特徴であるステップ1の処理を詳しく説明する。
スファイル6を読み込む(ステップ1−1)。次にサー
バ、クライアントどちらに位置すべきオブジェクト記述
かを自動的に判断する(ステップ1−2)。ステップ1
−2の詳細は図5で示す通り、クラス処理レベルのもの
を抽出し、、利用者が明示的に実行位置指定をしている
場合のオブジェクト実装位置の決定を行ない、利用者の
指定のないクラスは言語機能上サーバに配置出来ないも
のをピックアップしクライアントクラスとする処理をす
る。
は、ユーザ記述言語ソースのコメント欄で指定されてい
る。コメントの開始定義文字(!等)の次の文字(S/
C/スペース)でサーバ、クライアント、指定無しを見
分ける。
応のキーワード定義表101に従ってクライアントクラ
スとする。定義表に「OUT」と、「DISPLAY」
のAND成立でクライアントと指定されていればこれら
を満たすクラスはクライアントクラスとする。
ジェクトの抽出が完了すると、主生成部11はサーバオ
ブジェクトに対するIDL定義を自動生成する(ステッ
プ1−3)。サーバオブジェクトにおいて、IDL言語
とユーザ記述言語間のアンマーシャリングを担当するサ
ーバオブジェクトインプリメンテーションを自動生成す
る(ステップ1−4)。
イアントに存在するかの様に見せかける代理クラスを自
動生成する(ステップ1−5)。代理クラスは、ユーザ
記述言語とIDL言語間のマーシャリングを担当する。
テップ1−7〜1−9の詳細は図6に示す通りで、ユー
ザ記述言語ソースと、その分割情報からグローバル変数
を抽出し、グローバル変数を管理するサーバオブジェク
トを自動生成する。グローバル変数はサーバからもクラ
イアントからも透過的に参照出来る様、マーシャリング
を担当する代理クラスと、アンマーシャリングを担当す
るグローバル変数サーバインプリメンテーションを持
つ。
ースに対する処理の置換を行う。図7で示す様に、グロ
ーバル変数参照や、グローバル変数への値設定を行うコ
ードを抽出し、該当部分をグローバル変数代理オブジェ
クトへの処理記述に自動変換する。
ブジェクトへのアクセス処理を代理オブジェクトへのア
クセス処理に自動変換する。
スにCORBA分散オブジェクト実行に必要な初期処理
や終了処理が挿入される。又、グローバル変数オブジェ
クトは実行直後から利用可能となる様に、初期処理内で
グローバル変数のサーバオブジェクトを活性化させる処
理を挿入する。
は、前述した図3で示す様に、自動的にコンパイル及び
リンクが行われ、すぐに実行が可能な状態となる。
す。図9のR1はクライアントプログラムのメイン処理
の例である。メイン処理には自動生成された初期処理が
挿入されており、CORBA初期処理、R2、・・R5
までの処理で示す通りグローバル変数管理オブジェクト
が一個活性化される。
参照G1が発生した時、図7で変換済みのグローバル変
数代理オブジェクトの働きにより、サーバに位置するグ
ローバル変数管理オブジェクトに値が渡る。又、サーバ
に位置しない又は位置出来ないR6クライアントクラス
はユーザ記述言語の通常の言語機能により、クライアン
トマシン上で実行する。
に生成されたサーバオブジェクトへのアクセス処理は、
R7〜R11の処理を経て、サーバで実行される。R1
1の処理結果はR10〜R8を経てR7へ戻り、利用者
はソースコード上、サーバオブジェクトの存在を意識す
る必要が無くなることとなる。
ム及び方法は、ユーザ記述言語ソースファイル6として
オブジェクト指向型ソースファイルのみを対象とするも
のでなく、あらゆる記述言語を対象とする。例えば、C
言語、COBOL、Javaなどが挙げられる。
ステム及び方法は、CORBAに特化した発明ではな
く、あらゆる分散オブジェクト基盤を対象とする。例え
ばDCE(distributed computin
g environment)、DCOM(distr
ibuted component object m
odel)等にも適用出来る。
ェクト自動生成システム及び方法は、ユーザ記述言語を
意味解釈し、分散オブジェクト、クライアントプログラ
ムを自動的に生成する為、利用者が普段使い慣れたユー
ザ記述言語以外に新たにIDL言語を習得する必要が無
いと言う第1の効果を有す。
為のソースコード転送なども省くことが出きる為、利用
者からIDL言語機能やコンパイル及びリンクの実施を
完全に隠蔽出来るという第2の効果を有す。
ム及び方法は、ユーザ記述言語ソースファイル上のマー
クに従ってサーバオブジェクト、クライアントオブジェ
クトを生成し、グローバル変数の抽出、マーシャリン
グ、アンマーシャリング処理の追加を自動的に行うので
オブジェクトの動作位置を利用者が簡単に変更出来ると
言う第3の効果を有す。
に必要な処理は多々あり、従来クライアントで動作する
オブジェクトをサーバで動作出来る様にする為にはID
L定義をし、マーシャリング、アンマーシャリングを利
用者自身が行なっていたがこれら作業を不要とする。
したい場合に、大きな工数をかけてオブジェクト実行位
置を変更する必要があったが本発明により、その工数負
担を取り除くことが出来る。
ム及び方法は、利用者言語で記述されたソースコードに
手を加えることなく分散オブジェクトを自動生成するの
で、本発明のの入力ファイルは通常の単一マシン上で動
作するプログラムとして作成出来、利用者は使い慣れた
デバッガを利用出来るという第4の効果を有す。
び方法の実施形態例の全体構成を示すブロック図。
バプログラム生成部3の構成及びこれらの入出力内容を
示したブロック図。
実施形態例の全体動作を示し、又本発明の分散オブジェ
クト自動生成方法の全体ステップを示すフローチャー
ト。
イアントプログラム生成手順の詳細ステップを示すフロ
ーチャート。
チャート。
フローチャート。
図。
の各実行モジュールと実行時の様子を示す図。
Claims (12)
- 【請求項1】 ユーザ記述言語で書かれたソースコード
のみからサーバ実行の分散オブジェクトとクライアント
側のクライアントプログラムを自動生成するシステムで
あって、クライアントプログラム生成手段と分散オブジ
ェクトを生成するサーバプログラム生成手段とを含み、
前記クライアントプログラム生成手段は、前記ソースコ
ードからクラス処理を抽出しその実行位置をキーワード
を用い判別するオブジェクト分割手段と、サーバ実行と
判定されたオブジェクトについてIDL定義、オブジェ
クトインプリメンテーションソース、サーバメソッドソ
ースを作成し、オブジェクトインプリメンテーションに
対応しクライアント側に設ける代理クラスソースを生成
すると共に前記ユーザ記述言語のソースの非抽出部分と
クライアント実行クラスをメインソースとしメインソー
スのサーバクラスへの処理を前記代理クラスへのアクセ
ス処理に置換しクライアントソースを生成する主生成手
段と、前記クライアントソース、代理クラスソース、I
DL定義を入力とし、これらをコンパイル及びリンクし
て実行形式クライアントプログラムを生成するクライア
ント生成手段と、前記IDL定義とオブジェクトインプ
リメンテーションソースとメソッドソースとをサーバに
転送するコード転送手段とを有し、前記サーバプログラ
ム生成手段は、転送されたコードを受信する手段と受信
したコードをコンパル及びリンクして実行形式サーバプ
ログラムを生成するサーバ生成手段とを有すことを特徴
とする分散オブジェクト自動生成システム。 - 【請求項2】 ユーザ記述言語で書かれたソースコード
のみからサーバ実行の分散オブジェクトとクライアント
側のクライアントプログラムを自動生成するシステムで
あって、クライアントプログラム生成手段と分散オブジ
ェクトを生成するサーバプログラム生成手段とを含み、
前記クライアントプログラム生成手段は、前記ソースコ
ードからクラス処理を抽出しその実行位置をキーワード
を用い判別するオブジェクト分割手段と、前記ソースコ
ード及びオブジェクト分割情報からグローバル変数を抽
出しこれらのIDL定義とこれらを管理するグローバル
変数オブジェクトとこれに対応しクライアントに設ける
グローバル変数代理クラスとを生成するグローバル変数
クラス生成手段と、前記分割でサーバ実行と判定された
オブジェクトについてIDL定義、オブジェクトインプ
リメンテーションソース、サーバメソッドソースを作成
し、オブジェクトインプリメンテーションに対応しクラ
イアント側に設ける代理クラスソースを作成すると共に
前記ユーザ記述言語のソースの非抽出部分とクライアン
ト実行クラスとをメインソースとし、メインソースのサ
ーバクラスへの処理を前記代理クラスへのアクセス処理
に置換し、グローバル変数への参照、代入処理を前記グ
ローバル変数代理クラスへのアクセス処理に置換してク
ライアントソースを生成する主生成手段と、前記クライ
アントソース、代理クラスソース、IDL定義、グロー
バル変数代理クラス、グローバル変数IDL定義を入力
とし、これらをコンパイル及びリンクして実行形式クラ
イアントプログラムを生成するクライアント生成手段
と、前記IDL定義とオブジェクトインプリメンテーシ
ョンソースとメソッドソースとグローバル変数クラスと
そのIDL定義とをサーバに転送するコード転送手段と
を有し、前記サーバプログラム生成手段は、前記転送さ
れたコードを受信する手段と受信したコードをコンパイ
ル及びリンクして実行形式サーバプログラムを生成する
サーバ生成手段とを有すことを特徴とする分散オブジェ
クト自動生成システム。 - 【請求項3】 前記クライアントプログラム生成手段
は、前記代理クラスが、クライアントソースから呼び出
され受けた引数のセットを、オブジェクトリクエストブ
ローカの定める形式に変換する処理を含ませて、前記代
理クラスを生成し、前記オブジェクトインプリメンテー
ションがオブジェクトリクエストブローカから受けた引
数のセットをサーバメソッドプログラムの形式に変換す
る処理を含ませて、前記オブジェクトインプリメンテー
ションソースを生成することを特徴とする請求項1、又
は2記載の分散オブジェクト自動生成システム。 - 【請求項4】 前記クライアントプログラム生成手段
は、前記グローバル変数代理クラスが、クライアントソ
ースから呼び出され受けた引数のセットを、オブジェク
トリクエストブローカの定める形式に変換する処理を含
ませ、前記グローバル変数代理クラスを生成し、前記グ
ローバル変数クラスがオブジェクトリクエストブローカ
から受けた引数のセットをサーバメソッドプログラムの
形式に変換する処理を含ませ、前記グローバル変数クラ
スを生成することを特徴とする請求項2記載の分散オブ
ジェクト自動生成システム。 - 【請求項5】 前記オブジェクト分割手段は複数種類の
ユーザ記述言語に対応して、その種類毎にキーワード情
報を備え、各キーワード情報は、1個以上のキーワード
とキーワード間の論理式と論理成立時の実行位置指定値
とを有すことを特徴とする請求項1、又は2記載の分散
オブジェクト自動生成システム。 - 【請求項6】 前記オブジェクト分割手段は、前記抽出
したクラス処理について、先ずユーザ記述言語のソース
上にマークされた明示的な実行位置指定情報に従って実
行位置を決める手段と、明示的な実行位置指定が無いク
ラス処理の実行位置を前記キーワード情報により判定す
る手段とを有すことを特徴とする請求項1、又は2記載
の分散オブジェクト自動生成システム。 - 【請求項7】 ユーザ記述言語で書かれたソースコード
のみからサーバ実行の分散オブジェクトとクライアント
側のクライアントプログラムを自動生成する方法であっ
て、クライアントプログラム生成手順と分散オブジェク
トを生成するサーバプログラム生成手順とを含み、前記
クライアントプログラム生成手順は、前記ソースコード
からクラス処理を抽出しその実行位置をキーワードを用
い判別するオブジェクト分割手順と、サーバ実行と判定
されたオブジェクトについてIDL定義、オブジェクト
インプリメンテーションソース、サーバメソッドソース
を作成し、オブジェクトインプリメンテーションに対応
しクライアント側に設ける代理クラスソースを生成する
と共に前記ユーザ記述言語のソースの非抽出部分とクラ
イアント実行クラスとをメインソースとしメインソース
のサーバクラスへの処理を前記代理クラスへのアクセス
処理に置換しクライアントソースを生成する主生成手順
と、前記クライアントソース、代理クラスソース、ID
L定義を入力とし、これらをコンパイル及びリンクして
実行形式クライアントプログラムを生成するクライアン
ト生成手順と、前記IDL定義とオブジェクトインプリ
メンテーションソースとメソッドソースとをサーバに転
送するコード転送手順とを有し、前記サーバプログラム
生成手順は、転送されたコードを受信する手順と受信し
たコードをコンパイル及びリンクして実行形式サーバプ
ログラムを生成するサーバ生成手順とを有すことを特徴
とする分散オブジェクト自動生成方法。 - 【請求項8】 ユーザ記述言語で書かれたソースコード
のみからサーバ実行の分散オブジェクトとクライアント
側のクライアントプログラムを自動生成する方法であっ
て、クライアントプログラム生成手順と分散オブジェク
トを生成するサーバプログラム生成手順とを含み、前記
クライアントプログラム生成手順は、前記ソースコード
からクラス処理を抽出しその実行位置をキーワードを用
い判別するオブジェクト分割手順と、前記ソースコード
及びオブジェクト分割情報からグローバル変数を抽出し
これらのIDL定義とこれらを管理するグローバル変数
オブジェクトとこれに対応しクライアントに設けるグロ
ーバル変数代理クラスとを生成するグローバル変数クラ
ス生成手順と、前記分割でサーバ実行と判定されたオブ
ジェクトについてIDL定義、オブジェクトインプリメ
ンテーションソース、サーバメソッドソースを作成し、
オブジェクトインプリメンテーションに対応しクライア
ント側に設ける代理クラスソースを作成すると共に前記
ユーザ記述言語のソースの非抽出部分とクライアント実
行クラスとをメインソースとしメインソースのサーバク
ラスへの処理を前記代理クラスへのアクセス処理に置換
しグローバル変数への参照、代入処理を前記グローバル
変数代理クラスへのアクセス処理に置換してクライアン
トソースを生成する主生成手順と、前記クライアントソ
ース、代理クラスソース、IDL定義、グローバル変数
代理クラス、グローバル変数IDL定義を入力とし、こ
れらをコンパイル及びリンクして実行形式クライアント
プログラムを生成するクライアント生成手順と、前記I
DL定義とオブジェクトインプリメンテーションソース
とメソッドソースとグローバル変数クラスとそのIDL
定義とをサーバに転送するコード転送手順とを有し、前
記サーバプログラム生成手順は、前記転送されたコード
を受信する手順と受信したコードをコンパイル及びリン
クして実行形式サーバプログラムを生成するサーバ生成
手順とを有すことを特徴とする分散オブジェクト自動生
成方法。 - 【請求項9】 前記クライアントプログラム生成手順
は、前記代理クラスが、クライアントソースから呼び出
され受けた引数のセットを、オブジェクトリクエストブ
ローカの定める形式に変換する処理を含ませて、前記代
理クラスを生成し、前記オブジェクトインプリメンテー
ションがオブジェクトリクエストブローカから受けた引
数のセットをサーバメソッドの形式に変換する処理を含
ませて、前記オブジェクトインプリメンテーションソー
スを生成することを特徴とする請求項7、又は8記載の
分散オブジェクト自動生成方法。 - 【請求項10】 前記クライアントプログラム生成手順
は、前記グローバル変数代理クラスが、クライアントソ
ースから呼び出され受けた引数のセットを、オブジェク
トリクエストブローカの定める形式に変換する処理を含
ませ、前記グローバル変数代理クラスを生成し、前記グ
ローバル変数クラスが、オブジェクトリクエストブロー
カから受けた引数のセットをサーバメソッドプログラム
の形式に変換する処理を含ませ、前記グローバル変数ク
ラスを生成することを特徴とする請求項8記載の分散オ
ブジェクト自動生成方法。 - 【請求項11】 前記オブジェクト分割手順は複数種類
のユーザ記述言語に対応して、その種類毎にキーワード
情報を備え、各キーワード情報は、1個以上のキーワー
ドとキーワード間の論理式と論理成立時の実行位置指定
値とを有すことを特徴とする請求項7、又は8記載の分
散オブジェクト自動生成方法。 - 【請求項12】 前記オブジェクト分割手順は、前記抽
出したクラス処理について、先ずユーザ記述言語のソー
ス上にマークされた明示的な実行位置指定情報に従って
実行位置を決める手順と、明示的な実行位置指定が無い
クラス処理の実行位置を前記キーワード情報により判定
する手順とを有すことを特徴とする請求項7、又は8記
載の分散オブジェクト自動生成方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000325652A JP2002132502A (ja) | 2000-10-25 | 2000-10-25 | 言語機能解釈による分散オブジェクト自動生成システム及び方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000325652A JP2002132502A (ja) | 2000-10-25 | 2000-10-25 | 言語機能解釈による分散オブジェクト自動生成システム及び方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2002132502A true JP2002132502A (ja) | 2002-05-10 |
Family
ID=18802991
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000325652A Pending JP2002132502A (ja) | 2000-10-25 | 2000-10-25 | 言語機能解釈による分散オブジェクト自動生成システム及び方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2002132502A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005505850A (ja) * | 2001-10-15 | 2005-02-24 | ヤコブ リンメル リミティッド | オブジェクト分散 |
| JP2007531946A (ja) * | 2004-04-07 | 2007-11-08 | ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング | データ処理装置におけるデータ整合性 |
| JP2011170512A (ja) * | 2010-02-17 | 2011-09-01 | Nec Corp | 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム |
| WO2015045108A1 (ja) * | 2013-09-27 | 2015-04-02 | 三菱電機株式会社 | クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム |
-
2000
- 2000-10-25 JP JP2000325652A patent/JP2002132502A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005505850A (ja) * | 2001-10-15 | 2005-02-24 | ヤコブ リンメル リミティッド | オブジェクト分散 |
| JP2007531946A (ja) * | 2004-04-07 | 2007-11-08 | ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング | データ処理装置におけるデータ整合性 |
| JP2011170512A (ja) * | 2010-02-17 | 2011-09-01 | Nec Corp | 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム |
| WO2015045108A1 (ja) * | 2013-09-27 | 2015-04-02 | 三菱電機株式会社 | クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3041222B2 (ja) | ソース・コード作成システム及び方法 | |
| EP1074911B1 (en) | Aspect-oriented programming | |
| KR100285223B1 (ko) | 프로그램에입각하여분산오브젝트프로그램을생성하는방법 | |
| US8359570B2 (en) | Adaptive scripting tool | |
| US10223082B2 (en) | Analysis of dynamic elements in bounded time | |
| US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
| EP1178404B1 (en) | Method and system for compiling multiple languages | |
| US7010796B1 (en) | Methods and apparatus providing remote operation of an application programming interface | |
| CN100492290C (zh) | 软件动态演化中构件运行时状态的获取和转换方法 | |
| US20070022409A1 (en) | System and method for transforming generic software code into operator specific code | |
| JP2002518732A (ja) | パラメータなし既存ライブラリ互換パラメータ付き型実装方法 | |
| JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
| JPH10161885A (ja) | 遠隔コンパイル方法およびシステム | |
| US20090328016A1 (en) | Generalized expression trees | |
| US7100154B2 (en) | Dynamic compiler apparatus and method that stores and uses persistent execution statistics | |
| US8458668B1 (en) | Ignoring output arguments of functions in programming environments | |
| JP2002132502A (ja) | 言語機能解釈による分散オブジェクト自動生成システム及び方法 | |
| JPH11296359A (ja) | プログラム開発支援ツール | |
| CN113220277B (zh) | 一种嵌入式服务化的开发方法及装置 | |
| WO2008015110A2 (en) | Methods, apparatus and computer programs for modelling computer programs | |
| JPH09179738A (ja) | オブジェクト指向言語処理方法及び処理装置 | |
| KR100703285B1 (ko) | 메시르를 이용한 교환 시스템의 동적 서비스를 지원하는방법 | |
| JP3531728B2 (ja) | オブジェクト指向型プログラミング言語で記述されたプログラムの構成関係管理装置及び方法並びに記憶媒体 | |
| Hansen | Deployment descriptions in a world of COTS and open source | |
| Forin et al. | Parallel processing with Agora |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050301 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050307 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050425 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050607 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050804 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050927 |