JP2000250755A - Application program developing method and computer system for platform at time of distributed adaptive execution - Google Patents

Application program developing method and computer system for platform at time of distributed adaptive execution

Info

Publication number
JP2000250755A
JP2000250755A JP11125296A JP12529699A JP2000250755A JP 2000250755 A JP2000250755 A JP 2000250755A JP 11125296 A JP11125296 A JP 11125296A JP 12529699 A JP12529699 A JP 12529699A JP 2000250755 A JP2000250755 A JP 2000250755A
Authority
JP
Japan
Prior art keywords
adaptation
software
adaptive
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
JP11125296A
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 JP2000250755A publication Critical patent/JP2000250755A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To develop a program without describing the details of distribution and application by achieving the application in the case of distributed adaptive execution while using a metha-object programming model. SOLUTION: An adaptive object 20 is executed by one adaptive software method 21 and two non-adaptive software methods 22 and 23. Access to three implementations 21a-21c included in the adaptive software method 21 is controlled by a software selector 24 including a reference to one of them and a switching software wrapper 25. When the adaptive software method 21 is called, which implementation is to be executed is inquired to the software selector 24 by the switching software wrapper 25 and according to the reference stored in the software selector 24, selected one of implementations 21a-21c is executed.

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, a computer device, and a software platform.

