Report: REFLECTION Kyoto Research Park

Slides:



Advertisements
Similar presentations
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
Advertisements

Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
コンパイラ 2011年10月17日
IDLTM/IONTMを使用した UDON (Universe via Darts ON-line) プロトタイプの作成
稲葉 一浩 (k.inaba) Python と プログラミングコンテスト 稲葉 一浩 (k.inaba)
COPPER/FINESSE System構築
2006/11/30 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
Dynamic AOPと その実装手法について
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
読んだもの1 P0145R1: Refining Expression Evaluation Order for Idiomatic C++
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
第27 回ソフトウェア工学国際会議(ICSE2005)参加報告
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
異種センサを用いた人の行動検知 研究概要 研究の独自性 isi担当 高汐グループ成果 スライド到着待ち yasu担当.
条件式 (Conditional Expressions)
AspectScope によるアスペクトとクラスのつながりの視覚化
コンパイラ 2012年10月15日
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
同期的にアドバイスを活性化できる分散動的アスペクト指向システム
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
遠隔ポイントカット - 分散アスペクト指向プログラミング のための言語機構
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
プログラミング言語入門 手続き型言語としてのJava
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
プログラミング言語入門.
アップデート 株式会社アプライド・マーケティング 大越 章司
Javaプログラムの変更を支援する 影響波及解析システム
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
社会シミュレーションのための モデル作成環境
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
pointcut に関して高い記述力を持つ アスペクト指向言語 Josh
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
Java における 先進的リフレクション技術
東京工科大学 コンピュータサイエンス学部 亀田弘之
関数型言語による Timed CSP 検証技法の提案
 型推論3(MLの多相型).
B演習(言語処理系演習)第2回 田浦.
モデル検査(5) CTLモデル検査アルゴリズム
JAVAバイトコードにおける データ依存解析手法の提案と実装
マイグレーションを支援する分散集合オブジェクト
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
統合開発環境によって表現された 言語機構によるコードのモジュール化
ETPB: Extraction of Context from Pedestrians' Behavior
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
PROGRAMMING IN HASKELL
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
統合開発環境のための プログラミング言語拡張 フレームワーク
発表者: 稲葉 一浩 複雑ネットワーク・地図グラフ セミナー 2017/1/19
PROGRAMMING IN HASKELL
全体ミーティング 2010/05/19 渡邊 裕貴.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
回帰テストにおける実行系列の差分の効率的な検出手法
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
全体ミーティング(9/15) 村田雅之.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
1.2 言語処理の諸観点 (1)言語処理の利用分野
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
Static Enforcement of Security with Types
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

Report: REFLECTION 2001 @ Kyoto Research Park TABUCHI Naoshi (tabee@yl)

発表の概要 Program Overview Presentation Details Other Presentations A Formal Definition of Crosscuts Process-Algebraic Foundations of Aspect-Oriented Programming Other Presentations Comments

Program Overview: 初日(1/2) The Java Technology Workshop The Workshop on Experience with Reflective Systems Tutorials

Program Overview: 初日(2/2) とりあえず予備知識を仕入れるためTutorialに参加 (後藤さんすみません) 午前: Java Reflection の Tutorial 出なくてもよかったかも… 午後: AspectJ 入門 テロの影響でビデオ講義 AspectJ の Programming Style には結構魅かれた

Program Overview: 2日目 Keynote Talk (Gregor Kiczales) Reflection and SOC in Java Software Adaptation using Reflection and SOC Techniques Reflective Middleware for Distributed Mobile Applications Posters + Reception

Program Overview: 3日目 Testing and Verifications of Reflective and SOC systems Invited Talk (Hideyuki Tokuda) Foundations of Reflection and Separations of Concerns このあたりを後で紹介 遠足

Program Overview: 最終日 Software Methodologies for Separation of Concerns Panel Discussion

発表の概要 Program Overview Presentation Details Other Presentations A Formal Definition of Crosscuts Process-Algebraic Foundations of Aspect-Oriented Programming Other Presentations Comments

