知能情報工学特別講義 (鵜林研究室の紹介)
DESCRIPTION
九州工業大学 情報工学部 知能情報工学科. 知能情報工学特別講義 (鵜林研究室の紹介). 知能情報アーキテクチャ講座 鵜林 尚靖. 内容. 研究室の概要 研究紹介 配属希望の皆さんへ. 1.研究室の概要. POSL ( Principles of Software Languages ). 研究分野. 言語の視点に立ったソフトウェア構成原理 に関する研究 POSL ( Principles of Software Languages ). 先進的なプログラミング言語機構に関する研究(特にアスペクト指向プログラミング) モデル駆動型開発手法に関する研究 - PowerPoint PPT PresentationTRANSCRIPT
知能情報工学特別講義(鵜林研究室の紹介)
知能情報アーキテクチャ講座鵜林 尚靖
九州工業大学情報工学部 知能情報工学科
1
内容
研究室の概要 研究紹介 配属希望の皆さんへ
2
1.研究室の概要
POSL( Principles of Software Languages )
3
研究分野
先進的なプログラミング言語機構に関する研究(特にアスペクト指向プログラミング)
モデル駆動型開発手法に関する研究 形式手法に関する研究
言語の視点に立ったソフトウェア構成原理に関する研究POSL( Principles of Software Languages )
プログラミング言語モデリング言語形式仕様記述言語ドメイン特化言語
4
研究室の公開ホームページ
http://posl.minnie.ai.kyutech.ac.jp/5
共同研究マップ
九州工業大学鵜林研究室
東京大学玉井研究室
国立情報学研究所(NII)
アーキテクチャ科学系
電機メーカカーエレメー
カ
大学
国立研究機関
企業
生産性と安全性向上のためのアスペクト指向ソフトウェア開発に関する研究
組込みソフトウェアの分析、設計法に関する研究
形式手法を用いたソフトウェア・プロダクトラインの研究
科研基盤研究(C)検証可能なモデルコンパイラに関する研究
自主研究
東大、東工大、NII、京大
6
最近の主な研究
Tetsuo Tamai, Naoyasu Ubayashi, and Ryoichi Ichiyama: An Adaptive Object Model with Dynamic Role Binding, 27th IEEE/ACM International Conference on Software Engineering (ICSE 2005) [acceptance rate: 44 of 313 (14%)]
Naoyasu Ubayashi, Genki Moriyama, Hidehiko Masuhara, and Tetsuo Tamai: A Parameterized Interpreter for Modeling Different AOP Mechanisms, 20th IEEE/ACM International Conference on Automated Software Engineering
(ASE 2005) [acceptance rate: 28 of 291 (10%)]
Naoyasu Ubayashi, Akihiro Sakai, and Tetsuo Tamai: An Aspect-oriented Weaving Mechanism Based on Component and Connector
Architecture, 22nd IEEE/ACM International Conference on Automated Software Engineering
(ASE 2007) [acceptance rate: 37 of 312 (12%)]
目標は世界レベルの研究!(ACM, IEEE で論文発表 )
7
研究室メンバ(2008年度)
D2 1名 M2 2名 M1 1名 B4 5名
グループ構成
① Web モデリンググループ (D2:1名,B4:3名)② Aspect モデリンググループ (M2:2名)③ Concern モデリンググループ (M1:1名,B4:2名)
8
ゼミの進め方勉強会(週1回) :専門書の輪読を行う2008年度(参考) SPINモデル検査 ( 中島 震)
研究進捗報告会(週1回 × 3グループ):学生が持ち回りで、自分の研究内容の紹介、進捗報告を行う研究に関連する(英語の)論文の紹介実質的な研究指導の場プレゼン能力習得の場
9
卒研の進め方
研究活動の一環としてプログラムを開発する(新しい言語やツールなど)
基礎理論を構築する
最終的な研究成果は、学会で発表する(全国大会や研究会などで)
10
2.研究紹介
11
研究マップ表現 検証
X-ASB: AO メカニズムのモデル化ccJava: AOインタフェースの導入AOWP: Web アプリケーション向けAOP
COW: 契約による織り込み検証 契約によるリファクタリング検証ccJava: 型システム
AspectM: UML ベース AO モデリング言語AspectVDM : VDM ベース AO モデリング言語
AspectM: モデルコンパイラの検証AspectVDM : 証明課題
外部環境分析、プロダクトライン Lightweight Formal Methods の適用
形式手法(組込みソフトウェア開発への応用)
モデル駆動型開発
アスペクト指向プログラミング
形式仕様記述言語
モデリング言語
プログラミング言語
12
アスペクト指向プログラミング
現在、アスペクト指向はプログラミング研究においてホットな話題の一つ
当研究室では、アスペクト指向計算モデル、アスペクト指向プログラムの論理検証、クラスベースのアスペクト指向言語等の研究開発に取り組んでいる
プログラミング言語機構に関するアイデアをツールとして実現するだけでなく、そのための基礎理論を構築することも重要な研究の一つ
13
アスペクト指向の概要
横断的関心事のモジュール化(ロギングなど)
Display updating
after (FigureElement fe): (call(void set*(..)) && target(fe) { fe.display.update(fe); }
advice
pointcut
AspectJAspectJ
AOP は AspectJだけ? ⇒ X-ASB
AOP の織り込みで不具合は発生しない? ⇒ COW or WbC
AOP にはインタフェース概念は無いのか? ⇒ ccJava 織り込みインタフェース
14
ccJava(Class-based Crosscutting Language for Java)
public w_interface wPoint { pointcut change(): execution(void setX(int)) || execution(void setY(int)) || execution(void moveBy(int, int)); import before(), after() returning, around() : change();}
public w_interface wLine { pointcut change(): execution(void setP1(Point)) || execution(void setP2(Point)) || execution(void moveBy(int, int)); import before(), after() returning, around() : change();}
public w_interface wDisplay { pointcut redraw(): execution(void update()); import before(), after() returning : redraw(); export redraw();}
weave { class Point implements wPoint; class Line implements wLine; class Display implements wDisplay; connect(port1:wDisplay.redraw, port2:{wPoint || wLine}.change){ after() returning : port2 { port1.proceed(); } }}
Component & Connector Architecture
言語レベルでreasoning が可能
15
インタフェース
モデル駆動型開発
産業界では、UMLを用いたモデルベースのソフトウェア開発が主流
当研究室では、拡張可能なアスペクト指向モデリング言語に関する研究を行っている
拡張可能なモデルエディタ、コンパイラを開発
16
AspectM -拡張可能なアスペクト指向モデリング言語
AspectM metamodel
AspectM model
reflect
reify
MMAP
extensionpoint
new modelelement
protocols
モデルエディタ
base level(MOF L1)
meta level(MOF L2)
Edit-timereflection
17
Overview of Reflective Model EditorDemonstration
Base Editor
Meta Editor
1. Execute extension operations
2. Assign a graphic notation to a new model element
3. Regenerate the metamodel
4. Restart the base editor
Extension Procedure
Base Editor
Invoke the Meta Editor
19
Meta Editor
Show an extension point
Create a new metaclass
Rebuild the Base Editor
Assign a graphic notation
Execute extension operations(add attribute, association, …)
Add a constraint using OCL
A class can have at most one UniqueId.
self.owner.feature ->select(oclIsTypeOf(UniqueId))->size() <= 1
20
New model elements are added to the pallet
Base Editor
This violates the constraint
A class can have at most one UniqueId.
self.owner.feature ->select(oclIsTypeOf(UniqueId))->size() <= 1
Base Editor can detect this error
21
形式手法に関する研究
形式手法 (Formal Methods) とは、ソフトウェアの仕様記述や設計を数学的な考え方に基づいて行うための手法
ソフトウェアの品質や信頼性向上の手段として最も注目されている技術の一つ(特に組込みソフトウェアの分野で注目されている)
当研究室では、形式手法を組込みソフトウェア開発、ソフトウェアプロダクトライン(SPL)に適用する研究を行っている
22
形式手法のタイプ
モデル規範型(VDM、Z、B等) 性質規範型(代数仕様) モデル検査(SPIN、SMV、UPPAAL、LTS
A等) 通信プロセスモデル(CSP、CCS等)
論理学(命題論理、一階述語論理、時相論理など)の知識が必要
23
時相論理による仕様記述の例
安全性の記述
安全性とはシステムが正常な動作を継続することを表すもので、「良い性質が常に満たされること」を求める
S → □S’
デッドロックの回避は?
P∧Q PかつQ P∨Q PまたはQ P→Q PならばQ ¬P Pでない □P これからずっとPが成り立つ
◇P これからいずれPが成り立つ
○P 次にPが成り立つ 24
Petterson の排他制御アルゴリズムの例
req1=1;turn=2;while(turn!=1 && req2!=0);//critical sectionjob1();req1=0;
req2=1;turn=1;while(turn!=2 && req1!=0);//critical sectionjob2();req2=0;
プロセス P1
プロセス P2
•リアルタイムシステムの妥当性検査と検証を行なうツール•時間オートマトンを用いてシステムをモデル化•到達可能性がチェック可能(これはモデル検査と呼ばれ、基本的に システムの全ての起こりうる動的な振る舞いを網羅的に調査)
UPPAAL
25
安全性の検査
同時にcritical sectionに到達しない
検査結果
26
分析
設計
実装
上流工程 下流工程
不具合発覚!外部環境分析
テスト
外部環境を考慮したモノ
ドキュメント
組込みシステム開発の特徴:システム外の環境から影響を受け、不具合を出すケースが多い→外部環境を分析する手法を提案外部環境を分析することで組込みシステム開発における信頼性を向上させる
不具合外部環境に起因するものは存在しない→信頼性向上 27
システムと外部環境の振舞いを検証
active proctype ・・・ (){ do :: ・・・ od}
SPINtype
・・・operations
・・・
VDM
厳密な仕様記述の探索
形式手法の導入方法・外部環境分析手法 UML プロファイルを作成・プロファイルは形式手法への導入を意識して作成している
クラス図 状態遷移図
UMLプロファ
イ
ル外部環境分析手法
形式手法
28
29
研究室の学生が表彰
第9回組込みシステム技術に関するサマーワークショップ(SWEST9)
3.配属希望の皆さんへ
30
配属希望の方へ
アイデアを形にし、それを著名な国際会議の場で発信していく
研究に対する志を持っている方を歓迎研究の進め方、論文の書き方についてきめ細かく
指導
向いている人
言語に関する理論に興味ある人新しい言語を作りたい人
研究室で重視していること
31
一流のエンジニアになるためには
数学
集合論グラフ理論論理数学代数オートマトン 等々
実際のソフトウエア開発
仕様記述デザインプログラミングテスト
ブリッジ
安心・安全なシステム構築には必須抽象化・モデル検査・定理証明
32
Computational Thinking, Abstraction 物事の本質を掴む、その本質を記述する 抽象化 (数学が重要)
Jeff Kramer(Communications of the ACM
2007.4)
Daniel Jackson(The MIT Press)
Jeannette M. Wing(Communications of the ACM
2006.3)33
最後に
奥の深そうな着想を見つけて、長期間研究する 研究の成果に対して明確な目的意識をもって研究する 理論的研究は、現実問題に有用であることを、その価値基準とする 力のありそうな人となるべく多くの議論をする 学生は、できるだけ早くかつ多く欧米に行かせ、発表・議論させてくる
理論を研究する学生にも、必ず実装をきちんとさせる システム実装が得意な学生には、自分の実装の特徴を概念化・明示
化する訓練をさせ、かつ実装の重要性を自覚させる 各学生には、その人生に1つでよいから、他人が考えたことのない、
概念・アイデア・プロダクトを、確立あるいは作成するという使命感をもたせる
米澤 明憲 「私のソフトウェア研究」よりコンピュータソフトウェア , Vol.21 , No.5(2004)
34