JPH1165832A - ソースコード変換方法及び記録媒体 - Google Patents

ソースコード変換方法及び記録媒体

Info

Publication number
JPH1165832A
JPH1165832A JP9225239A JP22523997A JPH1165832A JP H1165832 A JPH1165832 A JP H1165832A JP 9225239 A JP9225239 A JP 9225239A JP 22523997 A JP22523997 A JP 22523997A JP H1165832 A JPH1165832 A JP H1165832A
Authority
JP
Japan
Prior art keywords
stub
source code
file
program execution
execution environment
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.)
Abandoned
Application number
JP9225239A
Other languages
English (en)
Inventor
Kouun Ri
巧云 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP9225239A priority Critical patent/JPH1165832A/ja
Priority to US09/136,488 priority patent/US6546549B2/en
Priority to CN98124345A priority patent/CN1103962C/zh
Publication of JPH1165832A publication Critical patent/JPH1165832A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 複数の異なるプログラム実行環境にも容易に
適応でき、しかもインターフェース定義言語を用いるこ
となくスタブメソッドを生成することが可能なソースコ
ード変換方法を提供する。 【解決手段】 オブジェクト間通信に使用されるスタブ
メソッドが実行されるプログラム実行環境に対応して予
め登録された情報を参照して、ソースコードを他のソー
スコードへ変換する。ここで、変換前のソースコード
は、所定のプログラミング言語で記述されるとともに、
スタブメソッドに関する記述が、複数の異なるプログラ
ム実行環境に対して共通の書式で記述されてなる。ま
た、変換後のソースコードは、上記プログラミング言語
と同一のプログラミング言語で記述されるとともに、ス
タブメソッドが実行されるプログラム実行環境に対応し
た所定の書式で記述されてなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト間通
信に使用されるメソッド(いわゆるスタブメソッド)に
関する記述を含むソースコードを、プログラム実行環境
に対応したソースコードに変換するソースコード変換方
法に関する。また、そのようなソースコード変換方法を
実現するソースコード変換用プログラムが記録されたコ
ンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】通常、オブジェクト指向プログラミング
では、オブジェクト間通信を行うためのメソッドが頻繁
に使用される。ここで、オブジェクト間通信とは、例え
ば、あるオブジェクトから他のオブジェクトへメッセー
ジを送るような処理のことであり、オブジェクト指向プ
ログラミングにおいて、このようなオブジェクト間通信
は、オペレーティングシステムによって提供されるサー
ビスとして必須のものである。
【0003】このようなオブジェクト間通信に使用され
るメソッドは、一般に、スタブメソッドと称されてい
る。すなわち、オブジェクト指向プログラミングでは、
あるオブジェクトから他のオブジェクトへメッセージを
送るようなときに、スタブメソッドが使用される。な
お、以下の説明では、メッセージを送る側のオブジェク
トをクライアントオブジェクトと称し、メッセージが送
られる側のオブジェクトをサーバオブジェクトと称す
る。
【0004】例えば、ネットワークを介して接続された
他のコンピュータ上で実行されるサーバオブジェクトの
プロシージャを実行したいようなときには、スタブメソ
ッドを用いて、クライアントオブジェクトから他のコン
ピュータ上で実行されるサーバオブジェクトへ、ネット
ワークを介してメッセージを送る。これにより、ネット
ワークを介した他のコンピュータ上で実行されるサーバ
オブジェクトのプロシージャの実行が可能となる。この
ように、スタブメソッドを使用することにより、ネット
ワークを介して他のコンピュータ上で実行されるプロシ
ージャを呼び出すリモートコールを、ローカルのプロシ
ージャコールのインターフェースと同様に行うことが可
能となる。
【0005】ところで、このようなスタブメソッドは、
通常、スタブジェネレータにより生成される。スタブジ
ェネレータとは、あるプログラミング言語によってスタ
ブメソッドに関する記述がなされたソースコードを読み
込んで、当該ソースコードからスタブメソッドを生成す
るプログラムである。なお、スタブジェネレータは、通
常、メッセージを送る側であるクライアントオブジェク
トについてのスタブメソッドと、メッセージを受け取る
側であるサーバオブジェクトについてのスタブメソッド
との両方をそれぞれ生成する機能を備えており、これに
より、クライアントオブジェクト及びサーバオブジェク
トの構築を、非常に容易且つ柔軟に行えるようになされ
ている。
【0006】以下、スタブジェネレータを用いてプログ
ラムを作成する手法について説明する。
【0007】スタブジェネレータを用いてプログラムを
作成する際は、例えば、プログラミング言語の一つであ
るC++を使用して、オブジェクト間通信以外の部分に
ついてのプログラムを作成するとともに、オブジェクト
間通信のインターフェースを定義しているインターフェ
ース定義言語を使用して、オブジェクト通信に関する部
分のプログラムを作成する。なお、インターフェース定
義言語は、オブジェクト間通信のインターフェースを定
義する言語であり、例えば、オブジェクト指向の分散処
理環境を実現するための規約であるCORBA(Common
Object Request Broker Architecture)によって規定
された言語である。
【0008】具体的には、クライアントオブジェクトと
サーバオブジェクトとの間のオブジェクト間通信を行う
ようなアプリケーションプログラムを作成する際は、図
4に示すように、まず、3種類のソースコードを作成す
る。
【0009】すなわち、第1のソースコードとして、ス
タブメソッドに関する記述がインターフェース定義言語
で記述されてなるソースコードを作成する。換言すれ
ば、この第1のソースコードにより、オブジェクト間通
信を行う際のインターフェースが定義される。なお、図
4では、この第1のソースコードが記述されたファイル
f1を「Test.idl」として示している。
【0010】また、第2のソースコードとして、サーバ
オブジェクトに関する記述がC++等のようなプログラ
ミング言語で記述されてなるソースコードを作成する。
ここで、第2のソースコードには、サーバオブジェクト
に関する記述のうち、第1のソースコードで記述された
オブジェクト間通信に関する記述以外の部分が含まれ
る。また、この第2のソースコードには、例えば、メッ
セージを受け付けて当該メッセージに基づく処理を行う
スレッドを生成するメソッドを、第1のソースコードに
よって記述されたスタブメソッドの中から呼び出すプロ
シージャ等が含まれる。なお、図4では、この第2のソ
ースコードが記述されたファイルf2を「Test svc_pr
oc.cc」として示している。
【0011】また、第3のソースコードとして、クライ
アントオブジェクトに関する記述がC++等のようなプ
ログラミング言語で記述されてなるソースコードを作成
する。ここで、第3のソースコードには、クライアント
オブジェクトに関する記述のうち、第1のソースコード
で記述されたオブジェクト間通信に関する記述以外の部
分が含まれる。すなわち、この第3のソースコードに
は、例えば、アプリケーションプログラムとして、適切
なサービスへの接続など、メインとなる機能を実行する
ための記述が含まれる。なお、図4では、この第3のソ
ースコードが記述されたファイルf3を「Test.cc」及
び「Test.h」として示している。ここで、「Test.h」は
「Test.cc」に組み込まれるインクルードファイルであ
る。
【0012】そして、インターフェース定義言語で記述
された第1のソースコードは、スタブジェネレータ10
1によって、第2のソースコードや第3のソースコード
の記述に使用されたプログラミング言語と同じプログラ
ミング言語によって記述されたソースコードに変換され
る。すなわち、スタブジェネレータ101によって、イ
ンターフェース定義言語ではなく、C++等のようなプ
ログラミング言語で記述されてなるスタブメソッドが生
成される。
【0013】具体的には、第1のソースコードが記述さ
れたファイルf1から、サーバオブジェクトの側のスタ
ブメソッドに関する記述を含むファイルf4と、クライ
アントオブジェクトの側のスタブメソッドに関する記述
を含むファイルf5と、オブジェクト間通信を行うオブ
ジェクトで共通に使用されるインクルードファイルf6
とが生成される。
【0014】なお、図4では、サーバオブジェクトの側
のスタブメソッドに関する記述を含むファイルf4を、
「TestStub.cc」及び「TestStub.h」として示してい
る。ここで、「TestStub.h」は「TestStub.cc」に組み
込まれるインクルードファイルである。また、クライア
ントオブジェクトの側のスタブメソッドに関する記述を
含むファイルf5を、「TestProxy.cc」及び「TestProx
y.h」として示している。ここで、「TestProxy.h」は
「TestProxy.cc」に組み込まれるインクルードファイル
である。また、オブジェクト間通信を行うオブジェクト
で共通に使用されるインクルードファイルf6を「Test
Entry.h」「TestMsg.h」として示している。
【0015】そして、以上のようなファイルf4,f
5,f6を生成した後、それらのファイルf4,f5,
f6と、第2のソースコードが記述されたファイルf2
と、第3のソースコードが記述されたファイルf3とを
それぞれコンパイルし、それらをリンクする。これによ
り、アプリケーションプログラムを構成するファイルと
して、サーバオブジェクトの側の実行ファイルf6と、
クライアントオブジェクトの側の実行ファイルf7とが
生成される。
【0016】すなわち、図4に示す例では、第2のソー
スコードが記述されたファイルf2(Test svc_proc.c
c)と、サーバオブジェクトの側のスタブメソッドに関
する記述を含むファイルf4(TestStub.cc,TestStub.
h)と、オブジェクト間通信を行うオブジェクトで共通
に使用されるインクルードファイルf6(TestEntry.
h,TestMsg.h)とから、コンパイラやリンカを備えた実
行ファイル生成用プログラム102によって、サーバオ
ブジェクトの側の実行ファイルf7が生成される。
【0017】また、第3のソースコードが記述されたフ
ァイルf3(Test.h,Test.cc)と、クライアントオブ
ジェクトの側のスタブメソッドに関する記述を含むファ
イルf5(TestProxy.cc,TestProxy.h)と、オブジェ
クト間通信を行うオブジェクトで共通に使用されるイン
クルードファイルf6(TestEntry.h,TestMsg.h)とか
ら、コンパイラやリンカを備えた実行ファイル生成用プ
ログラム103によって、クライアントオブジェクトの
側の実行ファイルf8が生成される。
【0018】ところで、一般に、プログラム実行環境に
は様々な種類があり、アプリケーションプログラムを作
成する際は、当該アプリケーションプログラが実行され
るプログラム実行環境に適合するように、プログラムを
作成する必要がある。そして、当然の事ながら、アプリ
ケーションプログラムの性質や要求に応じて作成される
スタブメソッドも、プログラム実行環境に適合するよう
に作成する必要がある。したがって、アプリケーション
プログラムで使用されるスタブメソッドをスタブジェネ
レータによって生成する際には、アプリケーションプロ
グラムが実行されるプログラム実行環境に適合するよう
に、スタブメソッドを生成する必要がある。
【0019】そこで、従来、複数の異なるプログラム実
行環境が存在する場合には、各プログラム実行環境に適
合したスタブメソッドをそれぞれ生成するスタブジェネ
レータを、各プログラム実行環境毎に用意していた。そ
して、スタブメソッドを生成する際には、当該スタブメ
ソッドを使用するアプリケーションプログラムが実行さ
れるプログラム実行環境に応じて、使用するスタブジェ
ネレータを切り換えるようにしていた。
【0020】
【発明が解決しようとする課題】しかしながら、インタ
ーフェース定義言語で記述されたソースコードをスタブ
ジェネレータで変換することにより、スタブメソッドを
生成するような手法では、以下に挙げるような問題があ
る。
【0021】第1に、所定のインターフェース定義言語
で記述されたソースコードを作成する必要があるため、
スタブメソッドを用いたアプリケーションプログラムを
作成するには、インターフェース定義言語を勉強して習
得しなければならないという問題がある。すなわち、通
常、インターフェース定義言語と、C++等のようなプ
ログラム言語とは、その書式等がまるっきり異なるた
め、スタブジェネレータを使おうとする際には、先ず、
時間をかけてインターフェース定義言語を勉強して、イ
ンターフェース定義言語でソースコードを作成できるよ
うにならなければならない。このため、従来、スタブメ
ソッドを使用するアプリケーションプログラムの作成に
は、多大な労力を必要としていた。
【0022】第2に、インターフェース定義言語で記述
された部分によるインターフェースと、C++等のよう
なプログラミング言語で記述された部分のインターフェ
ースとが正しく一致しているか否かの確認が、非常に難
しいという問題がある。すなわち、図4に示したように
アプリケーションプログラムを作成すると、一つのアプ
リケーションプログラムの中に、インターフェース定義
言語で記述された部分と、C++等のようなプログラミ
ング言語で記述された部分とが存在することとなる。上
述したように、通常、インターフェース定義言語と、C
++等のようなプログラム言語とは、その書式等がまる
っきり異なる。このため、インターフェース定義言語で
記述された部分と、C++等のようなプログラミング言
語で記述された部分とが、一つのアプリケーションプロ
グラムの中に存在していると、それらのインターフェー
スが一致しているか否かの確認が非常に難しい。
【0023】第3に、従来のスタブジェネレータは、複
数の異なるプログラム実行環境で共通に使用することが
できないという問題がある。そこで、複数の異なるプロ
グラム実行環境が存在する場合には、上述したように、
各プログラム実行環境に適合したスタブメソッドをそれ
ぞれ生成するスタブジェネレータを、各プログラム実行
環境毎に用意する必要があった。
【0024】第4に、スタブメソッドとして使用可能な
メソッドは、インターフェース定義言語で予め規定され
たメソッドだけであり、ユーザーが動的にスタブメソッ
ドの内容を変更することはできないという問題がある。
すなわち、スタブメソッドとして使用可能なメソッド
は、スタブジェネレータの設計の階段で予め決められた
ものであり、スタブジェネレータに依存している。この
ため、ユーザーがスタブメソッドの内容の変更を行うよ
うなことはできなかった。
【0025】本発明は、以上のような従来の実情に鑑み
て提案されたものであり、複数の異なるプログラム実行
環境にも容易に適応でき、しかもインターフェース定義
言語を用いることなくスタブメソッドを生成することが
可能なソースコード変換方法、並びにそのようなソース
コード変換方法を実現するソース変換用プログラムが記
録されたコンピュータ読み取り可能な記録媒体を提供す
ることを目的としている。
【0026】
【課題を解決するための手段】本発明に係るソースコー
ド変換方法では、オブジェクト間通信に使用されるメソ
ッドが実行されるプログラム実行環境に対応して予め登
録された情報を参照して、ソースコードを他のソースコ
ードへ変換する。ここで、変換前のソースコードは、所
定のプログラミング言語で記述されるとともに、オブジ
ェクト間通信に使用されるメソッドに関する記述が、複
数の異なるプログラム実行環境に対して共通の書式で記
述されてなる。また、変換後のソースコードは、上記プ
ログラミング言語と同一のプログラミング言語で記述さ
れるとともに、上記メソッドが実行されるプログラム実
行環境に対応した所定の書式で記述されてなる。
【0027】また、本発明に係る記録媒体は、ソースコ
ード変換用プログラムが記録されたコンピュータ読み取
り可能な記録媒体であり、このソースコード変換用プロ
グラムは、オブジェクト間通信に使用されるメソッドが
実行されるプログラム実行環境に対応して予め登録され
た情報を参照して、ソースコードを他のソースコードへ
変換する。ここで、変換前のソースコードは、所定のプ
ログラミング言語で記述されるとともに、オブジェクト
間通信に使用されるメソッドに関する記述が、複数の異
なるプログラム実行環境に対して共通の書式で記述され
てなる。また、変換後のソースコードは、上記プログラ
ミング言語と同一のプログラミング言語で記述されると
ともに、上記メソッドが実行されるプログラム実行環境
に対応した所定の書式で記述されてなる。
【0028】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。
【0029】以下の説明では、クライアントオブジェク
トとサーバオブジェクトとの間でのオブジェクト間通信
を行うアプリケーションプログラムの作成手順の説明を
通して、本発明を適用したソースコード変換方法につい
て説明する。なお、本発明に係る記録媒体は、例えば、
以下に説明するスタブジェネレータが記録されてなるも
のである。ここで、記録媒体は、コンピュータ読み取り
可能であるならばどのようなものでも良く、例えば、磁
気ディスク、光磁気ディスク、相変化型光ディスク、光
ディスク、ROM(Read Only memory)、RAM(Rand
om Access Memory)等が挙げられる。
【0030】クライアントオブジェクトとサーバオブジ
ェクトとの間のオブジェクト間通信を行うアプリケーシ
ョンプログラムを作成する際は、図1に示すように、ま
ず、3種類のソースコードを作成する。
【0031】すなわち、第1のソースコードとして、ス
タブメソッドに関する記述を有するソースコードを作成
する。換言すれば、この第1のソースコードにより、オ
ブジェクト間通信を行う際のインターフェースが定義さ
れる。そして、この第1のソースコードは、スタブメソ
ッドに関する記述を可能とするための所定の指定子「Ac
tive」が使えるように拡張されたC++によって記述さ
れてなる。ここで、指定子「Active」は、本発明を適用
するにあたってC++が拡張され定義された指定子であ
り、当該指定子「Active」によって指定されたメンバ関
数が、スタブメソッドに対応するメンバ関数であること
を示す。なお、図1では、この第1のソースコードが記
述されたファイルF1を「Test.h」として示している。
【0032】また、第2のソースコードとして、サーバ
オブジェクトに関する記述がC++で記述されてなるソ
ースコードを作成する。ここで、第2のソースコードに
は、サーバオブジェクトに関する記述のうち、第1のソ
ースコードで記述されたオブジェクト間通信に関する記
述以外の部分が含まれる。また、この第2のソースコー
ドには、例えば、メッセージを受け付けて当該メッセー
ジに基づく処理を行うスレッドを生成するメソッドを、
第1のソースコードによって記述されたスタブメソッド
の中から呼び出すプロシージャ等が含まれる。なお、図
1では、この第2のソースコードが記述されたファイル
F2を「Test svc_proc.cc」として示している。
【0033】また、第3のソースコードとして、クライ
アントオブジェクトに関する記述がC++で記述されて
なるソースコードを作成する。ここで、第3のソースコ
ードには、クライアントオブジェクトに関する記述のう
ち、第1のソースコードで記述されたオブジェクト間通
信に関する記述以外の部分が含まれる。すなわち、この
第3のソースコードには、例えば、アプリケーションプ
ログラムとして、適切なサービスへの接続など、メイン
となる機能を実行するための記述が含まれる。なお、図
1では、この第3のソースコードが記述されたファイル
F3を「Test.cc」として示している。
【0034】そして、スタブジェネレータ1によって、
第1のソースコードは、上述の指定子「Active」を用い
ることなく、C++で記述されたソースコードに変換さ
れる。すなわち、指定子「Active」で指定されたメンバ
関数が、当該指定子「Active」を用いるような拡張を行
っていないC++で記述されるように、スタブジェネレ
ータ1によって、ソースコードが変換される。これによ
り、第2のソースコードや第3のソースコードと同様な
C++で記述されてなるスタブメソッドが生成される。
【0035】そして、このような変換により、第1のソ
ースコードが記述されたファイルF1から、サーバオブ
ジェクトの側のスタブメソッドに関する記述を含むファ
イルF4と、クライアントオブジェクトの側のスタブメ
ソッドに関する記述を含むファイルF5と、オブジェク
ト間通信を行うオブジェクトで共通に使用されるインク
ルードファイルF6とが生成される。
【0036】なお、図1では、サーバオブジェクトの側
のスタブメソッドに関する記述を含むファイルF4(以
下、サーバスタブファイルF4と称する。)を、「Test
Stub.cc」及び「TestStub.h」として示している。ここ
で、「TestStub.h」は、「TestStub.cc」に組み込まれ
るインクルードファイルである。また、クライアントオ
ブジェクトの側のスタブメソッドに関する記述を含むフ
ァイルF5(以下、クライアントスタブファイルF5と
称する。)を、「TestProxy.cc」及び「TestProxy.h」
として示している。ここで、「TestProxy.h」は、「Tes
tProxy.cc」に組み込まれるインクルードファイルであ
る。また、オブジェクト間通信を行うオブジェクトで共
通に使用されるインクルードファイルF6(以下、共通
スタブファイルF6と称する。)を、「TestEntry.h」
「TestMsg.h」として示している。なお、これらのファ
イルF4,F5,F6の含まれるソースコードは、上述
したような変換が施されることにより、上記指定子「Ac
tive」を用いることなく、第2のソースコードや第3の
ソースコードと同様なC++で記述されてなる。
【0037】そして、以上のようなファイルF4,F
5,F6を生成した後、それらのファイルF4,F5,
F6と、第2のソースコードが記述されたファイルF2
と、第3のソースコードが記述されたファイルF3とを
それぞれコンパイルし、それらをリンクする。これによ
り、アプリケーションプログラムを構成するファイルと
して、サーバオブジェクトの側の実行ファイルF7と、
クライアントオブジェクトの側の実行ファイルF8とが
生成される。
【0038】すなわち、図1に示す例では、第2のソー
スコードが記述されたファイルF2(Test svc_proc.c
c)と、サーバスタブファイルF4(TestStub.cc,Test
Stub.h)と、共通スタブファイルF6(TestEntry.h,T
estMsg.h)とから、コンパイラやリンカを備えた実行フ
ァイル生成用プログラム2によって、サーバオブジェク
トの側の実行ファイルF7が生成される。
【0039】また、第3のソースコードが記述されたフ
ァイルF3(Test.h,Test.cc)と、クライアントスタ
ブファイルF5(TestProxy.cc,TestProxy.h)と、共
通スタブファイルF6(TestEntry.h,TestMsg.h)とか
ら、コンパイラやリンカを備えた実行ファイル生成用プ
ログラム3によって、クライアントオブジェクトの側の
実行ファイルF8が生成される。
【0040】つぎに、上記スタブジェネレータ1につい
て詳細に説明する。
【0041】このスタブジェネレータ1では、指定子
「active」を導入することで、インターフェース定義言
語を用いることなく、スタブメソッドを非常に容易且つ
柔軟に生成できるようにしている。
【0042】このスタブジェネレータ1は、オブジェク
ト指向プログラミングを適用して構築されてなるソース
コード変換用プログラムであり、オブジェクト間通信に
用いられるスタブメソッドを生成するためのものであ
る。すなわち、このスタブジェネレータ1は、指定子
「Active」を用いてスタブメソッドに関する記述がなさ
れたソースコードを、指定子「Active」を用いることな
くC++で記述されたソースコードに変換する。具体的
には、図1に示した例では、スタブジェネレータ1は、
指定子「Active」を用いてスタブメソッドに関する記述
がなされたファイルF1(Test.h)を変換して、サーバ
スタブファイルF4(TestStub.h,TestStub.cc)と、
クラアントスタブファイルF5(TestProxy.h,TestPro
xy.cc)と、共通スタブファイルF6(TestEntry.h,Te
stMsg.h)とを生成する。
【0043】このスタブジェネレータ1は、図2に示す
ように、主に、入力されたソースコードを解析する解析
部4と、解析したソースコードからスタブメソッドを生
成する生成部5との2つに分かれる。解析部4は、入力
されたソースコードを構成要素の単位に分け、プログラ
ムの中間表現を生成する。生成部5は、解析部4によっ
て生成された中間表現からスタブメソッドを生成する。
【0044】ここで、解析部4は、スタブジェネレータ
1に入力されるソースコードの記述に使用されるプログ
ラム言語に応じたものとされる。すなわち、スタブジェ
ネレータ1に入力されるソースコードの記述に使用され
るプログラム言語が異なる場合には、解析部4も異なる
ものとなる。ただし、解析部4による解析の結果として
生成される中間表現は、プログラム言語が異なっていて
も、共通の表現とされる。したがって、生成部5は、ス
タブジェネレータ1に入力されるソースコードの記述に
使用されるプログラム言語が異なっていても、共通のも
のを使用することができる。
【0045】このスタブジェネレータ1は、図2に示す
ように、先ず、入力処理ルーチン11(CharInput)
で、入力されたソースコードから空欄や注釈等を除去
し、識別子や予約語を示す文字列等のような、プログラ
ムとして意味がある字句を抽出する。なお、図2に示す
例において、入力処理ルーチン11に入力されるのは、
C++を指定子「Active」を使うように拡張して記述さ
れたファイルF1(Test.h)である。この入力処理ルー
チン11では、C++を拡張して定義された指定子「ac
tive」も予約語として認識される。
【0046】次に、字句解析ルーチン(TokenAnalyse)
12で、入力処理ルーチン11で抽出された字句の解析
を行い、その解析の結果として、プログラムとして意味
がある字句等をトークンと称される論理的な単位毎にま
とめた、いわゆるトークンストリームを出力する。な
お、この字句解析ルーチンでは、C++を拡張して定義
された指定子「active」の解析もなされる。
【0047】このような入力処理ルーチン11や字句解
析ルーチン12では、記号表管理オブジェクト13(Sy
mbolManage)が使用される。記号表管理オブジェクト1
3は、記号表と呼ばれるデータ構造を有しており、この
記号表に、プログラムのいろいろな構成要素に関する情
報が格納される。この記号表には、例えば、図3に示す
ように、指定子「Active」によって指定されたクラスに
ついての情報として、そのクラス名と、当該クラスに含
まれる関数の名称及びその戻り値の型と、当該関数のパ
ラメータの名称及びその型とが登録される。ここで、関
数のパラメータは複数存在する場合もあり、その場合に
は、それぞれのパラメータについて、その名称及び型に
ついての情報が登録される。
【0048】なお、この記号表管理オブジェクト13に
登録される内容は、動的に変更可能である。すなわち、
この記号表管理オブジェクト13に登録される内容は、
例えば、生成しようとするスタブメソッドに応じて、随
時変更することが可能である。
【0049】次に、図2に示すように、構文解析ルーチ
ン14(SyntaxAnalyse)で、字句解析ルーチン14に
よる解析の結果として出力されたトークンストリームに
ついて、その構文解析を行う。そして、この構文解析の
結果として得られた、トークンストリームを構成する各
トークンの相互の関係等を示す、いわゆる構文ツリーの
情報が、構文ツリーオブジェクト15(TreeManage)に
登録される。なお、このような構文ツリーの情報等が、
上述した中間表現に相当する。
【0050】以上が入力されたソースコードを解析する
解析部4であり、以上のような解析によって得られた中
間表現から、目的とするソースコードが生成部5によっ
て生成される。すなわち、生成部5に含まれるコード生
成ルーチン16(CodeGenerate)で、構文解析ルーチン
14による構文解析の結果として得られた構文ツリーの
情報等に基づいて、目的とするソースコードを生成して
出力する。具体的には、コード生成ルーチン16では、
解析部4による解析によって得られた中間表現から、目
的とするソースコードを生成するメソッドを含むコード
生成オブジェクト17(CodeGenManage)が呼び出さ
れ、このコード生成オブジェクト17によって、目的と
するソースコードが生成される。
【0051】なお、コード生成ルーチン17で生成され
て出力されるのは、サーバスタブファイルF4(TestSt
ub.h,TestStub.cc)と、クラアントスタブファイルF
5(TestProxy.h,TestProxy.cc)と、共通スタブファ
イルF6(TestEntry.h,TestMsg.h)とである。そし
て、これらのファイルF4,F5,F6は、指定子「Ac
tive」を使うことなく、C++で記述されたファイルで
ある。
【0052】ところで、上記スタブジェネレータ1にお
いて、コード生成オブジェクト17には、所定のパター
ンファイルF9を登録するようになっており、このパタ
ーンファイルF9を切り換えることにより、異なる複数
のプルグラム実行環境に応じたスタブメソッドの生成が
可能となっている。以下、このことについて説明する。
【0053】通常、アプリケーションプログラムは、オ
ペレーティングシステムによって提供される、所定のプ
ログラム実行環境上で実行される。そして、このプログ
ラム実行環境には様々な種類がある。
【0054】例えば、オペレーティングシステム「Aper
ios(商標)」では、複数の異なるプログラム実行環境
を同時に提供できるようなされており、これら各プログ
ラム実行環境はそれぞれメタスペースと称される。具体
的には、例えば、オペレーティングシステム「Aperio
s」では、mAVメタスペースと称されるメタスペースと、
mCOOPメタスペースと称されるメタスペースとの2つが
同時に提供されるような場合がある。ここで、mAVメタ
スペースは、いわゆる手続き型のプログラムが実行され
るメタスペースであり、mAVメタスペース上で実行され
るアプリケーションプログラムは、1つのオブジェクト
として記述される。また、mCOOPメタスペースは、いわ
ゆるオブジェクト指向型のプログラムが実行されるメタ
スペースであり、mCOOPメタスペース上で実行されるア
プリケーションプログラムは、通常、複数のオブジェク
トから構成される。
【0055】そして、オペレーティングシステム「Aper
ios」が、テレビ機能を備えた機器に搭載されたような
場合には、例えば、テレビに動画像を表示するためのア
プリケーションプログラムがmAVメタスペースで実行さ
れ、当該機器への操作入力を受け付ける操作パネルを制
御するためのグラフィカル・ユーザ・インターフェース
(GUI)を実現するアプリケーションプログラムがmC
OOPメタスペースで実行されたりする。このとき、mAVメ
タスペースで実行されるアプリケーションプログラムで
使用されるスタブメソッドと、mCOOPメタスペースで実
行されるアプリケーションプログラムで使用されるスタ
ブメソッドとでは、異なるものとなる。
【0056】したがって、スタブジェネレータ1でスタ
ブメソッドを生成する際には、当該スタブメソッドが実
行されるプログラム実行環境に応じたスタブメソッドを
生成する必要がある。すなわち、例えば、mAVメタスペ
ースで実行されるアプリケーションプログラムのスタブ
メソッドは、mAVメタスペースで正しく動作するもので
なければならないし、mCOOPメタスペースで実行される
アプリケーションプログラムのスタブメソッドは、mCOO
Pメタスペースで正しく動作するものでなければならな
い。
【0057】そこで、本実施の形態におけるスタブジェ
ネレータ1では、このような複数の異なるプログラム実
行環境に対応できるように、コード生成オブジェクト1
7にプログラム実行環境に応じたパターンファイルF9
を登録するようにしている。すなわち、上記スタブジェ
ネレータ1では、各プログラム実行環境毎にパターンフ
ァイルF9をコード生成オブジェクト17に登録してお
き、所望するスタブメソッドが実行されるプログラム実
行環境に応じてパターンファイルF9を使い分けること
により、複数の異なるプログラム実行環境に応じたスタ
ブメソッドの生成を可能としている。
【0058】すなわち、図2に示すように、スタブメソ
ッドの生成を行う前に予め、プログラム実行環境に応じ
たスタブメソッドを生成する際に必要な情報が記述され
てなるパターンファイルF9を作成して、当該パターン
ファイルF9をスタブジェネレータ1に登録しておく。
具体的には、スタブジェネレータ1は、パターンファイ
ルF9が入力されたら、パターンファイル入力処理ルー
チン18(PatternInput)で、当該パターンファイル1
8の入力を受け付け、そのパターンファイルF9をコー
ド生成オブジェクト17に内部情報として登録する。な
お、パターンファイルF9をコード生成オブジェクト1
7に登録する際は、どのパターンファイルがどのプログ
ラム実行環境に対応するのかについての情報も登録して
おく。
【0059】そして、このスタブジェネレータ1で、ス
タブメソッドを生成する際は、生成しようとするスタブ
メソッドが実行されるプログラム実行環境に対応したパ
ターンファイルF9を参照するようにする。これによ
り、1つのスタブジェネレータ1だけで、複数の異なる
プログラム実行環境に対応したスタブメソッドを生成す
ることが可能となる。
【0060】しかも、プログラム実行環境毎にパターン
ファイルF9を登録することにより、このスタブジェネ
レータ1では、スタブメソッドの生成の手続きを動的に
変更することが可能となっている。すなわち、例えば、
新たなプログラム実行環境に応じたスタブメソッドを生
成したいような場合には、必要に応じて、新たなプログ
ラム実行環境に応じたパターンファイルF9を入力する
ことにより、新たなプログラム実行環境に応じたスタブ
メソッドを生成することが可能となる。また、例えば、
既存のプログラム実行環境が変更されたような場合に
は、当該プログラム実行環境の変更に対応するように修
正を加えたパターンファイルF9を再入力することによ
り、変更後のプログラム実行環境に対応したスタブメソ
ッドを生成することが可能となる。
【0061】また、このスタブジェネレータ1におい
て、スタブジェネレータ1に入力されるソースコード
は、スタブメソッドが実行されるプログラム実行環境が
異なったとしても、指定子「Active」を用いて、各プロ
グラム実行環境に対して共通の書式で記述される。そし
て、複数の異なるプログラム実行環境に対して共通の書
式で記述されたソースコードから、所定のプログラム実
行環境に応じたソースコードを生成するのに必要な情報
が、パターンファイルF9には記述される。
【0062】すなわち、このスタブジェネレータ1は、
スタブメソッドに関する記述が、複数の異なるプログラ
ム実行環境に対して共通の書式で記述されてなるソース
コードを、予め登録されたパターンファイルF9を参照
して、当該スタブメソッドが実行されるプログラム実行
環境に対応した所定の書式のソースコードに変換する。
【0063】以上、詳細に説明したように、このスタブ
ジェネレータ1を採用することにより、インターフェー
ス定義言語を用いることなく、スタブメソッドの生成が
可能となる。したがって、スタブメソッドを用いたアプ
リケーションプログラムを作成するにあたって、インタ
ーフェース定義言語を習得するような必要がなくなる。
その結果、スタブメソッドを使用するアプリケーション
プログラムの作成が、非常に容易になる。
【0064】また、このスタブジェネレータ1を採用す
ることにより、インターフェース定義言語を用いること
なく、スタブメソッドの生成が可能となるので、従来の
ように、インターフェース定義言語で記述された部分に
よるインターフェースと、C++等のようなプログラミ
ング言語で記述された部分のインターフェースとが正し
く一致しているか否かの確認が難しいというような問題
が無くなる。すなわち、このスタブジェネレータ1を用
いることにより、スタブメソッドによって行われるオブ
ジェクト間通信のインターフェースについての確認を非
常に容易に行うことが可能となる。
【0065】また、このスタブジェネレータ1では、ソ
ースコードの変換時に、スタブメソッドが実行されるプ
ログラム実行環境に対応して予め登録されたパターンフ
ァイルF9を参照するようにしており、これにより、1
つのスタブジェネレータ1を複数の異なるプログラム実
行環境で共通に使用することが可能となっている。
【0066】また、このスタブジェネレータ1では、プ
ログラム実行環境毎にパターンファイルF9を登録する
ようにしており、これにより、スタブメソッドの生成の
手続きを動的に変更することが可能となっている。した
がって、このスタブジェネレータ1では、例えば、パタ
ーンファイルF9の内容を変更することにより、スタブ
ジェネレータ1の設計の階段で予め決めらていなかった
ようなスタブメソッドを生成するようなことも可能であ
る。
【0067】なお、以上の説明では、ソースコードの記
述に使用するプログラミング言語としてC++を例に挙
げたが、ソースコードの記述に使用する言語がC++以
外の場合にも、本発明が適用可能であることは言うまで
もない。
【0068】
【発明の効果】以上の説明から明らかなように、本発明
によれば、複数の異なるプログラム実行環境にも容易に
適応でき、しかもインターフェース定義言語を用いるこ
となく、スタブメソッドを容易且つ柔軟に生成すること
が可能となる。
【図面の簡単な説明】
【図1】本発明を適用したスタブジェネレータを用いて
スタブメソッドを生成する手続きを示す図である。
【図2】スタブジェネレータによる手続きを示す図であ
る。
【図3】指定子「Active」によるクラス定義を示す図で
ある。
【図4】従来のスタブメソッド生成の手続きを示す図で
ある。
【符号の説明】
1 スタブジェネレータ、 4 解析部、 5 生成部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 所定のプログラミング言語で記述される
    とともに、オブジェクト間通信に使用されるメソッドに
    関する記述が、複数の異なるプログラム実行環境に対し
    て共通の書式で記述されてなるソースコードを、 上記メソッドが実行されるプログラム実行環境に対応し
    て予め登録された情報を参照して、 上記プログラミング言語と同一のプログラミング言語で
    記述されてなり、上記メソッドが実行されるプログラム
    実行環境に対応した所定の書式のソースコードに変換す
    ることを特徴とするソースコード変換方法。
  2. 【請求項2】 所定のプログラミング言語で記述される
    とともに、オブジェクト間通信に使用されるメソッドに
    関する記述が複数の異なるプログラム実行環境に対して
    共通の書式で記述されてなるソースコードを、 上記メソッドが実行されるプログラム実行環境に対応し
    て予め登録された情報を参照して、 上記プログラミング言語と同一のプログラミング言語で
    記述されてなり、上記メソッドが実行されるプログラム
    実行環境に対応した所定の書式のソースコードに変換す
    るソースコード変換用プログラムが記録されたコンピュ
    ータ読み取り可能な記録媒体。
