Presentation is loading. Please wait.

Presentation is loading. Please wait.

理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾

Similar presentations


Presentation on theme: "理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾"— Presentation transcript:

1 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
永続システムのための アスペクト指向言語 理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾

2 典型的なWEBアプリケーション インターネット掲示板 プログラムに関する部分 : データベースに関する部分
Servlet, Struts, JSP ( これらのコンテナとしてtomcat ) データベースに関する部分 リレーショナルデータベース, 永続クラス name : varchar(100) content : text WEBブラウザ ActionServlet(コントローラ) Index01Action.java 処理を記述 req.setAttribute (“name”, “Taro”); 永続クラス(モデル) String name; String content; // getter & setter <!– index01.jsp --> <html> …${name} </html> 一貫性を 保つ必要が ある JSP(ビュー) WEBコンテナ

3 モジュール化が困難 拡張機能をモジュールとして追加したい e.g. メールアドレス欄を追加 オブジェクト指向では困難 既存のAOPでは不十分
Actionクラスなどあちこちの変更が必要 既存のAOPでは不十分 別途データベースに関する部分の編集が必要 post name : varchar(100) content : text address : varchar(200) Index01Action.java Index02Action.java Map に name, content 情報を入れる (表示部分で利用) address も入れる データベースに 保存するもの (name, content)を、 Map に入れる address も入れる String name; String content; String address; Post.java ・・・

4 提案: 永続システムのためのアスペクト指向言語
データベースにまたがる関心事もモジュール化可能 GluonJ と AspectualStore を拡張して実現 ウィーブ時にデータベーススキーマの変更を行う ユーザはデータベーススキーマを変更する必要なし Ant タスクによる実行時前の織り込みをサポート post (データ ベース) 既存の アスペクト 指向言語で モジュール化 できる範囲 Index01 Action Index02 Action 本来 モジュール化 したい部分 Post (永続 クラス)

5 アドレス欄を追加するアスペクト post @Glue public class PostGlue { 永続クラス
name : varchar(100) content : text address : varchar(200) post 永続クラス @Glue public class PostGlue { static class Post extends Post{ @Type(length = 200, fixed = false) private String address; // setter & getter } // Action の方も変更 Post クラスに Addressフィールドを 追加 自動的に データベースの 変更を行う Post.java データベースの型の指定方法は三通り アノテーションをつけない場合 Type アノテーションをつける場合 SqlType アノテーションをつける場合 private String name; private String content; private String address;

6 全体の処理の流れ 1.Aspect 記述 2. データベーススキーマを変更 3. Weave (GluonJ )
カラム追加情報 管理用テーブル Javac (コンパイル) <本システム> application Class file DB Javassist (追加フィールド の取り出し) JDBC (DB 変更) GluonJ (weave) 2. データベーススキーマを変更 カラムの追加情報は専用のテーブルを作り管理 Weave : カラムを追加 Unweave: カラムを削除 3. Weave (GluonJ ) 永続クラスに対しては SQL 発行処理を追加 Javassist

7 データベーススキーマの変更方法 ユーザの用途に応じて選択可能 既存のテーブルにカラムを追加
アンウィーブ時にはカラムを削除 テーブル追加に比べて実行速度が速いと考えられる 既存のテーブルとは違うテーブルを作り、カラムを追加 (実装中) アンウィーブ時にデータを残す SQL 文を変更する必要あり => カラム追加に比べて実行速度が遅いと考えられる

8 デモ インターネット掲示板 アドレス欄を追加するモジュールをAspectQのアスペクトとして実装 ウィーブ・アンウィーブで容易に抜き差し可能
自動的に DB にも反映

9 関連研究 既存のアスペクト指向言語 (GluonJ, AspectJ 等) XDoclet, hbm2ddl + 既存のアスペクト指向言語
データベースまでを含む関心事はモジュール化不可能 XDoclet, hbm2ddl + 既存のアスペクト指向言語 永続クラスから XML 、XML からデータベーススキーマを作成するツール ソースコードレベルで解析(コメントを利用) ウィーブ時にソースコードを変更する必要あり ウィーブ時にコメントもコピーする必要あり

10 まとめと今後の課題 永続システムに対応したアスペクト指向言語 今後の課題 データベーススキーマの自動変更(実行時前)
データベースの型の指定方法は三通り アノテーションなし、Typeアノテーション、SqlTypeアノテーション データベーススキーマの変更方法 既存のテーブルにカラムを追加 既存のテーブルとは別テーブルを作成しカラムを追加 実行時前の織り込みをサポート 全体で2500行 今後の課題 既存のテーブルとは違うテーブルを作成する場合


Download ppt "理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾"

Similar presentations


Ads by Google