JP2002014813A - Application program developing method for platform at the time of executing distribution and adaptation and computer device - Google Patents

Application program developing method for platform at the time of executing distribution and adaptation and computer device

Info

Publication number
JP2002014813A
JP2002014813A JP2001139047A JP2001139047A JP2002014813A JP 2002014813 A JP2002014813 A JP 2002014813A JP 2001139047 A JP2001139047 A JP 2001139047A JP 2001139047 A JP2001139047 A JP 2001139047A JP 2002014813 A JP2002014813 A JP 2002014813A
Authority
JP
Japan
Prior art keywords
adaptation
adaptive
software
class
instance
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
Application number
JP2001139047A
Other languages
Japanese (ja)
Inventor
Juraun Rabedei Pirei
ジュラウン ラベディ ピレイ
J Lee Roger
ジェイ リー ロジャー
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 Electronics Inc
Original Assignee
Sony Electronics Inc
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
Priority claimed from US09/258,047 external-priority patent/US6330717B1/en
Application filed by Sony Electronics Inc filed Critical Sony Electronics Inc
Publication of JP2002014813A publication Critical patent/JP2002014813A/en
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a method for allowing a designer to easily develop distributed and adaptive software such as a network without describing the details of distribution or adaptation. SOLUTION: An application source file is analyzed so that a prescribed keyword for identifying an adaptive class can be detected. When an adaptive software method is included in the adaptive class, and the first instance of the adaptive class is generated, a first instruction set for generating a selector for dynamically selecting one of the plural implementations of the adaptive software method is inserted into the application source file so that the constructor of the adaptive class can be extended. When the first instance of the adaptive class is ended, a second instruction set for erasing the selector is inserted into the application software file so that the destructor of the adaptive class including the adaptive software method can be extended.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、分散適応実行時プ
ラットホーム用の適応ソフトウェアアプリケーションプ
ログラム開発方法及びコンピュータ装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method for developing an adaptive software application program for a distributed adaptive runtime platform and a computer apparatus.

【0002】[0002]

【従来の技術】ソフトウェア技術の発展によって、コン
ピュータは広範囲の種々の有用な動作を実行することが
できるようになった。コンピュータは、個々のストレー
ジ装置にインストールされているソフトウェアに依存す
るが、多くの目的のために使用される。例えば、コンピ
ュータは、データの送受信に加えて、多くの金融取引
(financial transaction)の管理、自動車から集積回
路チップまでの範囲の製品の製造の制御、知人の住所及
び電話番号の記録、科学及び技術的データの分析、文書
の作成及び編集に使用される。複数のコンピュータ装置
をネットワークで接続することによって、コンピュータ
装置の機能を強化し、その有用性を増すことができる。
BACKGROUND OF THE INVENTION Advances in software technology have enabled computers to perform a wide variety of useful operations. Computers rely on software installed on individual storage devices, but are used for many purposes. For example, a computer, in addition to sending and receiving data, manages many financial transactions, controls the manufacture of products ranging from automobiles to integrated circuit chips, records acquaintance addresses and telephone numbers, science and technology. It is used to analyze statistical data, create and edit documents. By connecting a plurality of computer devices via a network, the functions of the computer devices can be enhanced and their usefulness can be increased.

【0003】また、ハードウェア及びソフトウェア技術
の近年の進歩によってインターネットも可能になってき
た。インターネットは、コンピュータネットワークの世
界的集合であり、また相互に通信するプロトコルとして
TCP/IPサイトを用いたゲートウエイである。数百
万の人々が通信及び娯楽のためにインターネットを利用
している。また、インターネットは、デジタル放送、デ
ジタル電話等の新しい機能が追加され、例えば無線ネッ
トワーク、ホームネットワーク等の新しい種類のネット
ワークとして急速に発展している。インターネットの大
衆化、及び機能の絶え間のない成長により、大規模な分
散ソフトウェアアプリケーション(large-scale distri
buted software application)は前途有望である。しか
しながら、それらの開発には高い障壁がある。
[0003] Recent advances in hardware and software technology have also enabled the Internet. The Internet is a worldwide collection of computer networks and a gateway using TCP / IP sites as protocols for communication with one another. Millions of people use the Internet for communication and entertainment. In addition, the Internet has new functions such as digital broadcasting and digital telephone, and is rapidly developing as a new type of network such as a wireless network and a home network. Due to the popularization of the Internet and the continuous growth of functions, large-scale distri
buted software applications are promising. However, there are high barriers to their development.

【0004】[0004]

【発明が解決しようとする課題】大規模な分散ソフトウ
ェアアプリケーションの開発は、ソフトウェア設計者に
しばしば、ソフトウェアモジュール間の同期及び通信等
の分散プロセスを管理するあらゆる種類のサービスの開
発を要求する複雑で時間がかかるプロセスである。さら
に、分散アプリケーションを開発する際に、その分散ア
プリケーションで使用される通信媒体及び待ち時間を予
測することは困難である。また分散アプリケーションを
利用する人々の数を予想することも不可能である。持続
性(persistency)、障害許容(fault-tolerance)、複
製(replication)等の分散アプリケーションにおいて
一般的に現れる属性(property)は、実行するのが本質
的に難しい複雑なソフトウェア手続である。
The development of large-scale distributed software applications is complex and often requires software designers to develop all kinds of services that manage distributed processes such as synchronization and communication between software modules. This is a time-consuming process. Further, when developing a distributed application, it is difficult to predict the communication media and latency used in the distributed application. Nor is it possible to predict the number of people using distributed applications. Properties that commonly appear in distributed applications, such as persistency, fault-tolerance, and replication, are complex software procedures that are inherently difficult to perform.

【0005】近年、この分野における開発プロセスを容
易にする多数の技術が開発されてきた。分散オブジェク
ト及び分散システム、例えばコモンオブジェクトリクエ
ストブロッカーアーキテクチャ(Common Object Reques
t Broker Architecture:以下、CORBAという)の
ようなこれらの技術は、プログラマから分散ネットワー
ク環境の複雑さを取り除くことによって、分散ソフトウ
ェアアプリケーションを作成するプロセスを簡単にす
る。それにもかかわらず、分散ソフトウェアアプリケー
ションの開発における種々の問題点は取り除かれていな
い。アプリケーション設計者が直面する問題点の1つ
は、分散アプリケーションの性能を制御するのが困難で
あることにある。オーディオ/ビデオストリームのフォ
ーマット、内容及び規模、又はモバイルコンピュータ
(mobile computer)の有効な移動性及び接続性のよう
な種々の要因は、アプリケーションの速度及び有効性に
大きく影響する。モバイルコンピュータのアンドッキン
グ(undocking)のような他の要因は、通信の暗号化を
実施するとともに、その一貫性したプロトコルを調整す
る関連した分散アプリケーションを促進させる。これら
の要因の1つ又は幾つかにおける変化は、ユーザの期待
する性能を提供するアプリケーションの迅速かつ適切な
適応性を必要とする。
In recent years, a number of techniques have been developed to facilitate the development process in this area. Distributed objects and systems, such as the Common Object Request Blocker Architecture
These techniques, such as t Broker Architecture (hereinafter CORBA), simplify the process of creating distributed software applications by removing the complexity of a distributed network environment from programmers. Nevertheless, various problems in developing distributed software applications have not been eliminated. One of the problems facing application designers is that it is difficult to control the performance of distributed applications. Various factors, such as the format, content and size of the audio / video stream, or the effective mobility and connectivity of the mobile computer, greatly affect the speed and effectiveness of the application. Other factors, such as the undocking of mobile computers, facilitate the encryption of communications and the associated distributed applications that coordinate their consistent protocols. Changes in one or several of these factors require a quick and appropriate adaptation of the application to provide the performance expected by the user.

【0006】これらの要求を満足させるには、分散アプ
リケーションは、適応的(adaptive)でなけれなならな
い。分散アプリケーションは、広範囲に適用できるとと
もに、迅速に適応できるように十分な柔軟性を有する必
要がある。1つの解決法は、適応的な振舞い(behavio
r)を個々のアプリケーションに組み込むことである。
しかしながら、この解決法は、プログラマに課せられる
負担が余りにも大きく、実現可能ではない。むしろ、必
要なことは、分散アプリケーションが、迅速かつ適当に
適応的な一般のアプリケーション構造(application fr
amework)を有することである。さらに、相対的に抽象
的で直観的な方法で適応的な分散アプリケーションを開
発する方法が必要である。
[0006] To satisfy these demands, distributed applications must be adaptive. Distributed applications need to be widely applicable and flexible enough to adapt quickly. One solution is adaptive behavior (behavio
r) into individual applications.
However, this solution places too much burden on the programmer and is not feasible. Rather, what is needed is a distributed application that can be quickly and appropriately adapted to a general application structure (application fr.
amework). What is further needed is a way to develop adaptive distributed applications in a relatively abstract and intuitive way.

【0007】すなわち、本発明の目的は、設計者が、分
散及び適用の詳細を記述することなく、分散適応実行時
プラットホーム用の適応ソフトウェアアプリケーション
プログラムを開発することができる方法及びコンピュー
タ装置を提供することである。
[0007] That is, an object of the present invention is to provide a method and a computer device by which a designer can develop an adaptive software application program for a distributed adaptive runtime platform without describing the details of the distribution and application. That is.

【0008】[0008]

【課題を解決するための手段】本発明に係る分散適応実
行時プラットホーム用の適応ソフトウェアアプリケーシ
ョンプログラム開発方法は、多数のオブジェクトの適応
性を制御する適応マネージャを備えた分散適応実行時プ
ラットホーム用の適応ソフトウェアアプリケーションプ
ログラムを開発するものであって、適応ソフトウェアア
プリケーションプログラムのアプリケーションソースフ
ァイルを受け取るステップと、アプリケーションソース
ファイルを解析して、アプリケーションソースファイル
に格納されている適応クラスを識別するための所定のキ
ーワードを検出するステップと、適応クラスが適応ソフ
トウェアメソッドを含み、適応クラスの第1のインスタ
ンスを生成するときに、適応ソフトウェアメソッドの多
数のインプリメンテーションの1つを動的に選択するセ
レクタを生成させる第1の命令セットをアプリケーショ
ンソースファイルに挿入することによって、適応クラス
のコンストラクタを、新たなオブジェクトがそれ自体を
適応マネージャに登録するように拡張するステップと、
適応クラスの第1のインスタンスが終了したときに、セ
レクタを削除する第2の命令セットをアプリケーション
ソースファイルに挿入することによって、適応ソフトウ
ェアメソッドを含む適応クラスのデストラクタを拡張す
るステップとを有する。
SUMMARY OF THE INVENTION An adaptive software application program development method for a distributed adaptive run-time platform according to the present invention is provided for an adaptive adaptive run-time platform having an adaptive manager for controlling the adaptability of a large number of objects. Developing a software application program, receiving an application source file of the adaptive software application program, and analyzing the application source file to identify a predetermined class stored in the application source file. Detecting that the adaptive class includes an adaptive software method, and when generating a first instance of the adaptive class, multiple implementations of the adaptive software method. Extends the constructor of the adaptation class so that the new object registers itself with the adaptation manager by inserting a first set of instructions into the application source file that generates a selector that dynamically selects one of the applications. Steps to
Extending the destructor of the adaptive class containing the adaptive software method by inserting a second set of instructions into the application source file to remove the selector when the first instance of the adaptive class has finished.

【0009】本発明に係るコンピュータ装置は、多数の
適応オブジェクト間の適応性を制御する適応マネージャ
を有する分散適応実行時プラットホーム用のアプリケー
ションプログラムを開発するコンピュータ装置であっ
て、適応ソフトウェアアプリケーションプログラムのア
プリケーションソースファイルを受け取る手段と、アプ
リケーションソースファイルを構文解析して、アプリケ
ーションソースファイルに格納されている適応クラスを
識別するための所定のキーワードを検出する手段と、適
応クラスが適応ソフトウェアメソッドを含み、適応クラ
スの第1のインスタンスを生成するときに、適応ソフト
ウェアメソッドの多数のインプリメンテーションの1つ
を動的に選択するセレクタを生成させる第1の命令セッ
トをアプリケーションソースファイルに挿入することに
よって、適応クラスのコンストラクタを、新たなオブジ
ェクトがそれ自体を適応マネージャに登録するように拡
張する手段と、適応クラスの第1のインスタンスが終了
したときに、セレクタを削除する第2の命令セットをア
プリケーションソースファイルに挿入することによっ
て、適応ソフトウェアメソッドを含む適応クラスのデス
トラクタを拡張する手段と備える。
[0009] A computer device according to the present invention is a computer device for developing an application program for a distributed adaptive runtime platform having an adaptation manager for controlling the adaptability between a number of adaptive objects, the application device of the adaptive software application program. Means for receiving a source file; means for parsing the application source file to detect a predetermined keyword for identifying an adaptation class stored in the application source file; and When generating a first instance of the class, the application includes a first set of instructions that cause a selector to be dynamically selected to select one of a number of implementations of the adaptive software method. Means to extend the adaptation class's constructor by inserting it into the source file so that the new object registers itself with the adaptation manager, and remove the selector when the first instance of the adaptation class is finished Means for extending a destructor of an adaptive class containing adaptive software methods by inserting a second set of instructions into an application source file.

【0010】本発明に係るコンピュータ装置は、汎用分
散適応アプリケーションを開発するソフトウェアプラッ
トホームを記憶する記憶手段と、記憶手段に記憶されて
いるソフトウェアプラットホームを実行するプロセッサ
とを備える。プロセッサで実行されるソフトウェアプラ
ットホームは、適応クラスを記述及び定義するキーワー
ドが内部に組み込まれた適応ソフトウェアアプリケーシ
ョンのソースコードを低レベルの発生コードに変換する
プリコンパイラと、低レベルの発生コードを機械実行可
能なコードにコンパイルするコンパイラとからなる。プ
ロセッサは、プリコンパイラを実行することにより、キ
ーワードを検出して、適応クラスが適応ソフトウェアメ
ソッドを含んでいることをキーワードが示しているとき
は、適応クラスの第1のインスタンスの生成の際にソフ
トウェアセレクタを生成する所定の第1の命令セットを
アプリケーションソースファイルに挿入することによっ
て、適用クラスのコンストラクタを、新たなオブジェク
トがそれ自体を適応マネージャに登録するように拡張す
る。また、プロセッサは、プリコンパイラを実行するこ
とにより、第1のインスタンスが終了したときに、ソフ
トウェアセレクタを削除する所定の第2の命令セットを
アプリケーションソースコードに挿入することによっ
て、適用クラスのデストラクタを拡張する。
[0010] A computer device according to the present invention includes storage means for storing a software platform for developing a general-purpose distributed adaptive application, and a processor for executing the software platform stored in the storage means. The software platform running on the processor includes a precompiler that converts the source code of the adaptive software application into which the keywords that describe and define the adaptation class are embedded into low-level generated code, and a machine-executed low-level generated code Compiler that compiles into possible code. The processor detects the keyword by executing the precompiler and, if the keyword indicates that the adaptation class includes an adaptation software method, executes the software upon generation of the first instance of the adaptation class. Extending the constructor of the apply class such that the new object registers itself with the adaptation manager by inserting a predetermined first set of instructions that creates a selector into the application source file. Also, the processor executes the precompiler to insert a predetermined second instruction set for deleting the software selector into the application source code when the first instance is completed, thereby causing the destructor of the applicable class to be executed. Expand.

【0011】本発明では、適応機構が、分散プログラミ
ングの特徴をサポート一組のサービスとともに、実行時
環境に組み込まれる。特に、実行時環境に適応機構を組
み込むことにより、分散アプリケーションを、絶えず変
化するシステム、ネットワーク及びアプリケーションの
特性に対応させることができる。
In the present invention, an adaptation mechanism is incorporated into the runtime environment along with a set of services that support the features of distributed programming. In particular, by incorporating adaptive mechanisms into the runtime environment, distributed applications can be adapted to constantly changing system, network and application characteristics.

【0012】また、本発明では、ソフトウェアプラット
ホームは、2つの適応機構、すなわち反映メソッドと適
応メソッドに対するサポートを提供する。設計者は、反
映メソッドによって、実行時にオブジェクトの実行環境
をカスタマイズすることができ、また、適応メソッドに
よって、同じメソッドに対して幾つかのインプリメンテ
ーションを準備することができ、実行時に最も有効なイ
ンプリメンテーションを選択することができる。本発明
に係るコンピュータ装置で実行するソフトウェアプラッ
トホームは、反映メソッドと適応メソッドとの両方をサ
ポートしているので、大規模分散アプリケーションをこ
のソフトウェアプラットホームを用いて容易に開発する
ことができる。
Also, in the present invention, the software platform provides support for two adaptation mechanisms, a reflection method and an adaptation method. Designers can customize the execution environment of an object at run time with a reflection method, and can prepare several implementations for the same method with an adaptation method, so that the most efficient Implementation can be selected. The software platform running on the computer device according to the present invention supports both the reflection method and the adaptation method, so that large-scale distributed applications can be easily developed using this software platform.

【0013】本発明に係るコンピュータ装置で実行する
ソフトウェアプラットホームは、さらに分散アプリケー
ションの実行環境を構成及び管理する適応マネージャを
含んでいる。この適応マネージャは、適応クラス及びそ
れを使用するプラットホームサービスのインスタンスの
トラックを保つことによって、多数のオブジェクトの適
応性をコヒーレントに調整する。また、適応マネージャ
は、適応処理を記録し、システムの状態及びユーザの好
みを監視する。適応マネージャは、適応処理及びシステ
ムの状態に基づいて、関連した処理を実行して、どのオ
ブジェクトをどのように何時適応すべきかを決定する。
[0013] The software platform running on the computing device according to the present invention further includes an adaptation manager for configuring and managing the execution environment of the distributed application. The adaptation manager coherently adjusts the adaptability of multiple objects by keeping track of adaptation classes and instances of platform services that use them. The adaptation manager also records the adaptation process and monitors system status and user preferences. The adaptation manager performs related operations based on the adaptation process and the state of the system to determine which objects should be adapted, when, and when.

