(57)【特許請求の範囲】
【請求項１】
エージェント送信機構がエージェント受信機構へエージェントを移動しようとする際、エージェント送信機構は、エージェント・プログラム内のモジュール間の参照関係を、処理の起点となる起点モジュールに従い調べ、移動されるエージェントの実行に必要なモジュールのみをモジュール群として抜き出すステップと、
エージェント受信機構がエージェント送信機構から受信した内容からエージェントを復元して処理を実行するために、エージェント送信機構は、抜き出した前記モジュール群をエージェントの移動先のエージェント受信機構に送信するステップと
を含み、
前記抜き出すステップは、
エージェント送信機構が、起点モジュールの内部の、他のモジュールへ参照されるための参照情報であるシンボル情報からプログラムが実行されるために必要な要素を示す第１の表を求めるステップと、
エージェント送信機構が、起点モジュールから参照される可能性のあるモジュールの内部のシンボル情報からプログラムに含まれる要素を示す第２の表を求めるステップと、
エージェント送信機構が、求められた起点モジュールの第１の表と、参照される可能性のある各モジュールの第２の表とを比較し、第２の表の要素中に第１の表の要素のいずれかが含まれていたら、当該モジュールを第１の集合に追加することにより、エージェント送信機構が、起点モジュールが参照しており、起点モジュールの実行に必要なモジュールの第１の集合を計算するステップと、
エージェント送信機構が、第１の集合の各モジュールが前記モジュール群に含まれていない場合に前記モジュール群に第１の集合の当該モジュールを追加する処理を、各モジュールについて再帰的に実行することで、起点モジュールが参照しており該起点モジュールの実行に必要なモジュールの集合である前記モジュール群を求めるステップと、
を含む分散処理方法。
【請求項２】
前記送信するステップは、エージェント・プログラムのオブジェクトとなるエージェント・データと抜き出されたモジュール群とを、エージェント受信機構に一括に送信することを特徴とする請求項１に記載の分散処理方法。
【請求項３】
エージェント・データを受信することでエージェントの移動が依頼されると、エージェント・データに基づき起点モジュールを得るステップをさらに含むことを特徴とする請求項１または２に記載の分散処理方法。
【請求項４】
前記送信するステップにより送信された前記モジュール群によるエージェントをエージェント受信機構が実行中に、エージェント受信機構からエージェントの実行を継続するために必要な他のモジュールの送信要求を受信するステップと、
前記他のモジュールをエージェント受信機構に送信するステップとをさらに含む請求項１乃至３のいずれかに記載の分散処理方法。
【請求項５】
ユーザにより指定されたモジュールを、エージェント受信機構に送信するモジュール群の集合に追加するステップをさらに含む請求項１乃至４のいずれかに記載の分散処理方法。
【請求項６】
エージェント送信機構がエージェント受信機構へエージェントを移動しようとする際、エージェント送信機構は、エージェント・プログラム内のモジュール間の参照関係を、処理の起点となる起点モジュールに従い調べ、移動されるエージェントの実行に必要なモジュールのみをモジュール群として抜き出すステップと、
エージェント受信機構がエージェント送信機構から受信した内容からエージェントを復元して処理を実行するために、エージェント送信機構は、抜き出した前記モジュール群をエージェントの移動先のエージェント受信機構に送信するステップと
を含み、
前記抜き出すステップは、
エージェント送信機構が、起点モジュールの内部の、他のモジュールへ参照されるための参照情報であるシンボル情報からプログラムが実行されるために必要な要素を示す第１の表を求めるステップと、
エージェント送信機構が、起点モジュールから参照される可能性のあるモジュールの内部のシンボル情報からプログラムに含まれる要素を示す第２の表を求めるステップと、
エージェント送信機構が、求められた起点モジュールの第１の表と、参照される可能性のある各モジュールの第２の表とを比較し、第２の表の要素中に第１の表の要素のいずれかが含まれていたら、当該モジュールを第１の集合に追加することにより、エージェント送信機構が、起点モジュールが参照しており、起点モジュールの実行に必要なモジュールの第１の集合を計算するステップと、
エージェント送信機構が、第１の集合の各モジュールが前記モジュール群に含まれていない場合に前記モジュール群に第１の集合の当該モジュールを追加する処理を、各モジュールについて再帰的に実行することで、起点モジュールが参照しており該起点モジュールの実行に必要なモジュールの集合である前記モジュール群を求めるステップと、
をコンピュータに実行させるための分散処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
モジュールを複数有するエージェント・プログラムを含むエージェントと、
エージェント受信機構によりエージェント・プログラムに従い処理を実行させるために、前記エージェントをエージェント受信機構に送信するエージェント送信機構と
を備え、
前記エージェント送信機構は、
前記エージェント送信機構が前記エージェント受信機構へ前記エージェントを移動しようとする際、エージェント・プログラム内のモジュール間の参照関係を、処理の起点となる起点モジュールに従い調べ、移動される前記エージェントの実行に必要なモジュールのみをモジュール群として抜き出す手段と、
前記エージェント受信機構が前記エージェント送信機構から受信した内容から前記エージェントを復元して処理を実行するために、抜き出した前記モジュール群を前記エージェントの移動先の前記エージェント受信機構に送信する手段と
を備え、
前記抜き出す手段は、
前記エージェント送信機構が、起点モジュールの内部の、他のモジュールへ参照されるための参照情報であるシンボル情報からプログラムが実行されるために必要な要素を示す第１の表を求める手段と、
前記エージェント送信機構が、起点モジュールから参照される可能性のあるモジュールの内部のシンボル情報からプログラムに含まれる要素を示す第２の表を求める手段と、
前記エージェント送信機構が、求められた起点モジュールの第１の表と、参照される可能性のある各モジュールの第２の表とを比較し、第２の表の要素中に第１の表の要素のいずれかが含まれていたら、当該モジュールを第１の集合に追加することにより、前記エージェント送信機構が、起点モジュールが参照しており、起点モジュールの実行に必要なモジュールの第１の集合を計算する手段と、
前記エージェント送信機構が、第１の集合の各モジュールが前記モジュール群に含まれていない場合に前記モジュール群に第１の集合の当該モジュールを追加する処理を、各モジュールについて再帰的に実行することで、起点モジュールが参照しており該起点モジュールの実行に必要なモジュールの集合である前記モジュール群を求める手段と、
を有することを特徴とする分散処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散処理方法、分散処理プログラムを記録した記録媒体及び分散処理装置に係り、特に、分散処理コンピュータシステムの構築に利用することができるエージェント方式による分散処理方法、分散処理プログラムを記録した記録媒体及び分散処理装置に関する。
【０００２】
【従来の技術】
一般に、分散処理コンピュータシステムでは、処理の一部を適宜別のコンピュータで実行することにより、実行速度の改善、システム構築費用の低減、保守管理の簡素化などを実現する。処理を別のコンピュータに移動する機構の実現方式のうち、代表的なもののひとつがエージェント方式である。この方式では、移動された処理の実行に必要なデータだけでなく、プログラムも合わせて移動先のコンピュータに送信され、そこで処理が実行される。
【０００３】
従来、エージェント方式を採用しているシステムは、General Magic 社の Telescript のように一括送信方式か、Sun Microsystems 社の Java applet や IBM社の Aglets のように遅延送信方式か、あるいは両方式を混合した方式を採用している。一括送信方式では、開発者があらかじめ指定したプログラム全体を一括して移動先のコンピュータへ送信する。一方、遅延送信方式では、プログラムを単位モジュールに分割して、移動先のコンピュータが必要とするモジュールだけを送信する。Java applet や Aglets では、モジュールの単位として、プログラミング言語の言語要素であるクラスを採用している。
【０００４】
図８に、遅延送信方式についての構成図を示す。このシステムは、エージェント送信機構１０及びエージェント受信機構２を備える。また、図９に、遅延送信方式についてのフローチャートを示す。これらの図に従い、遅延送信方式について説明する。このフローチャートは、エージェント受信機構２の処理についてのものである。
▲１▼まず、エージェント送信機構１０がモジュールＡを送信すると、エージェント受信機構２はそれを受信する。（Ｓ２０１）。
▲２▼エージェント受信機構２は、受け取ったモジュールＡを実行開始する（Ｓ２０３）。
▲３▼もしモジュールＡの実行中に、実行の継続にはモジュールＢが必要なことが判明したら（Ｓ２０５）、
（ア）エージェント送信機構１０に、モジュールＢの送信を要求する（Ｓ２０７）。
（イ）エージェント送信機構１０はモジュールＢを送信し、エージェント受信機構２はそれを受信する（Ｓ２０９）。
（ウ）エージェント受信機構２は、受け取ったモジュールＢを使い、処理が終了するまで処理▲３▼に戻り（Ｓ２１１）、継続する。
【０００５】
【発明が解決しようとする課題】
しかしながら、エージェント方式の内、一括送信方式では、移動先のコンピュータが必要ない部分のプログラムまで一括して送信されるので、通信量が大きくなってしまう。これを避けるためには、どの部分とどの部分だけを送信すればよいか、開発者が明示的にシステムに指示してやればよいが、これは開発者にとっては負担であり、結果的に開発費の増大をまねくことになりかねない。
【０００６】
一方、エージェント方式の内、遅延送信方式では、無駄な部分のプログラムを送信することはないが、移動先のコンピュータが処理の進行につれて新たなモジュールを必要と判断するたびに、そのモジュールをひとつひとつ送信しなければならない。このため、移動先のコンピュータが処理を実行している間中、エージェントの移動元と移動先の間に通信路を確保しておかなければならない。よって、通信資源のむだをまねくことになりかねず、また、コンピュータ間の通信路として、例えば、常時通信可能とは限らない電子メールのような媒体を用いることができなくなる。
【０００７】
本発明は、以上の点に鑑み、移動させるプログラムの量を削減し、通信量の低減による通信時間の短縮、移動先のコンピュータで必要となるメモリ量の低減などを達成することができる分散処理方法、分散処理プログラムを記録した記録媒体及び分散処理装置を提供することを目的とする。
【０００８】
本発明は、エージェント送信機構が、親エージェントのプログラム部を構成する単位モジュール（クラス・ファイル）群の中から、子エージェントの処理に必要なモジュール（クラス・ファイル）だけを選び出して、子エージェントの移動先のコンピュータに送信することにより、一括送信方式を用いた場合に比べ、送信するモジュール（クラス・ファイル）の数を削減することを目的とする。また、本発明は、子エージェントの処理を開始する前に、エージェント送信機構からエージェント受信機構へ、必要なモジュール（クラス・ファイル）を全て一括して送信できるため、遅延送信方式を用いた場合と異なり、子エージェントの移動開始から移動先で処理を開始するまでの間だけ、移動元と移動先のコンピュータの間で通信が可能であればよく、通信資源の省力化を達成することを目的とする。そして、本発明は、エージェント送信機構とエージェント受信機構の間の通信路として、常時通信経路が接続されているとは限らない通信媒体・通信資源（例えば、フロッピーディスクやＣＤ−ＲＯＭに記録したデータを郵送または人手で受信側へ届けるような方法や、電子メールや任意のプロトコル等によるネットワークを用いた送信方法、等）を用いることができる分散処理を提供することを目的とする。
【０００９】
本発明の第１の解決手段によると、
エージェント送信機構がエージェント受信機構へエージェントを移動しようとする際、エージェント送信機構は、エージェント・プログラム内のモジュール間の参照関係を、処理の起点となる起点モジュールに従い調べ、移動されるエージェントの実行に必要なモジュールのみをモジュール群として抜き出すステップと、
エージェント受信機構がエージェント送信機構から受信した内容からエージェントを復元して処理を実行するために、エージェント送信機構は、抜き出した前記モジュール群をエージェントの移動先のエージェント受信機構に送信するステップと
を含み、
前記抜き出すステップは、
エージェント送信機構が、起点モジュールの内部の、他のモジュールへ参照されるための参照情報であるシンボル情報からプログラムが実行されるために必要な要素を示す第１の表を求めるステップと、
エージェント送信機構が、起点モジュールから参照される可能性のあるモジュールの内部のシンボル情報からプログラムに含まれる要素を示す第２の表を求めるステップと、
エージェント送信機構が、求められた起点モジュールの第１の表と、参照される可能性のある各モジュールの第２の表とを比較し、第２の表の要素中に第１の表の要素のいずれかが含まれていたら、当該モジュールを第１の集合に追加することにより、エージェント送信機構が、起点モジュールが参照しており、起点モジュールの実行に必要なモジュールの第１の集合を計算するステップと、
エージェント送信機構が、第１の集合の各モジュールが前記モジュール群に含まれていない場合に前記モジュール群に第１の集合の当該モジュールを追加する処理を、各モジュールについて再帰的に実行することで、起点モジュールが参照しており該起点モジュールの実行に必要なモジュールの集合である前記モジュール群を求めるステップと、
を含む分散処理方法、及び、これら各ステップをコンピュータに実行させるための分散処理プログラムを記録したコンピュータ読み取り可能な記録媒体を提供する。
【００１０】
本発明の第２の解決手段によると、
モジュールを複数有するエージェント・プログラムを含むエージェントと、
エージェント受信機構によりエージェント・プログラムに従い処理を実行させるために、前記エージェントをエージェント受信機構に送信するエージェント送信機構と
を備え、
前記エージェント送信機構は、
前記エージェント送信機構が前記エージェント受信機構へ前記エージェントを移動しようとする際、エージェント・プログラム内のモジュール間の参照関係を、処理の起点となる起点モジュールに従い調べ、移動される前記エージェントの実行に必要なモジュールのみをモジュール群として抜き出す手段と、
前記エージェント受信機構が前記エージェント送信機構から受信した内容から前記エージェントを復元して処理を実行するために、抜き出した前記モジュール群を前記エージェントの移動先の前記エージェント受信機構に送信する手段と
を備え、
前記抜き出す手段は、
前記エージェント送信機構が、起点モジュールの内部の、他のモジュールへ参照されるための参照情報であるシンボル情報からプログラムが実行されるために必要な要素を示す第１の表を求める手段と、
前記エージェント送信機構が、起点モジュールから参照される可能性のあるモジュールの内部のシンボル情報からプログラムに含まれる要素を示す第２の表を求める手段と、
前記エージェント送信機構が、求められた起点モジュールの第１の表と、参照される可能性のある各モジュールの第２の表とを比較し、第２の表の要素中に第１の表の要素のいずれかが含まれていたら、当該モジュールを第１の集合に追加することにより、前記エージェント送信機構が、起点モジュールが参照しており、起点モジュールの実行に必要なモジュールの第１の集合を計算する手段と、
前記エージェント送信機構が、第１の集合の各モジュールが前記モジュール群に含まれていない場合に前記モジュール群に第１の集合の当該モジュールを追加する処理を、各モジュールについて再帰的に実行することで、起点モジュールが参照しており該起点モジュールの実行に必要なモジュールの集合である前記モジュール群を求める手段と、
を有することを特徴とする分散処理装置を提供する。
【００１１】
【発明の実施の形態】
図１は、本発明の分散処理に関するシステムの概要構成図である。以下に本発明についての概略を説明する。このシステムは、エージェント送信機構１、エージェント受信機構２、エージェントプログラム３を備える。さらに、エージェントプログラム３は、モジュール群３０を有する。
【００１２】
エージェント送信機構１は、エージェント・ソフトウェアの移動時に、エージェントプログラム３の各モジュールについて、プログラムの単位モジュール間の参照関係を調べ、プログラム全体の中から、移動先のコンピュータでの実行に必要な部分だけを選択する。エージェント送信機構１は、選択されたモジュール群３０をエージェント受信機構２に一括送信する。なお、エージェント送信機構１は、オブジェクトについても、選択されたモジュールに関連するものをエージェント受信機構２に送信する。エージェント送信機構１とエージェント受信機構２の間の通信路として、常時通信経路が接続されているとは限らない通信媒体・通信資源を用いることができる。例えば、フロッピーディスクやＣＤ−ＲＯＭに記録したデータを郵送または人手で受信側へ届けるような方法や、電子メールや任意のプロトコル等によるネットワークを用いた送信方法などを用いることができる。このようにすることで、エージェントを効率よく送信する機構が実現される。
【００１３】
つぎに、一例として、Java 言語を使って構築されたエージェント方式のシステムについての、実施の形態を説明する。本発明は、Java言語に限らず、適宜の言語を使って構築された様々なエージェント方式に適用することができる。
【００１４】
図２に、分散処理方法に関するシステムの実施の形態の構成図を示す。このシステムは、エージェント送信機構１、エージェント受信機構２、親エージェント３１を備える。親エージェント３１は、プログラム部４、データ部５を含む。さらに、プログラム部４は、ひとつ又は複数の子エージェント・プログラム部４１を有し、子エージェント・プログラム部４１は、ひとつ又は複数のモジュールを含むモジュール群４２を有する。また、データ部５は、ひとつ又は複数の子エージェント・データ部５１を有する。
【００１５】
今、あるエージェント、即ち、親エージェント３１が、エージェント送信機構１により、エージェント受信機構２である別のコンピュータに、自身の処理の一部を子エージェントとして移動しようとしているとする。また、子エージェントは、処理の内容を指定する子エージェント・プログラム部４１と、処理に必要な情報をあらわす子エージェント・データ部５１を含む。それらはそれぞれ、親エージェント３１のプログラム部４、データ部５の一部でもある。
【００１６】
親エージェント３１は、まず子エージェント・データ部５１(例えば、Java 言語ではオブジェクトと呼ばれる)をエージェント送信機構１に渡して送信を依頼する(▲１▼参照)。エージェント送信機構１は、子エージェント・データ部５１に基づき、子エージェント・プログラム部４１の起点となる単位モジュールを得て、親エージェント３１のプログラム部４の中から子エージェント・プログラム部４１の実行に必要なモジュール群４２を抜き出す(▲２▼参照)。このとき、子エージェント・プログラム部４１の実行に必要なモジュールのみが選択される。エージェント送信機構１は、抜き出したモジュール群４２を子エージェント・データ部５１とあわせて、移動先のコンピュータ上のエージェント受信機構２に送る(▲３▼参照)。エージェント受信機構２は、受信内容（モジュール群４２、子エージェント・データ部５１）から、子エージェントを復元し、処理を実行させる。ここで、子エージェント・プログラム部４１の中の実行開始点（例えば、Java 言語の場合、最初に呼び出されるメソッド）としては、例えば、親エージェント３１がエージェント送信機構１を通じて送ってきたものを使うか、あるいはあらかじめ固定的に決まったものを使う。
【００１７】
Java 言語の場合、標準の直列化（Serialization）機構を用いると、子エージェント・データ部５１だけを親エージェント３１のデータ部５から抜き出して、移動先のエージェント受信機構２のコンピュータへ送信することができる。
【００１８】
例えば、Java 言語で書かれた親エージェント３１のプログラム部４は、クラス・ファイルと呼ばれる単位モジュールの集合である。したがって、子エージェントのプログラム部だけを親エージェント３１のプログラム部４から抜き出す作業は、親エージェント３１のモジュール（クラス・ファイル）群から、子エージェントの処理に必要なモジュール（クラス・ファイル）だけを選択的に抜き出すこととなる。具体的な手順は次のようになる。
【００１９】
まず、子エージェント・データ部５１（すなわち、オブジェクト）のクラス名を得る。オブジェクトのクラス名は、Java 言語の標準機構を用いて得ることができる（James Gosling, Bill Joy, Guy Steele, “The Java Language Specification”, Addison Wesley, 1996.、Tim Lindholm, Frank Yellin, “The Java Virtual Machine Specification”, Addison Wesley, 1997.、参照）。つぎに、クラス名から対応するモジュール（クラス・ファイル）の名前を得る。多くの Java 言語処理系の場合、クラス名中の ’. （ピリオド）’を ’/ (パス区切子)’ に置換し、末尾に’ .class ’を付加したものが、モジュール名（クラス・ファイル名）である。例えば名前が’ java.lang.String’ であるクラスに対応するモジュール（クラス・ファイル）の名前は’ java/lang/String.class’ である。
こうして得られたモジュール（クラス・ファイル）が、子エージェント・プログラム部４１の起点となる単位モジュールである。そこで本発明の分散処理によって、この単位モジュールから直接・間接に参照されている単位モジュールの集合を計算する。
【００２０】
つぎに、本発明の動作の詳細について説明する。
本発明は、主に、エージェント送信機構１が、プログラムの送信開始直前に、移動先のエージェント受信機構２で必要となるプログラムの範囲をソフトウェアにより自動的に決定し、エージェント送信機構１がエージェント受信機構２にその範囲だけを一括して送信することで、従来のエージェント方式の課題を解決する技術である。本発明では、まず、指定されたプログラムの単位モジュールを起点とし、そのプログラムが参照している他の単位モジュールを順にたどってゆき、起点となる単位モジュールから直接・間接に参照されている単位モジュールの集合を計算する。そして、エージェント送信機構１は、計算した集合に含まれる全ての単位モジュールだけを一括して、移動先のエージェント受信機構２に関連するコンピュータへ送信する。これにより、従来の一括送信方式と異なり、プログラムの無駄な部分まで送信することがなくなる。また、従来の遅延送信方式と異なり、移動の初期に一括して必要なプログラムを送信してしまうので、送信後は移動元と移動先の間で通信路を確保しておく必要がない。
【００２１】
図３は、参照されている単位モジュールの計算についてのフローチャートである。
▲１▼まず、エージェント送信機構１は、親エージェント３１から起点となるモジュールａを受け取る（Ｓ３０１）。
▲２▼つぎに、エージェント送信機構１は、空の集合Ｓを用意する（Ｓ３０３）。
▲３▼エージェント送信機構１は、モジュールａが参照しており、モジュールａの実行に必要なモジュールの集合Ｔを計算する（Ｓ３０５）(詳細は後述)。
▲４▼集合Ｔの各モジュールｍｉ(ｉ＝０、１、２、…)について、もし集合Ｓに含まれていないなら（Ｓ３０７）、
（ア）集合Ｓにモジュールｍｉを加える（Ｓ３０９）。
（イ）モジュールａをモジュールｍｉと読みかえて、処理▲３▼以下を再帰的に実行する（Ｓ３１１）。
▲５▼全モジュールｍｉについて上述の処理▲３▼、▲４▼を再帰的に実行した結果、集合Ｓが、モジュールａから直接・間接に参照されているモジュールの集合をあらわす（Ｓ３１３）。
【００２２】
このようにして、モジュールの集合Ｔから重複したモジュールを取りのぞくことで、容量の一層小さい集合Ｓを形成することができる。
つぎに、処理▲３▼について詳述する。
【００２３】
起点となる単位モジュールａと直接・間接に参照しあっている単位モジュールを調べる方法は、ソフトウェアのコンパイル時に、プログラムのどの単位モジュールを選んでリンクするかを決定する際に、一般的に使われている方法を用いる。ほとんどのプログラミング言語では、コンパイル済みの単位モジュールが他のモジュールへ参照されるための参照情報（シンボル情報）を含む。この参照情報を調べることで、リンクに含めなければならない単位モジュールの集合を計算することができる。本発明では、リンク処理ではなく、エージェント方式の実現に、この方法を利用するのが特徴である。リンク処理の場合、ライブラリから必要な単位モジュールを選び出すものであるが、本発明のようなエージェント方式の場合、動作中のプログラムの中からエージェントとしてエージェント受信機構２に移動させる部分を抜き出すようにしている。
【００２４】
図４に、与えられたモジュールが参照しているモジュールの集合の計算についての説明図を示す。これは、図３の処理▲３▼に関する説明図である。図４（ａ）に示すように、各モジュールの内部構造としては、シンボル情報４５とコンパイル済みプログラム４６を含む。シンボル情報４５の中には、例えば、コンパイル済みのプログラム４６に含まれる要素の一覧を示す表Ａ  ４７と、コンパイル済みプログラム４６が実行されるために必要な要素の一覧を示す表Ｂ  ４８が含まれる。表Ａ  ４７には、例えば、コンパイル済みプログラム４６に含まれる、（ｅＡ１）他のモジュールから呼び出し可能な関数、(ｅＡ２)参照する大域変数、(ｅＡ３)生成可能なクラス、(ｅＡ４)呼び出し可能なメソッド、等が含まれる。表Ｂ  ４８には、例えば、コンパイル済みプログラム４６が、（ｅＢ１）呼び出す関数、(ｅＢ２)参照する大域変数、(ｅＢ３)生成するオブジェクトのクラス、(ｅＢ４)呼び出すメソッド、等が含まれる。
【００２５】
図５に、与えられたモジュールが参照しているモジュールの集合の計算についてのフローチャートを示す。あるモジュールａから参照されるモジュールの集合Ｔは、次の手順で計算することができる。モジュール（クラス・ファイル）の中には、図４の表Ａ  ４７、表Ｂ  ４８に対応する情報が、定められた仕様にしたがって含まれている。
▲１▼まず、空の集合Ｔを用意する（Ｓ４０１）。
▲２▼モジュールａの内部のシンボル情報４５からコンパイル済みプログラム４６が必要とする要素についての表Ｂを取り出す（Ｓ４０３）。
▲３▼モジュールａから参照される可能性のある全てのモジュールｍｉ(移動する子エージェント内の子エージェント・プログラム部４１内の全てのモジュール)について、各モジュールｍｉの内部のシンボル情報４５からコンパイル済みプログラム４６に含まれる要素についての表Ａを取り出す（Ｓ４０９）。
▲４▼図４（ｂ）に示されるように、取り出した表Ａと表Ｂとを比較し（Ｓ４１０）、表Ａの要素ｅＡ１、ｅＡ２、ｅＡ３、ｅＡ４…等中に表Ｂの要素ｅＢ１、ｅＢ２、ｅＢ３、ｅＢ４…等のいずれかが含まれていたら、モジュールｍｉを集合Ｔに加える（Ｓ４１１）。
▲５▼これらの処理を全モジュールについて繰り返し、得られた集合Ｔが、モジュールａから参照されるモジュールの集合である（Ｓ４１３）。
【００２６】
つぎに、本発明の分散処理の他の実施の形態について説明する。
上述の方法で、ほとんどの場合、必要なプログラムの単位モジュールを抜き出すことができる。しかしプログラムが動的に参照する単位モジュールを指定している場合、上述の方法だけでは、必要な単位モジュールを全て抜き出せない場合がある。例えば、Java 言語で reflection API を使用したプログラムは、図４のシンボル情報の表Ｂに含まれない単位モジュールを必要とすることがある。そのような場合には、従来の遅延送信方式と本発明の分散処理方法を組み合わせることで、この問題を回避することができる。すなわち、本発明で一括送信したプログラムの中に、必要な単位モジュールが含まれていなかったときは、その単位モジュールだけ、遅延送信方式で後から送信するようにすればよい。
【００２７】
図６は、遅延送信方式と組み合わせた分散処理方法についてのフローチャートである。
以下に、図６のフローチャートに従い処理を説明する。
▲１▼まず、図３、図５のフローチャート等で説明したように、上述した本発明の分散処理により、起点となるモジュールＡの実行に必要なモジュールの集合Ｓを計算する（Ｓ５０１）。
▲２▼エージェント送信機構１がモジュールＡおよび集合Ｓを一括して送信する（Ｓ５０３）。
▲３▼エージェント受信機構２が受け取ったモジュールＡを実行開始する（Ｓ５０５）。
▲４▼もしモジュールＡの実行中に、実行の継続には集合Ｓに含まれないモジュールＢが必要なことが判明したら（Ｓ５０７）、
（ア）エージェント受信機構２は、エージェント送信機構１に、モジュールＢの送信を要求する（Ｓ５０９）。
（イ）エージェント送信機構１は、モジュールＢをエージェント受信機構２に送信する（Ｓ５１１）。
（ウ）エージェント受信機構２は、受け取ったモジュールＢを使い、処理を継続する（Ｓ５１３）。
（エ）処理▲４▼に戻り、実行を継続する。
【００２８】
つぎに、本発明の分散処理のさらに他の実施の形態について説明する。
この実施の形態では、開発者が一部の単位モジュールを明示的に指定できるようにすることで、その単位モジュールが、起点となる単位モジュールと参照関係にない場合でも、その単位モジュールをエージェント送信機構１が送信する単位モジュールの集合に含めることができる。この実施の形態は、画像データなど、プログラムの単位モジュール以外にも移動先のコンピュータへ送信しなければならない情報がある場合、それらを送信データの中に含めることにも応用できる。
【００２９】
図７に、開発者が一部の単位モジュールを明示的に指定し、その単位モジュールも送信する単位モジュールの集合に含める方法についてのフローチャートを示す。
▲１▼図３及び図５のアルゴリズム等で、起点となるモジュールａから直接・間接に参照されているモジュールの集合Ｓを計算する（Ｓ６０１）。
▲２▼エージェント送信機構１を駆動する利用者、管理者等、あるいはプログラムが、図３、図５のアルゴリズムでは集合Ｓに含まれなかったモジュールを集合Ｓに明示的にマニュアル又は自動で追加する（Ｓ６０３）。
▲３▼作成された集合Ｓが送信するべきモジュールの集合である。
【００３０】
本発明の分散処理方法は、分散処理プログラムを記録したコンピュータ読み取り可能な記録媒体、分散処理プログラムを含みコンピュータの内部メモリにロード可能なプログラム又はプログラム製品、分散処理プログラムを含みコンピュータが使用可能な記録媒体にストアされたプログラム又はプログラム製品等により提供されることができる。
【００３１】
【発明の効果】
本発明によると、移動させるプログラムの量を削減し、通信量の低減による通信時間の短縮、移動先のコンピュータで必要となるメモリ量の低減などを達成することができる。
本発明によると、エージェント送信機構は、親エージェントのプログラム部を構成する単位モジュール（クラス・ファイル）群の中から、子エージェントの処理に必要なモジュール（クラス・ファイル）だけを選び出して、子エージェントの移動先のコンピュータに送信することができる。このため、本発明によると、一括送信方式を用いた場合に比べ、送信するモジュール（クラス・ファイル）の数を削減することができる。また、本発明によると、子エージェントの処理を開始する前に、エージェント送信機構からエージェント受信機構へ、必要なモジュール（クラス・ファイル）を全て一括して送信できるため、遅延送信方式を用いた場合と異なり、子エージェントの移動開始から移動先で処理を開始するまでの間だけ、移動元と移動先のコンピュータの間で通信が可能であればよく、通信資源の省力化を達成することができる。このため、本発明によると、エージェント送信機構とエージェント受信機構の間の通信路として、常時通信経路が接続されているとは限らない通信媒体・通信資源（例えば、フロッピーディスクやＣＤ−ＲＯＭに記録したデータを郵送または人手で受信側へ届けるような方法や、電子メールや任意のプロトコル等によるネットワークを用いた送信方法、等）を用いることができる。
【図面の簡単な説明】
【図１】本発明の分散処理方法に関するシステムの概要構成図。
【図２】分散処理方法に関するシステムの実施の形態の構成図。
【図３】参照されている単位モジュールの計算についてのフローチャート。
【図４】与えられたモジュールが参照しているモジュールの集合の計算についての説明図。
【図５】与えられたモジュールが参照しているモジュールの集合の計算についてのフローチャート。
【図６】遅延送信方式と組み合わせた分散処理方法についてのフローチャート。
【図７】開発者が一部の単位モジュールを明示的に指定し、その単位モジュールも送信する単位モジュールの集合に含める方法についてのフローチャート。
【図８】遅延送信方式についての構成図。
【図９】遅延送信方式についてのフローチャート。
【符号の説明】
１  エージェント送信機構
２  エージェント受信機構
３  エージェントプログラム
４  プログラム部
５  データ部
３０  モジュール群
３１  親エージェント
４１  子エージェント・プログラム部
５１  子エージェント・データ部
【図１】
0004418094.tif 000002
【図２】
0004418094.tif 000003
【図３】
0004418094.tif 000004
【図４】
0004418094.tif 000005
【図５】
0004418094.tif 000006
【図６】
0004418094.tif 000007
【図７】
0004418094.tif 000008
【図８】
0004418094.tif 000009
【図９】
0004418094.tif 000010