JP9225239A 1997-08-21 1997-08-21 ソースコード変換方法及び記録媒体 Abandoned JPH1165832A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP9225239A JPH1165832A (ja) 1997-08-21 1997-08-21 ソースコード変換方法及び記録媒体
US09/136,488 US6546549B2 (en) 1997-08-21 1998-08-19 Source code transformation process and recording medium
CN98124345A CN1103962C (zh) 1997-08-21 1998-08-21 源代码变换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9225239A JPH1165832A (ja) 1997-08-21 1997-08-21 ソースコード変換方法及び記録媒体

Publications (1)

Publication Number Publication Date
JPH1165832A true JPH1165832A (ja) 1999-03-09

Family

ID=16826185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9225239A Abandoned JPH1165832A (ja) 1997-08-21 1997-08-21 ソースコード変換方法及び記録媒体

Country Status (3)

Country Link
US (1) US6546549B2 (ja)
JP (1) JPH1165832A (ja)
CN (1) CN1103962C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132739A (ja) * 2000-10-23 2002-05-10 Nec Corp スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体
JP2011170512A (ja) * 2010-02-17 2011-09-01 Nec Corp 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム
JP2014529832A (ja) * 2011-09-07 2014-11-13 マイクロソフト コーポレーション 変換コンテンツ・アウェア・データー・ソース管理

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
FR2795835B1 (fr) * 1999-07-01 2001-10-05 Bull Cp8 Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce
US7207036B2 (en) * 2000-02-07 2007-04-17 Esmertec Ag Preprocessing of interfaces to allow fast call through
US20030070159A1 (en) * 2000-08-04 2003-04-10 Intrinsic Graphics, Inc. Object decription language
US6922827B2 (en) * 2002-02-22 2005-07-26 Bea Systems, Inc. Iterative software development environment with prioritized build rules
CA2453605C (en) * 2003-12-17 2009-06-30 Ibm Canada Limited-Ibm Canada Limitee Integrated visual and language-based system and method for reusable data transformations
US20050138606A1 (en) * 2003-12-17 2005-06-23 Sujit Basu System and method for code migration
US8813047B2 (en) * 2005-09-08 2014-08-19 Alcatel Lucent Yet another transformation language (YATL)
US7353504B2 (en) * 2005-12-09 2008-04-01 Bea Systems, Inc. System and method for efficiently generating native code calls from byte code in virtual machines
US10846059B2 (en) 2019-02-05 2020-11-24 Simply Inspired Software, Inc. Automated generation of software bindings

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE77161T1 (de) * 1987-01-05 1992-06-15 Gachot Sa Verfahren zur uebersetzung natuerlicher sprachen mittels eines programmierten digitalrechners.
US6157961A (en) * 1992-12-21 2000-12-05 Sun Microsystems, Inc. Client-side stub interpreter
US6138140A (en) * 1995-07-14 2000-10-24 Sony Corporation Data processing method and device
JPH09179738A (ja) * 1995-12-26 1997-07-11 Hitachi Ltd オブジェクト指向言語処理方法及び処理装置
US6347342B1 (en) * 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
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
US6058431A (en) * 1998-04-23 2000-05-02 Lucent Technologies Remote Access Business Unit System and method for network address translation as an external service in the access server of a service provider
US6453362B1 (en) * 1998-08-12 2002-09-17 International Business Machines Corporation Systems, methods and computer program products for invoking server applications using tickets registered in client-side remote object registries

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132739A (ja) * 2000-10-23 2002-05-10 Nec Corp スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体
JP2011170512A (ja) * 2010-02-17 2011-09-01 Nec Corp 転送プログラム生成装置、処理システム、転送プログラム生成方法およびプログラム
JP2014529832A (ja) * 2011-09-07 2014-11-13 マイクロソフト コーポレーション 変換コンテンツ・アウェア・データー・ソース管理
JP2017215999A (ja) * 2011-09-07 2017-12-07 マイクロソフト テクノロジー ライセンシング,エルエルシー 変換コンテンツ・アウェア・データー・ソース管理