【0014】本発明は、アプリケーション設計者が直接
かつ直観的にプラットホームサービスをアクセスできる
ように、プラットホームによって要求される複雑なコー
ドを書くのを助けるとともに、プラットホームによって
提供されるサービスに容易にアクセスできるようにする
コンパイラを備える。このコンパイラは、特に、アプリ
ケーションのソースコードを解析して、所定のキーワー
ドを、反映メソッド及び適応メソッドを実行するのに必
要なコードに変換する。
The present invention assists in writing the complex code required by the platform so that application designers can access the platform services directly and intuitively, and provides easy access to the services provided by the platform. Provide a compiler to make it. In particular, the compiler analyzes the source code of the application and translates certain keywords into the code needed to execute the reflection and adaptation methods.

【0015】本発明は、分散適応実行時プラットホーム
用のアプリケーションプログラムをコンパイルするプロ
セスを含み、このプロセスは、アプリケーションプログ
ラムのアプリケーションソースファイルを解析して、適
応クラスを識別するための所定のキーワードを検出する
ステップと、適応クラスが適応メソッドを含んでいると
きに、適応クラスのコンストラクタを拡張して、適応ク
ラスが具象化されたときに適応メソッドのセレクタを生
成するステップと、適応クラスが反映メソッドを含んで
いるときに、適応クラスのコンストラクタを拡張して、
適応クラスが具象化されたときに反映メソッドのリフレ
クタを生成するステップとを有している。
The present invention includes a process for compiling an application program for a distributed adaptive run-time platform, which analyzes an application source file of the application program and detects predetermined keywords for identifying an adaptive class. Extending the constructor of the adaptation class when the adaptation class contains an adaptation method to generate an adaptation method selector when the adaptation class is reified; and When included, extend the constructor of the adaptive class,
Generating a reflector for the reflection method when the adaptation class is materialized.

【0016】[0016]

【発明の実施の形態】以下、本発明に係る分散適応実行
時プラットホーム用の適応ソフトウェアアプリケーショ
ンプログラム開発方法及びコンピュータ装置について、
図面を参照して説明する。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An adaptive software application program development method and a computer apparatus for a distributed adaptive runtime platform according to the present invention will be described below.
This will be described with reference to the drawings.

【0017】I.表記及び用語 以下の詳細な説明の幾つかの部分は、工程(step)、手
順(procedure)、論理ブロック(logic block)、処理
(processing)及びコンピュータメモリ内のデータビッ
トの操作を表す記号に基づいて表される。これらの記載
及び表記は、データ処理に関わる当業者が、その分野に
おいて他の技術を有する者に、彼らの仕事(work)の内
容を最も効率的に伝えるために用いられた手法である。
手順、論理ブロック、処理、工程などは、本明細書にお
いては一般的に所望の結果につながる工程又は命令(in
struction)の首尾一貫したシーケンスである。工程
は、物理量(physical quantity)の物理的処理(physi
cal manipulation)を必要とするものである。通常、必
要ではないが、これらの量は、コンピュータ装置におい
て記憶、変換、結合、比較、及びその他の処理が施され
る電気信号又は磁気信号の形態をしている。原理的に
は、共通に取り扱うためには、これらの信号をビット
(bit)、値(value)、要素(element)、記号(symbo
l)、文字(character)、用語(term)、数(number)
等として表すことは、しばしば便利であることが立証さ
れてきた。
I. NOTATION AND TERMS Some parts of the following detailed description are based on symbols, which represent steps, procedures, logic blocks, processing, and manipulation of data bits in computer memory. Is represented by These descriptions and notations are the methods used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art.
Procedures, logic blocks, processes, steps, and the like are generally used herein to refer to steps or instructions that lead to a desired result.
struction). The process is a physical process of physical quantity (physical quantity).
cal manipulation). Usually, though not necessarily, these quantities are in the form of electrical or magnetic signals that are stored, converted, combined, compared, and otherwise processed in the computing device. In principle, in order to handle them in common, these signals are represented by bits, values, elements, and symbols.
l), character, term, number
Expressing as etc. has often proven convenient.

【0018】しかしながら、これら及び同様な全ての用
語は、適切な物理量に関連づけられ、単にこれらの物理
量に適用された便利なラベル(label)であることに留
意されるべきである。以下の説明において、特に記述し
ない限り、本発明では、「発生(generating)」、「構
文解析(parsing)」、「拡張(extending)」、「呼出
(calling)」、「実行(executing)」などのような用
語を用いた記述は、コンピュータ装置又は同様な電気的
な計算装置の動作及び処理に関するものであることが認
められる。コンピュータ装置又は同様な電気的な計算装
置は、コンピュータ装置のレジスタ及びメモリ内の物理
(電子的)量として表されるデータを処理するととも
に、コンピュータ装置のメモリ内の物理量として表され
る別のデータ、或いは情報記憶装置、伝送又は表示装置
内の物理量として表される別のデータに変換する。
It should be noted, however, that all of these and similar terms are associated with the appropriate physical quantities and are merely convenient labels applied to these physical quantities. In the following description, unless otherwise stated, the present invention uses "generating", "parsing", "extending", "calling", "executing", and the like. It will be appreciated that descriptions using terms such as, refer to the operation and processing of a computing device or similar electrical computing device. A computing device or similar electrical computing device processes data represented as physical (electronic) quantities in registers and memory of the computing device, and separate data represented as physical quantities in the memory of the computing device. Alternatively, it is converted into another data expressed as a physical quantity in an information storage device, a transmission or display device.

【0019】II.コンピュータ装置環境 本発明の特徴を、以下の説明では、コンピュータ装置で
実行される工程において説明する。本発明では、種々の
コンピュータ装置を用いて実現するとができ、例えば図
1に示すコンピュータ装置10をプラットホーム(plat
form)として用いている。
II. Computer Apparatus Environment The features of the present invention will be described in the following description in steps performed on the computer apparatus. The present invention can be realized using various computer devices. For example, the computer device 10 shown in FIG.
form).

【0020】本発明を実現するコンピュータ装置10
は、情報を転送するアドレス/データバス11と、情報
及び命令を処理する中央プロセッサ12と、中央プロセ
ッサ12に対する情報及び命令を記憶する揮発性メモリ
13と、中央プロセッサ12に対する静的な情報及び命
令を記憶する不揮発性メモリ14とを備える。揮発性メ
モリ13は、例えばランダムアクセスメモリ(RAM)
からなり、不揮発性メモリ14は、例えば読出専用メモ
リ(ROM)からなり、これらは、アドレス/データバ
ス11を介して中央プロセッサ12に接続されている。
また、コンピュータ装置10は、情報及び命令を格納す
るデータストレージ装置(ディスクサブ装置)15を備
え、このデータストレージ装置15は、例えば固定又は
着脱可能な磁気ディスク又は光ディスクと、そのディス
ク駆動装置からなる。なお、データストレージ装置15
としては、コンピュータで読出可能な記録媒体である1
つ以上の着脱可能な磁気記録媒体又は光記録媒体、例え
ばフロッピー(登録商標)ディスクや磁気テープを含め
てもよい。したがって、コンピュータ装置10は、書込
及び/又は読出可能な装置として、揮発性メモリ13
と、不揮発性メモリ14と、データストレージ装置15
を備えている。
Computer device 10 for implementing the present invention
Is an address / data bus 11 for transferring information, a central processor 12 for processing information and instructions, a volatile memory 13 for storing information and instructions for the central processor 12, and a static information and instructions for the central processor 12. And a non-volatile memory 14 for storing the The volatile memory 13 is, for example, a random access memory (RAM)
The nonvolatile memory 14 comprises, for example, a read-only memory (ROM), which are connected to the central processor 12 via an address / data bus 11.
Further, the computer device 10 includes a data storage device (disk sub device) 15 for storing information and instructions. The data storage device 15 includes, for example, a fixed or detachable magnetic disk or optical disk, and a disk drive device thereof. . The data storage device 15
Is a computer-readable recording medium.
One or more removable magnetic or optical recording media, such as a floppy disk or magnetic tape, may be included. Therefore, the computer device 10 can be used as a writable and / or readable device,
, Nonvolatile memory 14 and data storage device 15
It has.

【0021】コンピュータ装置10は、他のコンピュー
タ装置又はインターネットとインターフェースする通信
装置16を備え、この通信装置16は、例えば変復調器
(モデム)又はネットワークインターフェースカード
(NIC)からなり、アドレス/データバス11に接続
されている。また、コンピュータ装置10は、図1に示
すように、文字記号及びファンクションキーを含む入力
装置17を備え、この入力装置17は、アドレス/デー
タバス11を介して中央プロセッサ12に情報及びコマ
ンドの選択を送る。また、コンピュータ装置10は、カ
ーソル制御又は指示装置18を備え、このカーソル制御
装置18は、アドレス/データバス11を介して、ユー
ザが入力した情報及びコマンドの選択を中央プロセッサ
12に伝える。さらに、コンピュータ装置10は、コン
ピュータのユーザに情報を表示するための表示器19も
備え、この表示器19も、アドレス/データバス11に
接続されている。表示器19は、例えば液晶表示器、他
の種類の平面板表示器、陰極線管、又はユーザに認識で
きるグラフィック画像及び文字記号を表示するのに適し
た他の表示装置からなる。
The computer device 10 includes a communication device 16 for interfacing with another computer device or the Internet. The communication device 16 comprises, for example, a modem (modem) or a network interface card (NIC), and has an address / data bus 11. It is connected to the. As shown in FIG. 1, the computer device 10 includes an input device 17 including character symbols and function keys. The input device 17 transmits information and commands to the central processor 12 via the address / data bus 11. Send. The computer device 10 also includes a cursor control or pointing device 18, which communicates information and command selections entered by the user to the central processor 12 via an address / data bus 11. Further, the computer device 10 also has a display 19 for displaying information to a user of the computer, and this display 19 is also connected to the address / data bus 11. The display 19 comprises, for example, a liquid crystal display, another type of flat panel display, a cathode ray tube, or another display device suitable for displaying graphic images and character symbols recognizable by a user.

【0022】コンピュータのユーザは、カーソル制御装
置18を用い、表示器19の表示画面上に表示されたカ
ーソルの2次元的な動きを動的に指示する。カーソル制
御装置18は、当該技術分野において周知のように、例
えばトラックボール、マウス、タッチパッド、ジョイス
テック等からなり、所与方向及び距離にカーソルを移動
するための指示を行うためのものである。また、カーソ
ル制御装置18は、例えば文字入力装置17に設けられ
た特殊なキーで実現することもできる。さらに、例えば
文字入力装置17に設けられた特殊なキーと他のキーの
組合せによって、カーソルの移動を指示するようにして
もよい。また、例えば音声コマンドのような他の手法に
よってカーソルの移動を指示するようにしてもよい。
The user of the computer uses the cursor control device 18 to dynamically instruct the two-dimensional movement of the cursor displayed on the display screen of the display 19. The cursor control device 18 includes, for example, a trackball, a mouse, a touch pad, a joystick, and the like, as is well known in the art, and is used to issue an instruction for moving the cursor in a given direction and distance. . Further, the cursor control device 18 can be realized by, for example, a special key provided on the character input device 17. Furthermore, for example, the movement of the cursor may be instructed by a combination of a special key provided on the character input device 17 and another key. Further, the movement of the cursor may be instructed by another method such as a voice command.

【0023】III.本発明のプラットフォームのアーキ
テクチャ 本発明は、適応分散アプリケーション用のソフトウェア
プラットホーム(software platform)を提供する。一
実施の形態では、ソフトウェアプラットホームは、コン
ピュータで利用可能な揮発性メモリ13、不揮発性メモ
リ14又はデータストレージ装置15に読取可能なコー
ドで記憶されたコンピュータ命令として実現される。こ
こでは、分散適応実行時(Distributed Adaptive Run-t
ime:以下、DARTという。)として知られた本発明
の1つの実施の形態について説明する。
III. Platform Architecture of the Present Invention The present invention provides a software platform for adaptive distributed applications. In one embodiment, the software platform is implemented as computer instructions stored in readable code on a volatile memory 13, non-volatile memory 14, or data storage device 15 available on the computer. Here, the Distributed Adaptive Run-t
ime: Hereinafter, DART. One embodiment of the present invention, known as), is described.

【0024】本発明によれば、DARTにおける適応
(adaptation)は、メタオブジェクトプログラミングモ
デル(meta-object programming model)を用いること
によって達成される。メタオブジェクトプログラミング
モデルを用いることによって、DARTは、適応分散ア
プリケーションを構築するソフトウェア開発者用の機構
の新しいセット(a clean set of mechanisms)を提供
する。さらに、メタオブジェクトプログラミングモデル
によって、分散アプリケーションはインターネットのよ
うな普遍的に変化する環境のもとで十分に動作すること
ができる。また、メタオブジェクトプログラミングによ
って、アプリケーション開発者は、1つの環境、例えば
インターネット用のアプリケーションを開発することが
できるとともに、アプリケーションを、書き換えたり再
構築することなく、狭帯域幅のモバイルネットワーク
(mobile network)のような別の環境用に簡単に移植又
はポート(port)することができる。本発明のさらに別
の利点は、システムノードがアプリケーションの変化す
る要求に一致するようにそれ自体を動的に再構築できる
ことにある。
According to the present invention, adaptation in DART is achieved by using a meta-object programming model. By using the meta-object programming model, DART provides a clean set of mechanisms for software developers building adaptive distributed applications. In addition, the meta-object programming model allows distributed applications to operate well in universally changing environments such as the Internet. Meta-object programming also allows application developers to develop applications for one environment, for example, the Internet, and to rewrite or rebuild applications without requiring a narrow bandwidth mobile network. Can be easily ported or ported for other environments such as Yet another advantage of the present invention is that the system node can dynamically reconfigure itself to meet the changing needs of the application.

【0025】A.DARTの適応機構 本発明では、適応は、次の方法、すなわち(1)実行時
におけるオブジェクトの実行を変化させ、(2)一般的
な属性(properties)を有するオブジェクトを実行中に
動的に拡張することによって達成される。本発明は、こ
れらの適応的なアプローチを処理する2つの機構を提供
する。ここで、本発明では、第1の適応アプローチを適
応メソッド(adaptive methods)とし、第2の適応アプ
ローチを反映メソッド(reflective methods)とする。
適応メソッドは、典型的には、アプリケーションの機能
コード自体が環境の変化に適合しなければならないとき
に用いられる。一方、反映メソッドは、典型的には、環
境の進化(evolution)がアプリケーションをどのよう
に実行させるかを変化させるときに用いられる。
A. DART Adaptation Mechanism In the present invention, adaptation involves the following methods: (1) changing the execution of an object at runtime, and (2) dynamically extending objects with general properties during execution. Is achieved by doing The present invention provides two mechanisms for handling these adaptive approaches. Here, in the present invention, the first adaptive approach is referred to as adaptive methods, and the second adaptive approach is referred to as reflective methods.
Adaptation methods are typically used when the application's function code itself must adapt to changes in the environment. Reflection methods, on the other hand, are typically used when the evolution of the environment changes how an application runs.

【0026】適応メソッド 図2は、本発明の適応メソッドの動作を説明するための
ブロック図である。この図2に示すように、適応オブジ
ェクト20は、1つの適応ソフトウェアメソッド(adap
tive software method)21と、2つの非適応ソフトウ
ェアメソッド(non-adaptive software method)22,
23とで実行される。適応ソフトウェアメソッド21
は、3つのインプリメンテーション(implementation)
21a,21b,21cが含まれる。非適応ソフトウェ
アメソッド22,23は、他のオブジェクトによって外
部からアクセスすることができる。一方、インプリメン
テーション21a〜21cは、他のオブジェクトによっ
て外部から直接アクセスすることはできない。インプリ
メンテーション21a〜21cへのアクセスは、インプ
リメンテーション21a〜21cの1つに対する参照
(reference)を含むソフトウェアセレクタ(software
selector)24と、スイッチングソフトウェアラッパ
(switching software wrapper)25によって制御され
る。図2に示すように、適応メソッド21が呼び出され
る際に、スイッチングソフトウェアラッパ25は、ソフ
トウェアセレクタ24にどのインプリメンテーションが
実行されるかを尋ね、そして、ソフトウェアセレクタ2
4内に記憶された参照に従ってインプリメンテーション
21a〜21cのうちの選択したものを実行する。
FIG. 2 is a block diagram for explaining the operation of the adaptive method according to the present invention. As shown in FIG. 2, the adaptation object 20 includes one adaptation software method (adap
tive software method 21 and two non-adaptive software methods 22,
23. Adaptive software method 21
Are three implementations
21a, 21b, and 21c are included. The non-adaptive software methods 22, 23 can be externally accessed by other objects. On the other hand, the implementations 21a to 21c cannot be directly accessed from outside by other objects. Access to the implementations 21a-21c is accomplished by a software selector that includes a reference to one of the implementations 21a-21c.
selector 24) and a switching software wrapper 25. As shown in FIG. 2, when the adaptation method 21 is invoked, the switching software wrapper 25 asks the software selector 24 which implementation is to be executed and
4 executes the selected one of the implementations 21a-21c according to the references stored in it.

【0027】本発明の適応メソッドにより、同一方法に
対して種々の属性を有する幾つかのインプリメンテーシ
ョンを設けることによって、プログラマは、アプリケー
ション内で適応性を直接操作することができる。本発明
は、ソフトウェア開発者がアプリケーションプログラム
において適応メソッドを容易にかつ直観的に実現できる
ようにするコンパイラ(compiler)を提供する。また、
本発明は、実行時にそのような適応メソッドを管理する
適応マネージャ(adaptation manager)を提供する。
The adaptation method of the present invention allows a programmer to directly manipulate adaptation within an application by providing several implementations with different attributes for the same method. The present invention provides a compiler that allows software developers to easily and intuitively implement adaptive methods in application programs. Also,
The present invention provides an adaptation manager that manages such adaptation methods at runtime.