A Formal Definition of Crosscuts 先日、講義に来た Mario Südholt 氏らのグループ Aspect-Oriented なプログラムの動作のモデル化 特に crosscuts の定義と検出について

Background プログラムの本質 (functional aspect) とそれ以外の雑多な部分 (non-functional concern) を切り分けるが AOP の考え方 切り分けた物の再統合(Aspect Weaving)について形式的に理解したい 特に crosscut の定義と検出に対象を絞る

Crosscuts Crosscut とは… プログラム上の互いに関連するポイント プログラムの字面からは関連が読み取りにくい 「関連」の仕方は様々

Crosscuts: Examples (1/2) 例1: プログラムの随所でログを取りたい 従来: 必要な箇所に「ログ取り」コードを挿入していく Meth2 Meth1 Meth1 Meth4 Meth3

Crosscuts: Examples (2/2) 例2: メソッド呼出を飛び越えて情報を受け渡したい 従来: 途中のメソッドに追加の引数として渡していく etc. Other Calls FinalMeth EntryMeth prof = userProfile access to prof

Outline プログラム・処理系の動作・crosscut を簡単にモデル化 Crosscut 定義の為のミニ言語 (with Haskell) Java によるプロトタイプ

Definition of Program プログラム = イベントの列 Haskell の書き方では… data Program = Over | Cont (Tick -> (Event, Program))

Definition of Run-time System 処理系の動作 = プログラムの実行 + イベントの監視 run :: Program -> Monitor -> [Crosscut] Monitor はプログラムが発行したイベントを受け取って crosscut を検出する

Definition of Crosscut リストなのでイベントの順序関係も表現できる e.g. 先程の例2なら、[EntryMeth FinalMeth] というリストが1つの crosscut

Summary 処理系は… 検出した crosscut に対する処理 (action) は考慮していない (future work) プログラムを 1ステップ実行 プログラムの実行情報をモニタに渡す モニタで crosscut を検出 検出した crosscut に対する処理 (action) は考慮していない (future work)

Crosscut Detection モニタはどうやって crosscut を検出するか ⇒この論文では: イベント列のパターンマッチとして考える パターンを記述する言語 パターンマッチングの機構

Pattern Language パターンを定義するための言語 見た目としては「小さなプログラム言語」 data Pattern = Return Crosscut | Pattern `Seq` Pattern | Filter (Event -> Bool) Pattern | Pattern `Par` Pattern | etc…

Pattern Matching パターンマッチ = パターン言語の“reduction” イベントを受け取ってパターン言語を「評価」 Return foo が出現 ⇒ Crosscut foo を検出

Pattern Matching: Example パターンマッチの例 擬似コードによるイメージ “e1:次のEntryMeth” `Seq` “e2:次のFinalMeth” → Return [e1 e2] EntryMeth イベント ⇒ “e2:次のFinalMeth” → Return [e1 e2] FinalMeth イベント ⇒ Return [e1 e2]

Java Prototype 以上のフレームワークを Java でプロトタイプ的に実装した 基本的に、Haskell コードを Java に移しただけ 元が Haskell なのでシンプルで分りやすい(筆者らの主張では)

Conclusion 「実行モニタ」をベースとした、crosscut 検出のモデル Java での実装 (プロトタイプ) パターンの色々な性質を証明できる⇒最適化 AspectJ の cflow 等も定義できる Java での実装 (プロトタイプ)

Future Works よくあるパターンを集めてライブラリ化 他の方法でのパターン定義 正規表現 Java 風の構文 Crosscut 検出後のアクションも考慮したモデル化

発表の概要 Program Overview Presentation Details Other Presentations A Formal Definition of Crosscuts Process-Algebraic Foundations of Aspect-Oriented Programming Other Presentations Comments

Process-Algebraic Foundations of Aspect-Oriented Programming こちらは Aspect-Oriented Compiler の動作をモデル化しようというお話 道具立てとしてプロセス代数を使っている

Background AOP では「Aspect とプログラムを統合する」(Weaving) というコンパイラの仕事が重要

Outline AOP プログラムをプロセス代数の言葉で置き換え Weaving = 同期の除去 手続き型言語からの変換

