プログラム分散化のための アスペクト指向言語 西澤無我 学籍番号 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
© Copyright 2024 ExpyDoc