【0028】反映メソッド 図3は、本発明の反映メソッドの動作を説明するための
ブロック図である。この図3に示すように、ベースオブ
ジェクト(base object)31は、3つのメタレベルの
オブジェクト(meta-level object)32a,32b,
32cから構成されるメタスペース(meta-space)32
に連携されている。本発明では、メタスペース32のメ
タレベルのオブジェクト32a〜32cは、アプリケー
ションの実行の詳細からは独立した汎用サービス(gene
ral service)を提供する。ベースレベルのオブジェク
ト31は、図3に示すように、反映ソフトウェアメソッ
ド33と、ソフトウェアメタラッパ(software meta-wr
apper)34と、非反映ソフトウェアメソッド35を含
む。
FIG. 3 is a block diagram for explaining the operation of the reflection method according to the present invention. As shown in FIG. 3, a base object (base object) 31 includes three meta-level objects (meta-level objects) 32a, 32b,
Meta-space 32 composed of 32c
It is linked to. In the present invention, the meta-level objects 32a-32c of the metaspace 32 are generic services (gene
ral service). As shown in FIG. 3, the base level object 31 includes a reflection software method 33 and a software meta-wr
apper) 34 and a non-reflection software method 35.

【0029】つぎに、動作について説明する。非反映ソ
フトウェアメソッド35は、他のデータオブジェクトに
よって外部からアクセスすることができる。ソフトウェ
アメタラッパ34は、反映ソフトウェアメソッド33が
呼び出される際に、非反映ソフトウェアメソッド35を
呼び出して、それに呼び出される反映ソフトウェアメソ
ッド33の情報及びパラメータを供給する。そして、非
反映ソフトウェアメソッド35は、メタレベルのオブジ
ェクト32内で全てのメタレベルのオブジェクト32a
〜32cを逐次実行する。なお、メタレベルのオブジェ
クト32a〜32cの幾つかは、呼び出されないインア
クティブ(inactive)に設定することができる。
Next, the operation will be described. The non-reflective software method 35 can be externally accessed by other data objects. When the reflection software method 33 is called, the software metal wrapper 34 calls the non-reflection software method 35 and supplies information and parameters of the reflection software method 33 called by the non-reflection software method 35. Then, the non-reflection software method 35 sets all meta-level objects 32a within the meta-level object 32.
To 32c are sequentially executed. Note that some of the meta-level objects 32a to 32c can be set to inactive, which is not called.

【0030】本発明の反映メソッドにより、プログラマ
は、実行時にオブジェクトの実行環境の性質(featur
e)をカスタマイズ(customize)することができる。例
えば、メタレベルのオブジェクト32aは、複製のメタ
オブジェクト(replication meta-object)であっても
よい。この場合、反映ソフトウェアメソッド33が呼び
出されるときは、メタレベルのオブジェクト32aは、
選択されていれば常に、ベースレベルのオブジェクト3
1を複製するために自動的に実行される。本発明は、ソ
フトウェア開発者がアプリケーションプログラムにおい
て反映メソッドを容易かつ直観的に実現できるようにす
るコンパイラを提供する。また、本発明は、実行時にそ
のような反映メソッドを管理する適応マネージャを提供
する。
The reflection method of the present invention allows the programmer to specify at run time the nature of the object's execution environment (featur
e) can be customized. For example, the meta-level object 32a may be a replication meta-object. In this case, when the reflection software method 33 is called, the meta-level object 32a
Base-level object 3 whenever selected
Automatically executed to duplicate one. The present invention provides a compiler that enables a software developer to easily and intuitively implement a reflection method in an application program. The present invention also provides an adaptation manager that manages such reflection methods at runtime.

【0031】適応マネージャ 本発明では、適応マネージャは、実行時適応性を調整し
て管理するために設けられている。一実施の形態におい
て、DARTアプリケーション(DART application)が
開始すると、適応マネージャは、アプリケーションの適
応情報で生成されるとともに、初期化される。したがっ
て、適応マネージャは、アプリケーション内の種々の適
応クラス(adaptive class)及びこれらのクラスに対し
て利用できるメタレベルのオブジェクトを知っている。
実行時に、適応クラスの各インスタンス(instance)
は、それ自体を適応マネージャに登録(register)し、
適応マネージャは、適応クラスの性質に依存して、リフ
レクタ/セレクタ(reflector/selector)を生成し、メ
タスペースを、関連したメタレベルのオブジェクトで初
期化する。
Adaptation Manager In the present invention, an adaptation manager is provided for coordinating and managing runtime adaptability. In one embodiment, when a DART application starts, an adaptation manager is created and initialized with the application's adaptation information. Thus, the adaptation manager knows the various adaptive classes in the application and the meta-level objects available for these classes.
At runtime, each instance of the adaptation class (instance)
Registers itself with the adaptation manager,
The adaptation manager creates a reflector / selector, depending on the nature of the adaptation class, and initializes the metaspace with the associated meta-level objects.

【0032】図4は、本発明の適応マネージャの動作を
説明するためのブロック図である。この図4に示すよう
に、適応マネージャ41は、2つの異なる適応オブジェ
クト42,51の適応性を調整する。適応オブジェクト
42は、ベースオブジェクト43と、メタオブジェクト
44a,44b,44cと、メタラッパ45と、リフレ
クタ46を含む。適応オブジェクト51は、図4に示す
ように、ベースオブジェクト52と、ソフトウェアセレ
クタ53と、ソフトウェアスイッチングラッパ54と、
適応メソッド55と、2つの非適応メソッド56,57
を含む。さらに、適応メソッド55は、ソフトウェアセ
レクタ53によって選択される3つのインプリメンテー
ション58a,58b,58cを含む。
FIG. 4 is a block diagram for explaining the operation of the adaptation manager of the present invention. As shown in FIG. 4, the adaptation manager 41 adjusts the adaptability of two different adaptation objects 42 and 51. The adaptive object 42 includes a base object 43, meta objects 44a, 44b, 44c, a meta wrapper 45, and a reflector 46. As shown in FIG. 4, the adaptive object 51 includes a base object 52, a software selector 53, a software switching wrapper 54,
Adaptive method 55 and two non-adaptive methods 56 and 57
including. Further, the adaptation method 55 includes three implementations 58a, 58b, 58c selected by the software selector 53.

【0033】本発明では、図4に示すように、適応マネ
ージャ41は、リフレクタ46及びソフトウェアセレク
タ53を直接アクセスすることができる。例えば、適応
マネージャ41は、リフレクタ46をメタオブジェクト
44aに向くように変えて、反映メソッド48が呼び出
されるときには、常にメタオブジェクト44aが実行さ
れるようにすることができる。また、例えば、適応マネ
ージャ41は、ソフトウェアセレクタ53をインプリメ
ンテーション58cに向くように変えることができる。
そして、適応メソッド55が呼び出されるときに、イン
プリメンテーション58cが実行される。したがって、
適応マネージャ41は、適応オブジェクト42,51を
アクセスするソフトウェア機構を提供するとともに、実
行時にリフレクタ46とソフトウェアセレクタ53を切
り換えるソフトウェア機構を提供する。このアーキテク
チャによって、例えば同期した変化(synchronized cha
nges)、共用メタスペース(shared meta-spaces)等の
優れた適応(fine adaptation)を保護しながら、メタ
スペースへの有効なジャンプ及び適応メソッドの呼出を
可能とする。また、本発明では、適応マネージャ41
は、適応オブジェクトのグループを同時に管理すること
ができる。
In the present invention, as shown in FIG. 4, the adaptation manager 41 can directly access the reflector 46 and the software selector 53. For example, the adaptation manager 41 may change the reflector 46 to point to the meta-object 44a so that whenever the reflection method 48 is called, the meta-object 44a is executed. Also, for example, the adaptation manager 41 can change the software selector 53 to point to the implementation 58c.
Then, when the adaptation method 55 is called, the implementation 58c is executed. Therefore,
The adaptation manager 41 provides a software mechanism for accessing the adaptation objects 42 and 51 and a software mechanism for switching between the reflector 46 and the software selector 53 at the time of execution. This architecture allows, for example, synchronized changes.
nges), enable effective jumps to the metaspace and call adaptation methods, while protecting fine adaptation such as shared meta-spaces. In the present invention, the adaptation manager 41
Can manage a group of adaptive objects simultaneously.

【0034】B.DARTコンパイラ 本発明を適用したコンピュータ装置で実行されるソフト
ウェアプラットホームの1つの重要な利点は、アプリケ
ーション設計者がプラットホームサービス(platform s
ervices)を容易にかつ直観的にアクセスできることで
ある。本発明では、DARTコンパイラが、例えばオー
プン(Open)C++に基づく場合、DARTアプリケー
ションソースファイル(DRAT application source fil
e)に組み込まれた幾つかの単純なキーワードから適応
メソッド及び反映メソッドを実行するのに必要な低レベ
ルのコードを自動的に発生するために設けられている。
本発明のDARTコンパイラにより、プラットホームサ
ービスを相対的に途切れることなく(seamless)、透過
的に(transparent)に使用でき、プログラマが分散及
び適応に関連した低レベルの機構よりもむしろ、アプリ
ケーションの高レベルの設計に集中するのを助ける。
B. DART Compiler One important advantage of a software platform running on a computing device to which the present invention is applied is that the application designer can use a platform service (platform s).
ervices) are easily and intuitively accessible. In the present invention, when the DART compiler is based on, for example, Open (C ++), the DART application source file (DRAT application source file)
It is provided to automatically generate the low-level code necessary to execute the adaptation and reflection methods from some simple keywords incorporated in e).
The DART compiler of the present invention allows platform services to be used relatively seamlessly and transparently, allowing programmers to use higher levels of application rather than lower level mechanisms related to distribution and adaptation. Helps you to focus on designing.

【0035】適応クラスの定義 本発明では、アプリケーション設計者は、DARTキー
ワード(DART keywords)をDARTアプリケーション
内に組み込むことによって、適応クラス(adaptive cla
ss)、例えばどのメソッドが適応メソッドであるか又は
反映メソッドであるか、種々のインプリメンテーション
の属性等を記述し、定義することができる。例えば、一
実施の形態として、アプリケーションソースコードにお
いて、DARTキーワードとして「DART_」という
接頭辞(pre-fix)を付加することによって、識別でき
るようにしている。例えば、具体的には、適応クラスを
DARTキーワード「DART_Class」によって識別し、反
映メソッドをDARTキーワード「DART_Reflective」
によって識別し、適応メソッド及びそのインプリメンテ
ーションをDARTキーワード「DART_Adaptive」,「D
ART_Impl」によって識別するようにする。本発明のDA
RTコンパイラは、これらのDARTキーワードを識別
子として用い、DARTキーワードが見つかると、リフ
レクタ/セレクタ及び適応マネージャを設定するととも
に多数のインプリメンテーション及びメタスペースを管
理するために必要とされる全てのコードを自動的に発生
する。また、本発明のDARTコンパイラは、イントロ
スペクションメソッド(introspection method)及びオ
ルタレーションメソッド(alteration method)のよう
な適応性を支援するために必要とされる付加的なメソッ
ドをアプリケーションソースコードに付加する。
Definition of Adaptive Class In the present invention, the application designer incorporates DART keywords into the DART application to create an adaptive class.
ss), for example, to describe and define which methods are adaptive or reflected, attributes of various implementations, etc. For example, as one embodiment, in the application source code, a prefix (DART_) of “DART_” is added as a DART keyword so that the identification can be performed. For example, specifically, the adaptation class is identified by the DART keyword “DART_Class”, and the reflection method is the DART keyword “DART_Reflective”.
The DART keywords "DART_Adaptive", "D
ART_Impl ". DA of the present invention
The RT Compiler uses these DART keywords as identifiers, and when the DART keywords are found, the RT Compiler replaces all the code needed to set up the reflector / selector and adaptation manager and to manage many implementations and metaspaces. Occurs automatically. In addition, the DART compiler of the present invention adds additional methods required to support adaptability, such as an introspection method and an alteration method, to the application source code. .

【0036】本発明のDARTコンパイラを用いること
により、プログラマは、クラスのデフォルトメタスペー
ス(default meta-space)の性質を特定するとともに、
反映であるメソッドを特定することによって、反映メソ
ッドを簡単に実行することができる。また、適応メソッ
ドは、種々のインプリメンテーションをそれらの各属性
で特定することによって実行することができる。そし
て、DARTコンパイラは、反映メソッド及び適応メソ
ッドを操作するベースクラス(base class)のコンスト
ラクタ(constructor)を自動的に拡張する。特に、D
ARTコンパイラは、ベースクラスのコンストラクタを
拡張して、適応クラスの新しいオブジェクトが生成され
る毎に、この新しいオブジェクトは、定義された適応メ
ソッドのそれぞれに対するそれ自体のリフレクタ及びセ
レクタを生成する。また、ベースクラスのコンストラク
タは、新しいオブジェクトを実行時適応マネージャ(ru
n-time adaptation manager)に登録するように拡張さ
れる。
Using the DART compiler of the present invention, a programmer can specify the nature of the default meta-space of a class,
By specifying the method to be reflected, the reflection method can be easily executed. Also, adaptation methods can be implemented by specifying various implementations with their respective attributes. Then, the DART compiler automatically extends the constructor of the base class that operates the reflection method and the adaptation method. In particular, D
The ART compiler extends the constructor of the base class to create a new object of the adaptation class, and this new object creates its own reflector and selector for each defined adaptation method. Also, the base class constructor creates a new object with the runtime adaptation manager (ru
It is extended to register with the n-time adaptation manager).

【0037】さらに、DARTコンパイラは、ベースク
ラスのデストラクタ(destructor)を自動的に拡張し
て、新しいオブジェクトが終了される毎に、この終了さ
れる新しいオブジェクトは、定義された適応メソッドの
各々に対するそれ自体のリフレクタ及びセレクタを削除
し、また、それ自体の実行時適応マネージャに対する登
録を削除する。
In addition, the DART compiler automatically extends the destructor of the base class so that each time a new object is terminated, this terminated new object will have its own for each of the defined adaptive methods. It deletes its own reflector and selector and also deletes its registration with the runtime adaptation manager.

【0038】表1、2に、本発明に基づく適応クラスの
定義の具体例、例えばDARTクラス「Counter」,「V
ideoFilter」をそれぞれ示す。
Tables 1 and 2 show specific examples of the definition of the adaptation class based on the present invention, for example, the DART classes "Counter" and "V".
ideoFilter ”respectively.

【0039】 表1 DART_Class class Counter { DART_MSSetDefault DART_LGP; private: int cpt; public: Counter(); DART_Reflective void Incr(); DART_Reflective void Decr(); DART_Reflective int Val(); DART_Reflective void Set(int val); };Table 1 DART_Class class Counter {DART_MSSetDefault DART_LGP; private: int cpt; public: Counter (); DART_Reflective void Incr (); DART_Reflective void Decr (); DART_Reflective int Val (); DART_Reflective void Set (int val); ;

【0040】表1は、分散アプリケーションプログラム
の適応クラス「Counter」を示している。この表1に示
すように、アプリケーション開発者は、適応クラス「Co
unter」に関連したメタオブジェクトのデフォルトメタ
オブジェクトとしてメタオブジェクト「DART_LGP」を選
択している。メソッド「Incr()」,「Decr()」,「Va
l()」,「Set」は全て、適応クラス「Counter」の反映
メソッドであると定義されている。したがって、本発明
では、反映メソッド(例えばメソッド「Incr()」,「De
cr()」,「Val()」,「Set」)の1つが呼び出される毎
に、メタオブジェクト「DART_LGP」が自動的に実行され
る。この例において、メタオブジェクト「DART_LGP」
は、反映メソッドの1つが呼び出されると常に、適応ク
ラス「Counter」の複製インスタンスの一貫性を自動的
に継続する。すなわち、アプリケーション設計者は、適
応アプリケーションを実現する固有の細部に気遣う必要
がない。むしろ、アプリケーション開発者が加えなけれ
ばならいコードは最少であり、このコードは、アプリケ
ーションの適応要件における高レベルの情報を表してい
る。
Table 1 shows the adaptive class "Counter" of the distributed application program. As shown in Table 1, the application developer sets the adaptation class “Co
The meta-object "DART_LGP" has been selected as the default meta-object for the meta-object associated with "unter". Methods "Incr ()", "Decr ()", "Va
l () "and" Set "are all defined as reflection methods of the adaptive class" Counter ". Therefore, in the present invention, the reflection method (for example, the method “Incr ()”, “Decr
Each time one of “cr ()”, “Val ()”, “Set”) is called, the meta-object “DART_LGP” is automatically executed. In this example, the meta-object "DART_LGP"
Automatically maintains the consistency of duplicate instances of the adaptation class "Counter" whenever one of the reflection methods is invoked. That is, the application designer does not need to care about the inherent details of implementing an adaptive application. Rather, the code that the application developer must add is minimal, and this code represents a high level of information in the adaptation requirements of the application.

【0041】 表2 DART_Class class VideoFilter { Stream *st; VideoFilter (); DART_Adaptive (Send_BW) int Send (group *dest); DART_Impl int Send_BW (group *dest); DART_Impl int Send_COL (group *dest); DART_Property Send_BW (NETWORK_BANDWIDTH, LOW); DART_Property Send_COL (NETWORK_BANDWIDTH, HIGH); };Table 2 DART_Class class VideoFilter {Stream * st; VideoFilter (); DART_Adaptive (Send_BW) int Send (group * dest); DART_Impl int Send_BW (group * dest); DART_Impl int Send_COL (group * dest); DART_Property Send_BW ( NETWORK_BANDWIDTH, LOW); DART_Property Send_COL (NETWORK_BANDWIDTH, HIGH);};

