状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール

Slides:



Advertisements
Similar presentations
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
Advertisements

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
社会人学習講座 「Javaプログラミング概論」
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
WebサービスII (第10回) 2007年11月28日 植田龍男.
Iアプリプログラミング その1  鳥居秀徳.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
福盛 秀雄, 浜中 征志郎, 菅原 健一, 吉川 潤, 中山 周平 早稲田大学 村岡研究室
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
RMI ソフトウェア特論 第6回 /
アスペクト指向プログラミングと Dependency Injection の融合
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
UDPマルチキャストチャット                    空川幸司.
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
独習Java ・ 8.1  例外処理 ・ 8.2  catch ブロックの検索  12月 5日    小笠原 一恵.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
関心事ごとに視点を切り替えて プログラムを編集できる 統合開発環境の提案と実装
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
統合開発環境のための アスペクト指向システム
アスペクト指向言語による 例外処理の記述方法の改善
第6回 2007年6月1日 応用Java (Java/XML).
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
活性化のタイミング制御の実装を分離記述可能な分散動的アスペクト指向言語
既存Javaプログラム向け 分散化支援システムの開発
Recoveryアドバイスをもつ アスペクト指向システム
ソフトウェア制作論 平成30年11月21日.
アスペクト指向言語のための 独立性の高いパッケージシステム
アプリケーション依存の先読みが可能なO/Rマッピングツール
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
分散 Java プログラムのための アスペクト指向言語
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
同期処理のモジュール化を 可能にする アスペクト指向言語
C#プログラミング実習 第3回.
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
オープンソースソフトウェアに対する コーディングパターン分析の適用
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
プログラム分散化のための アスペクト指向言語
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
統合開発環境のための プログラミング言語拡張 フレームワーク
開発者との対話を活かした 横断的構造の表現
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

状況に応じて適切な 例外処理が行なえる アスペクト指向分散環境実験の 支援ツール 理学部 情報科学科 千葉研究室 指導教官 千葉 滋 助教授 01_08648 熊原 奈津子

分散環境実験と例外処理 分散環境での様々な研究のための実験 例外処理は重要 例:サーバマシンの性能改善 マシンの台数が増えると故障率が増加 クライアントマシンの台数によりサーバにかける 負荷をかえてサーバの性能を測定 クライアントマシン故障により想定した負荷がかからず 意図しない実験になる 代替マシンを使用するなどのリカバリ処理で回避

例外処理記述の難点(1) 例)Java言語のtry-catch文 リカバリ可能 try 文は散在 例外が発生しうる場所で 送信失敗 try 文 try { 実験プログラム送信 } catch (送信失敗 e) {  マシンを変えて送信 リカバリ可能 try 文は散在 try { 実験結果の回収 } catch (回収失敗 e) {  再試行 回収失敗

例外処理記述の難点(2) 例)Java言語のtry-catch文 リカバリが難しい try 文は1箇所にまとまる 例外処理を怠って 送信失敗 リカバリが難しい try 文は1箇所にまとまる try { 実験プログラムを実行 } catch (送信失敗 e){ ??? catch (回収失敗 e) {  ??? 回収失敗

実験支援ツール AOSted 分散環境での実験を支援する統合開発環境 実験プログラムを配布・起動 例外処理をアスペクト指向により分離して記述 ランタイム AOSted コンソール マシンの絵 AOSted ランタイム コンソールマシン 制御 プログラム (Java) 実験 プログラム (Jar) AOSted ランタイム クラスタマシン AOSted ランタイムは rcp で配布、              rsh で起動

制御プログラムと例外処理記述をコンパイル AOStedの操作画面 制御プログラム 進行状況 例外処理プログラム 制御プログラムと例外処理記述をコンパイル 制御プログラムを実行

制御プログラムの例 指定したホストにプログラムを配布 配布したプログラムを起動 プログラムを終了 実験結果を回収

例外処理の記述の分離 例外ハンドラにまとめて記述して登録 制御プログラムからも独立して記述可能 アスペクト指向の応用 例外ハンドラの引数 発生箇所と例外ハンドラの対応を宣言的に細かく指定(実装はまだ未完成) 例外ハンドラの引数 発生した例外の情報を含むオブジェクト リカバリー処理用のメソッドを提供

例外ハンドラの例 ホストを変更して再試行

例外ハンドルのメカニズム 制御プログラム 例外ハンドラ AOStedの内部実装 Load loader = new Load( hosts, port, program, args); loader.setErrorHandler(condition1, new MyLoadErrorHandler()); loader.setErrorHandler(condition2, new YourLoadErrorHandler()); loader.load(); … void setErrorHandler(condition, handler){ ハンドラを登録 } void load(){ try{ … }catch (UnknownHostException e){ FailEvent event = new FailEvent( host, e, …); eventが満たすconditionを検索; 満たせば対応するhandlerを取得; handler.unknownHost(event); 例外ハンドラ 無数の例外の中から選択されたものだけ class MyLoadErrorHandler extends LoadErrorHandler { public void unknownHost(FailEvent event){ //例外処理記述 } class YourLoadErrorHandler extends LoadErrorHandler { public void unknownHost(FailEvent event){ //例外処理記述 } class LoadErrorHandler { public void unknownHost(FailEvent event){ //何もしない }

AspectJとの比較 ライブラリのソースコードを考慮せずに例外処理が記述可能 AOStedでの記述例 AspectJでの記述例 class MyLoadErrorHandler extends LoadErrorHandler{ public void unknownHost(FailEvent e){ if (e.getHostName().equals("node03")){ …. } aspect ExceptionHandling { after(UnknownHostException e): withincode(void Transmitter.run())     && handler(e) { … } ライブラリの内部実装で 使用されているクラス

まとめ 分散環境実験を支援する開発環境 AOSted を開発 関連研究 今後の課題 実験プログラムの配布と起動 例外処理を分離して記述可能 LAM/MPI, FT-MPI, Cuckoo MPI[實本 ‘05] 今後の課題 例外処理に関係する実装を完成させる