Also Published As

Publication number Publication date
US6546549B2 (en) 2003-04-08
CN1214486A (zh) 1999-04-21
US20020013936A1 (en) 2002-01-31
CN1103962C (zh) 2003-03-26

Similar Documents

Publication Publication Date Title
US7391735B2 (en) Parsing messages with multiple data formats
US7010796B1 (en) Methods and apparatus providing remote operation of an application programming interface
US5968127A (en) Information processing apparatus
US6226692B1 (en) Method and system for constructing software components and systems as assemblies of independent parts
Wile Abstract syntax from concrete syntax
US5946489A (en) Apparatus and method for cross-compiling source code
US5881289A (en) Remote compiling of source code for cross development
US20080229279A1 (en) Method for automatic generation of schema mapping application code
JPH1091449A (ja) 分散オブジェクト・ネットワーク上で分散オブジェクトを利用してアプリケーションプログラムを構成するための視覚的組立ツール
KR20020035567A (ko) 레거시 데이터 구조용 객체 속성 메타 모델 에뮬레이터
JPH1165832A (ja) ソースコード変換方法及び記録媒体
JPH0512025A (ja) オブジエクト指向言語間インタフエース実現方法
EP2088506A1 (en) Method and system for calling services from a remote client
US7237222B1 (en) Protocol for controlling an execution process on a destination computer from a source computer
US6321347B1 (en) Network testing system and method
NO329240B1 (no) System og fremgangsmate for forklarende definering og bruk av undergrupper innenfor dokumentkoding
JP4702835B2 (ja) Webサービスカスタマイズシステム
US20070006121A1 (en) Development activity recipe
Holz Application of UML within the Scope of new Telecommunication Architectures
JP2002342078A (ja) プログラム開発システム及び方法
US20170083353A1 (en) Late binding composite service specification for business process execution language
JP2002508866A (ja) データ処理装置の制御方法
WO2001071502A1 (en) Method of and system for testing software in computers
JPH0430239A (ja) コマンドオプション指定処理装置
Mendonça et al. An experiment in distributed software architecture recovery

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060425

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20060626