【0042】表2は、分散ビデオアプリケーションプロ
グラム用のDARTクラス「VideoFilter」を示してい
る。この表2に示すように、DARTクラス「VideoFil
ter」は、2つのインプリメンテーション「Send_BW」,
「Send_COL」で定義された1つの適応メソッド「Send」
を含んでいる。この具体例のDARTクラスでは、アプ
リケーションは、適応メソッド「Send」によってネット
ワークの帯域幅が狭いときは画像を白黒で伝送し、ネッ
トワークの帯域幅が広いときは画像をカラー(Send_CO
L)で伝送する。さらに、表2に示すように、インプリ
メンテーション「Send_BW」は、デフォルトインプリメ
ンテーションとして選択されている。したがって、適応
メソッド「Send」が呼び出されると常に、インプリメン
テーション「Send_BW」が実行される。このように、本
発明では、アプリケーション開発者は、適応の実現の複
雑な詳細から解放される。DARTコンパイラは、適応
マネージャを設定するとともに多数のインプリメンテー
ションを管理するために必要とされるコードを自動的に
発生する。
Table 2 shows the DART class "VideoFilter" for the distributed video application program. As shown in Table 2, the DART class “VideoFil
ter "is two implementations" Send_BW ",
One adaptation method "Send" defined in "Send_COL"
Contains. In the DART class of this specific example, the application transmits an image in black and white when the network bandwidth is low, and transmits the image in color (Send_COD) when the network bandwidth is high by the adaptive method “Send”.
L). Further, as shown in Table 2, the implementation "Send_BW" has been selected as the default implementation. Thus, whenever the adaptation method "Send" is invoked, the implementation "Send_BW" is executed. Thus, the present invention frees application developers from the complex details of implementing adaptation. The DART compiler automatically generates the code needed to set up the adaptation manager and manage multiple implementations.

【0043】図5は、本発明のDARTコンパイラによ
ってDARTアプリケーションをコンパイルする際の具
体的な処理を説明するためのブロック図である。
FIG. 5 is a block diagram for explaining specific processing when compiling a DART application by the DART compiler of the present invention.

【0044】図5に示すように、DARTキーワード
(例えば、表1、2におけるDARTクラス「Counte
r」,「VideoFilter」)を含むアプリケーションソース
ファイル(application source file)61がDART
コンパイラ62に供給される。また。DARTコンパイ
ラ62には、DARTキーワードを処理するための予め
定義された一組のルールを含む多数の適応サービスイン
プリメンテーションファイル(adaptive service imple
mentation file)63が供給される。そして、DART
コンパイラ62は、低レベル発生ソースコード(low-le
vel generated source code)64と構成ファイル(con
figuration file)65を発生する。低レベル発生ソー
スコード64は、適応マネージャを発生するための重複
及び誤りがあるコードを含み、C++コンパイラ65に
供給され、C++コンパイラ65は、例えばgccからな
り、低レベル発生ソースコード64をコンパイルして実
行ファイル66を生成する。構成ファイル65は、実行
時に適応マネージャに初期化情報を供給するのに用いら
れる。DARTクラス「Counter」用のDARTコンパ
イラで発生された低レベルの発生ソースコードの具体例
を表3に示す。
As shown in FIG. 5, the DART keyword (for example, the DART class “Counte
r "," VideoFilter ") is the application source file (application source file) 61
It is supplied to a compiler 62. Also. DART compiler 62 includes a number of adaptive service imple- ment files (adaptive service imple- ment files) that contain a pre-defined set of rules for processing DART keywords.
mentation file) 63 is provided. And DART
The compiler 62 generates a low-level generated source code (low-le
vel generated source code) 64 and configuration file (con
figuration file) 65 is generated. The low-level source code 64 includes duplicate and erroneous code for generating the adaptation manager and is provided to a C ++ compiler 65, which comprises, for example, gcc and compiles the low-level source code 64. To generate an execution file 66. The configuration file 65 is used to supply initialization information to the adaptation manager at runtime. Table 3 shows a specific example of the low-level generated source code generated by the DART compiler for the DART class “Counter”.

【0045】 表3 ######################################################################## #4268 “Counter.ii" class Counter { private : int cpt ; // These three new member variables are added by the dart // compiler and correspond to // - the unique object ID given to the DART object // - a pointer to the intermediate structure that // holds the un/marshalling // - a pointer to the reflector associated with the // base object ObjectID *Dart_id; MetaClass *Dart_mc; Reflector *Dart_reflector; Counter ( ) ; // For each reflective method X, a new method BaseLeve1X is // added to the class. The code of the BaseLeve1X method will // be the one written by the class designer for the method X. // The method X has a new body that contains the calling code // to the meta-level (see below) void BaseLevelIncr ( ); void BaseLevelDecr ( ); int BaseLevelVal ( ); void BaseLevelSet ( int val); // This is the new code for the Incr method. First, create // a bitstring with: // an identifier for the intermediate structure to use, // the method number, and // the parameters (in the case of this method, // there is n0 parameter). // After the bitstring is complete, the Reflector of the // object is called to perform the Before call on all the // meta-objects. // A CallBefore is done with providing to the meta-objects // the bitstring containing the method name and call // parameters, along with the base-object ID. The return code // of the CallBefore is used to decide whether or no the // base-level code of the method should be executed. // After that step, the CallAfter is performed with the same // parameters as the Ca11Before. // Finally, if a meta-space call returned a valid return // code, it is returned, otherwise, the return code of the // base-level call is used (in this case, no return code is // associated with this method) void Incr () { void *tm_res=O, *tmp_res2=O; u_char *msg_, *msg_O_; msg_O_= new u_char[ 40000 ]; msg_=msg_O_ ; msg_ += Dart_mc->marshall_mC(msg_, O); *((int *)msg_) = O ; msg_ += sizeof(int); tmp_res = Dart_reflector- >CallBefore(Dart_id,O,msg_O_, (msg_ - msg_O_),O ); if (tmp_res = =0) {this->BaseLevelIncr () ;} tmp_res2 = Dart_reflector->CallAfter (Dart_id, 0,msg_O_, (msg_ - msg_O_),O ); free ((void *)msg_ O_ ); }; void Decr () { void *tmp_res=O, *tmp_res2=O; u_char *msg_, *msg_0_; msg_O_= new u_char[ 40000 ]; msg_=msg_O_ ; msg_ += Dart_mc->marshall_mc(msg_, O); *((int *)msg_) = 1 ; msg_ += sizeof(int); tmp_res = Dart_reflector- >CallBefore(Dart_id,O,msg_O_, (msg_ - msg_O_),O ); if (tmp_res = =0) {this->BaseLevelDecr () ;} tmp_res2 = Dart_reflector->CallAfter (Dart_id, 0,msg_O_, (msg_ - msg_O_),O ); free ((void *)msg_ O_ ); }; // In this case, a return code (integer) is associated with // the method. If a valid pointer is received form the // meta-level calls (either before or after), the void * // pointer is cast to the correct format. int Val () { int res; void *tmp_res=O, *tmp_res2=O; u_char *msg_, *msg_0_; msg_O_= new u_char[ 40000 ]; msg_=msg_O_ ; msg_ += Dart_mc->marshall_mC(msg_, O); *((int *)msg_) = 2 ; msg_ +=sizeof(int); tmp_res = Dart_reflector- >CallBefore(Dart_id,O,msg_O_, (msg_-msg_O_),l ); if (tmp_=res==O) {res = this->BaseLeve1Va1();} tmp_res2 = Dart_reflector->CallAfter (Dart_id, 0,msg_O_,(msg_- msg_O_),l ); free ((void *)msg_O_); if (tmp_res!=O) {free ((void ')tmp res2);return (*(( int *)tmp_ res));} if (tmp res2!=0) {return (*(( int *)tmp_res2));} return (res); }; // In this case, no return value is expected but there is a // parameter. Thus, when creating the bitstring, the value // of the int is added after the method identifier. There is // no description of the format of the bitstring (except for // the intermediate structure and the method identifiers). void Set ( int val ) { void *tmp_res=O, *tmp_res2=O; u_char *msg_, *msg_0_; msg_O_= new u_char[ 40000 ]; msg_=msg_O_ ; msg_ += Dart_mc->marshall_mc(msg_, O); *((int *)msg_) = 3 ; msg_ += sizeof(int); memcpy(msg_, &val, sizeof( int )); msg_ += sizeof( int ); tmp_res = Dart_reflector- >CallBefore(Dart_id,O,msg_O_, (msg_ - msg_O_),O ); if (tmp_res = =0) {this->BaseLevelSet ( val ) ;} tmp_res2 = Dart_reflector->CallAfter (Dart_id, 0,msg_O_, (msg_ - msg_O_),O ); free ((void *)msg_ O_ ); }; // After the wrappers for the reflective methods, the DART // compiler is also generating automatically methods in the // class to marshall and unmarshall the object (create a // bitstring from an object state and vice-versa. // The first method allows the object to create a bitstring // from the object state. Here, the bitstring is only // composed of the integer containing the counter value. static u_char* marshall(void* obj, u_char* p, size t len) { Counter* b = (Counter*)obj; *(( int *)p) = b->cpt; p += sizeof( int ); len -= sizeof( int ); return p; } // This method initializes the state of the object from a // bitstring. static u_char* unmarshall_rec(void* pobj,u_char* p, size_t len) { Counter *obj = (Counter *)pobj; obj->cpt = (int) (*(( int *)p)); p += sizeof( int ); len -= sizeof( int ); return p; } // This method takes a parameter bitstring and performs the // call to the correct method with the correct parameters. static size_t unmarshall_func(void * vobj, u_char *p, u_char *r, size_t len) { Counter *obj = (Counter *)vobj; u_char* r0 = r; int methid = *((imt *)p); p += sizeof(int); switch (methid) { case O: { obj->BaseLevelIncr () ; break; } case 1: { obj->BaseLevelDecr () ; break; } case 2: { int retval = obj->BaseLevelVal () ; if(r){ memcpy(r, &retval, sizeof( int )); r += sizeof( int ); } break; } case 3: { int p0 ; memcpy(&pO, p, sizeof( int )); p += sizeof(p0); obj->BaseLevelSet(pO): break; } default: break; } return r-r0; } }; // Another important part rewritten by the DART compiler is // the constructor of the class. The original constructor is // first executed, and after all the instructions for the // adaptive object are initialized. // - initialization of the unique identifier of the object // - initialization of the intermediate structure // - creation of the reflector. // Then, a reference to the DART manager is obtained, and // register the currently created object (together with // it's ID, intermediate structure class name and // reflector). It is during the registration that the DART // manager checks for the given class and the Configuration // of the meta-space, and eventually creates the requested // meta-object. Counter::Counter () { // original constructor { cpt = 0 ; } // added instructions Dart_id = & (ObjectID::get_unique()) ; Dart_mc = new MetaClass ( "Counter", marshall, unmarsha11, unmarshall_func ); Dart_reflector = new (Reflector); AdapManager *Dart_M; Dart_M = GetAdapManager () ; Dart_M->RegisterObject ( (void *)this, Dart_id, Dart_mc, "Counter",Dart_reflector); }; // Below are the original code for the reflective methods void Counter::BaseLevelIncr () { cpt++; } void Counter::BaseLevelDecr () { cpt--; } int Counter::BaseLevelVal () { return(cpt); } void Counter::BaseLevelSet (int val) { apt=val; } ########################################################################Table 3 ############################################### ########################### # 4268 “Counter.ii” class Counter {private: int cpt; // These three new member variables are added by the dart // compiler and correspond to //-the unique object ID given to the DART object //-a pointer to the intermediate structure that // holds the un / marshalling //-a pointer to the reflector associated with the // base object ObjectID * Dart_id; MetaClass * Dart_mc; Reflector * Dart_reflector; Counter (); // For each reflective method X, a new method BaseLeve1X is // added to the class.The code of the BaseLeve1X method will // be the one written by the class designer for the method X. // The method X has a new body that contains the calling code // to the meta-level (see below) void BaseLevelIncr (); void BaseLevelDecr (); int BaseLevelVal ( ); void BaseLevelSet (int val); // This is the new code for the Incr method.First, create // a bitstring with: // an identifier for the intermediate structure to use, // the method number, and // the parameters (in the case of this method, // there is n0 parameter). // After the bitstring is complete, the Reflector of the // object is called to perform the Before call on all the // meta-objects. // A CallBefore is done with providing to the meta-objects // the bitstring containing the method name and call // parameters, along with the base-object ID.The return code // of the CallBefore is used to decide whether or no the // base-level code of the method should be executed. // After that step, the CallAfter is performed with the same // parameters as the Ca11Before. // Finally, if a meta-space call returned a valid return // code, it is returned, otherwise, the return code of the // base-level call is used (in this case, no return code is // associated with this method ) void Incr () (void * tm_res = O, * tmp_res2 = O; u_char * msg_, * msg_O_; msg_O_ = new u_char [40000]; msg_ = msg_O_; msg_ + = Dart_mc-> marshall_mC (msg_, O) ; * ((int *) msg_) = O; msg_ + = sizeof (int); tmp_res = Dart_reflector-> CallBefore (Dart_id, O, msg_O_, (msg_-msg_O _), O); if (tmp_res = = 0) { this-> BaseLevelIncr ();} tmp_res2 = Dart_reflector-> CallAfter (Dart_id, 0, msg_O_, (msg_-msg_O _), O); free ((void *) msg_ O_);}; void Decr () {void * tmp_res = O, * tmp_res2 = O; u_char * msg_, * msg_0_; msg_O_ = new u_char [40000]; msg_ = msg_O_; msg_ + = Dart_mc-> marshall_mc (msg_, O); * ((int *) msg_) = 1 ; msg_ + = sizeof (int); tmp_res = Dart_reflector-> CallBefore (Dart_id, O, msg_O_, (msg_-msg_O _), O); if (tmp_res = = 0) {this-> BaseLevelDecr ();} tmp_res2 = Dart_reflector -> CallAfter (Dart_id, 0, msg_O_, (msg_-msg_O _), O); free ((void *) msg_ O_);}; // In this case, a return code (integer) is associated with // the method If a valid pointer is received form the // meta-level calls (either before or after), the void * // pointer is cast to the correct format.int Val () {int res; void * tmp_res = O, * tmp_res2 = O; u_char * msg_, * msg_0_; msg_O_ = new u_char [ 40000]; msg_ = msg_O_; msg_ + = Dart_mc-> marshall_mC (msg_, O); * ((int *) msg_) = 2; msg_ + = sizeof (int); tmp_res = Dart_reflector-> CallBefore (Dart_id, O, msg_O_, (msg_-msg_O _), l); if (tmp_ = res == O) {res = this-> BaseLeve1Va1 ();} tmp_res2 = Dart_reflector-> CallAfter (Dart_id, 0, msg_O _, (msg_- msg_O_), l); free ((void *) msg_O_); if (tmp_res! = O) {free ((void ') tmp res2); return (* ((int *) tmp_ res));} if (tmp res2! = 0) (return (* ((int *) tmp_res2));} return (res);}; // In this case, no return value is expected but there is a // parameter.Thus, when creating the bitstring, the value // of the int is added after the method identifier.There is // no description of the format of the bitstring (except for // the intermediate structure and the method identifiers) .void Set (int val) {void * tmp_res = O, * tmp_res2 = O; u_char * msg_, * msg_0_; msg_O_ = new u_char [40000]; msg_ = msg_O_; msg_ + = Dart_mc-> marshall_mc (msg_, O); * ((int *) msg_) = 3; msg_ + = sizeof (int); memcpy (msg_, & val, sizeof (int)); ms g_ + = sizeof (int); tmp_res = Dart_reflector-> CallBefore (Dart_id, O, msg_O_, (msg_-msg_O _), O); if (tmp_res = = 0) (this-> BaseLevelSet (val);} tmp_res2 = Dart_reflector -> CallAfter (Dart_id, 0, msg_O_, (msg_-msg_O _), O); free ((void *) msg_ O_);}; // After the wrappers for the reflective methods, the DART // compiler is also generating automatically methods in the // class to marshall and unmarshall the object (create a // bitstring from an object state and vice-versa. // The first method allows the object to create a bitstring // from the object state.Here, the bitstring is only // composed of the integer containing the counter value.static u_char * marshall (void * obj, u_char * p, size t len) (Counter * b = (Counter *) obj; * ((int *) p) = b-> cpt; p + = sizeof (int); len-= sizeof (int); return p;} // This method initializes the state of the object from a // bitstring.static u_char * unmarshall_rec (void * pobj, u_char * p, size_t len) (Counter * obj = (Counter *) pobj; obj-> cpt = (int ) (* ((int *) p)); p + = sizeof (int); len-= sizeof (int); return p;} // This method takes a parameter bitstring and performs the // call to the correct method with the correct parameters.static size_t unmarshall_func (void * vobj, u_char * p, u_char * r, size_t len) {Counter * obj = (Counter *) vobj; u_char * r0 = r; int methid = * ((imt *) p); p + = sizeof (int); switch (methid) {case O: {obj-> BaseLevelIncr (); break;} case 1: {obj-> BaseLevelDecr (); break;} case 2: {int retval = obj-> BaseLevelVal (); if (r) {memcpy (r, & retval, sizeof (int)); r + = sizeof (int);} break;} case 3: {int p0; memcpy (& pO, p, sizeof (int)); p + = sizeof (p0); obj-> BaseLevelSet (pO): break;} default: break;} return r-r0;}}; // Another important part rewritten by the DART compiler is / / the constructor of the class.The original constructor is // first executed, and after all the instructions for the // adaptive object are initialized. //-initialization of the unique identifier of the object //-i nitialization of the intermediate structure //-creation of the reflector. // Then, a reference to the DART manager is obtained, and // register the currently created object (together with // it's ID, intermediate structure class name and // reflector ) .It is during the registration that the DART // manager checks for the given class and the Configuration // of the meta-space, and eventually creates the requested // meta-object.Counter :: Counter () {// original constructor {cpt = 0;} // added instructions Dart_id = & (ObjectID :: get_unique ()); Dart_mc = new MetaClass ("Counter", marshall, unmarsha11, unmarshall_func); Dart_reflector = new (Reflector); AdapManager * Dart_M; Dart_M = GetAdapManager (); Dart_M-> RegisterObject ((void *) this, Dart_id, Dart_mc, "Counter", Dart_reflector);}; // Below are the original code for the reflective methods void Counter :: BaseLevelIncr () {cpt ++ ;} void Counter :: BaseLevelDecr () {cpt--;} int Counter :: BaseLevelVal () {return (cpt);} void Cou nter :: BaseLevelSet (int val) {apt = val;} ###################################### ######################################

