SlideShare une entreprise Scribd logo
1  sur  73
Télécharger pour lire hors ligne
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
1/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Coexecutability for Efficient
Verification of Data Model Updates
MD 輪講
博士後期課程 3 年 楊 嘉晨
大阪大学大学院 コンピュータサイエンス専攻 楠本研究室
2015 年 07 月 30 日(木)
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
2/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
出典と著者情報
背景と先行研究
動機の例
フォーマルモデル
並列実行可能性
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
3/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
出典と著者情報
Coexecutability for Efficient Verification of
Data Model Updates¹
データモデルの更新を効率よく検証するの並列可能性
出典 ICSE 2015,
Eng: Florence, Ita: Firenze
フィレンツェ, イタリア
著者 Ivan Bocić, Tevfik Bultan
所属 Department of Computer Science, California 大, USA
¹Ivan Bocic and Tevfik Bultan. “Coexecutability for Efficient Verification of Data Model Updates”. In: Proceedings of the 37th
International Conference on Software Engineering. ACM. 2015, pp. 744–754.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
4/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
背景: MVC 構造のデータモデル
アプリケーションを開発する際に
MVC 構造でオブジェクトをデータベ
ースに格納するのは一般的
Model データベースにアクセス
View データをユーザーに提示
Controller ユーザーの操作を受理
Ruby on Rails (RoR) アプリの場合:
ActiveRecord Object-Relational Mapping (ORM)
ActionView HTML テンプレート
Action コントローラの処理
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
4/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
背景: MVC 構造のデータモデル
アプリケーションを開発する際に
MVC 構造でオブジェクトをデータベ
ースに格納するのは一般的
Model データベースにアクセス
View データをユーザーに提示
Controller ユーザーの操作を受理
Ruby on Rails (RoR) アプリの場合:
ActiveRecord Object-Relational Mapping (ORM)
ActionView HTML テンプレート
Action コントローラの処理
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
5/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 class User
2 has_many :users
3 has_many :projects
4 end
5 class Project
6 belongs_to :user
7 has_many :todos
8 has_many :notes
9 end
10 class Todo
11 belongs_to :user
12 belongs_to :project
13 end
14 class Note
15 belongs_to :project
16 end
1 class TodosController
2 def create
3 @project = Project.find(params[:
project_id])
4 @user = User.find(params[:user_id
])
5 @todo = Todo.new
6 @todo.user = @user
7 @todo.project = @project
8 @todo.save!
9 respond_to (...)
10 end
11 end
12 class ProjectsController
13 def destroy
14 @project = Project.find(params[:
project_id])
15 @project.notes.each do |n|
16 n.delete
17 end
18 @project.delete
19 respond_to (...)
20 end
21 end
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
5/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 class User
2 has_many :users
3 has_many :projects
4 end
5 class Project
6 belongs_to :user
7 has_many :todos
8 has_many :notes
9 end
10 class Todo
11 belongs_to :user
12 belongs_to :project
13 end
14 class Note
15 belongs_to :project
16 end
1 class TodosController
2 def create
3 @project = Project.find(params[:
project_id])
4 @user = User.find(params[:user_id
])
5 @todo = Todo.new
6 @todo.user = @user
7 @todo.project = @project
8 @todo.save!
9 respond_to (...)
10 end
11 end
12 class ProjectsController
13 def destroy
14 @project = Project.find(params[:
project_id])
15 @project.notes.each do |n|
16 n.delete
17 end
18 @project.delete
19 respond_to (...)
20 end
21 end
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
5/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 class User
2 has_many :users
3 has_many :projects
4 end
5 class Project
6 belongs_to :user
7 has_many :todos
8 has_many :notes
9 end
10 class Todo
11 belongs_to :user
12 belongs_to :project
13 end
14 class Note
15 belongs_to :project
16 end
1 class TodosController
2 def create
3 @project = Project.find(params[:
project_id])
4 @user = User.find(params[:user_id
])
5 @todo = Todo.new
6 @todo.user = @user
7 @todo.project = @project
8 @todo.save!
9 respond_to (...)
10 end
11 end
12 class ProjectsController
13 def destroy
14 @project = Project.find(params[:
project_id])
15 @project.notes.each do |n|
16 n.delete
17 end
18 @project.delete
19 respond_to (...)
20 end
21 end
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
6/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究²: データモデルの不変式
Inductive Verification of Data Model Invariants for Web Applications
todo は必ず project に関
連することを保証する不
変式:
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
先行研究で不変式の検証
器を提案しました
• Action 実行前後に不
変式が満たすか
²Ivan Bocić and Tevfik Bultan. “Inductive verification of data model invariants for web applications”. In: Proceedings of the
36th International Conference on Software Engineering. ACM. 2014, pp. 620–631.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
6/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究²: データモデルの不変式
Inductive Verification of Data Model Invariants for Web Applications
todo は必ず project に関
連することを保証する不
変式:
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
先行研究で不変式の検証
器を提案しました
• Action 実行前後に不
変式が満たすか
²Ivan Bocić and Tevfik Bultan. “Inductive verification of data model invariants for web applications”. In: Proceedings of the
36th International Conference on Software Engineering. ACM. 2014, pp. 620–631.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
1 def create_user_example
2 @user = User.build(params)
3 Project.all.each do |project|
4 if project.hiring?
5 @user.projects << project
6 end
7 end
8 @user.save!
9 respond_to(...)
10 end
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
1 def create_user_example
2 ins_stmt(ins_asgn(:@user, User.build(param
3 ins_stmt(Project.all.each do |project|
4 ins_if(
5 project.hiring?,
6 ins_stmt(@user.projects << project),
7 nil
8 )
9 end)
10 ins_stmt(@user.save!)
11 end
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
1 def create_user_example
2 ins_stmt(ins_asgn(:@user, User.build(param
3 ins_stmt(Project.all.each do |project|
4 ins_if(
5 project.hiring?,
6 ins_stmt(@user.projects << project),
7 nil
8 )
9 end)
10 ins_stmt(@user.save!)
11 end
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
7/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究: 不変式の検証器³
Inductive Verification of Data Model Invariants for Web Applications
1 Action 定義文を書
き換える
2 書き換えたソース
コードを実行し、
Abstract Data Store, ADS
抽象データストー
を作る
3 ADS を
First Order Logic, FOL
一階論理式
に変換する
4 FOL を既存の検証
器で検証する
³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
8/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究問題点と改善した提案手法
先行研究の問題点:ループから得られた FOL を解くこと
は困難, 即ちタイムアウトによる失敗しがち
• FOL のみでループを表すのに非常に長くなる
• 二回目の変数は一回目の値に依存することは有りうる
• ループから得られた FOL は
transitive closure
推移閉包になって状態爆発する
FOL でループを処理する一般的なやり方:手作業でループ不
変式を与えて、状態爆発を収まる
改善した提案手法:
1 ループの各イテレーションが
coexecutable
並列実行可能か否かを検証
• 並列実行可能性: 並列実行する結果 == 逐次実行する結果
2 並列実行可能なループのみに着目し、ループを洗練した
FOL に変換する
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
8/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究問題点と改善した提案手法
先行研究の問題点:ループから得られた FOL を解くこと
は困難, 即ちタイムアウトによる失敗しがち
• FOL のみでループを表すのに非常に長くなる
• 二回目の変数は一回目の値に依存することは有りうる
• ループから得られた FOL は
transitive closure
推移閉包になって状態爆発する
FOL でループを処理する一般的なやり方:手作業でループ不
変式を与えて、状態爆発を収まる
改善した提案手法:
1 ループの各イテレーションが
coexecutable
並列実行可能か否かを検証
• 並列実行可能性: 並列実行する結果 == 逐次実行する結果
2 並列実行可能なループのみに着目し、ループを洗練した
FOL に変換する
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
8/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
先行研究問題点と改善した提案手法
先行研究の問題点:ループから得られた FOL を解くこと
は困難, 即ちタイムアウトによる失敗しがち
• FOL のみでループを表すのに非常に長くなる
• 二回目の変数は一回目の値に依存することは有りうる
• ループから得られた FOL は
transitive closure
推移閉包になって状態爆発する
FOL でループを処理する一般的なやり方:手作業でループ不
変式を与えて、状態爆発を収まる
改善した提案手法:
1 ループの各イテレーションが
coexecutable
並列実行可能か否かを検証
• 並列実行可能性: 並列実行する結果 == 逐次実行する結果
2 並列実行可能なループのみに着目し、ループを洗練した
FOL に変換する
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
9/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
逐次実行
並列実行
フォーマルモデル
並列実行可能性
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
10/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 逐次実行
1 class PostsController
2 def destroy_tags
3 ...
4 posts = Post.where(id: params[:
post_ids])
5 ...
6 posts.each do |p|
7 p.tags.destroy_all!
8 end
9 ...
10 end
11 end
0..* 0..*
Post Tag p1 p2 p3
t1 t2 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
10/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 逐次実行
1 class PostsController
2 def destroy_tags
3 ...
4 posts = Post.where(id: params[:
post_ids])
5 ...
6 posts.each do |p|
7 p.tags.destroy_all!
8 end
9 ...
10 end
11 end
0..* 0..*
Post Tag p1 p2 p3
t2 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
10/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 逐次実行
1 class PostsController
2 def destroy_tags
3 ...
4 posts = Post.where(id: params[:
post_ids])
5 ...
6 posts.each do |p|
7 p.tags.destroy_all!
8 end
9 ...
10 end
11 end
0..* 0..*
Post Tag p1 p2 p3
t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
11/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 並列実行
p1 p2 p3
t2 t3
p1 p2 p3
t3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
11/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 並列実行
p1 p2 p3
t2 t3
p1 p2 p3
t3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
11/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 並列実行
p1 p2 p3
t2 t3
p1 p2 p3
t3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
11/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
動機の例: 並列実行
p1 p2 p3
t2 t3
p1 p2 p3
t3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
12/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
13/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストア
Data Store
DS は Class の集合、Relation の集合、Action の集合、
不変式の集合で定義 DS = ⟨C, R, A, I⟩
Class と Relation
0..* 0..*
Post Tag
不変式
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
Action
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
13/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストア
Data Store
DS は Class の集合、Relation の集合、Action の集合、
不変式の集合で定義 DS = ⟨C, R, A, I⟩
Class と Relation
0..* 0..*
Post Tag
不変式
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
Action
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
13/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストア
Data Store
DS は Class の集合、Relation の集合、Action の集合、
不変式の集合で定義 DS = ⟨C, R, A, I⟩
Class と Relation
0..* 0..*
Post Tag
不変式
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
Action
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
13/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストア
Data Store
DS は Class の集合、Relation の集合、Action の集合、
不変式の集合で定義 DS = ⟨C, R, A, I⟩
Class と Relation
0..* 0..*
Post Tag
不変式
1 invariant forall{ |todo|
2 not todo.project.empty?
3 }
Action
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
14/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストアの状態
Data Store State
ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合
は ⟨O, T⟩ ∈ DS
状態 1
p1 p2 p3
t2 t3
状態 2
p1 p2 p3
t3
状態 3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
14/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストアの状態
Data Store State
ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合
は ⟨O, T⟩ ∈ DS
状態 1
p1 p2 p3
t2 t3
状態 2
p1 p2 p3
t3
状態 3
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
15/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
文と状態の差分
Statements and State Deltas
文は ADS 上、Action 内に1つ
のノードで表す
文を実行したら、ある状態 s から s′
へ遷移することが差分
s′
⊖ s で合わせる s′
= s ⊕ (s ⊖ s′
)
状態 s
p1 p2 p3
t2 t3
差分 s′
⊖ s
p1 p2 p3
t1 t2 t3
状態 s′
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
15/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
文と状態の差分
Statements and State Deltas
文は ADS 上、Action 内に1つ
のノードで表す
文を実行したら、ある状態 s から s′
へ遷移することが差分
s′
⊖ s で合わせる s′
= s ⊕ (s ⊖ s′
)
状態 s
p1 p2 p3
t2 t3
差分 s′
⊖ s
p1 p2 p3
t1 t2 t3
状態 s′
p1 p2 p3
t1 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
16/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ADS の文とオブジェクトの種類
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
17/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ForEach ループ文
ForEach Loop Statement
ForEach ループ文はオブジェ
クトのリスト α とループの
Block 文 B で表す。ループの回
数 n = |α| 。[s, s′
]Bo
は α 中のオ
ブジェクト o に対して B を実
行する際の状態遷移。
オブジェクトが実行された順番によっ
て、ループ間に依存関係が生じる
→ 先行研究に状態爆発の原因となる
p1 p2 p3
t1 t2 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
17/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ForEach ループ文
ForEach Loop Statement
ForEach ループ文はオブジェ
クトのリスト α とループの
Block 文 B で表す。ループの回
数 n = |α| 。[s, s′
]Bo
は α 中のオ
ブジェクト o に対して B を実
行する際の状態遷移。
オブジェクトが実行された順番によっ
て、ループ間に依存関係が生じる
→ 先行研究に状態爆発の原因となる
p1 p2 p3
t1 t2 t3
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
18/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
フォーマルモデル
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
19/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
差分の一致性と和計算
Consistency and Union of Deltas
差分が
consistent
一致であることは、生成と削除の集合は相互に
排他的である
Oc ∩ Od = Tc ∩ Td = ∅∧
(∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧
(∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc)
2つ差分の和 (Union, ∩) はデータ集合の和集合に成る
∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩
δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩
一致的な2つ差分の和が一致でないことは
conflict
衝突
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
19/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
差分の一致性と和計算
Consistency and Union of Deltas
差分が
consistent
一致であることは、生成と削除の集合は相互に
排他的である
Oc ∩ Od = Tc ∩ Td = ∅∧
(∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧
(∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc)
2つ差分の和 (Union, ∩) はデータ集合の和集合に成る
∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩
δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩
一致的な2つ差分の和が一致でないことは
conflict
衝突
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
19/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
差分の一致性と和計算
Consistency and Union of Deltas
差分が
consistent
一致であることは、生成と削除の集合は相互に
排他的である
Oc ∩ Od = Tc ∩ Td = ∅∧
(∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧
(∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc)
2つ差分の和 (Union, ∩) はデータ集合の和集合に成る
∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩
δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩
一致的な2つ差分の和が一致でないことは
conflict
衝突
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
20/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
並列実行と並列実行可能性
Coexecution and Coexecutability
並列実行の差分の和は衝突しない、且つ結果は逐
次実行と必ず等しくなる場合に並列実行可能性が
あるという
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
21/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
並列実行可能性の条件
Coexecutability Condition
2つ文 A と B は以下の条件を満たす場合に限り、A
と B は並列実行可能である:
∀s ∈ DS, ∀e ∈ s :
(reads(A, e) ⇒ ¬creates(B, e) ∧ ¬deletes(B, e))
∧ (creates(A, e) ⇒ ¬reads(B, e) ∧ ¬deletes(B, e))
∧ (deletes(A, e) ⇒ ¬reads(B, e) ∧ ¬creates(B, e))
(具体的な証明は割愛させていただきます)
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
22/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
フォーマルモデル
並列実行可能性
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
23/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
並列実行可能性の検証器
Syntactic Analysis
1 先行研究のやり方でソースコードから ADS を
抽出
2 ADS の Actions に対し、ForEach ループを見つ
けて、並列実行可能性を静的に検証する
• ループ内に行なって、ループ外に影響する reads,
creates, deletes 操作を要約する
3 並列実行可能なループに対し、和計算した差分
を適用し、洗練した FOL を作る
4 先行研究と同じ FOL 検証器で検証する
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
24/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
フォーマルモデル
並列実行可能性
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
25/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
実験対象の選び方
GitHub から人気順上位 20 の Ruby プロジェクトを
見ました。
20 %
ActiveRecords を使わない (4)
10 %
Web アプリではない (2)
5 %
Model 抽出に失敗 (1)
30 %
ループがない (6)
35 %
実験対象 (7)
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
26/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
実験対象
残り 7 つプロジェクトに、アクションにループは
38 箇所存在します。その内 12 箇所は ADS 上に空ル
ープになっています。
分析によって全てのループは並列実行可能である。
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
27/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
実験の設定
対象アプリに対して、手作業で検証したい不変式を書き
ます。
1つの Action と1つの不変式に対し、複数の
axiom
公理と1つ
の
conjecture
推測 を FOL 式の形で生成される。FOL 検証器から、
axiom
公理が
conjecture
推測 を
imply
暗示することが推論できれば、Action は不
変式を保つことが証明される。
タイムアウトの時間は 5 分に設定する。検証器のオプシ
ョンとして soft sort を指定できる、on/off によって検証が
停止できる場合が変わる。
入れ子構造のループが実際に少ないため、著者等は自ら
新しい Action を4つ追加しました。
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
28/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
実験結果
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
29/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
紹介と背景
動機の例
フォーマルモデル
並列実行可能性
並列実行可能性の検証器
評価実験
結論と今後の課題
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
30/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
結論と今後の課題
結論
•
coexecution
並列実行可能性を提案した
• あるループに対して、並列実行の結果は逐次実行の結果と同
じか
• データモデルを検証する際にループ内部依存性の検証を避け
る方法
•
coexecution
並列実行可能性の静的検証器を提案し実装した
• 実験で提案手法が大幅に検証に要する時間を短縮できる
ことを示した
今後の課題
•
coexecutability
並列実行可能性を他の検証場面に適用できるか
• ループに対する他の検証に有効であるか?
• データモデルをもっと強化して、より多く不変式を書け
ることに目指す
• オブジェクト以外のデータ型をサポートできるか?
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
30/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
結論と今後の課題
結論
•
coexecution
並列実行可能性を提案した
• あるループに対して、並列実行の結果は逐次実行の結果と同
じか
• データモデルを検証する際にループ内部依存性の検証を避け
る方法
•
coexecution
並列実行可能性の静的検証器を提案し実装した
• 実験で提案手法が大幅に検証に要する時間を短縮できる
ことを示した
今後の課題
•
coexecutability
並列実行可能性を他の検証場面に適用できるか
• ループに対する他の検証に有効であるか?
• データモデルをもっと強化して、より多く不変式を書け
ることに目指す
• オブジェクト以外のデータ型をサポートできるか?
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
31/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
上から目線の所感
coexecutability 証明できるのはすごかった
× 論理式が多すぎ
• coexecutability の証明以外はわりと直感的
× 言っている coexecution は concurrent と実は関
係が少ない
× Ruby 以外の言語に MVC をちゃんと守っている
かどうかは気になります
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
紹介と背景
出典と著者情報
背景と先行研究
動機の例
逐次実行
並列実行
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
並列実行と並列実行可能性
並列実行可能性の条件
並列実行可能性の検証器
評価実験
実験対象
実験設定
実験結果
結論と今後の課題
2015 年 07 月 30 日(木)
32/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ご清聴ありがとうご
ざいます
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
33/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
これからは予備スラ
イドです
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
34/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
35/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
抽象データストア
Abstract Data Store
定義: ADS
DS = ⟨C, R, A, I⟩
C = クラスの集合
R = リレーションの集合
A = アクションの集合
I = 不変式の集合
定義: クラス
• 0 か 1 の親クラス
• 親子に循環しない
定義: リレーション
r = ⟨name, co, ct, card⟩
co 関係の元 co ∈ C
ct 関係の目標 ct ∈ C
card 1 対多, 1 対 1 等
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
36/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
データストアの状態
Data Store State
ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合
は ⟨O, T⟩ ∈ DS
O = オブジェクトの集合 ∀o ∈ O, classof(o) ∈ C
T = タプルの集合
∀t ∈ T,t = ⟨r, oo, ot⟩
where r = ⟨co, ct, card⟩ ∈ R,
classof(oo) = co ∧ classof(ot) = ct
言い換えると、DS の状態はデータベースに格納し
ているデータをモデル化したもの
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
37/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
アクション, 不変式, 行為
Actions, Invariants and Behaviors
アクション a ∈ A は可能な状態遷移の集合
a : ⟨⟨O, T⟩ , ⟨O′
, T′
⟩⟩ ⊆ DS × DS
不変式 i ∈ I は状態からブーリアンへの関数
i : DS → {false, true}
行為は DS のある初期状態 s0 から、アクションによ
って不変式を保って辿れる一連の状態 s0, s1, s2 . . .:
• ∀k > 0 : sk ∈ DS ∧ ∃a ∈ A : (sk, sk+1 ∈ a)
• ∀k > 0 : ∀i ∈ I : i(sk) = true
DS に、任意の行為で辿れる状態の集合は DSR ⊆ DS
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
38/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
文
Statements
アクションは一連の文で書かれます。1つの文 S は2つ状態
にある遷移: ⟨s, s′
⟩ ⊆ DS × DS
文の種類が決まっている、S 文で可能な遷移 ⟨s, s′
⟩ を [s, s′
]S
で表記する。
例としてあるクラスのオブジェクトを作る文 SC は:
[s, s′
]SC
↔∃oC : classof(oC) = C ∧ (oC ∈ s′
∧ oC /∈ s∧
(∀e : (e ∈ s ↔ e ∈ s′
) ∨ e = oC))
一連の文 A1, A2, . . . An を含む Block 文 B は:
∀s, s′
∈ DS × DS : [s, s′
]B ⇔∃s1, s2 . . . sn−1 ∈ DS × . . . × DS :
[s, s1]A1
∧ [s1, s2]A2
∧ . . . ∧ [sn−1, s′
]An
. . . .... .... .... ... . . . .
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
40/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ForEach ループ文
ForEach Loop Statement
ForEach ループ文はオブジェクトのリスト α とル
ープの Block 文 B で表す。ループの回数 n = |α| 。
[s, s′
]Bo
は α 中のオブジェクト o に対して B を実行す
る際の状態遷移。
∀s, s′
∈ DS × DS : [s, s′
]FE ⇔
∃o1 . . . on ∈ α, ∃s1 . . . sn ∈ DS :
∀i, j ∈ [1 . . . n] : i ̸= j ⇔ oi ̸= oj∧
[s, s1]Bo1
∧ [s1, s2]Bo2
∧ . . . ∧ [sn−1, sn]Bon
∧ sn = s′
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
41/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
フォーマルモデル
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
42/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
実行の差分
Execution Deltas
ある文を実行する前後の状態 s と s′
の間に、実行の
差分: δ = s′
⊖ s = ⟨Oc, Tc, Od, Td⟩ そのうち、Oc, Tc は
生成したオブジェクトとリレーションの集合、
Od, Td は削除したオブジェクトとリレーションの集
合を表す。
例えば:s1 = {a, b, ⟨a, b⟩}, s2 = {a, b, c} ならば
s1 ⊖ s2 = ⟨{}, {⟨a, b⟩}, {c}, {}⟩
s2 ⊖ s1 = ⟨{c}, {}, {}, {⟨a, b⟩}⟩
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
43/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
差分の一致性と和計算
Consistency and Union of Deltas
差分が
consistent
一致であることは、生成と削除の集合は相互に
排他的である
Oc ∩ Od = Tc ∩ Td = ∅∧
(∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧
(∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc)
2つ差分の和 (Union, ∩) はデータ集合の和集合に成る
∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩
δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩
一致的な2つ差分の和が一致でないことは
conflict
衝突
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
44/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
差分の適用
Apply of Deltas
状態 s に差分 δ を適用することを ⊕ で表す
∀s = ⟨O, T⟩ ∈ DS, s′
= ⟨O′
, T′
⟩ ∈ DS : s′
= s ⊕ δ ⇔
(∀o : o ∈ O′
⇔ (o ∈ O ∨ o ∈ Oc) ∧ o /∈ Od)∧
(∀t = ⟨oo, ot⟩ : t ∈ T′
⇔ (t ∈ T ∨ t ∈ Tc)∧
t /∈ Td ∧ oo ∈ O′
∧ ot ∈ O′
)
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
45/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
並列実行と並列実行可能性
Coexecution and Coexecutability
並列実行の差分の和は衝突しない、且つ結果は逐
次実行と必ず等しくなる場合に並列実行可能性が
あるという
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
46/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
文はエンティティに対する操作
Statement Reads, Creates, Deletes
creates(A, e) ⇔∃s, s′
∈ DS :
[s, s′
]A ∧ e /∈ s ∧ e ∈ s′
deletes(A, e) ⇔∃s, s′
∈ DS :
[s, s′
]A ∧ e ∈ s ∧ e /∈ s′
cover(∆, A, S) ⇔(∀s ∈ S, s′
∈ DS :
[s, s′
]A ⇒ (∃δ ∈ ∆ : s′
= s ⊕ δ))
∧ (∀s ∈ S, δ ∈ ∆ : [s, s ⊕ δ]A)
reads(A, e) ⇔∃s ∈ DS : ¬∃∆ ⊆ DS∆ :
cover (∆, A, {s ∪ {e}, s  {e}})
Coexecutability: 並列実行可能性
大阪大学大学院 CS 専攻楊嘉晨
フォーマルモデル
抽象データストア
文のモデル化
ADS の文とオブジェクトの種類
並列実行可能性
実行の差分
並列実行と並列実行可能性
文はエンティティに対する操作
並列実行可能性の条件
2015 年 07 月 30 日(木)
47/32
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
並列実行可能性の条件
Coexecutability Condition
2つ文 A と B は以下の条件を満たす場合に限り、A
と B は並列実行可能である:
∀s ∈ DS, ∀e ∈ s :
(reads(A, e) ⇒ ¬creates(B, e) ∧ ¬deletes(B, e))
∧ (creates(A, e) ⇒ ¬reads(B, e) ∧ ¬deletes(B, e))
∧ (deletes(A, e) ⇒ ¬reads(B, e) ∧ ¬creates(B, e))
(具体的な証明は割愛させていただきます)

Contenu connexe

Similaire à データモデルの更新を効率よく検証するの並列可能性

ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTURE Project
 
非技術者でもわかる(?)コンピュータビジョン紹介資料
非技術者でもわかる(?)コンピュータビジョン紹介資料非技術者でもわかる(?)コンピュータビジョン紹介資料
非技術者でもわかる(?)コンピュータビジョン紹介資料Takuya Minagawa
 
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy Learning
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy LearningDiscriminative Deep Dyna-Q: Robust Planning for Dialogue Policy Learning
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy LearningTomoyasuOkada
 
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~Yasuharu Nishi
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014Koji Hasegawa
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 Hironori Washizaki
 
機械学習応用アーキテクチャ・デザインパターン概観
機械学習応用アーキテクチャ・デザインパターン概観機械学習応用アーキテクチャ・デザインパターン概観
機械学習応用アーキテクチャ・デザインパターン概観Hironori Washizaki
 
20180117_ICON技術セミナー4_常盤
20180117_ICON技術セミナー4_常盤20180117_ICON技術セミナー4_常盤
20180117_ICON技術セミナー4_常盤ICT_CONNECT_21
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについてMasahiro Suzuki
 
「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?Keiichiro Ono
 
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)Hironori Washizaki
 
地図を片手にアジャイル開発
地図を片手にアジャイル開発地図を片手にアジャイル開発
地図を片手にアジャイル開発Zenji Kanzaki
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】Tomoharu ASAMI
 
サブカルのためのWord2vec
サブカルのためのWord2vecサブカルのためのWord2vec
サブカルのためのWord2vecDeNA
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
分析・モニタリングのために作文活動を測定するシステムの設計
分析・モニタリングのために作文活動を測定するシステムの設計分析・モニタリングのために作文活動を測定するシステムの設計
分析・モニタリングのために作文活動を測定するシステムの設計yamahige
 
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組みHironori Washizaki
 
蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニングgenroku
 

Similaire à データモデルの更新を効率よく検証するの並列可能性 (20)

ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
非技術者でもわかる(?)コンピュータビジョン紹介資料
非技術者でもわかる(?)コンピュータビジョン紹介資料非技術者でもわかる(?)コンピュータビジョン紹介資料
非技術者でもわかる(?)コンピュータビジョン紹介資料
 
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy Learning
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy LearningDiscriminative Deep Dyna-Q: Robust Planning for Dialogue Policy Learning
Discriminative Deep Dyna-Q: Robust Planning for Dialogue Policy Learning
 
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
Tomorrow's software testing for embedded systems ~明日にでも訪れてしまう組込みシステムのテストの姿~
 
ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
 
機械学習応用アーキテクチャ・デザインパターン概観
機械学習応用アーキテクチャ・デザインパターン概観機械学習応用アーキテクチャ・デザインパターン概観
機械学習応用アーキテクチャ・デザインパターン概観
 
20180117_ICON技術セミナー4_常盤
20180117_ICON技術セミナー4_常盤20180117_ICON技術セミナー4_常盤
20180117_ICON技術セミナー4_常盤
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
 
japan teacher
japan teacherjapan teacher
japan teacher
 
「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?「モダンな」可視化アプリケーション開発とはどのようなものか?
「モダンな」可視化アプリケーション開発とはどのようなものか?
 
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)
機械学習エンジニアリング・品質保証 (ESS2018招待講演 鷲崎弘宜)
 
地図を片手にアジャイル開発
地図を片手にアジャイル開発地図を片手にアジャイル開発
地図を片手にアジャイル開発
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
サブカルのためのWord2vec
サブカルのためのWord2vecサブカルのためのWord2vec
サブカルのためのWord2vec
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
分析・モニタリングのために作文活動を測定するシステムの設計
分析・モニタリングのために作文活動を測定するシステムの設計分析・モニタリングのために作文活動を測定するシステムの設計
分析・モニタリングのために作文活動を測定するシステムの設計
 
組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング組込みSW開発技術研究会キックオフミーティング
組込みSW開発技術研究会キックオフミーティング
 
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
 
蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング
 

データモデルの更新を効率よく検証するの並列可能性

  • 1. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 1/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Coexecutability for Efficient Verification of Data Model Updates MD 輪講 博士後期課程 3 年 楊 嘉晨 大阪大学大学院 コンピュータサイエンス専攻 楠本研究室 2015 年 07 月 30 日(木)
  • 2. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 2/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 出典と著者情報 背景と先行研究 動機の例 フォーマルモデル 並列実行可能性 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 3. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 3/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 出典と著者情報 Coexecutability for Efficient Verification of Data Model Updates¹ データモデルの更新を効率よく検証するの並列可能性 出典 ICSE 2015, Eng: Florence, Ita: Firenze フィレンツェ, イタリア 著者 Ivan Bocić, Tevfik Bultan 所属 Department of Computer Science, California 大, USA ¹Ivan Bocic and Tevfik Bultan. “Coexecutability for Efficient Verification of Data Model Updates”. In: Proceedings of the 37th International Conference on Software Engineering. ACM. 2015, pp. 744–754.
  • 4. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 4/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 背景: MVC 構造のデータモデル アプリケーションを開発する際に MVC 構造でオブジェクトをデータベ ースに格納するのは一般的 Model データベースにアクセス View データをユーザーに提示 Controller ユーザーの操作を受理 Ruby on Rails (RoR) アプリの場合: ActiveRecord Object-Relational Mapping (ORM) ActionView HTML テンプレート Action コントローラの処理
  • 5. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 4/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 背景: MVC 構造のデータモデル アプリケーションを開発する際に MVC 構造でオブジェクトをデータベ ースに格納するのは一般的 Model データベースにアクセス View データをユーザーに提示 Controller ユーザーの操作を受理 Ruby on Rails (RoR) アプリの場合: ActiveRecord Object-Relational Mapping (ORM) ActionView HTML テンプレート Action コントローラの処理
  • 6. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 5/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 class User 2 has_many :users 3 has_many :projects 4 end 5 class Project 6 belongs_to :user 7 has_many :todos 8 has_many :notes 9 end 10 class Todo 11 belongs_to :user 12 belongs_to :project 13 end 14 class Note 15 belongs_to :project 16 end 1 class TodosController 2 def create 3 @project = Project.find(params[: project_id]) 4 @user = User.find(params[:user_id ]) 5 @todo = Todo.new 6 @todo.user = @user 7 @todo.project = @project 8 @todo.save! 9 respond_to (...) 10 end 11 end 12 class ProjectsController 13 def destroy 14 @project = Project.find(params[: project_id]) 15 @project.notes.each do |n| 16 n.delete 17 end 18 @project.delete 19 respond_to (...) 20 end 21 end
  • 7. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 5/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 class User 2 has_many :users 3 has_many :projects 4 end 5 class Project 6 belongs_to :user 7 has_many :todos 8 has_many :notes 9 end 10 class Todo 11 belongs_to :user 12 belongs_to :project 13 end 14 class Note 15 belongs_to :project 16 end 1 class TodosController 2 def create 3 @project = Project.find(params[: project_id]) 4 @user = User.find(params[:user_id ]) 5 @todo = Todo.new 6 @todo.user = @user 7 @todo.project = @project 8 @todo.save! 9 respond_to (...) 10 end 11 end 12 class ProjectsController 13 def destroy 14 @project = Project.find(params[: project_id]) 15 @project.notes.each do |n| 16 n.delete 17 end 18 @project.delete 19 respond_to (...) 20 end 21 end
  • 8. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 5/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 class User 2 has_many :users 3 has_many :projects 4 end 5 class Project 6 belongs_to :user 7 has_many :todos 8 has_many :notes 9 end 10 class Todo 11 belongs_to :user 12 belongs_to :project 13 end 14 class Note 15 belongs_to :project 16 end 1 class TodosController 2 def create 3 @project = Project.find(params[: project_id]) 4 @user = User.find(params[:user_id ]) 5 @todo = Todo.new 6 @todo.user = @user 7 @todo.project = @project 8 @todo.save! 9 respond_to (...) 10 end 11 end 12 class ProjectsController 13 def destroy 14 @project = Project.find(params[: project_id]) 15 @project.notes.each do |n| 16 n.delete 17 end 18 @project.delete 19 respond_to (...) 20 end 21 end
  • 9. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 6/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究²: データモデルの不変式 Inductive Verification of Data Model Invariants for Web Applications todo は必ず project に関 連することを保証する不 変式: 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } 先行研究で不変式の検証 器を提案しました • Action 実行前後に不 変式が満たすか ²Ivan Bocić and Tevfik Bultan. “Inductive verification of data model invariants for web applications”. In: Proceedings of the 36th International Conference on Software Engineering. ACM. 2014, pp. 620–631.
  • 10. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 6/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究²: データモデルの不変式 Inductive Verification of Data Model Invariants for Web Applications todo は必ず project に関 連することを保証する不 変式: 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } 先行研究で不変式の検証 器を提案しました • Action 実行前後に不 変式が満たすか ²Ivan Bocić and Tevfik Bultan. “Inductive verification of data model invariants for web applications”. In: Proceedings of the 36th International Conference on Software Engineering. ACM. 2014, pp. 620–631.
  • 11. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する 1 def create_user_example 2 @user = User.build(params) 3 Project.all.each do |project| 4 if project.hiring? 5 @user.projects << project 6 end 7 end 8 @user.save! 9 respond_to(...) 10 end ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 12. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する 1 def create_user_example 2 ins_stmt(ins_asgn(:@user, User.build(param 3 ins_stmt(Project.all.each do |project| 4 ins_if( 5 project.hiring?, 6 ins_stmt(@user.projects << project), 7 nil 8 ) 9 end) 10 ins_stmt(@user.save!) 11 end ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 13. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する 1 def create_user_example 2 ins_stmt(ins_asgn(:@user, User.build(param 3 ins_stmt(Project.all.each do |project| 4 ins_if( 5 project.hiring?, 6 ins_stmt(@user.projects << project), 7 nil 8 ) 9 end) 10 ins_stmt(@user.save!) 11 end ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 14. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 15. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 16. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 17. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 7/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究: 不変式の検証器³ Inductive Verification of Data Model Invariants for Web Applications 1 Action 定義文を書 き換える 2 書き換えたソース コードを実行し、 Abstract Data Store, ADS 抽象データストー を作る 3 ADS を First Order Logic, FOL 一階論理式 に変換する 4 FOL を既存の検証 器で検証する ³Christoph Weidenbach et al. “SPASS Version 3.5”. In: Automated Deduction–CADE-22. Springer, 2009, pp. 140–145.
  • 18. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 8/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究問題点と改善した提案手法 先行研究の問題点:ループから得られた FOL を解くこと は困難, 即ちタイムアウトによる失敗しがち • FOL のみでループを表すのに非常に長くなる • 二回目の変数は一回目の値に依存することは有りうる • ループから得られた FOL は transitive closure 推移閉包になって状態爆発する FOL でループを処理する一般的なやり方:手作業でループ不 変式を与えて、状態爆発を収まる 改善した提案手法: 1 ループの各イテレーションが coexecutable 並列実行可能か否かを検証 • 並列実行可能性: 並列実行する結果 == 逐次実行する結果 2 並列実行可能なループのみに着目し、ループを洗練した FOL に変換する
  • 19. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 8/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究問題点と改善した提案手法 先行研究の問題点:ループから得られた FOL を解くこと は困難, 即ちタイムアウトによる失敗しがち • FOL のみでループを表すのに非常に長くなる • 二回目の変数は一回目の値に依存することは有りうる • ループから得られた FOL は transitive closure 推移閉包になって状態爆発する FOL でループを処理する一般的なやり方:手作業でループ不 変式を与えて、状態爆発を収まる 改善した提案手法: 1 ループの各イテレーションが coexecutable 並列実行可能か否かを検証 • 並列実行可能性: 並列実行する結果 == 逐次実行する結果 2 並列実行可能なループのみに着目し、ループを洗練した FOL に変換する
  • 20. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 8/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 先行研究問題点と改善した提案手法 先行研究の問題点:ループから得られた FOL を解くこと は困難, 即ちタイムアウトによる失敗しがち • FOL のみでループを表すのに非常に長くなる • 二回目の変数は一回目の値に依存することは有りうる • ループから得られた FOL は transitive closure 推移閉包になって状態爆発する FOL でループを処理する一般的なやり方:手作業でループ不 変式を与えて、状態爆発を収まる 改善した提案手法: 1 ループの各イテレーションが coexecutable 並列実行可能か否かを検証 • 並列実行可能性: 並列実行する結果 == 逐次実行する結果 2 並列実行可能なループのみに着目し、ループを洗練した FOL に変換する
  • 21. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 9/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 逐次実行 並列実行 フォーマルモデル 並列実行可能性 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 22. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 10/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 逐次実行 1 class PostsController 2 def destroy_tags 3 ... 4 posts = Post.where(id: params[: post_ids]) 5 ... 6 posts.each do |p| 7 p.tags.destroy_all! 8 end 9 ... 10 end 11 end 0..* 0..* Post Tag p1 p2 p3 t1 t2 t3
  • 23. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 10/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 逐次実行 1 class PostsController 2 def destroy_tags 3 ... 4 posts = Post.where(id: params[: post_ids]) 5 ... 6 posts.each do |p| 7 p.tags.destroy_all! 8 end 9 ... 10 end 11 end 0..* 0..* Post Tag p1 p2 p3 t2 t3
  • 24. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 10/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 逐次実行 1 class PostsController 2 def destroy_tags 3 ... 4 posts = Post.where(id: params[: post_ids]) 5 ... 6 posts.each do |p| 7 p.tags.destroy_all! 8 end 9 ... 10 end 11 end 0..* 0..* Post Tag p1 p2 p3 t3
  • 25. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 11/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 並列実行 p1 p2 p3 t2 t3 p1 p2 p3 t3 p1 p2 p3 t1 t3
  • 26. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 11/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 並列実行 p1 p2 p3 t2 t3 p1 p2 p3 t3 p1 p2 p3 t1 t3
  • 27. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 11/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 並列実行 p1 p2 p3 t2 t3 p1 p2 p3 t3 p1 p2 p3 t1 t3
  • 28. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 11/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 動機の例: 並列実行 p1 p2 p3 t2 t3 p1 p2 p3 t3 p1 p2 p3 t1 t3
  • 29. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 12/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 30. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 13/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストア Data Store DS は Class の集合、Relation の集合、Action の集合、 不変式の集合で定義 DS = ⟨C, R, A, I⟩ Class と Relation 0..* 0..* Post Tag 不変式 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } Action
  • 31. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 13/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストア Data Store DS は Class の集合、Relation の集合、Action の集合、 不変式の集合で定義 DS = ⟨C, R, A, I⟩ Class と Relation 0..* 0..* Post Tag 不変式 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } Action
  • 32. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 13/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストア Data Store DS は Class の集合、Relation の集合、Action の集合、 不変式の集合で定義 DS = ⟨C, R, A, I⟩ Class と Relation 0..* 0..* Post Tag 不変式 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } Action
  • 33. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 13/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストア Data Store DS は Class の集合、Relation の集合、Action の集合、 不変式の集合で定義 DS = ⟨C, R, A, I⟩ Class と Relation 0..* 0..* Post Tag 不変式 1 invariant forall{ |todo| 2 not todo.project.empty? 3 } Action
  • 34. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 14/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストアの状態 Data Store State ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合 は ⟨O, T⟩ ∈ DS 状態 1 p1 p2 p3 t2 t3 状態 2 p1 p2 p3 t3 状態 3 p1 p2 p3 t1 t3
  • 35. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 14/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストアの状態 Data Store State ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合 は ⟨O, T⟩ ∈ DS 状態 1 p1 p2 p3 t2 t3 状態 2 p1 p2 p3 t3 状態 3 p1 p2 p3 t1 t3
  • 36. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 15/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 文と状態の差分 Statements and State Deltas 文は ADS 上、Action 内に1つ のノードで表す 文を実行したら、ある状態 s から s′ へ遷移することが差分 s′ ⊖ s で合わせる s′ = s ⊕ (s ⊖ s′ ) 状態 s p1 p2 p3 t2 t3 差分 s′ ⊖ s p1 p2 p3 t1 t2 t3 状態 s′ p1 p2 p3 t1 t3
  • 37. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 15/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 文と状態の差分 Statements and State Deltas 文は ADS 上、Action 内に1つ のノードで表す 文を実行したら、ある状態 s から s′ へ遷移することが差分 s′ ⊖ s で合わせる s′ = s ⊕ (s ⊖ s′ ) 状態 s p1 p2 p3 t2 t3 差分 s′ ⊖ s p1 p2 p3 t1 t2 t3 状態 s′ p1 p2 p3 t1 t3
  • 38. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 16/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADS の文とオブジェクトの種類
  • 39. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 17/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ForEach ループ文 ForEach Loop Statement ForEach ループ文はオブジェ クトのリスト α とループの Block 文 B で表す。ループの回 数 n = |α| 。[s, s′ ]Bo は α 中のオ ブジェクト o に対して B を実 行する際の状態遷移。 オブジェクトが実行された順番によっ て、ループ間に依存関係が生じる → 先行研究に状態爆発の原因となる p1 p2 p3 t1 t2 t3
  • 40. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 17/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ForEach ループ文 ForEach Loop Statement ForEach ループ文はオブジェ クトのリスト α とループの Block 文 B で表す。ループの回 数 n = |α| 。[s, s′ ]Bo は α 中のオ ブジェクト o に対して B を実 行する際の状態遷移。 オブジェクトが実行された順番によっ て、ループ間に依存関係が生じる → 先行研究に状態爆発の原因となる p1 p2 p3 t1 t2 t3
  • 41. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 18/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 フォーマルモデル 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 42. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 19/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 差分の一致性と和計算 Consistency and Union of Deltas 差分が consistent 一致であることは、生成と削除の集合は相互に 排他的である Oc ∩ Od = Tc ∩ Td = ∅∧ (∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧ (∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc) 2つ差分の和 (Union, ∩) はデータ集合の和集合に成る ∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩ δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩ 一致的な2つ差分の和が一致でないことは conflict 衝突
  • 43. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 19/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 差分の一致性と和計算 Consistency and Union of Deltas 差分が consistent 一致であることは、生成と削除の集合は相互に 排他的である Oc ∩ Od = Tc ∩ Td = ∅∧ (∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧ (∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc) 2つ差分の和 (Union, ∩) はデータ集合の和集合に成る ∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩ δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩ 一致的な2つ差分の和が一致でないことは conflict 衝突
  • 44. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 19/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 差分の一致性と和計算 Consistency and Union of Deltas 差分が consistent 一致であることは、生成と削除の集合は相互に 排他的である Oc ∩ Od = Tc ∩ Td = ∅∧ (∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧ (∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc) 2つ差分の和 (Union, ∩) はデータ集合の和集合に成る ∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩ δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩ 一致的な2つ差分の和が一致でないことは conflict 衝突
  • 45. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 20/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 並列実行と並列実行可能性 Coexecution and Coexecutability 並列実行の差分の和は衝突しない、且つ結果は逐 次実行と必ず等しくなる場合に並列実行可能性が あるという
  • 46. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 21/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 並列実行可能性の条件 Coexecutability Condition 2つ文 A と B は以下の条件を満たす場合に限り、A と B は並列実行可能である: ∀s ∈ DS, ∀e ∈ s : (reads(A, e) ⇒ ¬creates(B, e) ∧ ¬deletes(B, e)) ∧ (creates(A, e) ⇒ ¬reads(B, e) ∧ ¬deletes(B, e)) ∧ (deletes(A, e) ⇒ ¬reads(B, e) ∧ ¬creates(B, e)) (具体的な証明は割愛させていただきます)
  • 47. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 22/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 フォーマルモデル 並列実行可能性 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 48. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 23/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 並列実行可能性の検証器 Syntactic Analysis 1 先行研究のやり方でソースコードから ADS を 抽出 2 ADS の Actions に対し、ForEach ループを見つ けて、並列実行可能性を静的に検証する • ループ内に行なって、ループ外に影響する reads, creates, deletes 操作を要約する 3 並列実行可能なループに対し、和計算した差分 を適用し、洗練した FOL を作る 4 先行研究と同じ FOL 検証器で検証する
  • 49. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 24/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 フォーマルモデル 並列実行可能性 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題
  • 50. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 25/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験対象の選び方 GitHub から人気順上位 20 の Ruby プロジェクトを 見ました。 20 % ActiveRecords を使わない (4) 10 % Web アプリではない (2) 5 % Model 抽出に失敗 (1) 30 % ループがない (6) 35 % 実験対象 (7)
  • 51. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 26/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験対象 残り 7 つプロジェクトに、アクションにループは 38 箇所存在します。その内 12 箇所は ADS 上に空ル ープになっています。 分析によって全てのループは並列実行可能である。
  • 52. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 27/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験の設定 対象アプリに対して、手作業で検証したい不変式を書き ます。 1つの Action と1つの不変式に対し、複数の axiom 公理と1つ の conjecture 推測 を FOL 式の形で生成される。FOL 検証器から、 axiom 公理が conjecture 推測 を imply 暗示することが推論できれば、Action は不 変式を保つことが証明される。 タイムアウトの時間は 5 分に設定する。検証器のオプシ ョンとして soft sort を指定できる、on/off によって検証が 停止できる場合が変わる。 入れ子構造のループが実際に少ないため、著者等は自ら 新しい Action を4つ追加しました。
  • 53. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 28/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実験結果
  • 54. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 29/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 紹介と背景 動機の例 フォーマルモデル 並列実行可能性 並列実行可能性の検証器 評価実験 結論と今後の課題
  • 55. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 30/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 結論と今後の課題 結論 • coexecution 並列実行可能性を提案した • あるループに対して、並列実行の結果は逐次実行の結果と同 じか • データモデルを検証する際にループ内部依存性の検証を避け る方法 • coexecution 並列実行可能性の静的検証器を提案し実装した • 実験で提案手法が大幅に検証に要する時間を短縮できる ことを示した 今後の課題 • coexecutability 並列実行可能性を他の検証場面に適用できるか • ループに対する他の検証に有効であるか? • データモデルをもっと強化して、より多く不変式を書け ることに目指す • オブジェクト以外のデータ型をサポートできるか?
  • 56. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 30/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 結論と今後の課題 結論 • coexecution 並列実行可能性を提案した • あるループに対して、並列実行の結果は逐次実行の結果と同 じか • データモデルを検証する際にループ内部依存性の検証を避け る方法 • coexecution 並列実行可能性の静的検証器を提案し実装した • 実験で提案手法が大幅に検証に要する時間を短縮できる ことを示した 今後の課題 • coexecutability 並列実行可能性を他の検証場面に適用できるか • ループに対する他の検証に有効であるか? • データモデルをもっと強化して、より多く不変式を書け ることに目指す • オブジェクト以外のデータ型をサポートできるか?
  • 57. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 31/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 上から目線の所感 coexecutability 証明できるのはすごかった × 論理式が多すぎ • coexecutability の証明以外はわりと直感的 × 言っている coexecution は concurrent と実は関 係が少ない × Ruby 以外の言語に MVC をちゃんと守っている かどうかは気になります
  • 58. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 紹介と背景 出典と著者情報 背景と先行研究 動機の例 逐次実行 並列実行 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 並列実行と並列実行可能性 並列実行可能性の条件 並列実行可能性の検証器 評価実験 実験対象 実験設定 実験結果 結論と今後の課題 2015 年 07 月 30 日(木) 32/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ご清聴ありがとうご ざいます
  • 59. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 33/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . これからは予備スラ イドです
  • 60. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 34/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性
  • 61. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 35/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 抽象データストア Abstract Data Store 定義: ADS DS = ⟨C, R, A, I⟩ C = クラスの集合 R = リレーションの集合 A = アクションの集合 I = 不変式の集合 定義: クラス • 0 か 1 の親クラス • 親子に循環しない 定義: リレーション r = ⟨name, co, ct, card⟩ co 関係の元 co ∈ C ct 関係の目標 ct ∈ C card 1 対多, 1 対 1 等
  • 62. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 36/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . データストアの状態 Data Store State ある DS = ⟨C, R, A, I⟩ に対し、全て可能な状態の集合 は ⟨O, T⟩ ∈ DS O = オブジェクトの集合 ∀o ∈ O, classof(o) ∈ C T = タプルの集合 ∀t ∈ T,t = ⟨r, oo, ot⟩ where r = ⟨co, ct, card⟩ ∈ R, classof(oo) = co ∧ classof(ot) = ct 言い換えると、DS の状態はデータベースに格納し ているデータをモデル化したもの
  • 63. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 37/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . アクション, 不変式, 行為 Actions, Invariants and Behaviors アクション a ∈ A は可能な状態遷移の集合 a : ⟨⟨O, T⟩ , ⟨O′ , T′ ⟩⟩ ⊆ DS × DS 不変式 i ∈ I は状態からブーリアンへの関数 i : DS → {false, true} 行為は DS のある初期状態 s0 から、アクションによ って不変式を保って辿れる一連の状態 s0, s1, s2 . . .: • ∀k > 0 : sk ∈ DS ∧ ∃a ∈ A : (sk, sk+1 ∈ a) • ∀k > 0 : ∀i ∈ I : i(sk) = true DS に、任意の行為で辿れる状態の集合は DSR ⊆ DS
  • 64. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 38/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 文 Statements アクションは一連の文で書かれます。1つの文 S は2つ状態 にある遷移: ⟨s, s′ ⟩ ⊆ DS × DS 文の種類が決まっている、S 文で可能な遷移 ⟨s, s′ ⟩ を [s, s′ ]S で表記する。 例としてあるクラスのオブジェクトを作る文 SC は: [s, s′ ]SC ↔∃oC : classof(oC) = C ∧ (oC ∈ s′ ∧ oC /∈ s∧ (∀e : (e ∈ s ↔ e ∈ s′ ) ∨ e = oC)) 一連の文 A1, A2, . . . An を含む Block 文 B は: ∀s, s′ ∈ DS × DS : [s, s′ ]B ⇔∃s1, s2 . . . sn−1 ∈ DS × . . . × DS : [s, s1]A1 ∧ [s1, s2]A2 ∧ . . . ∧ [sn−1, s′ ]An
  • 65. . . . .... .... .... ... . . . .
  • 66. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 40/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ForEach ループ文 ForEach Loop Statement ForEach ループ文はオブジェクトのリスト α とル ープの Block 文 B で表す。ループの回数 n = |α| 。 [s, s′ ]Bo は α 中のオブジェクト o に対して B を実行す る際の状態遷移。 ∀s, s′ ∈ DS × DS : [s, s′ ]FE ⇔ ∃o1 . . . on ∈ α, ∃s1 . . . sn ∈ DS : ∀i, j ∈ [1 . . . n] : i ̸= j ⇔ oi ̸= oj∧ [s, s1]Bo1 ∧ [s1, s2]Bo2 ∧ . . . ∧ [sn−1, sn]Bon ∧ sn = s′
  • 67. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 41/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . フォーマルモデル 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件
  • 68. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 42/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 実行の差分 Execution Deltas ある文を実行する前後の状態 s と s′ の間に、実行の 差分: δ = s′ ⊖ s = ⟨Oc, Tc, Od, Td⟩ そのうち、Oc, Tc は 生成したオブジェクトとリレーションの集合、 Od, Td は削除したオブジェクトとリレーションの集 合を表す。 例えば:s1 = {a, b, ⟨a, b⟩}, s2 = {a, b, c} ならば s1 ⊖ s2 = ⟨{}, {⟨a, b⟩}, {c}, {}⟩ s2 ⊖ s1 = ⟨{c}, {}, {}, {⟨a, b⟩}⟩
  • 69. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 43/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 差分の一致性と和計算 Consistency and Union of Deltas 差分が consistent 一致であることは、生成と削除の集合は相互に 排他的である Oc ∩ Od = Tc ∩ Td = ∅∧ (∀t = ⟨oo, ot⟩ ∈ Tc : oo /∈ Od ∧ ot /∈ Od)∧ (∀t = ⟨oo, ot⟩ ∈ Td : oo /∈ Oc ∧ ot /∈ Oc) 2つ差分の和 (Union, ∩) はデータ集合の和集合に成る ∀δ1 = ⟨Oc1, Tc1, Od1, Td1⟩ , δ2 = ⟨Oc2, Tc2, Od2, Td2⟩ δ1 ∩ δ2 = ⟨Oc1 ∩ Oc2, Tc1 ∩ Tc2, Od1 ∩ Od2, Td1 ∩ Td2⟩ 一致的な2つ差分の和が一致でないことは conflict 衝突
  • 70. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 44/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 差分の適用 Apply of Deltas 状態 s に差分 δ を適用することを ⊕ で表す ∀s = ⟨O, T⟩ ∈ DS, s′ = ⟨O′ , T′ ⟩ ∈ DS : s′ = s ⊕ δ ⇔ (∀o : o ∈ O′ ⇔ (o ∈ O ∨ o ∈ Oc) ∧ o /∈ Od)∧ (∀t = ⟨oo, ot⟩ : t ∈ T′ ⇔ (t ∈ T ∨ t ∈ Tc)∧ t /∈ Td ∧ oo ∈ O′ ∧ ot ∈ O′ )
  • 71. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 45/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 並列実行と並列実行可能性 Coexecution and Coexecutability 並列実行の差分の和は衝突しない、且つ結果は逐 次実行と必ず等しくなる場合に並列実行可能性が あるという
  • 72. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 46/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 文はエンティティに対する操作 Statement Reads, Creates, Deletes creates(A, e) ⇔∃s, s′ ∈ DS : [s, s′ ]A ∧ e /∈ s ∧ e ∈ s′ deletes(A, e) ⇔∃s, s′ ∈ DS : [s, s′ ]A ∧ e ∈ s ∧ e /∈ s′ cover(∆, A, S) ⇔(∀s ∈ S, s′ ∈ DS : [s, s′ ]A ⇒ (∃δ ∈ ∆ : s′ = s ⊕ δ)) ∧ (∀s ∈ S, δ ∈ ∆ : [s, s ⊕ δ]A) reads(A, e) ⇔∃s ∈ DS : ¬∃∆ ⊆ DS∆ : cover (∆, A, {s ∪ {e}, s {e}})
  • 73. Coexecutability: 並列実行可能性 大阪大学大学院 CS 専攻楊嘉晨 フォーマルモデル 抽象データストア 文のモデル化 ADS の文とオブジェクトの種類 並列実行可能性 実行の差分 並列実行と並列実行可能性 文はエンティティに対する操作 並列実行可能性の条件 2015 年 07 月 30 日(木) 47/32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 並列実行可能性の条件 Coexecutability Condition 2つ文 A と B は以下の条件を満たす場合に限り、A と B は並列実行可能である: ∀s ∈ DS, ∀e ∈ s : (reads(A, e) ⇒ ¬creates(B, e) ∧ ¬deletes(B, e)) ∧ (creates(A, e) ⇒ ¬reads(B, e) ∧ ¬deletes(B, e)) ∧ (deletes(A, e) ⇒ ¬reads(B, e) ∧ ¬creates(B, e)) (具体的な証明は割愛させていただきます)