【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, computers are capable of managing many financial transactions, controlling the production of products ranging from automobiles to integrated circuit chips, recording acquaintance addresses and telephone numbers, science and technology, in addition to sending and receiving data. 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 communicating with one another. Millions of people use the Internet for communication and entertainment. In addition, the Internet has been added with new functions such as digital broadcasting and digital telephone, and has been rapidly developed 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 distributed software applications (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 often complex and 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 as well as related distributed applications that coordinate their consistent protocols. Changes in one or some 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, it is an object of the present invention to provide a method, a computer apparatus and a platform that allow a designer to develop an adaptive software application program for a distributed adaptive runtime platform without describing the details of the distribution and application. To provide.

【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 the number of implementations of the adaptive software method when the adaptive class includes the adaptive software method and generating the first instance of the adaptive class. Extending the constructor of the adaptation class by inserting a first set of instructions into the application source file that causes a selector to dynamically select one of the applications, and when the first instance of the adaptation class terminates Extending the destructor of the adaptive class containing the adaptive software method by inserting a second set of instructions for removing the selector into the application source file.

【0009】本発明に係るコンピュータは、多数の適応
オブジェクト間の適応性を制御する適応マネージャを有
する分散適応実行時プラットホーム用のアプリケーショ
ンプログラムを開発するコンピュータ装置であって、適
応ソフトウェアアプリケーションプログラムのアプリケ
ーションソースファイルを受け取る手段と、アプリケー
ションソースファイルを構文解析して、アプリケーショ
ンソースファイルに格納されている適応クラスを識別す
るための所定のキーワードを検出する手段と、適応クラ
スが適応ソフトウェアメソッドを含み、適応クラスの第
1のインスタンスを生成するときに、適応ソフトウェア
メソッドの多数のインプリメンテーションの1つを動的
に選択するセレクタを生成させる第1の命令セットをア
プリケーションソースファイルに挿入することによっ
て、適応クラスのコンストラクタを拡張する手段と、適
応クラスの第1のインスタンスが終了したときに、セレ
クタを削除する第2の命令セットをアプリケーションソ
ースファイルに挿入することによって、適応ソフトウェ
アメソッドを含む適応クラスのデストラクタを拡張する
手段と備える。
A computer 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 source of the adaptive software application program. Means for receiving a file, means for parsing the application source file and detecting predetermined keywords for identifying an adaptation class stored in the application source file, and wherein the adaptation class includes an adaptation software method, Generating a first instance of the application software, the first instruction set causing the application software to generate a selector that dynamically selects one of a number of implementations of the adaptive software method. Means for extending the constructor of the adaptive class by inserting it into the application source file, and by inserting a second set of instructions for removing the selector into the application source file when the first instance of the adaptive class is finished. Means for extending a destructor of an adaptive class including an adaptive software method.

【0010】本発明に係るソフトウェアプラットホーム
は、コンピュータ装置における汎用分散適応アプリケー
ションを開発するソフトウェアプラットホームであっ
て、適応クラスを記述及び定義するキーワードが内部に
組み込まれた適応ソフトウェアアプリケーションのソー
スコードを低レベルの発生コードに変換するプリコンパ
イラと、低レベルの発生コードを機械実行可能なコード
にコンパイルするコンパイラとを備える。プリコンパイ
ラは、キーワードを検出して、適応クラスが適応ソフト
ウェアメソッドを含んでいることをキーワードが示して
いるときは、適応クラスの第1のインスタンスの生成の
際にソフトウェアセレクタを生成する所定の第1の命令
セットをアプリケーションソースファイルに挿入するこ
とによって、適用クラスのコンストラクタを拡張する。
また、プリコンパイラは、第1のインスタンスが終了し
たときに、ソフトウェアセレクタを削除する所定の第2
の命令セットをアプリケーションソースコードに挿入す
ることによって、適用クラスのデストラクタを拡張す
る。
[0010] The software platform according to the present invention is a software platform for developing a general-purpose distributed adaptive application in a computer device. And a compiler for compiling the low-level generated code into machine-executable code. The precompiler detects the keyword and, if the keyword indicates that the adaptation class includes an adaptation software method, the predetermined compiler that generates the software selector upon generation of the first instance of the adaptation class. Extend the constructor of the apply class by inserting one instruction set into the application source file.
Further, the precompiler may execute a predetermined second process for deleting the software selector when the first instance is completed.
The destructor of the applicable class is extended by inserting the instruction set in the application source code.

【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, the incorporation of adaptation mechanisms into the runtime environment allows distributed applications to adapt to ever-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. Since the software platform according to the present invention supports both the reflection method and the adaptation method, a large-scale distributed application can be easily developed using the software platform.

【0013】本発明に係るソフトウェアプラットホーム
は、さらに分散アプリケーションの実行環境を構成及び
管理する適応マネージャを含んでいる。この適応マネー
ジャは、適応クラス及びそれを使用するプラットホーム
サービスのインスタンスのトラックを保つことによっ
て、多数のオブジェクトの適応性をコヒーレントに調整
する。また、適応マネージャは、適応処理を記録し、シ
ステムの状態及びユーザの好みを監視する。適応マネー
ジャは、適応処理及びシステムの状態に基づいて、関連
した処理を実行して、どのオブジェクトをどのように何
時適応すべきかを決定する。
[0013] The software platform 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 and how and when.

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

【0015】本発明は、分散適応実行時プラットホーム
用のアプリケーションプログラムをコンパイルするプロ
セスを含み、このプロセスは、アプリケーションプログ
ラムのアプリケーションソースファイルを解析して、適
応クラスを識別するための所定のキーワードを検出する
ステップと、適応クラスが適応メソッドを含んでいると
きに、適応クラスのコンストラクタを拡張して、適応ク
ラスが具象化されたときに適応メソッドのセレクタを生
成するステップと、適応クラスが反映メソッドを含んで
いるときに、適応クラスのコンストラクタを拡張して、
適応クラスが具象化されたときに反映メソッドのリフレ
クタを生成するステップとを有している。
[0015] The present invention includes a process for compiling an application program for a distributed adaptive runtime platform, which analyzes an application source file of the application program and detects predetermined keywords to identify an adaptive class. Extending the constructor of the adaptation class when the adaptation class contains an adaptation method to generate a selector for the adaptation method when the adaptation class is materialized; 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 A method for developing an adaptive software application program for a distributed adaptive runtime platform, a computer device, and a software platform according to the present invention will be described below 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 Terminology Some portions of the detailed description that follow are based on symbols that 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 specified, the present invention uses "generating", "parsing", "extending", "calling", "executing", and the like. It is recognized that descriptions using terms such as, refer to the operation and processing of a computing device or similar electrical computing device. A computer device or similar electrical computing device processes data represented as physical (electronic) quantities in registers and memory of the computer device and separates data represented as physical quantities in the memory of the computer device. Alternatively, the data 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 Device Environment The features of the present invention are described below in terms of steps performed on a computer device. 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 includes the volatile memory 13, the nonvolatile memory 14, and the data storage device 15 as writable and / or readable devices.

【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 selection. Further, the computer device 10 includes:
A cursor control or pointing device 18 is provided which communicates information and command selections entered by the user to the central processor 12 via the address / data bus 11. In addition, the computing device 10 may include a display 19 for displaying information to a computer user.
The display 19 also has the address / data bus 11
It is connected to the. The display 19 is, for example, a liquid crystal display,
It consists of other types of flat panel displays, cathode ray tubes or other display devices suitable for displaying graphic images and text symbols recognizable to the 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. Further, 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. Architecture of the Platform 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. Further, 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, such as the Internet, and to rewrite or rebuild applications without requiring a narrow bandwidth mobile network. It can be easily ported or ported for another environment 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 run time; Achieved by extension. 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 function code of the application 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のうちの選択したものを実行する。
Adaptive Method 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 has 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 enables 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を含
む。
Reflection Method FIG. 3 is a block diagram for explaining the operation of the reflection method of the present invention. As shown in FIG. 3, a base object (base object) 31 includes three meta-level objects (meta-level objects) 32a, 32b,
Metaspace (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 in 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 be inactive (inactive).

【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 is aware of the various adaptive classes in the application and the meta-level objects available for these classes.
At runtime, each instance of the adaptation class
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 services)を容易にかつ直観的にアクセ
スできることである。本発明では、DARTコンパイラ
が、例えばオープン(Open)C++に基づく場合、DA
RTアプリケーションソースファイル(DRAT applicati
on source file)に組み込まれた幾つかの単純なキーワ
ードから適応メソッド及び反映メソッドを実行するのに
必要な低レベルのコードを自動的に発生するために設け
られている。本発明のDARTコンパイラにより、プラ
ットホームサービスを相対的に途切れることなく(seam
less)、透過的に(transparent)に使用でき、プログ
ラマが分散及び適応に関連した低レベルの機構よりもむ
しろ、アプリケーションの高レベルの設計に集中するの
を助ける。
B. DART Compiler One important advantage of the software platform of the present invention is that application designers can easily and intuitively access platform services. In the present invention, if the DART compiler is based on, for example, Open C ++,
RT application source file (DRAT applicati
It is provided to automatically generate the low-level code needed to execute the adaptation and reflection methods from some simple keywords embedded in the on source file. With the DART compiler of the present invention, platform services are relatively uninterrupted (seam
It can be used less, transparently, and helps programmers focus on the high-level design of the application rather than the low-level mechanisms associated with distribution and adaptation.

【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, application designers can adapt adaptive classes by incorporating DART keywords into the DART application.
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 (pre-fix) of “DART_” is added as a DART keyword so that identification is possible. For example, specifically, the adaptation class is identified by the DART keyword “DART_Class”, and the reflection method is identified by 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, all the code needed to set up the reflector / selector and adaptation manager and manage multiple implementations and metaspaces is taken. 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)に登録するように拡張さ
れる。
By 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 each time it 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 according to 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 application's adaptation requirements.

【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 adaptive method "Send" defined in "Send_COL"
Contains. In the DART class in this specific example, the application transmits an image in black and white when the network bandwidth is small, and transmits the image in color (Send_COD) when the network bandwidth is wide 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 a DART application is compiled 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 61
It is supplied to a compiler 62. Also. DART compiler 62 includes a number of adaptive service imple- ment files that contain a predefined 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 an 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 t he 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 //-in itialization 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);} v oid Counter :: 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-reflection method remains unchanged, but the name of the reflection method is
The meta wrapper with "X" changed to "BaseLevel_X" and the name X is 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 must introspect the base object to obtain parameters such as the name of the invoked method, the value and type of the variable. 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 for the meta-object to have access to 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-object to access introspection and alteration methods at the base level in the generated source code.

【0048】C.本発明に係るコヒーレント実行時適応
管理 本発明では、アプリケーションの多数のオブジェクトの
適応性をコヒーレント(coordinate)な方法で調整すの
が有利である。本発明においては、コヒーレントで一貫
した(consistent)実行時適応管理は、以下の3つの実
行時要素によって達成される。
C. Coherent runtime adaptation according to the invention
Management In the present invention, it is advantageous to adjust the adaptability of multiple objects of the 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)及び
不一致性(inconsistency)を避けるため
に行われた適応性を制御する適応マネージャ。
(3) An adaptation manager that activates an appropriate adaptation process depending on a received event, and controls adaptation performed to avoid instability and inconsistency.

【0052】適応事象及び適応処理 多数の適応オブジェクトが同じ基本資源(basic resour
ces)を共用しているとき、不安定性を避けることがで
きるように一貫した方法でそれらを適応させることが重
要である。例えば、適応ビデオチャンネルオブジェクト
と適応オーディオチャンネルオブジェクトを有するビデ
オ会議アプリケーションの場合、ビデオチャンネルオブ
ジェクトを適応させた後、オーディオチャンネルオブジ
ェクトを適応させるのが望ましい。このようにして、過
修正(over-correction)又はピンポン効果(ping-pong
effects)のような問題を避けることができる。
Adaptation Event and Adaptation 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, for a video conferencing application having an adaptive video channel object and an adaptive audio channel object, it is desirable to adapt the video channel object before adapting the audio 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" adaptive processes that respond to these events in the application. In the present invention, the adaptation event is generated externally by various elements such as a system statistics server, a 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. Upon 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 adaptation processing is realized by a library designer and an application designer to control the adaptability of the adaptation 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 for 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 inhibit 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 application's adaptation objects.
r ”and“ print_jp ”to control the adaptation manager.

【0060】DARTマネージャAPIを用いた適応処
理の実行例えば、DARTにおける適応処理は、クラス
(適応処理に関連したクラス)の特定のインスタンスを
検索する適応マネージャを用いた簡単なC関数である。
また、適応処理は、適応マネージャを指示して、適応メ
ソッドにおける特定の属性と、反映メソッドにおける特
定のメタオブジェクトを検索させる。本発明では、適応
ソフトウェアの開発プロセスを簡単にするために、一組
の適応マネージャのアプリケーションプログラミングイ
ンターフェース(application programming interfac
e:以下、APIという。)が設けられる。ソフトウェ
ア開発者は、APIを使用し得る適応処理を実行し、特
別な適応オブジェクトを検索し、メタスペース構成を変
更し、適応オブジェクトに対するセレクタ/リフレクタ
を検出し、適応オブジェクトのリフレクタ/セレクタを
変更することができる。本発明に基づく適応マネージャ
APIの具体例を表5に示す。
Adaptive Processing Using DART Manager API
Executing Logic For example, the adaptation process in DART is a simple C function using an adaptation manager to search for a particular instance of a class (the class associated with the adaptation process).
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, a set of adaptation manager application programming interfaces (application programming interfaces) is provided to simplify the adaptation software development process.
e: Hereinafter, 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. Table 5 shows a specific example of the adaptation manager API according to the present invention.

【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 * Get Selectors (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 specific 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 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. Distributed application using DART
The adaptation library provides other services that deal with distribution, such as adaptation classes, meta-level objects, and adaptation processing, while the building adaptation mechanism is provided by the core DART platform. 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 has two independent layers. The lower layer handles the communication and broadcasts a light adaptive group protocol (multicas) shared by several replicated objects.
t) Use the protocol. The upper layer handles the replication and controls the transmission of updates, management of consistency and updates of local replicas. 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 to data, such as the state of new objects, 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 that send 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 replication meta-level objects as the default metaspace for replicating 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. 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. The replica 82 is similar to the 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
The local special methods generated by the RT compiler are 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. According to one embodiment of the present invention, the distributed application includes an adaptive process to change the metaspace and includes a passive replication meta-object upon detecting a sudden change in network bandwidth or usage. be able to.
With the present invention, the adaptation is automatic and the application designer does not need to write code to handle the adaptability.
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 processes, 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., introspection and alteration methods at the base level, introduces basic functions that 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 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 an 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 スイッチング
ソフトウェアラッパ
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 device, 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 ソニー ユエスアールエ ル 分散システム研究所内 ──────────────────────────────────────────────────続 き Continuing on the front page (72) Inventor Roger Jay Lee California, USA 95134-1901 Santa Clara Zankar Road 3300 Sony USR Inside Distributed Systems Laboratory

Claims (25)

【特許請求の範囲】[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,
Extending the adaptive class constructor 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; Extending a destructor of the adaptive class containing the adaptive software method by inserting a second set of instructions for removing the selector into the application source file when the first instance of the adaptive class is terminated; Method for developing an adaptive software application program for a distributed adaptive runtime platform having
【請求項2】 さらに、具象化時に、上記適応クラスの
第1のインスタンスを上記適応マネージャに登録する第
3の命令セットを上記アプリケーションソースファイル
に挿入するステップを有し、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記セレクタを変更することによって、上記第1
のインスタンスの適応性を制御することを特徴とする請
求項1に記載の分散適応実行時プラットホーム用の適応
ソフトウェアアプリケーションプログラム開発方法。
2. The method according to claim 1, further comprising the step of inserting a third instruction set for registering a first instance of the adaptation class with the adaptation manager into the application source file at the time of materialization. Changing the selector according to a change in the execution environment of the adaptive software application program at the time,
2. The method according to claim 1, further comprising controlling the adaptability of an instance of the application.
【請求項3】 さらに、上記適応クラスが反映ソフトウ
ェアメソッドを含み、上記適応クラスの第2のインスタ
ンスを生成するときに、上記反映ソフトウェアメソッド
のメタスペースを動的に定義するリフレクタを生成する
第4の命令セットを上記アプリケーションソースファイ
ルに挿入することによって、上記適応クラスのコンスト
ラクタを拡張するステップと、 上記適応クラスの第2のインスタンスが終了したとき
に、上記リフレクタを削除する第5の命令セットを上記
アプリケーションソースファイルに挿入することによっ
て、上記反映ソフトウェアメソッドを含む適応クラスの
デストラクタを拡張するステップとを有する請求項1に
記載の分散適応実行時プラットホーム用の適応ソフトウ
ェアアプリケーションプログラム開発方法。
3. The method of claim 1, wherein the adaptation class includes a reflection software method, and a fourth instance of 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 set of instructions into the application source file; and defining a fifth set of instructions for removing the reflector when a second instance of the adaptive class terminates. Extending the destructor of the adaptive class containing 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 in the adaptation manager into the application source file at the time of reification. 4. 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 6, further comprising the step of: inserting an eighth instruction set into the application source file for automatically generating a meta-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】 さらに、上記メタオブジェクトが上記適
応クラスの第2のインスタンスの内部状態を得るように
させるイントロスペクションメソッドを発生する第9の
命令セットを、上記アプリケーションソースファイルに
挿入するステップを有する請求項3に記載の分散適応実
行時プラットホーム用の適応ソフトウェアアプリケーシ
ョンプログラム開発方法。
7. 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 for developing an adaptive software application program for a distributed adaptive runtime platform according to claim 3, comprising:
【請求項8】 さらに、上記メタオブジェクトが上記適
応クラスの第2のインスタンスのベースレベルをアクセ
スするようにさせる中間構造を形成する第10の命令セ
ットを、上記アプリケーションソースファイルに挿入す
るステップを有する請求項7に記載の分散適応実行時プ
ラットホーム用の適応ソフトウェアアプリケーションプ
ログラム開発方法。
8. 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. A method for developing an adaptive software application program for a distributed adaptive runtime platform according to claim 7.
【請求項9】 多数の適応オブジェクト間の適応性を制
御する適応マネージャを有する分散適応実行時プラット
ホーム用のアプリケーションプログラムを開発するコン
ピュータ装置において、 上記適応ソフトウェアアプリケーションプログラムのア
プリケーションソースファイルを受け取る手段と、 上記アプリケーションソースファイルを構文解析して、
上記アプリケーションソースファイルに格納されている
適応クラスを識別するための所定のキーワードを検出す
る手段と、 上記適応クラスが適応ソフトウェアメソッドを含み、上
記適応クラスの第1のインスタンスを生成するときに、
上記適応ソフトウェアメソッドの多数のインプリメンテ
ーションの1つを動的に選択するセレクタを生成させる
第1の命令セットを上記アプリケーションソースファイ
ルに挿入することによって、上記適応クラスのコンスト
ラクタを拡張する手段と、 上記適応クラスの第1のインスタンスが終了したとき
に、上記セレクタを削除する第2の命令セットを上記ア
プリケーションソースファイルに挿入することによっ
て、上記適応ソフトウェアメソッドを含む適応クラスの
デストラクタを拡張する手段と備えるコンピュータ装
置。
9. 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,
Means for extending the adaptive class constructor 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; Means for extending a destructor of the adaptive class including the adaptive software method by inserting a second set of instructions for removing the selector into the application source file when the first instance of the adaptive class is terminated; Computer equipment.
【請求項10】 さらに、具象化時に、上記適応クラス
のインスタンスを上記適応マネージャに登録する第3の
命令セットを上記アプリケーションソースファイルに挿
入する手段を備え、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記セレクタを変更することによって、上記第1
のインスタンスの適応性を制御することを特徴とする請
求項9に記載のコンピュータ装置。
And 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 execution time. 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 9, wherein the adaptability of the instance of is controlled.
【請求項11】 さらに、上記適応クラスが反映ソフト
ウェアメソッドを含み、上記適応クラスの第2のインス
タンスの発生時に上記反映ソフトウェアメソッドのメタ
スペースを動的に決めるリフレクタを生成する第4の命
令セットを上記アプリケーションソースファイルに挿入
することによって、上記適応クラスのコンストラクタを
拡張する手段と、 上記適応クラスの上記第2のインスタンスが終了したと
きに、上記リフレクタを削除する第5の命令セットを上
記アプリケーションソースファイルに挿入することによ
って、上記反映ソフトウェアメソッドを含む適応クラス
のデストラクタを拡張する手段とを備える請求項9に記
載のコンピュータ装置。
11. 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.
【請求項12】 さらに、具象化時に、上記適応クラス
のインスタンスを上記適応マネージャに登録する第6の
命令セットを上記アプリケーションソースファイルに挿
入する手段を備え、 上記適応マネージャは、実行時における上記適応ソフト
ウェアアプリケーションプログラムの実行環境の変化に
応じて上記リフレクタを変更することによって、上記第
2のインスタンスの適応性を制御することを特徴とする
請求項11に記載のコンピュータ装置。
And means for inserting a sixth 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. The computer device according to claim 11, 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.
【請求項13】 さらに、上記多数のインプリメンテー
ション用のスイッチングラッパを自動的に生成する第7
の命令セットを上記アプリケーションソースコードに挿
入する手段を備え、 上記スイッチングラッパは、上記適応ソフトウェアメソ
ッドが呼び出されたときに、上記セレクタ内に格納され
ている情報に応じて上記多数のインプリメンテーション
の1つを選択することを特徴とする請求項9に記載のコ
ンピュータ装置。
13. 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 9, wherein one is selected.
【請求項14】 さらに、上記反映ソフトウェアメソッ
ド用のメタラッパを自動的に生成する第8の命令セット
を上記アプリケーションソースファイルに挿入する手段
を備え、 上記メタラッパは、上記反映ソフトウェアメソッドが呼
び出されたときに、上記反映ソフトウェアメソッドのパ
ラメータを上記リフレクタに設けることを特徴とする請
求項11に記載のコンピュータ装置。
14. The system further comprising means for inserting an eighth instruction set into the application source file for automatically generating a meta wrapper for the reflection software method, wherein the meta wrapper is called when the reflection software method is called. 12. The computer device according to claim 11, wherein parameters of the reflection software method are provided in the reflector.
【請求項15】 さらに、上記メタオブジェクトが上記
適応クラスの第2のインスタンスの内部状態を得るよう
にさせるイントロスペクションメソッドを発生する第9
の命令セットを、上記アプリケーションソースファイル
に挿入する手段を備える請求項11に記載のコンピュー
タ装置。
15. The method according to claim 9, further comprising generating an introspection method that causes the meta-object to obtain an internal state of a second instance of the adaptive class.
The computer device according to claim 11, further comprising means for inserting the instruction set into the application source file.
【請求項16】 さらに、上記メタオブジェクトが上記
適応クラスの第2のインスタンスのベースレベルをアク
セスするようにさせる中間構造を形成する第10の命令
セットを、上記アプリケーションソースファイルに挿入
する手段を備える請求項15に記載のコンピュータ装
置。
16. The application source file further comprises means for inserting 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 15.
【請求項17】 コンピュータ装置における汎用分散適
応アプリケーションを開発するソフトウェアプラットホ
ームにおいて、 適応クラスを記述及び定義するキーワードが内部に組み
込まれた適応ソフトウェアアプリケーションのソースコ
ードを低レベルの発生コードに変換するプリコンパイラ
と、 上記低レベルの発生コードを機械実行可能なコードにコ
ンパイルするコンパイラとを備え、 上記プリコンパイラは、上記キーワードを検出して、上
記適応クラスが適応ソフトウェアメソッドを含んでいる
ことを上記キーワードが示しているときは、上記適応ク
ラスの第1のインスタンスの生成の際にソフトウェアセ
レクタを生成する所定の第1の命令セットを上記アプリ
ケーションソースファイルに挿入することによって、上
記適用クラスのコンストラクタを拡張するとともに、上
記第1のインスタンスが終了したときに、上記ソフトウ
ェアセレクタを削除する所定の第2の命令セットを上記
アプリケーションソースコードに挿入することによっ
て、上記適用クラスのデストラクタを拡張することを特
徴とするソフトウェアプラットホーム。
17. A software platform for developing a general-purpose distributed adaptive application in a computer device, comprising: a precompiler for converting source code of an adaptive software application into which low-level generated code incorporates keywords for describing and defining an adaptive class. And a compiler that compiles the low-level generated code into machine-executable code. The precompiler detects the keyword and determines that the adaptive class contains an adaptive software method. If so, by inserting a predetermined first instruction set for generating a software selector into the application source file when generating the first instance of the adaptive class, Extending the destructor of the applicable class by inserting a predetermined second instruction set for deleting the software selector into the application source code when the first instance is completed, while extending the first instance. A software platform characterized by:
【請求項18】 上記プリコンパイラは、上記適応クラ
スが反映ソフトウェアメソッドを含んでいることを上記
キーワードが表しているときは、上記適応クラスの第2
のインスタンスの生成の際にソフトウェアリフレクタを
生成する所定の第3の命令セットを上記アプリケーショ
ンソースコードに挿入することによって上記コンストラ
クタを拡張するとともに、上記第2のインスタンスが終
了したときに、上記ソフトウェアリフレクタを削除する
所定の第4の命令セットを上記アプリケーションソース
コードに挿入することによって、上記デストラクタを拡
張することを特徴とする請求項18に記載のソフトウェ
アプラットホーム。
18. The precompiler may further comprise: if the keyword indicates that the adaptation class includes a reflection software method, a second one of the adaptation class.
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. The software platform of claim 18, wherein the destructor is extended by inserting a predetermined fourth set of instructions into the application source code that removes the destructor.
【請求項19】 さらに、上記ソフトウェアアプリケー
ションプログラムの多数の適応オブジェクトの適応性を
制御する適応マネージャを備える請求項18に記載のソ
フトウェアプラットホーム。
19. The software platform according to claim 18, further comprising an adaptation manager that controls the adaptability of a number of adaptation objects of the software application program.
【請求項20】 上記プリコンパイラは、具象化時に上
記第1のインスタンスを上記適応マネージャに登録する
第5の命令セットを上記アプリケーションソースファイ
ルに挿入し、上記適応マネージャは、実行時における上
記適応ソフトウェアアプリケーションプログラムの実行
環境の変化に応じて上記セレクタを変更することによっ
て、上記第1のインスタンスの適応性を制御することを
特徴とする請求項19に記載のソフトウェアプラットホ
ーム。
20. The precompiler inserts, into the application source file, a fifth instruction set for registering the first instance in the adaptation manager at the time of materialization, wherein the adaptation manager executes the adaptation software at the time of execution. 20. The software platform according to claim 19, wherein the adaptability of the first instance is controlled by changing the selector according to a change in an execution environment of an application program.
【請求項21】 上記プリコンパイラは、具象化時に上
記第2のインスタンスを上記適応マネージャに登録する
第6の命令セットを上記アプリケーションソースファイ
ルに挿入し、上記適応マネージャは、実行時における上
記適応ソフトウェアアプリケーションプログラムの実行
環境の変化に応じて上記セレクタを変更することによっ
て、上記第2のインスタンスの適応性を制御することを
特徴とする請求項19に記載のソフトウェアプラットホ
ーム。
21. 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. 20. The software platform according to claim 19, wherein the adaptability of the second instance is controlled by changing the selector according to a change in an execution environment of an application program.
【請求項22】 上記プリコンパイラは、上記の多数の
インプリメンテーション用のスイッチングラッパを自動
的に生成する第7の命令セットを上記アプリケーション
ソースコードに挿入し、上記スイッチングラッパは、上
記適応ソフトウェアメソッドの呼び出されたときに、上
記セレクタ内に格納されている情報に応じて上記多数の
インプリメンテーションの1つを選択することを特徴と
する請求項18に記載のソフトウェアプラットホーム。
22. The precompiler inserts into the application source code a seventh instruction set that automatically generates the switching wrappers for the multiple implementations, wherein the switching wrapper includes 19. The software platform of claim 18, wherein when invoked, one of the multiple implementations is selected in response to information stored in the selector.
【請求項23】 上記プリコンパイラは、上記反映ソフ
トウェアメソッド用のメタラッパを自動的に生成する第
8の命令セットを上記アプリケーションソースファイル
に挿入し、上記メタラッパは、上記反映ソフトウェアメ
ソッドが呼び出されたときに、上記反映ソフトウェアメ
ソッドのパラメータを上記リフレクタに設けることを特
徴とする請求項18に記載のソフトウェアプラットホー
ム。
23. 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. 19. The software platform according to claim 18, wherein parameters of the reflection software method are provided in the reflector.
【請求項24】 上記プリコンパイラは、上記メタオブ
ジェクトが上記適応クラスの第2のインスタンスの内部
状態を得るようにさせるイントロスペクションメソッド
を発生する第9の命令セットを、上記アプリケーション
ソースファイルに挿入することを特徴とする請求項18
に記載のソフトウェアプラットホーム。
24. 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 adaptation class. 19. The method according to claim 18, wherein
Software platform as described in.
【請求項25】 上記プリコンパイラは、上記メタオブ
ジェクトが上記適応クラスの第2のインスタンスのベー
スレベルをアクセスするようにさせる中間構造を形成す
る第10の命令セットを、上記アプリケーションソース
ファイルに挿入し、ことを特徴とする請求項24に記載
のソフトウェアプラットホーム。
25. 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. The software platform of claim 24, wherein:
JP11125296A 1999-02-25 1999-04-30 Application program developing method and computer system for platform at time of distributed adaptive execution Pending JP2000250755A (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 Child Applications (1)

Application Number Title Priority Date Filing Date
JP2001139047A Division 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

Publications (1)

Publication Number Publication Date
JP2000250755A true JP2000250755A (en) 2000-09-14

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 After (1)

Application Number Title Priority Date Filing Date
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

Country Status (1)

Country Link
JP (2) JP2000250755A (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526770B2 (en) * 2003-05-12 2009-04-28 Microsoft Corporation System and method for employing object-based pipelines
JP4555000B2 (en) * 2003-06-20 2010-09-29 株式会社エヌ・ティ・ティ・ドコモ Method and apparatus for performing adaptive replication of applications using server-side code units
JP5847536B2 (en) 2011-10-28 2016-01-27 大和製罐株式会社 Internal pressure inspection device and internal pressure inspection method for sealed container

Also Published As

Publication number Publication date
JP2002014813A (en) 2002-01-18

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
US10048993B2 (en) Input management system and method
US6108661A (en) System for instance customization
JP4812337B2 (en) Method and apparatus for generating a form using a form type
US7873942B2 (en) Design-time architecture for self-contained patterns
JP5006314B2 (en) Managed automatic programming model
MacIntyre et al. Language-level support for exploratory programming of distributed virtual environments
JPH11288395A (en) Method and system for remote browsing of object
CN102893272A (en) Sharing and synchronization of objects
US8201147B2 (en) Generic XAD processing model
KR100895929B1 (en) Mechanism for asynchronous components to be application framework agnostic
US9253286B2 (en) Computer program composed from tabular storage structures that includes data and code
Raverdy et al. DART: a reflective middleware for adaptive applications
JP2000250755A (en) Application program developing method and computer system for platform at time of distributed adaptive execution
Samaan et al. Task models and interaction models in a multiple user interfaces generation process
US20070124326A1 (en) Extensible Controls for a Content Data Repository
JP4339376B2 (en) Object-oriented cursor tool
Menges et al. Inverting X: an architecture for a shared distributed window system
Nabielsky et al. Virtual terminal management model
Just et al. VjControl: an advanced configuration management tool for VR Juggler applications
Braubach et al. Tool-supported interpreter-based user interface architecture for ubiquitous computing
KR100784476B1 (en) Apparatus and method for building web application
Pavlidis Fundamentals of X programming: graphical user interfaces and beyond

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010109