【0046】ここで、DARTコンパイラがソースコー
ドを変換した後においても、非反映メソッドの名前は変
更されないままであるが、反映メソッドの名前は、
「X」から「BaseLevel_X」に変更され、そして、名前
Xを有するメタラッパは、クラス定義に挿入される。し
たがって、ソースコードにおいて、メソッド「obj‐>
X」が呼び出されると、メタラッパは、DARTコンパ
イラによってコンパイルされてから呼び出される。
Here, even after the DART compiler converts the source code, the name of the non-reflecting method remains unchanged, but the name of the reflecting method is
The metawrapper is changed from "X" to "BaseLevel_X" and has the name X inserted into the class definition. Therefore, in the source code, the method "obj->
When "X" is called, the metal wrapper is compiled and then called by the DART compiler.

【0047】さらに、本発明の一実施の形態おいて、メ
タスペースの呼出(call)は、ベースレベルのメソッド
の実行の前及び/又は後に行われる。したがって、本発
明においては、メタレベルのオブジェクトは、メタスペ
ース呼出の前後に少なくとも2つのメソッドを提供する
C++のオブジェクトである。さらに、メタレベルのオ
ブジェクトを正しく機能させるために、メタレベルのオ
ブジェクトは、しばしば呼び出したメソッドの名前、変
数の値及び種類等のパラメータを得るためにベースオブ
ジェクトをイントロスペクト(内観)しなければならな
い。本発明においては、イントロスペクションメソッド
及びオルタレーションメソッドが、DARTコンパイラ
によって自動的に発生され、適応クラスが処理されると
きに、発生されたソースコードに挿入される。本発明の
発展形においては、イントロスペクションメソッド及び
オルタレーションメソッドによって、ベースオブジェク
トの任意のメンバの変数を識別し、アクセスし、変更す
ることができる。さらに、イントロスペクションメソッ
ド及びオルタレーションメソッドによって、メタオブジ
ェクトは、ベースオブジェクトの任意のメソッドを実行
したり、オブジェクトの状態を整理/非整理(marshall
/unmarshall)することができる。また、メタオブジェ
クトがベースレベルのイントロスペクションメソッド及
びオルタレーションメソッドをアクセスできるようにす
るために、DARTコンパイラは、メタスペースをベー
スレベルにリンクする中間構造体(intermediate struc
ture)を挿入して、いずれのメタオブジェクトも発生ソ
ースコードにおけてベースレベルでイントロスペクショ
ンメソッド及びオルタレーションメソッドをアクセスで
きるようにする。
Further, in one embodiment of the present invention, the metaspace call is made before and / or after the execution of the base level method. Thus, in the present invention, a meta-level object is a C ++ object that provides at least two methods before and after a metaspace call. Further, in order for the meta-level object to function properly, the meta-level object often has to introspect the base object to obtain parameters such as the name of the invoked method, the value and type of the variable, and the like. In the present invention, introspection methods and alteration methods are automatically generated by the DART compiler and inserted into the generated source code when the adaptive class is processed. In a development of the invention, the variables of any member of the base object can be identified, accessed and modified by the introspection method and the alteration method. In addition, the meta-object can execute any method of the base object and organize / unorganize the state of the object by the introspection method and the alteration method.
/ unmarshall). Also, in order to allow the meta-object to access the base-level introspection and alteration methods, the DART compiler uses an intermediate structure that links the metaspace to the base level.
ture) to allow any meta-objects to access introspection and alteration methods at the base level in the generated source code.

【0048】C.本発明に係るコヒーレント実行時適応
管理 本発明では、アプリケーションの多数のオブジェクトの
適応性をコヒーレント(coordinate)な方法で調整すの
が有利である。本発明においては、コヒーレントで一貫
した(consistent)実行時適応管理は、以下の3つの実
行時要素によって達成される。
C. Coherent Runtime Adaptation Management According to the Present Invention In the present invention, it is advantageous to adjust the adaptability of multiple objects of an application in a coherent manner. In the present invention, coherent and consistent runtime adaptation management is achieved by three runtime elements:

【0049】(1)システム統計、ユーザ要求等に依存
して発生される適応事象(adaptationevent)。
(1) An adaptation event generated depending on system statistics, user requests, and the like.

【0050】(2)ある特殊な事象に反応し、かつ特殊
なオブジェクトに適用される適応処理(adaptation pol
icies)。
(2) Adaptation processing (adaptation pol) that responds to a special event and is applied to a special object
icies).

【0051】(3)受けた事象に依存して適切な適応処
理を起動し、不安定性(instability)及び不一致性(i
nconsistency)を避けるために行われた適応性を制御す
る適応マネージャ。
(3) Appropriate adaptive processing is started depending on the received event, and instability and inconsistency (i
An adaptation manager that controls the adaptations made to avoid nconsistency).

【0052】適応事象及び適応処理 多数の適応オブジェクトが同じ基本資源(basic resour
ces)を共用しているとき、不安定性を避けることがで
きるように一貫した方法でそれらを適応させることが重
要である。例えば、適応ビデオチャンネルオブジェクト
と適応オーディオチャンネルオブジェクトを有するビデ
オ会議アプリケーションの場合、ビデオチャンネルオブ
ジェクトを適応させた後、オーディオチャンネルオブジ
ェクトを適応させるのが望ましい。このようにして、過
修正(over-correction)又はピンポン効果(ping-pong
effects)のような問題を避けることができる。
Adaptation Events and Processing Many adaptation objects share the same basic resource.
When sharing ces), it is important to adapt them in a consistent manner so that instability can be avoided. For example, in a video conferencing application having an adaptive video channel object and an adaptive audio channel object, it is desirable to adapt the audio channel object after adapting the video channel object. In this way, the over-correction or ping-pong effect
effects).

【0053】したがって、多数の適応オブジェクト間の
一貫した適応性を実現するために、このソフトウェア実
行時プラットホームは、システムの中における変化を表
す一組の「システムレベル(system level)」の適応事
象を提供し、ユーザは、アプリケーションにおけるこれ
らの事象に反応する「システムレベル」の適応処理を定
義することができる。本発明では、適応事象は、システ
ム統計サーバ、ユーザ制御パネルのような種々の要素に
よって外部的に、又は適応マネージャをアクセスするこ
とができる任意のオブジェクトによって内部的に発生さ
れる。
Thus, to achieve consistent adaptability between multiple adaptation objects, the software runtime platform provides a set of “system level” adaptation events that represent changes in the system. Providing and allowing the user to define "system-level" adaptation processes that respond to these events in the application. In the present invention, adaptation events are generated externally by various elements such as a system statistics server, user control panel, or internally by any object that can access the adaptation manager.

【0054】本発明では、システム事象は、一層特殊な
事象を発生するために、ライブラリ(libraries)又は
アプリケーション自体によって、さらに詳細化(refin
e)される。このように、所望の適応性の設定をより詳
細化したレベルで行うことは、アプリケーション設計者
までである。例えば、ネットワークの競合(contentio
n)が検出されると、システム統計サーバは、システム
事象「NETWORK_CONT」を適応マネージャに送る。システ
ム事象「NETWORK_CONT」についてのマルチメディアライ
ブラリの適応処理が適応マネージャに登録されると、適
応マネージャは、適応処理を実行して、ビデオストリー
ム及びオーディオストリームにおける問題を検出する。
ビデオストリームがネットワークの帯域幅を使いすぎて
いることが判明すると、適応処理は、事象「VIDEO_STRE
AM_CONT」を適応マネージャに送る。適応マネージャ
は、事象「VIDEO_STREAM_CONT」を受けると、事象「VID
EO_STREAM_CONT」ついてのマルチメディアライブラリに
登録されている適応処理を呼び出して、ビデオチャンネ
ルオブジェクトを白黒イメージのみを送るように適応さ
せる。
In the present invention, system events are further refined by the libraries or the application itself to generate more specific events.
e) is done. It is up to the application designer to set the desired adaptability at a more detailed level. For example, network conflicts (contentio
When n) is detected, the system statistics server sends a system event "NETWORK_CONT" to the adaptation manager. When the multimedia library's adaptation for the system event "NETWORK_CONT" is registered with the adaptation manager, the adaptation manager performs the adaptation to detect problems in the video and audio streams.
If the video stream is found to be using too much of the network's bandwidth, the adaptation process triggers the event "VIDEO_STRE
AM_CONT "to the adaptation manager. When receiving the event “VIDEO_STREAM_CONT”, the adaptation manager receives the event “VIDO_STREAM_CONT”.
Call the adaptation process registered in the multimedia library for "EO_STREAM_CONT" to adapt the video channel object to send only black and white images.

【0055】さらに、本発明では、適応処理は、適応オ
ブジェクトの適応性を制御するためにライブラリ設計者
及びアプリケーション設計者によって実現される。これ
らの適応処理は、適応マネージャのサービスを利用し
て、アプリケーションの適応性の特徴における情報を取
得し、メタスペースの構成又は適応メソッドの実行のよ
うな適応オブジェクトを変更する。本発明では、アプリ
ケーション設計者は、キーワード「DART_Policy」によ
って、適応メソッド又は反映メソッドに関する特定の適
応処理を識別することができる。また、設計者は、アプ
リケーションソースコード内の適応処理に関連した特定
の適応事象を識別することができる。DARTコンパイ
ラは、アプリケーションソースファイルを予めコンパイ
ルする際に、処理を事象と関連づけるために必要とされ
る低レベルのコードを発生する。さらに、アプリケーシ
ョンが実行されると何時でも、処理と事象は、適応マネ
ージャに登録される。すなわち、本発明では、適応処理
は、実行時において、適応マネージャによって除去され
たり、導入(インストール)される。
Further, in the present invention, the adaptive processing is realized by a library designer and an application designer in order to control the adaptability of the adaptive object. These adaptation processes utilize the services of the adaptation manager to obtain information on the adaptability characteristics of the application and modify adaptation objects such as configuring metaspaces or executing adaptation methods. In the present invention, the application designer can identify a specific adaptation process related to the adaptation method or the reflection method by the keyword “DART_Policy”. Also, the designer can identify particular adaptation events associated with the adaptation process in the application source code. DART compilers generate the low-level code needed to associate processing with events when pre-compiling application source files. In addition, whenever an application is run, processes and events are registered with the adaptation manager. That is, in the present invention, the adaptation process is removed or installed (installed) by the adaptation manager at the time of execution.

【0056】さらに、本発明では、適応処理は3つの異
なったレベル、すなわちシステム、ミドルウェア(midd
leware)及び適応処理に分類される。また、各処理は、
モジュールの一部である。ここで、モジュールとは、ユ
ーザ/アプリケーション設計者がある適応処理を容易に
選択したり、禁止したりするのに用いられるものであ
る。例えば、マルチメディアグループ通信のプロトコル
が、それ自体の適応処理で使用される場合には、汎用グ
ループ通信プロトコルの適応処理を禁止した方が良い。
Further, in the present invention, adaptive processing is performed at three different levels: system, middleware (midd).
leware) and adaptive processing. Also, each process
Part of a module. Here, the module is used by a user / application designer to easily select or prohibit a certain adaptive process. For example, when the multimedia group communication protocol is used in its own adaptive processing, it is better to prohibit the adaptive processing of the general-purpose group communication protocol.

【0057】表4は、本発明に基づいたDART処理を
含むDARTクラスの具体例を示している。
Table 4 shows a specific example of the DART class including the DART processing according to the present invention.

【0058】 表4 DART_Class class Hello { public: Hello (char *name) { person = (char *)malloc(80); strcpy (person, name); } DART_Policy LangStrategy (APP_LEVEL,0,LANG_EVENT); DART_Property print_fr (LANG_PROP, LANG_PROP_FR); DART_Property print_jp (LANG_PROP, LANG_PROP_JP); DART_Adaptive (print_jp) void print(); DART_Implementation (print) void print_fr(); DART_Implementation (print) void print_jp(); private: char *person; }Table 4 DART_Class class Hello {public: Hello (char * name) {person = (char *) malloc (80); strcpy (person, name);} DART_Policy LangStrategy (APP_LEVEL, 0, LANG_EVENT); DART_Property print_fr ( LANG_PROP, LANG_PROP_FR); DART_Property print_jp (LANG_PROP, LANG_PROP_JP); DART_Adaptive (print_jp) void print (); DART_Implementation (print) void print_fr (); DART_Implementation (print) void print_jp (); private: char * person;}

【0059】表4は、DART適応処理「LangStrateg
y」を含む単純なクラスの定義「Hello」を示している。
適応処理は、表4に示すように、アプリケーションレベ
ル(APP_LEVEL)の処理であり、適応事象「LANG_EVENT」
を受け取ると起動される。アプリケーション処理「Lang
Strategy」は、それ自体アプリケーション開発者によっ
て設けられ、簡単なC関数として書かれる。本発明で
は、アプリケーション処理「LangStrategy」は、アプリ
ケーションの適応オブジェクトの全てに対する適応メソ
ッド「print」のインプリメンテーション「print_f
r」,「print_jp」の1つを選択するように適応マネー
ジャを制御する。
Table 4 shows the DART adaptive processing "LangStrateg".
Here is a simple class definition "Hello" containing "y".
The adaptation process is an application level (APP_LEVEL) process as shown in Table 4, and the adaptation event “LANG_EVENT”
It is activated when receiving. Application processing "Lang
Strategy "is itself provided by the application developer and is written as a simple C function. In the present invention, the application process "LangStrategy" implements the "print_f" implementation of the adaptation method "print" for all of the adaptation objects in the application.
r ”and“ print_jp ”to control the adaptation manager.

【0060】DARTマネージャAPIを用いた適応処
理の実行 例えば、DARTにおける適応処理は、クラス(適応処
理に関連したクラス)の特定のインスタンスを検索する
適応マネージャを用いた簡単なC関数である。また、適
応処理は、適応マネージャを指示して、適応メソッドに
おける特定の属性と、反映メソッドにおける特定のメタ
オブジェクトを検索させる。本発明では、適応ソフトウ
ェアの開発プロセスを簡単にするために、一組の適応マ
ネージャのアプリケーションプログラミングインターフ
ェース(application programming interface:以下、
APIという。)が設けられる。ソフトウェア開発者
は、APIを使用し得る適応処理を実行し、特別な適応
オブジェクトを検索し、メタスペース構成を変更し、適
応オブジェクトに対するセレクタ/リフレクタを検出
し、適応オブジェクトのリフレクタ/セレクタを変更す
ることができる。本発明に基づく適応マネージャAPI
の具体例を表5に示す。
Executing Adaptation Using the DART Manager API For example, adaptation in DART is a simple C function using the adaptation manager to search for a particular instance of a class (the class associated with the adaptation). The adaptation process also instructs the adaptation manager to search for a particular attribute in the adaptation method and a particular meta-object in the reflection method. In the present invention, in order to simplify the development process of adaptive software, an application programming interface (hereinafter, referred to as “application programming interface”) of a set of adaptation managers is described.
It is called API. ) Is provided. The software developer performs an adaptation process that can use the API, searches for a particular adaptation object, changes the metaspace configuration, finds a selector / reflector for the adaptation object, and changes the reflector / selector of the adaptation object. be able to. Adaptation manager API according to the invention
Table 5 shows a specific example.