Process Language プロセス代数の言語としては CSP (Hoare) を使っている。

Process Language: Syntax 構文は以下のような感じ nil (何もしない) t -> P (t を実行して P) P □ Q (P か Q のいずれか) P|S|Q (同期) p[t1,…,tn] (プロセス定義の呼出 c.f. function call) Etc…

Process Language: Sync 同期について… P|S|Q は a ∈ S かつ P, Q が共に a を実行できる時にのみ実行できる e.g. a->P’|{a}|a->Q’ → P’|{a}|Q’ a->P’|{a}|b->Q’ → a->P’| {a}|Q’

Metaphor AOP の概念とプロセス代数の概念を下のように対応させて考える。 AOP Process Algebra Aspect/concern Process Program Process Def. Main function Root process w/z Sync Aspect Weaving Sync elimination

Example 例: 電子レンジのプログラム 同期(青字)によって on → off → on… という順序を保証 button[] = lock(door) -> turn(on) -> button[] □ turn(off) -> unlock(door) -> button[] seq[] = turn(on) -> turn(off) -> seq[] Root: button[] | {turn(_)} | seq[] 同期(青字)によって on → off → on… という順序を保証

Sync Elimination Aspect Weaving = 同期の除去(前述) そのために、以下のような関係を使う (nil|S|nil) ~ nil (P□P’|S|Q) ~ (P|S|Q)□(P’|S|Q) (nil|S|t->Q) ~ if (t ∈ S) then nil else t->(nil|S|Q) Etc… 右と左は「等価」なプロセス (trace-equiv.)

Aspect Weaving Algorithm 入力: プロセス定義 & Root 出力: 変換後のプロセス定義 & Root 出力は入力と trace-equivalent ただし、アルゴリズムは停止しないことも

Example 先ほどの電子レンジを変換すると以下のようになる R1[] = lock(door) -> turn(on) -> S2[] S2[] = lock(door) -> nil □ turn(off) -> S3[] S3[] = unlock(door) -> R1[] Root: R1[]

Translation of Imperative Language プロシージャ定義とAspect定義を持つ仮想的な手続き型言語を、プロセス言語に変換する方法について 詳細は略。直観的には… プロシージャ p ⇒ call -> 処理 -> return Aspect a ⇒ call -> if (callee is p) then 処理 (before), return -> if (from p) then 処理 (after), etc… それらを適宜 {call, return} で同期させていく

Conclusion AOP をプロセス代数に置き換えて、Aspect Weaving を形式的に論じた 手続き型言語からの変換 「正しい」 Weaving ⇔ Trace-equivalence Weaving は停止しないこともある (実用上は問題なし) プロセス代数の良く知られた結果が使える 手続き型言語からの変換

Future Works Weaving アルゴリズムのスケーラビリティ 停止性が保証できるアルゴリズムは可能か(多分無理?) もっと深くつっこんだ解析 実用的な AOP 言語

発表の概要 Program Overview Presentation Details Other Presentations A Formal Definition of Crosscuts Process-Algebraic Foundations of Aspect-Oriented Programming Other Presentations Comments

Other Presentations (1/3) JAC: Pure Java な AOP フレームワーク Reflex: Reflection を強化した Java 拡張 System Checkpointing Using Reflection and Program Analysis JavaPod・DJ: Java での Dynamic Adaptation関連 K-Component: Architecture meta-model の自動生成?

Other Presentations (2/3) Separation of Concerns in Mobile Agent… MolèNE: Mobile Agent のためのミドルウェア Simple Security Aware MOP for Java Reflective Middleware Solutions for Context-Aware Applications Testing MetaObject Protocols Generated by Open Compilers for Safety-Critical Systems Supporting Formal Verifications of Crosscutting Concerns

Other Presentations (3/3) UML Reflections SADES Coping with Crosscutting Software Changes…

Comments (1/2) 感想など… 提案レベルというか、いまいち結果が見えにくい発表が多かったような気がする。 実は POPL系の人間には結構食い込む余地がある?

Comments (2/2) その他 (知ってたけど)KRPは食べる所が少ない! 眠かった…