プログラム分散化のための アスペクト指向言語

プログラム分散化のための
アスペクト指向言語
西澤無我
学籍番号 98-2072-7
1
動機 – 既存プログラムの分散化

既存プログラムの各機能を複数のマシンに分散
させたい
ex. 遠隔 GUI の操作
遠隔ホストのディスプレイに
JFrameオブジェクトを表示、etc

そのためには



遠隔ホスト
プログラムを機能により分割
分割した各パーツがお互いに
通信しながら動作するように書き換える
アプリケーション
ホスト
既存の分散プログラミング支援ツール
ex. JavaRMI
2
JavaRMI による分散化

JavaRMIの制約に従って以下のプログラムを手
で記述し、利用する




遠隔クラスのメソッドをインターフェースとして定義
遠隔サービスを利用するクライアントクラスを記述
独自のコンパイラでスタブまたはスケルトンを生成
etc …
これらの作業は大変骨が折れる
3
既存プログラム
bytecode
Addistant プロジェクト


既存プログラムをバイトコ
ード変換により自動的に
分散化することができる
分散化の指針を既存プロ
グラムと分離したファイル
に書くことができる
分散化の
指針
bytecode
変換
アプリケーション
ホストbytecode
遠隔ホスト
bytecode
4
分散化の指針の分離

既存プログラムから分散化に関する記述を分離
する必要性

プログラム全体の保守性が高まる


既存プログラムの可読性が保持される
分散環境の修正、変更があれば、分散化の指針のみを修
正、変更すればよい
Advanced Separation of Concerns として近年注目さ
れている技術である
5
Addistant の分散化モデル

旧版モデル


既存プログラムの
セマンティクスを保持
しながら分散させる
例えば、 2 つの遠隔ホスト
上で対戦する Tic-Tac-Toe
を作れない

元々1つの Window を2つに
異なる分散化モデルも必要
アプリケーション
ホスト
遠隔ホスト1
遠隔ホスト2
6
研究の成果 :
ORB の差し換え機能の実現

ORB の役割
変換後
bytecode
変換後
bytecode
以下の機能を実現
ORB
ORB
遠隔
 遠隔オブジェクト生成 アプリケーション ネットワーク
ホスト
ホスト
 遠隔メソッド呼び出し
などの分散オブジェクトのリクエストを作成、受信の
ための手段を提供している

ORB が分散化モデルを実装

ユーザ定義の ORB クラスで、Addistant のデフォ
ルト ORB を差し換えることができるようにした

ユーザ定義の ORB クラスは RequestBrokable インター
フェースを実装
7
ユーザ定義 ORBの例:
TicTacToe
多重化ORB


標準ORBの
分散化
Windowを1個生成
ORB
ORB
アプリケーション
ホスト
遠隔ホスト
多重化ORBの分散化
二重に生成
TicTacToe
Windowを1個生成
ORB
遠隔ホスト1
多重化ORB
ORB
アプリケーション
ホスト
遠隔ホスト2
8
ユーザ定義 ORBの例:
TicTacToe
多重化ORB


標準ORBの
分散化
メソッド呼出
ORB
ORB
アプリケーション
ホスト
遠隔ホスト
同じ引数で
二重に呼出
多重化ORBの分散化
TicTacToe
メソッド呼出
ORB
遠隔ホスト1
多重化ORB
ORB
アプリケーション
ホスト
遠隔ホスト2
9
分散化の指針の記述

分散化の指針
<orb classname=“RequestMultiplyingBroker”>
<remote name=“rmt”>
<host name=“taro” …/>
<host name=“yulian” …/>
</remote>

多重化ORBの実装
invokeRemoteMethod(…) {
for (int i = 0;i < stdorb.length; ++i) {
stdorb[i].invokeRemoteMethod(…);
}
}
10
実装状況

旧版の Addistant に相当の機能はほぼ完成



ORB の差し換え機能を実現



ORBが差し替え可能なように再設計
旧版の Addistant のコードは利用していない
多重化 ORB の実装が完成
Tic-Tac-Toe の実装が完成
全部で 3700 行
動作している対戦型
Tic-Tac-Toe
11
まとめ

新版 Addistant を設計・実装した


異なる分散化モデルに対応できる ORB の
実装をユーザ定義のクラスにより差し換え
可能にした
ユーザ定義ORBの例
多重化ORB
 対戦型 Tic-Tac-Toe を作成した

12
今後の方針


オブジェクト配置の指定を、new 式のある
クラスやメソッドの種類といった生成文脈
に応じて細かく指定
ネットワーク・ストリームの実装の差し換え
13