【0061】 表5 /***********************************************************/ /* This file give some of the API provided by the DART manager for writing adaptation policies. */ /***********************************************************/ /***********************************************************/ class AdapManager { /***********************************************************/ /* allow to find a given meta-object given base-object unique identifier */ MetaObject *FindMetaObject ( int mo_id, ObjctID *obj_id); /***********************************************************/ /* add and remove a specific meta_object to an instance of an object */ int AddMetaObject (ObjectID *obj_id, int meta_obj_type); int RemoveMetaObject (ObjectID *obj_id, int meta_obj_type); int AdMetaObject (char *class_name, int meta_obj_type, int flag); int RemoveMetaObject (char *class_name, int meta_obj_type, int flag) ; /***********************************************************/ /* clear the meta-space of a base-object (removes all it's meta-object) */ int ClearMetaSpace (ObjectID *obj_id); int ClearMetaSpace (char *class_name, int flag); /***********************************************************/ /* build a group of adaptive objects by sharing the meta- space */ int TransferMeta (AdapObject *tmp_dest, AdapObject *tmp_src); int TransferMeta (ObjectID *id_dest, ObjectID *id_src); /***********************************************************/ /* make a base-object uses it's own meta-objects if in a group before */ int DisconnectMeta (AdapObject *tmp_obJ); int DisconnectMeta (ObjectID *obj_id); /***********************************************************/ /* build a group of adaptive objects by sharing the selectors */ int ShareSelectors ( AdapObject *obj1, AdapObject *obj2); /***********************************************************/ /* makes an object use its own selector for adaptive methods (leaves the group) */ int LocalSelectors ( AdapObject *obj1); /***********************************************************/ /* register an adaptation policy in the DART manager */ int RegisterAdaptation (int event_nb, int level_id, int mood_id, void ((*fn) (AdapManager *,ObjectID *,int,int argc, char *argv[])), int flag); /* activate/deactivate a set of adaptation policies from a module */ int SetModule (int action, int module); /* activate/deactivate an adaptation policy */ int SetFn (int action, void ((*fn) (AdapManager *,ObjectID *,int,int argc, char *argv[]))); /* activate/deactivate a set of policies for a level (system/lib/application) and/or the one that react on a gven event /* int SetLevel (int action, int level_id, int event_nb); /* inhibit an event from being fired */ int DeleteEvent (int event_nb); /***********************************************************/ /* return a list of function names given different parameters (property, class name) */ List *GetFunctions (int prop, char *class_name); /* return a list of selectors given different parameters */ List *GetSelectors (List *objs, char *class_name, char *fn_name); /* return a list containing one/all instances of a given adaptive class */ List *GetObjects (ObjectID *obj_id, char *class_name); /* return the default implementation to use for an adaptive method of a class */ int GetDefault (char *class_name, char *fn_name); /* set the value of the selector (for all instance of a class and for a given function) */ int SetSelectcrs (char *class_name, char *fn_name, int value); /* set the value of the selector (for all selectors in the list) */ int SetSelectors (List *sels, int value); /* activate/deactivate a given type of meta-object for a list of base-object) */ SetMetaObject (List *objs, int mo_id, int op); };Table 5 / ******************************************** *************** / / * This file give some of the API provided by the DART manager for writing adaptation policies. * / / ************ *********************************************** // * ****************************************************** ******** / class AdapManager {/ ************************************* ********************** / / * allow to find a given meta-object given base-object unique identifier * / MetaObject * FindMetaObject (int mo_id, ObjctID * obj_id); / ********************************************** ************* / / * add and remove a specific meta_object to an instance of an object * / int AddMetaObject (ObjectID * obj_id, int meta_obj_type); int RemoveMetaObject (ObjectID * obj_id, int meta_obj_type ); int AdMetaObject (char * class_name, int meta_obj_type, int flag); int RemoveMetaObject (char * class_name, int meta_obj_type, int flag); / ******************* **************************************** / / * clear the meta-space of a base-object (removes all it's meta-object) * / int ClearMetaSpace (ObjectID * obj_id); int ClearMetaSpace (char * class_name, int flag); / *************** ******************************************** / / * build a group of adaptive objects by sharing the meta-space * / int TransferMeta (AdapObject * tmp_dest, AdapObject * tmp_src); int TransferMeta (ObjectID * id_dest, ObjectID * id_src); / ************** ********************************************* / / * make a base-object uses it's own meta-objects if in a group before * / int DisconnectMeta (AdapObject * tmp_obJ); int DisconnectMeta (ObjectID * obj_id); / ***************** ****************************************** / / * build a group of adaptive objects by sharing the selectors * / int ShareSelectors (AdapObject * obj1, AdapObject * obj2); / ****************************** ***************************** / / * makes an object use its own selector for adaptive methods (leaves the group) * / int LocalSelectors (AdapObject * obj1); / ************************** ********************************* / / * register an adaptation policy in the DART manager * / int RegisterAdaptation (int event_nb, int level_id, int mood_id, void ((* fn) (AdapManager *, ObjectID *, int, int argc, char * argv [])), int flag); / * activate / deactivate a set of adaptation policies from a module * / int SetModule (int action, int module); / * activate / deactivate an adaptation policy * / int SetFn (int action, void ((* fn) (AdapManager *, ObjectID *, int, int argc, char * argv []))); / * activate / deactivate a set of policies for a level (system / lib / application) and / or the one that react on a gven event / * int SetLevel (int action, int level_id, int event_nb) ; / * inhibit an event from being fired * / int DeleteEvent (int event_nb); / ******************************* **************************** / / * return a list of function names given different parameters (property, class name) * / List * GetFunctions (int prop, char * class_name); / * return a list of selectors given different parameters * / List * Ge tSelectors (List * objs, char * class_name, char * fn_name); / * return a list containing one / all instances of a given adaptive class * / List * GetObjects (ObjectID * obj_id, char * class_name); / * return the default implementation to use for an adaptive method of a class * / int GetDefault (char * class_name, char * fn_name); / * set the value of the selector (for all instance of a class and for a given function) * / int SetSelectcrs ( char * class_name, char * fn_name, int value); / * set the value of the selector (for all selectors in the list) * / int SetSelectors (List * sels, int value); / * activate / deactivate a given type of meta-object for a list of base-object) * / SetMetaObject (List * objs, int mo_id, int op);};

【0062】多数の適応オブジェクトの適応性の調整 図6は、本発明のDARTアーキテクチャの具体例を示
すブロック図である。この図6に示すように、具体的な
DARTフレームワーク(framework)70は、アプリ
ケーションプログラム71と、3つのライブラリ72
a,72b,72cと、適応マネージャ73と、オペレ
ーティングシステム(OS)75を含んでいる。3つの
ライブラリ72a,72b,72cはそれぞれ、例えば
分散ライブラリ72a、マルチメディアライブラリ72
b、グループ通信ライブラリ72cからなる。アプリケ
ーションプログラム71及び3つのライブラリ72a〜
72cは、適応マネージャ73に登録された適応オブジ
ェクト74をそれぞれ含んでいる。適応処理76及び適
応事象77は、適応マネージャ73に登録されている。
本発明では、適応処理は、関連した適応事象に基づいて
登録されたオブジェクトの適応性を指示する。
FIG. 6 is a block diagram illustrating an embodiment of the DART architecture of the present invention. As shown in FIG. 6, a specific DART framework (framework) 70 includes an application program 71 and three libraries 72.
a, 72b, 72c, an adaptation manager 73, and an operating system (OS) 75. The three libraries 72a, 72b, 72c are, for example, a distributed library 72a, a multimedia library 72, respectively.
b, a group communication library 72c. Application program 71 and three libraries 72a-
Reference numerals 72c each include an adaptation object 74 registered in the adaptation manager 73. The adaptation process 76 and the adaptation event 77 are registered in the adaptation manager 73.
In the present invention, the adaptation process indicates the fitness of the registered object based on the associated adaptation event.

【0063】この具体例に示すように、適応マネージャ
73は、オペレーティングシステム75から登録された
適応事象77aを受け取ると、この適応事象77aに関
連する適切な適応処理76aを捜し出して、この適応処
理76aを実行する。そして、適応マネージャ73は、
適応処理76aによって、アプリケーションプログラム
71とマルチメディアライブラリ72b内の特定の適応
オブジェクト74を検索して、選択する。このようにし
て、多数の適応オブジェクトの適応性は、有効かつ効率
的に調整される。
As shown in this example, upon receiving the registered adaptation event 77a from the operating system 75, the adaptation manager 73 searches for an appropriate adaptation process 76a related to the adaptation event 77a, and Execute And the adaptation manager 73
The adaptive process 76a searches and selects a specific adaptive object 74 in the application program 71 and the multimedia library 72b. In this way, the adaptability of a large number of adaptation objects is effectively and efficiently adjusted.

【0064】別の具体例として、アプリケーションプロ
グラム71は、ネットワークの効率的なインプリメンテ
ーションとメモリ効率的なインプリメンテーションを含
む適応オブジェクトクラス「ARRAY」を有する場合、ア
プリケーション設計者は、事象「MEN_LOW」と、適応マ
ネージャ73に事象「MEN_LOW」の検出時に適応オブジ
ェクトラス「RRAY」の全てのインスタンスにおけるメモ
リの効率的なインプリメンテーションを選択させるメモ
リ処理とを適応マネージャ73に登録することができ
る。実行時において、OS75は、事象「MEN_LOW」を
発生することができる。したがって、適応マネージャ7
3は、事象「MEN_LOW」を受け取ると、適応オブジェク
トクラス「ARRAY」の全てのインスタンスを検索して、
各インスタンスに対するメモリの効率的なインプリメン
テーションを選択する。
As another example, if the application program 71 has an adaptive object class “ARRAY” that includes an efficient implementation of the network and a memory efficient implementation, the application designer may specify the event “MEN_LOW”. And a memory process that causes the adaptive manager 73 to select an efficient implementation of the memory in all instances of the adaptive object class "RRAY" upon detection of the event "MEN_LOW" can be registered in the adaptive manager 73. At execution, the OS 75 can generate the event “MEN_LOW”. Therefore, adaptation manager 7
3 receives the event "MEN_LOW", searches all instances of the adaptive object class "ARRAY",
Choose an efficient implementation of memory for each instance.

【0065】D.DARTを用いた分散アプリケーショ
ンの構築 適応機構が中心となる(core)DARTプラットホーム
によって設けられている間、適応ライブラリは、分散を
取り扱う他のサービス、例えば適応クラス、メタレベル
のオブジェクト、適応処理を提供する。分散クラス(di
stributed classes)は、複製オブジェクト(replicate
d objects)、同期(synchronization)及び持続性(pe
rsistency)を与える分散メタスペースが存在するとき
には、容易に構築することができる。本発明では、適応
分散ライブラリは、DARTプラットホームに実現され
ている。適応分散ライブラリのインプリメンテーション
の詳細については、ソニー株式会社の1998年のDS
L−USRL技術報告書のレイバディ・ピー・ジー(So
ny DSL-USRL Technical Report 1998年Raverdy, P.G.)
著「DARTミドルウェア用の分散オブジェクト(Dist
ributed Objects for the DART Middleware)」に記載
されている。
D. Building Distributed Applications Using DART While the adaptation mechanism is provided by the core DART platform, the adaptation library provides other services that handle distribution, such as adaptation classes, meta-level objects, and adaptation processing. . Distributed class (di
distributed classes) are replicated objects (replicate
d objects), synchronization and persistence (pe
When there is a distributed metaspace that provides rsistency, it can be easily constructed. In the present invention, the adaptive distributed library is implemented on a DART platform. For more information on implementing an adaptive distributed library, see Sony Corporation's 1998 DS.
L-USRL Technical Report
ny DSL-USRL Technical Report 1998 Raverdy, PG)
"Distributed objects for DART middleware (Dist
ributed Objects for the DART Middleware).

【0066】複製メタレベルのオブジェクト 本発明の分散ライブラリ内に設けられたメタレベルのオ
ブジェクトは、分散プロトコルに対する容易なアクセス
を提供している。主メタレベル(main meta-level)の
オブジェクトは、ベースオブジェクトの複製を制御す
る。複製オブジェクトは、グループ通信に比して、分散
アプリケーションを構築する直観的でかつ自然の方法を
提供する。
Duplicate Meta-Level Objects The meta-level objects provided in the distributed library of the present invention provide easy access to distributed protocols. Main meta-level objects control the replication of base objects. Replicated objects provide an intuitive and natural way to build distributed applications compared to group communication.

【0067】特に、本発明を適用した複製プロトコル
は、2つの独立した層からなる。下位層は、通信を処理
するとともに、幾つかの複製オブジェクトによって共有
される軽い適応グループプロトコルの同報(multicas
t)プロトコルを用いる。上位層は、複製を取り扱うと
ともに、更新の送信、一貫性の管理及び局部複製の更新
を制御する。この上位層は、アプリケーションの要求に
応じた最良のサービスをベースオブジェクトに提供する
幾つかの複製プロトコル、例えば能動的及び受動的複製
(active and passive replication)、マスタプロキシ
(master-proxy)を実行する。両方の層間の汎用インタ
ーフェースは、種々のネットワーク及び複製構成(sche
me)を調整する。
In particular, the replication protocol to which the present invention is applied consists of two independent layers. The lower layer handles the communication and broadcasts a light adaptive group protocol (multicas) that is shared by several replicated objects.
t) Use the protocol. The upper layer handles the duplication and controls the transmission of updates, the management of consistency and the updating of local duplicates. This upper layer implements several replication protocols that provide the best service to the base object according to the requirements of the application, such as active and passive replication, master-proxy. . The generic interface between both layers is available in various network and replication configurations (sche
adjust me).

【0068】本発明では、実行されるプロトコルは、受
動的複製、能動的複製、マスタプロキシを含む。受動的
複製においては、任意の所与瞬時における1つの複製
(マスタ)は、ベースオブジェクトの正確な状態を有
し、ベースオブジェクトへのアクセスを有する。別の複
製は、ベースオブジェクトを使用したいときには、マス
タ複製に正確な状態を要求し、正確な状態を受け取った
ときにベースオブジェクトを使用する。能動的複製にお
いては、任意の複製がオブジェクトをアクセスする毎
に、他の複製に更新が送られる。この更新は、機能の更
新又はデータの更新であり、例えば機能名やパラメータ
等の機能の更新は、遠隔の複製に送られ、遠隔の複製
は、局所的に動作しなければならない。また、例えば新
しいオブジェクトの状態等のデータの更新は、遠隔の複
製に送られ、遠隔の複製は、それらの局部的なデータの
複写(copy)を更新する必要がある。マスタプロキシプ
ロトコルにおいて、マスタは、オブジェクトの更新を管
理する責任を有する。更新を送る他の複製は、それらが
マスタの複写に対するパラメータと共に実行したいメソ
ッドの名前を要求する。
In the present invention, the protocols executed include passive duplication, active duplication, and master proxy. In passive replication, one replication (master) at any given moment has the exact state of the base object and has access to the base object. Another replica requests the correct status from the master replica when it wants to use the base object, and uses the base object when it receives the correct status. In active replication, each time any replica accesses an object, updates are sent to other replicas. The update is a function update or data update, for example, a function update such as a function name or parameter is sent to a remote replica, which must operate locally. Also, updates of data, such as new object states, are sent to remote copies, which need to update their local copy of the data. In the master proxy protocol, the master is responsible for managing object updates. Other replicas sending updates require the name of the method they want to execute along with the parameters for the master's copy.

【0069】複製メタレベルのオブジェクトは、DAR
Tコンパイラによってコンパイル時に生成されたベース
クラスの特別のメソッドの幾つかを用い、複製オブジェ
クトの状態を整理し、又は整理しない。したがって、ア
プリケーション設計者は、DART複製メタレベルのオ
ブジェクトを、クラスを複製するデフォルトメタスペー
スとして単に特定するだけで済み、ソケット(socket
s)、オブジェクトロッキング(object locking)、初
期状態(initializing state)、マスタの選択(master
election)に関するコードを書く必要はない。しかし
ながら、アプリケーション設計者は、どのメソッド及び
メンバ変数を複製すべきか、どのプロトコルを使用すべ
きかを決定しなければならない。本発明に基づく複製メ
タオブジェクトを用いて実現したアプリケーションの具
体例を表6に示す。
The object of the duplicate meta level is DAR
Use some of the special methods of the base class generated at compile time by the T compiler to clean up or not clean up the state of duplicate objects. Thus, application designers need only identify DART duplicate meta-level objects as the default metaspace for duplicating classes,
s), object locking, initializing state, master selection (master)
There is no need to write code for election. However, the application designer must decide which methods and member variables should be duplicated and which protocol should be used. Table 6 shows a specific example of an application realized using the duplicate meta-object according to the present invention.

【0070】 表6 DART_Class class SharedBoard ( DART_Local Display *my_display; OBJ_List my_list(); DART_MSSetDefault DART_LGP; SharedBoard(); DART_Reflective void AddObj (int x, int y, SharedObj Obj); Redraw (); }Table 6 DART_Class class SharedBoard (DART_Local Display * my_display; OBJ_List my_list (); DART_MSSetDefault DART_LGP; SharedBoard (); DART_Reflective void AddObj (int x, int y, SharedObj Obj); Redraw ();}

【0071】表6に示すように、メタオブジェクト「DA
RT_LGP」は、クラス「SharedBoard」クラスのデフォル
トメタオブジェクトである。クラス「SharedBoard」
は、反映メソッド「AddObj」を含んでいる。本発明で
は、実行時に、反映メソッド「AddObj」が呼び出される
と、オブジェクト「SharedBoard」は複製される。本発
明では、メタオブジェクト「DART_LGP」は、能動的機能
及びデータ出力、受動的データの出力並びにマスタプロ
キシプロトコルをサポートする。
As shown in Table 6, the meta-object “DA
“RT_LGP” is a default meta-object of the class “SharedBoard”. Class "SharedBoard"
Includes a reflection method "AddObj". In the present invention, when the reflection method “AddObj” is called at the time of execution, the object “SharedBoard” is copied. In the present invention, the meta-object "DART_LGP" supports active functions and data output, passive data output and master proxy protocol.

【0072】図7は、複製の際における分散オブジェク
トの2つの複製の相互作用の具体例を示すブロック図で
ある。図7に示すように、分散オブジェクト80は、2
つの複製81,82を含んでいる。複製81は、ベース
オブジェクト83と、3つのメタレベルのオブジェクト
87と、リフレクタ86と、メタラッパ85と、反映メ
ソッド84と、特別のメソッド88を含んでいる。複製
82は、複製81と類似しており、ベースオブジェクト
90と、1つのメタオブジェクト89を含んでいる。
FIG. 7 is a block diagram showing a specific example of the interaction between two copies of a distributed object at the time of copying. As shown in FIG. 7, the distributed object 80
One copy 81, 82 is included. The replica 81 includes a base object 83, three meta-level objects 87, a reflector 86, a metal wrapper 85, a reflection method 84, and a special method 88. Replica 82 is similar to replica 81 and includes a base object 90 and one meta-object 89.

【0073】ここで、動作について説明する。複製81
の反映メソッド84が呼び出されると、メタラッパ85
はリフレクタ86を呼び出し、リフレクタ86は異なる
メタレベルのオブジェクト87を呼び出す。複製を制御
するメタレベルの選択されたオブジェクト87は、DA
RTコンパイラによって生成された局部の特別なメソッ
ドを用いて、オブジェクトの状態を取得し、それを他の
複製82に送る。メタレベルのオブジェクト89は、そ
れの局部ベースオブジェクトを新しい状態に更新する。
したがって、分散オブジェクト87は、容易にかつ自動
的に複製される。このようにして、分散アプリケーショ
ンの開発者は、このソフトウェアプラットホームによっ
て提供される種々の適応機構の利点を得ることができ、
最小の努力で複雑な分散アプリケーションを実現するこ
とができる。
The operation will now be described. Duplication 81
When the reflection method 84 is called, the meta wrapper 85
Calls a reflector 86, which calls objects 87 at different meta levels. The meta-level selected object 87 that controls replication is a DA
A local special method generated by the RT compiler is used to get the state of the object and send it to other replicas 82. Meta-level object 89 updates its local base object to the new state.
Therefore, the distributed object 87 is easily and automatically copied. In this way, distributed application developers can take advantage of the various adaptation mechanisms provided by this software platform,
Complex distributed applications can be realized with minimal effort.

【0074】本発明では、適応マネージャを用いること
によって、実行時に複製メタレベルのオブジェクト8
1,82の適応性を管理することができる。複製の適応
処理は、適応マネージャに登録され、事象を検出したと
きに、適応マネージャを呼び出して複製メタスペースの
構成を変更する。このようにして、複製プロトコルは、
実行時において、動的に変化される。
In the present invention, by using the adaptation manager, the object
1,82 adaptability can be managed. The replication adaptation process is registered with the adaptation manager and, when an event is detected, calls the adaptation manager to change the configuration of the replication metaspace. In this way, the replication protocol:
It changes dynamically at run time.

【0075】例えば、分散アプリケーションは、能動的
複製メタオブジェクトを、複製に対するそれ自体のデフ
ォルトプロトコルとして用いることができる。本発明の
一実施の形態に基づいて、分散アプリケーションは、メ
タスペースを変更する適応処理を含むとともに、ネット
ワークの帯域幅又は使用量の突然の変化を検出した際
に、受動的複製メタオブジェクトを含むことができる。
本発明では、適応は自動的に行われ、アプリケーション
設計者は、適応性を処理するコードを書く必要はない。
むしろ、適応サービスは、実行時のソフトウェア環境に
予め組み込まれている。
For example, a distributed application can use an active replication meta-object as its own default protocol for replication. In accordance with one embodiment of the present invention, a distributed application includes an adaptive process that changes the metaspace and includes a passive replication meta-object upon detecting a sudden change in network bandwidth or usage. be able to.
In the present invention, the adaptation is automatic and the application designer does not need to write code to handle the adaptation.
Rather, the adaptation service is pre-installed in the runtime software environment.

【0076】本発明では、適応マネージャは、実行時
に、複製メタレベルのオブジェクト81,82の適応性
を管理するのに用いられる。複製に対する適応処理は、
適応マネージャに登録され、事象が検出されたときに、
適応マネージャが呼び出され、複製メタスペースの構成
を変更する。このようにして、種々の複製プロトコル
は、種々のネットワーク環境において用いることがで
き、アプリケーション設計者は、適応性を処理する特殊
なコードを書く必要はない。
In the present invention, the adaptation manager is used at run time to manage the adaptability of the duplicate meta-level objects 81,82. The adaptation process for duplication is
When registered with the adaptation manager and an event is detected,
The adaptation manager is called to change the configuration of the replication metaspace. In this way, different replication protocols can be used in different network environments, and the application designer does not need to write special code to handle the adaptability.

【0077】以上のように、本発明、すなわち分散適応
実行時(DART)ソフトウェア環境を説明したが、D
ART環境内では、アプリケーションの振舞い、属性及
び必要性、環境の特徴、適応処理は、独立して設計する
ことができる。また、DART環境は、幾つかの適応機
構と適応管理用の汎用機構によって拡大される。適応事
象及び処理を用いることによって、独立した適応オブジ
ェクト間の相互運を達成することができる。本発明の別
の利点は、アプリケーション開発者は、適応の詳細を知
らなくてもよいことである。
As described above, the present invention, that is, the distributed adaptive runtime (DART) software environment has been described.
Within the ART environment, application behavior, attributes and needs, environment characteristics, and adaptive processing can be independently designed. Also, the DART environment is expanded by several adaptation mechanisms and a general purpose mechanism for adaptation management. By using adaptive events and processing, mutual luck between independent adaptive objects can be achieved. Another advantage of the present invention is that application developers do not need to know the details of the adaptation.

【0078】本発明の別の有利な特徴として、DART
コンパイラは、適応制御構造を形成して、プラットホー
ムの構成を初期化する。生成されたコード、例えばベー
スレベルにおけるイントロスペクションメソッド及びオ
ルタレーションメソッドは、基本機能を導入し、この基
本機能は、実行時に、例えば複製や持続性等の複雑な動
作に動的に結合される。また、アプリケーション設計者
は、クラスの構成要素を非常に細かく制御することがで
き、クラスの変数及びメソッドを独立して拡張すること
ができる。アプリケーションの開発者は、本発明に基づ
いたソフトウェア実行時環境を用いることによって、分
散技術の詳細を処理する必要なしに、ネットワーク又は
ウェブソフトウェアのような分散ソフトウェアを迅速に
開発することができる。
As another advantageous feature of the present invention, DART
The compiler forms an adaptive control structure to initialize the configuration of the platform. The generated code, e.g. the introspection and alteration methods at the base level, introduces basic functions which are dynamically coupled at runtime to complex operations such as replication and persistence. . Also, the application designer has very fine control over the components of the class and can independently extend the variables and methods of the class. By using a software runtime environment in accordance with the present invention, application developers can rapidly develop distributed software, such as network or web software, without having to deal with the details of distributed technology.

【0079】なお、本発明は、上述した実施の形態に限
定されるものではなく、特許請求の範囲に基づいて解釈
されるべきである。
The present invention is not limited to the above-described embodiment, but should be interpreted based on the claims.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明を実現するコンピュータ装置の具体的な
構成を示すブロック図である。
FIG. 1 is a block diagram illustrating a specific configuration of a computer device that implements the present invention.

【図2】本発明の適応メソッドの動作を説明するための
ブロック図である。
FIG. 2 is a block diagram for explaining the operation of an adaptive method according to the present invention.

【図3】本発明の反映メソッドの動作を説明するための
ブロック図である。
FIG. 3 is a block diagram for explaining the operation of a reflection method according to the present invention.

【図4】本発明の適応マネージャの動作を説明するため
のブロック図である。
FIG. 4 is a block diagram for explaining the operation of the adaptation manager of the present invention.

【図5】本発明のDARTコンパイラの動作を説明する
ためのブロック図である。
FIG. 5 is a block diagram for explaining the operation of the DART compiler of the present invention.

【図6】本発明のDARTアーキテクチャの具体例を示
すブロック図である。
FIG. 6 is a block diagram showing a specific example of the DART architecture of the present invention.

【図7】複製の際における分散オブジェクトの2つの複
製の相互作用の具体例を示すブロック図である。
FIG. 7 is a block diagram showing a specific example of the interaction between two copies of a distributed object at the time of copying.

【符号の説明】[Explanation of symbols]

10 コンピュータ装置、11 アドレス/データバ
ス、12 中央プロセッサ、13 揮発性メモリ、14
非揮発性記メモリ、15 データストレージ装置、1
6 通信装置、17 入力装置、18 カーソル制御装
置、19 表示器、20 適応オブジェクト、21 適
応ソフトウェアメソッド、21a〜21cインプリメン
テーション、22,23 非適応ソフトウェアメソッ
ド、24 ソフトウェアセレクタ、25 スイッチング
ソフトウェアラッパ
Reference Signs List 10 computer device, 11 address / data bus, 12 central processor, 13 volatile memory, 14
Non-volatile memory, 15 data storage device, 1
6 communication device, 17 input device, 18 cursor control device, 19 display, 20 adaptive object, 21 adaptive software method, 21a-21c implementation, 22, 23 non-adaptive software method, 24 software selector, 25 switching software wrapper

───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロジャー ジェイ リー アメリカ合衆国 カリフォルニア州 95134−1901 サンタ クララ ザンカー ロード 3300 ソニー ユエスアールエ ル 分散システム研究所内 Fターム(参考) 5B045 GG01 5B076 DA00  ──────────────────────────────────────────────────続 き Continuing on the front page (72) Inventor Roger Jay Lee United States of America 95134-1901 Santa Clara Zankar Road 3300 Sony USR Distributed System Laboratory F-term (reference) 5B045 GG01 5B076 DA00

Claims (28)

【特許請求の範囲】[Claims] 【請求項1】 多数のオブジェクトの適応性を制御する
適応マネージャを備えた分散適応実行時プラットホーム
用の適応ソフトウェアアプリケーションプログラムを開
発する分散適応実行時プラットホーム用の適応ソフトウ
ェアアプリケーションプログラム開発方法において、 上記適応ソフトウェアアプリケーションプログラムのア
プリケーションソースファイルを受け取るステップと、 上記アプリケーションソースファイルを解析して、上記
アプリケーションソースファイルに格納されている適応
クラスを識別するための所定のキーワードを検出するス
テップと、 上記適応クラスが適応ソフトウェアメソッドを含み、上
記適応クラスの第1のインスタンスを生成するときに、
上記適応ソフトウェアメソッドの多数のインプリメンテ
ーションの1つを動的に選択するセレクタを生成させる
第1の命令セットを上記アプリケーションソースファイ
ルに挿入することによって、上記適応クラスのコンスト
ラクタを、新たなオブジェクトがそれ自体を上記適応マ
ネージャに登録するように拡張するステップと、 上記適応クラスの第1のインスタンスが終了したとき
に、上記セレクタを削除する第2の命令セットを上記ア
プリケーションソースファイルに挿入することによっ
て、上記適応ソフトウェアメソッドを含む適応クラスの
デストラクタを拡張するステップとを有する分散適応実
行時プラットホーム用の適応ソフトウェアアプリケーシ
ョンプログラム開発方法。
1. A method for developing an adaptive software application program for a distributed adaptive runtime platform, the method comprising: developing an adaptive software application program for a distributed adaptive runtime platform having an adaptation manager for controlling the adaptability of a number of objects; Receiving an application source file of a software application program; analyzing the application source file to detect a predetermined keyword for identifying an adaptive class stored in the application source file; Including an adaptation software method, when creating a first instance of the adaptation class,
By inserting a first set of instructions into the application source file that generates a selector that dynamically selects one of a number of implementations of the adaptive software method, a new object Extending itself to register with the adaptation manager; and inserting a second set of instructions to delete the selector into the application source file when the first instance of the adaptation class is finished. Extending an adaptive class destructor including the adaptive software method. A method for developing an adaptive software application program for a distributed adaptive runtime platform.
【請求項2】 さらに、具象化時に、上記適応クラスの
第1のインスタンスを上記適応マネージャに登録する第
3の命令セットを上記アプリケーションソースファイル
に挿入するステップを有し、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記セレクタを変更することによって、上記第1
のインスタンスの適応性を制御することを特徴とする請
求項1に記載の分散適応実行時プラットホーム用の適応
ソフトウェアアプリケーションプログラム開発方法。
2. The method of claim 1, further comprising the step of inserting a third instruction set for registering a first instance of the adaptation class in the adaptation manager into the application source file at the time of materialization. Changing the selector in accordance with a change in the execution environment of the adaptive software application program at the time.
2. The method according to claim 1, wherein the adaptability of the instance of the application is controlled.
【請求項3】 さらに、上記適応クラスが反映ソフトウ
ェアメソッドを含み、上記適応クラスの第2のインスタ
ンスを生成するときに、上記反映ソフトウェアメソッド
のメタスペースを動的に定義するリフレクタを生成する
第4の命令セットを上記アプリケーションソースファイ
ルに挿入することによって、上記適応クラスのコンスト
ラクタを拡張するステップと、 上記適応クラスの第2のインスタンスが終了したとき
に、上記リフレクタを削除する第5の命令セットを上記
アプリケーションソースファイルに挿入することによっ
て、上記反映ソフトウェアメソッドを含む適応クラスの
デストラクタを拡張するステップとを有する請求項1に
記載の分散適応実行時プラットホーム用の適応ソフトウ
ェアアプリケーションプログラム開発方法。
3. The method of claim 1, wherein the adaptation class includes a reflection software method, and generating a reflector that dynamically defines a metaspace of the reflection software method when generating a second instance of the adaptation class. Extending the constructor of the adaptive class by inserting the instruction set of the adaptive class into the application source file; and a fifth instruction set for removing the reflector when the second instance of the adaptive class terminates. Extending the destructor of the adaptive class including the reflected software method by inserting it into the application source file. The method of developing an adaptive software application program for a distributed adaptive runtime platform according to claim 1, comprising:
【請求項4】 さらに、具象化時に、上記適応クラスの
第2のインスタンスを上記適応マネージャに登録する第
6の命令セットを上記アプリケーションソースファイル
に挿入するステップを有し、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記リフレクタを変更することによって、上記第
2のインスタンスの適応性を制御することを特徴とする
請求項3に記載の分散適応実行時プラットホーム用の適
応ソフトウェアアプリケーションプログラム開発方法。
4. The method according to claim 1, further comprising the step of inserting a sixth instruction set for registering a second instance of the adaptation class with the adaptation manager into the application source file at the time of reification. The distributed adaptive runtime platform according to claim 3, wherein the adaptiveness of the second instance is controlled by changing the reflector according to a change in the execution environment of the adaptive software application program at the time. How to develop an adaptive software application program for Windows.
【請求項5】 さらに、上記多数のインプリメンテーシ
ョン用のスイッチングラッパを自動的に生成する第7の
命令セットを上記アプリケーションソースコードに挿入
するステップを有し、 上記スイッチングラッパは、上記適応ソフトウェアメソ
ッドが呼び出されたときに、上記セレクタ内に格納され
ている情報に応じて上記多数のインプリメンテーション
の1つを選択することを特徴とする請求項1に記載の分
散適応実行時プラットホーム用の適応ソフトウェアアプ
リケーションプログラム開発方法。
5. Inserting a seventh instruction set into the application source code that automatically generates a switching wrapper for the multiple implementations, the switching wrapper comprising: 2. An adaptation for a distributed adaptive runtime platform according to claim 1, wherein when is called, one of the multiple implementations is selected in response to information stored in the selector. Software application program development method.
【請求項6】 さらに、上記反映ソフトウェアメソッド
用のメタラッパを自動的に生成する第8の命令セットを
上記アプリケーションソースファイルに挿入するステッ
プを有し、 上記メタラッパは、上記反映ソフトウェアメソッドが呼
び出されたときに、上記反映ソフトウェアメソッドのパ
ラメータを上記リフレクタに設けることを特徴とする請
求項3に記載の分散適応実行時プラットホーム用の適応
ソフトウェアアプリケーションプログラム開発方法。
6. The method according to claim 1, further comprising the step of inserting an eighth instruction set into the application source file for automatically generating a metal wrapper for the reflection software method, wherein the meta wrapper is configured to call the reflection software method. 4. The method according to claim 3, wherein parameters of the reflection software method are provided in the reflector.
【請求項7】 さらに、複数の複製オブジェクト間の通
信を行う下位層と、受動的複製、能動的複製及びマスタ
プロキシを含む複数の複製プロトコルを実行する上位層
とを有する複製プロトコルを生成するステップを有する
請求項3に記載の分散適応実行時プラットホーム用の適
応ソフトウェアアプリケーションプログラム開発方法。
7. A method for generating a replication protocol having a lower layer for performing communication between a plurality of replication objects and an upper layer for performing a plurality of replication protocols including passive replication, active replication, and a master proxy. The method of developing an adaptive software application program for a distributed adaptive runtime platform according to claim 3, comprising:
【請求項8】 さらに、上記メタオブジェクトが上記適
応クラスの第2のインスタンスの内部状態を得るように
させるイントロスペクションメソッドを発生する第9の
命令セットを、上記アプリケーションソースファイルに
挿入するステップを有する請求項3に記載の分散適応実
行時プラットホーム用の適応ソフトウェアアプリケーシ
ョンプログラム開発方法。
8. Inserting a ninth set of instructions into the application source file that generates an introspection method that causes the meta-object to obtain an internal state of a second instance of the adaptation class. 4. The method of developing an adaptive software application program for a distributed adaptive runtime platform according to claim 3, comprising:
【請求項9】 さらに、上記メタオブジェクトが上記適
応クラスの第2のインスタンスのベースレベルをアクセ
スするようにさせる中間構造を形成する第10の命令セ
ットを、上記アプリケーションソースファイルに挿入す
るステップを有する請求項8に記載の分散適応実行時プ
ラットホーム用の適応ソフトウェアアプリケーションプ
ログラム開発方法。
9. Inserting a tenth set of instructions into the application source file that forms an intermediate structure that causes the meta-object to access a base level of a second instance of the adaptation class. An adaptive software application program development method for a distributed adaptive runtime platform according to claim 8.
【請求項10】 多数の適応オブジェクト間の適応性を
制御する適応マネージャを有する分散適応実行時プラッ
トホーム用のアプリケーションプログラムを開発するコ
ンピュータ装置において、 上記適応ソフトウェアアプリケーションプログラムのア
プリケーションソースファイルを受け取る手段と、 上記アプリケーションソースファイルを構文解析して、
上記アプリケーションソースファイルに格納されている
適応クラスを識別するための所定のキーワードを検出す
る手段と、 上記適応クラスが適応ソフトウェアメソッドを含み、上
記適応クラスの第1のインスタンスを生成するときに、
上記適応ソフトウェアメソッドの多数のインプリメンテ
ーションの1つを動的に選択するセレクタを生成させる
第1の命令セットを上記アプリケーションソースファイ
ルに挿入することによって、上記適応クラスのコンスト
ラクタを、新たなオブジェクトがそれ自体を上記適応マ
ネージャに登録するように拡張する手段と、 上記適応クラスの第1のインスタンスが終了したとき
に、上記セレクタを削除する第2の命令セットを上記ア
プリケーションソースファイルに挿入することによっ
て、上記適応ソフトウェアメソッドを含む適応クラスの
デストラクタを拡張する手段と備えるコンピュータ装
置。
10. A computer system for developing an application program for a distributed adaptive runtime platform having an adaptation manager for controlling the adaptability between a number of adaptive objects, comprising: means for receiving an application source file of the adaptive software application program; Parse the above application source file,
Means for detecting a predetermined keyword for identifying an adaptation class stored in the application source file; and when the adaptation class includes an adaptation software method and generating a first instance of the adaptation class,
By inserting a first set of instructions into the application source file that generates a selector that dynamically selects one of a number of implementations of the adaptive software method, a new object Means for extending itself to register with the adaptation manager, and by inserting into the application source file a second set of instructions for deleting the selector when the first instance of the adaptation class is terminated. Means for extending an adaptive class destructor including the adaptive software method.
【請求項11】 さらに、具象化時に、上記適応クラス
のインスタンスを上記適応マネージャに登録する第3の
命令セットを上記アプリケーションソースファイルに挿
入する手段を備え、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記セレクタを変更することによって、上記第1
のインスタンスの適応性を制御することを特徴とする請
求項10に記載のコンピュータ装置。
11. The system further comprises means for inserting a third instruction set for registering an instance of the adaptation class in the adaptation manager into the application source file at the time of materialization, wherein the adaptation manager executes the adaptation at the time of execution. By changing the selector according to a change in the execution environment of the software application program, the first
The computer device according to claim 10, wherein the adaptability of the instance of is controlled.
【請求項12】 さらに、上記適応クラスが反映ソフト
ウェアメソッドを含み、上記適応クラスの第2のインス
タンスの発生時に上記反映ソフトウェアメソッドのメタ
スペースを動的に決めるリフレクタを生成する第4の命
令セットを上記アプリケーションソースファイルに挿入
することによって、上記適応クラスのコンストラクタを
拡張する手段と、 上記適応クラスの上記第2のインスタンスが終了したと
きに、上記リフレクタを削除する第5の命令セットを上
記アプリケーションソースファイルに挿入することによ
って、上記反映ソフトウェアメソッドを含む適応クラス
のデストラクタを拡張する手段とを備える請求項10に
記載のコンピュータ装置。
12. The method according to claim 11, wherein the adaptation class includes a reflection software method, and a fourth instruction set for generating a reflector that dynamically determines a metaspace of the reflection software method when a second instance of the adaptation class occurs. Means for extending the constructor of the adaptation class by inserting it into the application source file; and a fifth instruction set for removing the reflector when the second instance of the adaptation class is terminated. Means for extending a destructor of the adaptive class containing the reflection software method by inserting it into a file.
【請求項13】 さらに、具象化時に、上記適応クラス
のインスタンスを上記適応マネージャに登録する第6の
命令セットを上記アプリケーションソースファイルに挿
入する手段を備え、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記リフレクタを変更することによって、上記第
2のインスタンスの適応性を制御することを特徴とする
請求項12に記載のコンピュータ装置。
13. The method according to claim 13, further comprising: a means for inserting a sixth instruction set for registering an instance of the adaptation class in the adaptation manager into the application source file when the adaptation manager is embodied. 13. The computer device according to claim 12, wherein the adaptability of the second instance is controlled by changing the reflector according to a change in an execution environment of a software application program.
【請求項14】 さらに、上記多数のインプリメンテー
ション用のスイッチングラッパを自動的に生成する第7
の命令セットを上記アプリケーションソースコードに挿
入する手段を備え、 上記スイッチングラッパは、上記適応ソフトウェアメソ
ッドが呼び出されたときに、上記セレクタ内に格納され
ている情報に応じて上記多数のインプリメンテーション
の1つを選択することを特徴とする請求項10に記載の
コンピュータ装置。
14. The method of claim 7, further comprising automatically generating switching wrappers for said multiple implementations.
Means for inserting the set of instructions into the application source code, wherein the switching wrapper is configured to execute the plurality of implementations in response to the information stored in the selector when the adaptive software method is invoked. The computer device according to claim 10, wherein one is selected.
【請求項15】 さらに、上記反映ソフトウェアメソッ
ド用のメタラッパを自動的に生成する第8の命令セット
を上記アプリケーションソースファイルに挿入する手段
を備え、 上記メタラッパは、上記反映ソフトウェアメソッドが呼
び出されたときに、上記反映ソフトウェアメソッドのパ
ラメータを上記リフレクタに設けることを特徴とする請
求項12に記載のコンピュータ装置。
15. The method according to claim 15, further comprising inserting an eighth instruction set into the application source file for automatically generating a metal wrapper for the reflection software method, wherein the meta wrapper is called when the reflection software method is called. 13. The computer device according to claim 12, wherein parameters of the reflection software method are provided in the reflector.
【請求項16】 さらに、複数の複製オブジェクト間の
通信を行う下位層と、受動的複製、能動的複製及びマス
タプロキシを含む複数の複製プロトコルを実行する上位
層とを有する複製プロトコルを生成する手段を備える請
求項12に記載のコンピュータ装置。
16. A means for generating a replication protocol having a lower layer for communicating between a plurality of replication objects and an upper layer for executing a plurality of replication protocols including passive replication, active replication and a master proxy. 13. The computer device according to claim 12, comprising:
【請求項17】 さらに、上記メタオブジェクトが上記
適応クラスの第2のインスタンスの内部状態を得るよう
にさせるイントロスペクションメソッドを発生する第9
の命令セットを、上記アプリケーションソースファイル
に挿入する手段を備える請求項12に記載のコンピュー
タ装置。
17. The method according to claim 9, further comprising generating an introspection method for causing the meta-object to obtain an internal state of a second instance of the adaptive class.
13. The computer device according to claim 12, further comprising means for inserting said instruction set into said application source file.
【請求項18】 さらに、上記メタオブジェクトが上記
適応クラスの第2のインスタンスのベースレベルをアク
セスするようにさせる中間構造を形成する第10の命令
セットを、上記アプリケーションソースファイルに挿入
する手段を備える請求項17に記載のコンピュータ装
置。
18. A means for inserting into the application source file a tenth set of instructions forming an intermediate structure that causes the meta-object to access a base level of a second instance of the adaptation class. The computer device according to claim 17.
【請求項19】 汎用分散適応アプリケーションを開発
するコンピュータ装置において、 上記汎用分散適応アプリケーションを開発するソフトウ
ェアプラットホームを記憶する記憶手段と、 上記記憶手段に記憶されているソフトウェアプラットホ
ームを実行するプロセッサとを備え、 上記ソフトウェアプラットホームは、適応クラスを記述
及び定義するキーワードが内部に組み込まれた適応ソフ
トウェアアプリケーションのソースコードを低レベルの
発生コードに変換するプリコンパイラと、上記低レベル
の発生コードを機械実行可能なコードにコンパイルする
コンパイラとからなり、 上記プリコンパイラは、上記キーワードを検出して、上
記適応クラスが適応ソフトウェアメソッドを含んでいる
ことを上記キーワードが示しているときは、上記適応ク
ラスの第1のインスタンスの生成の際にソフトウェアセ
レクタを生成する所定の第1の命令セットを上記アプリ
ケーションソースファイルに挿入することによって、上
記適用クラスのコンストラクタを、新たなオブジェクト
がそれ自体を上記適応マネージャに登録するように拡張
するとともに、上記第1のインスタンスが終了したとき
に、上記ソフトウェアセレクタを削除する所定の第2の
命令セットを上記アプリケーションソースコードに挿入
することによって、上記適用クラスのデストラクタを拡
張することを特徴とするコンピュータ装置。
19. A computer device for developing a general-purpose distributed adaptive application, comprising: storage means for storing a software platform for developing the general-purpose distributed adaptive application; and a processor for executing the software platform stored in the storage means. The software platform includes a precompiler for converting source code of an adaptive software application into which a keyword for describing and defining an adaptive class is incorporated into a low-level generated code, and a machine-executable machine for the low-level generated code. The precompiler detects the keyword, and when the keyword indicates that the adaptive class includes an adaptive software method, Inserting a predetermined first set of instructions into the application source file that generates a software selector upon generation of a first instance of the adaptation class allows the constructor of the adaptation class to be created by a new object. The application class is extended by registering with the adaptation manager, and inserting a predetermined second instruction set for deleting the software selector into the application source code when the first instance is completed. A computer device characterized by extending the destructor of (1).
【請求項20】 上記プリコンパイラは、上記適応クラ
スが反映ソフトウェアメソッドを含んでいることを上記
キーワードが表しているときは、上記適応クラスの第2
のインスタンスの生成の際にソフトウェアリフレクタを
生成する所定の第3の命令セットを上記アプリケーショ
ンソースコードに挿入することによって上記コンストラ
クタを拡張するとともに、上記第2のインスタンスが終
了したときに、上記ソフトウェアリフレクタを削除する
所定の第4の命令セットを上記アプリケーションソース
コードに挿入することによって、上記デストラクタを拡
張することを特徴とする請求項19に記載のコンピュー
タ装置。
20. The precompiler according to claim 1, wherein said keyword indicates that said adaptation class includes a reflection software method.
The constructor is extended by inserting a predetermined third instruction set for generating a software reflector into the application source code when generating the instance of the software instance, and when the second instance is completed, the software reflector is extended. 20. The computer device according to claim 19, wherein the destructor is extended by inserting a predetermined fourth instruction set for deleting the destructor into the application source code.
【請求項21】 さらに、上記ソフトウェアアプリケー
ションプログラムの多数の適応オブジェクトの適応性を
制御する適応マネージャを備える請求項20に記載のコ
ンピュータ装置。
21. The computer device of claim 20, further comprising an adaptation manager that controls the adaptability of a number of adaptation objects of the software application program.
【請求項22】 上記プリコンパイラは、具象化時に上
記第1のインスタンスを上記適応マネージャに登録する
第5の命令セットを上記アプリケーションソースファイ
ルに挿入し、上記適応マネージャは、実行時における上
記適応ソフトウェアアプリケーションプログラムの実行
環境の変化に応じて上記セレクタを変更することによっ
て、上記第1のインスタンスの適応性を制御することを
特徴とする請求項21に記載のコンピュータ装置。
22. The precompiler inserts, into the application source file, a fifth instruction set for registering the first instance with the adaptation manager at the time of materialization, wherein the adaptation manager executes the adaptation software at the time of execution. 22. The computer device according to claim 21, wherein adaptability of the first instance is controlled by changing the selector according to a change in an execution environment of an application program.
【請求項23】 上記プリコンパイラは、具象化時に上
記第2のインスタンスを上記適応マネージャに登録する
第6の命令セットを上記アプリケーションソースファイ
ルに挿入し、上記適応マネージャは、実行時における上
記適応ソフトウェアアプリケーションプログラムの実行
環境の変化に応じて上記セレクタを変更することによっ
て、上記第2のインスタンスの適応性を制御することを
特徴とする請求項21に記載のコンピュータ装置。
23. The precompiler inserts, into the application source file, a sixth instruction set for registering the second instance with the adaptation manager at the time of materialization, wherein the adaptation manager executes the adaptation software during execution. 22. The computer device according to claim 21, wherein adaptability of the second instance is controlled by changing the selector according to a change in an execution environment of an application program.
【請求項24】 上記プリコンパイラは、上記の多数の
インプリメンテーション用のスイッチングラッパを自動
的に生成する第7の命令セットを上記アプリケーション
ソースコードに挿入し、上記スイッチングラッパは、上
記適応ソフトウェアメソッドの呼び出されたときに、上
記セレクタ内に格納されている情報に応じて上記多数の
インプリメンテーションの1つを選択することを特徴と
する請求項20に記載のコンピュータ装置。
24. The precompiler inserts a seventh instruction set into the application source code that automatically generates a switching wrapper for the multiple implementations, the switching wrapper comprising: 21. The computer device of claim 20, wherein when called, one of the multiple implementations is selected according to information stored in the selector.
【請求項25】 上記プリコンパイラは、上記反映ソフ
トウェアメソッド用のメタラッパを自動的に生成する第
8の命令セットを上記アプリケーションソースファイル
に挿入し、上記メタラッパは、上記反映ソフトウェアメ
ソッドが呼び出されたときに、上記反映ソフトウェアメ
ソッドのパラメータを上記リフレクタに設けることを特
徴とする請求項20に記載のコンピュータ装置。
25. The precompiler inserts, into the application source file, an eighth instruction set that automatically generates a meta-wrapper for the reflection software method, wherein the meta-wrapper is configured to execute when the reflection software method is called. 21. The computer device according to claim 20, wherein parameters of the reflection software method are provided in the reflector.
【請求項26】 上記プリコンパイラは、複数の複製オ
ブジェクト間の通信を行う下位層と、受動的複製、能動
的複製及びマスタプロキシを含む複数の複製プロトコル
を実行する上位層とを有する複製プロトコルを生成する
こと特徴とする請求項21に記載のコンピュータ装置。
26. The precompiler according to claim 26, further comprising: a replication protocol having a lower layer for performing communication between a plurality of replication objects and an upper layer for performing a plurality of replication protocols including passive replication, active replication, and a master proxy. The computer device according to claim 21, wherein the computer device generates the information.
【請求項27】 上記プリコンパイラは、上記メタオブ
ジェクトが上記適応クラスの第2のインスタンスの内部
状態を得るようにさせるイントロスペクションメソッド
を発生する第9の命令セットを、上記アプリケーション
ソースファイルに挿入することを特徴とする請求項20
に記載のコンピュータ装置。
27. The precompiler inserts a ninth set of instructions into the application source file that generates an introspection method that causes the meta-object to obtain an internal state of a second instance of the adaptive class. 21. The method according to claim 20, wherein
A computer device according to claim 1.
【請求項28】 上記プリコンパイラは、上記メタオブ
ジェクトが上記適応クラスの第2のインスタンスのベー
スレベルをアクセスするようにさせる中間構造を形成す
る第10の命令セットを、上記アプリケーションソース
ファイルに挿入し、ことを特徴とする請求項27に記載
のコンピュータ装置。
28. The precompiler inserts a tenth set of instructions into the application source file forming an intermediate structure that causes the meta-object to access a base level of a second instance of the adaptation class. 28. The computer device according to claim 27, wherein:
JP2001139047A 1999-02-25 2001-05-09 Application program developing method for platform at the time of executing distribution and adaptation and computer device Pending JP2002014813A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/258047 1999-02-25
US09/258,047 US6330717B1 (en) 1998-03-27 1999-02-25 Process and system for developing an application program for a distributed adaptive run-time platform

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP11125296A Division JP2000250755A (en) 1999-02-25 1999-04-30 Application program developing method and computer system for platform at time of distributed adaptive execution

Publications (1)

Publication Number Publication Date
JP2002014813A true JP2002014813A (en) 2002-01-18

Family

ID=22978879

Family Applications (2)

Application Number Title Priority Date Filing Date
JP11125296A Pending JP2000250755A (en) 1999-02-25 1999-04-30 Application program developing method and computer system for platform at time of distributed adaptive execution
JP2001139047A Pending JP2002014813A (en) 1999-02-25 2001-05-09 Application program developing method for platform at the time of executing distribution and adaptation and computer device

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP11125296A Pending JP2000250755A (en) 1999-02-25 1999-04-30 Application program developing method and computer system for platform at time of distributed adaptive execution

Country Status (1)

Country Link
JP (2) JP2000250755A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004342107A (en) * 2003-05-12 2004-12-02 Microsoft Corp System and method for employing object-oriented pipeline
JP2005011346A (en) * 2003-06-20 2005-01-13 Docomo Communications Laboratories Usa Inc Method and system for performing adaptive replication of application using server side code unit
WO2013061645A1 (en) 2011-10-28 2013-05-02 大和製罐株式会社 Sealed container internal pressure inspection device and internal pressure inspection method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004342107A (en) * 2003-05-12 2004-12-02 Microsoft Corp System and method for employing object-oriented pipeline
JP2005011346A (en) * 2003-06-20 2005-01-13 Docomo Communications Laboratories Usa Inc Method and system for performing adaptive replication of application using server side code unit
JP4555000B2 (en) * 2003-06-20 2010-09-29 株式会社エヌ・ティ・ティ・ドコモ Method and apparatus for performing adaptive replication of applications using server-side code units
WO2013061645A1 (en) 2011-10-28 2013-05-02 大和製罐株式会社 Sealed container internal pressure inspection device and internal pressure inspection method

Also Published As

Publication number Publication date
JP2000250755A (en) 2000-09-14

Similar Documents

Publication Publication Date Title
US6330717B1 (en) Process and system for developing an application program for a distributed adaptive run-time platform
US6324619B1 (en) Process and system for managing run-time adaptation for general purpose distributed adaptive applications
US6836889B1 (en) Code wrapping to simplify access to and use of enterprise JAVA beans
US7873942B2 (en) Design-time architecture for self-contained patterns
US9189263B1 (en) Object synchronization in shared object space
US6108661A (en) System for instance customization
US6851118B1 (en) Remote object access
US6564377B1 (en) Self-describing components within a software catalog
JP4812337B2 (en) Method and apparatus for generating a form using a form type
JP5006314B2 (en) Managed automatic programming model
US6449659B1 (en) System for instance customization with application independent programming of controls
MacIntyre et al. Language-level support for exploratory programming of distributed virtual environments
JPH11288395A (en) Method and system for remote browsing of object
JP2006302285A (en) Embodiment of generic types maintaining migration compatibility
US7219340B2 (en) Changeable class and pattern to provide selective mutability in computer programming environments
CN102893272A (en) Sharing and synchronization of objects
US8201147B2 (en) Generic XAD processing model
US20050289450A1 (en) User interface virtualization
JP4541877B2 (en) Canceling simplified memory allocation for programming objects
US9253286B2 (en) Computer program composed from tabular storage structures that includes data and code
Raverdy et al. DART: a reflective middleware for adaptive applications
Samaan et al. Task models and interaction models in a multiple user interfaces generation process
JP2002014813A (en) Application program developing method for platform at the time of executing distribution and adaptation and computer device
KR20010024488A (en) System to associate control with applications using drag and drop interface
US20070124326A1 (en) Extensible Controls for a Content Data Repository

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040511

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040813

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050125