maintaining invariant traceability through bidirectional transformations

28
Maintaining Invariant Traceability through Bidirectional Transformations Y. Yu, Y. Lin, Z. Hu, S. Hidaka, H. Kato, and L. Montrieux 1 ICSE’12 勉勉勉 勉勉 勉勉勉勉勉 勉勉

Upload: casimir-lel

Post on 02-Jan-2016

58 views

Category:

Documents


3 download

DESCRIPTION

ICSE’12 勉強会. Maintaining Invariant Traceability through Bidirectional Transformations. Y. Yu, Y. Lin, Z. Hu, S. Hidaka, H. Kato, and L. Montrieux. 担当: 名古屋大学 渥美. Motivating example. モデルから テンプレートコードを生成. (2) テンプレートコードを改変 ・ toString() を toString(String type) に拡張 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Maintaining  Invariant Traceability through Bidirectional Transformations

Maintaining Invariant Traceability through Bidirectional Transformations

Y. Yu, Y. Lin, Z. Hu, S. Hidaka, H. Kato, and L. Montrieux

1

ICSE’12 勉強会

担当: 名古屋大学 渥美

Page 2: Maintaining  Invariant Traceability through Bidirectional Transformations

Motivating example

2

注釈 @generated はモデルから生成されたことを示すものであり,モデルと対応付けられている

モデルからコードを再生成した場合に書き換えられないよう

(3) Name iD ⇒ の変更は自動的にモデルに反映 ( 自動 )(4) モデルからコードを再生成 ・ 変更前の toString が生成される ・ toString(String type) 中の name が iD に変更されない

(1) モデルから テンプレートコードを生成

(2) テンプレートコードを改変・ toString() を toString(String type) に拡張・ getName() を getID() にリファクタリング

Page 3: Maintaining  Invariant Traceability through Bidirectional Transformations

blinkit (bidirectional invariant traceability framework)

3

I. モデルとテンプレートコードは対応付けられている

II. U’ における修正したメソッドには 注釈 @generated INV を付ける

III. U’ と T の差分から U’ を T に変換するルールを求める

IV. 3. のルールを T’ に適用し, T とU’ のトレーサビリティ情報を保持したまま U’ と T’ をマージしたコードを生成する

目的:同時に更新されるモデルとユーザコードのトレーサビリティを確保する

GRoundTram: An Integrated Framework for DevelopingWell-BehavedBidirectional Model Transformations (ASE2011, short paper)

Page 4: Maintaining  Invariant Traceability through Bidirectional Transformations

評価 (1/2)

モデル,コードを並行して変更を加えて適切にトレーサビリティを確保できるか ? クラス数 1, 属性数 1 の EMF メタモデルを対象

@generated として生成された要素 クラス : 8 属性 : 48 メソッド : 10

モデル,生成されたクラスを変更 メソッド 9 つに対し,注釈を @generated INV に変更し,

メッソドコードを修正 モデルのクラス名,メソッド名を変更

4

blinkit でそれぞれの変更を正しくマージできることを確認した

Page 5: Maintaining  Invariant Traceability through Bidirectional Transformations

評価 (2/2)

モデルとコードがような現実的なケースがオープンソースのプロジェクトにあるか ? GMF プロジェクトの CVS リポジトリから java code

を対象に調査 2005/08/14 〜 2011/08/13 28,070 リビジョン

5

• @model 要素 ( モデルに対応する Java コード ) の変更による影響を受けるリビジョン: 15,223 (54%)

• @generated NOT のメソッド ( ユーザコード ) から参照されるモデル要素: 146,415

⇒ 平均 9.61 (146,415/15,223) 個のモデル要素が@generated NOT メソッドから参照されて

いる

Page 6: Maintaining  Invariant Traceability through Bidirectional Transformations

6

ICSE2012 勉強会 Session N : Models #2

Slicing MATLAB Simulink Models

(R. Reicherdt & S. Glesner, Proc. ICSE2012, pp.551 - 561)

名古屋大学 大学院情報科学研究科 旧小林 G

小林隆志 & 小林孝壽 (M1 ・インターンシップ中 )

※ 図表は上記論文から引用しています.

Page 7: Maintaining  Invariant Traceability through Bidirectional Transformations

7

概要

•背景: Simulink モデルに対する静的手法は少ない

• 手動レビューや構文チェックのみ or コード生成後に実施

• データフローや制御フローの認識が困難であることが原因

•提案:スライス技法による Simulink モデルの複雑さ削減

• 特徴: Simulink 向けの制御依存解析 ( データ依存は直感的 )

• CEC (Conditional Execution Contexts) の考慮が肝

• モデル構造や階層を保持 → 他の手法・ツールを適用可能

• 評価: 10 個のサンプルモデル (57-394 ブロック ) により評価

• Ave. Forward/Backward Slice Size で特性を議論

• スライス計算の正確さなどは議論していない

Page 8: Maintaining  Invariant Traceability through Bidirectional Transformations

8

Simulink モデルSimulink :データフロー指向モデル

ブロックは機能の表現やモデルの構成に使用される

ラインは信号の流れを表し,ブロックの入力と出力に接続する

EC( 実行コンテキスト ) を考慮した シミュレーション

Fig2 では, while ブロックの実行は1 サイクルだが,内部 (Fig3) では複数サイクルで実行される.(1/z が正しく機能する )

cond が成り立つ間は繰り返す

【 delay block 】1 サイクル前の値を返す

i++

i += i

i *= i

Page 9: Maintaining  Invariant Traceability through Bidirectional Transformations

9

EC( 実行コンテキスト )実行サイクルを制御する単位

モデル全体 (=root context) ,各 Atomic サブシステムがそれぞれに1つもつ

EC に入ると EC に含まれる全ての要素が実行される実行するブロックの順序リストとネストした EC を含む他のサブシステム、ブロックとのデータ依存と親サブシステムの EC よりスケジュールされる

root context (EC1)

EC2 (for subsystem#1) EC3 (for subsystem#2)

2:1

2:21:21:1

1:3

3:1

3:2

Page 10: Maintaining  Invariant Traceability through Bidirectional Transformations

11

Conditional Execution Contexts(CEC)

条件の値を指定する特殊な入力ポートに関連する EC

任意の CEC に含まれるノード m は述語ブロックに制御依存

実行スケジュールが cond の真偽で異なる

Page 11: Maintaining  Invariant Traceability through Bidirectional Transformations

12

CEC の計算問題点: CEC はサブシステム境界を超えて両方向に伝播

Mathwoks が定義.シミュレーション最適化が目的条件付きサブシステム S の CEC に, S に含まれていないブロック b を追加できる (= 実行サイクルを減らすことができる )

単純な構文指向アプローチを利用できない伝播を考慮するアルゴリズムを定義している

サブシステム外のブロックも同じEC 2 に入れる (Gain と Bias が同 EC に )

In1 の入力でIn2-4 のどれを出力するか決定

Page 12: Maintaining  Invariant Traceability through Bidirectional Transformations

15

評価実験

提案手法に基づくスライシングツールを実装 モデル解析,制御依存・データ依存の解析, PDG 構築 Forward , Backward走査が可能グラフを配色して印刷,スライス以外のブロックの除去

MATLAB IDE で実行可能な M言語スクリプト10 個のケーススタディにより評価

m1 を自身で作成 ( 57 block) m2 をプロジェクトパートナーから提供 (227 block)残り 8 個は Simulink デモモデル (78-394 block)

Page 13: Maintaining  Invariant Traceability through Bidirectional Transformations

16

実験結果

 

FW : forward m : モデルBW:Backward S(b): b を基準にしたスライスdd: データ依存cd :制御依存

dd+cd は dd と同程度か , dd より大きなサイズとなる条件付き実行に必要なブロックをスライスに追加するため

Page 14: Maintaining  Invariant Traceability through Bidirectional Transformations

17

実証研究との比較[9] :様々なプログラムのスライス

AVG BW=28%, FW=26%[10] :異なる定義の拡張有限状態機械

AVG BW=39.42%~67.99%本研究:

AVG BW=54.26%, FW=54.39% [9] と大小が逆転している

Simulink は制御依存があまり含まれない Constant ブロックや大きなフィードバックループを持つ

[9] と比べ大きい処理に関係ない Virtual ブロック (Port など ) が多い フィードバックループ →多数のブロックによる環状データ依存

[ 9 ] D. Binkley, N. Gold, and M. Harman, “An empirical study of static program slice size,” ACM TOSEM (16)2, 2007[10] K. Androutsopoulos, et al. “A theoretical and empirical study of EFSM dependence,” Proc. ICSM2009

Page 15: Maintaining  Invariant Traceability through Bidirectional Transformations

Partial Evaluation of Model Transformations

A. Razavi (U. of Waterloo) & K. Kontogiannis (National Tech. U. of Athens)

Proc. ICSE2012 pp.562-572

18

ICSE’12 勉強会 Session N #3

担当:東工大 小林スライド中の図は論文から引用しています.

Page 16: Maintaining  Invariant Traceability through Bidirectional Transformations

概要 背景:モデル変換 (MT) は高コスト

MT は新しいモデルを作る時だけではなく,開発プロセス全体で頻繁に利用されるが,変換コスト (時間 ) が問題となる.

提案:部分評価をベースにした漸次的モデル変換法 モデル変換のプログラムを部分評価して得た残余プログラム =最適化されたモデル変換プログラム

部分評価対象 = 新たな変更に関係ない要素の変換

評価: QvtMix を用いた変換実験 QvtMix: QVT-OM言語用の提案手法のプロトタイプ実装 要素数を 3~ 11K で変化させ変換の高速化を確認

19

Page 17: Maintaining  Invariant Traceability through Bidirectional Transformations

部分評価 部分評価:

静的に決定できる ( 入力が予想できる ) 計算を事前評価し,実行コストを削減する手法.事前評価できなかった個所は残余 (residual) プログラムと呼ばれる

式による説明 言語 で書かれた prog が in を入力として実行した場合に

out を出力することを と表記する 部分評価器 は prog と,事前に決定可能な入力 ,

を入力として与え,残余プログラム progs を出力する

つまり,事前に決定できない入力を とすると

20

Page 18: Maintaining  Invariant Traceability through Bidirectional Transformations

提案手法の概要

Binding Time Analysis(BTA) Parser が生成した AST に対して,事前決定できる入力と伝播ルールを使って, FIXED か VAR をアノテーションする

式の評価結果をキャッシュして利用 Specializer

AST をトラバースして FIXED は評価結果と置き換える. VAR に対しても FIXED に関係する部分は書き換える

21

Page 19: Maintaining  Invariant Traceability through Bidirectional Transformations

例題(と実験でのモデル)

22

Page 20: Maintaining  Invariant Traceability through Bidirectional Transformations

BTA と Specializer 実行例 :

Book が FIXED 新しいインスタンス

は増えない 全属性が FIXED

値は変わらない Composition が VAR

インスタンス数が変化する

23

Page 21: Maintaining  Invariant Traceability through Bidirectional Transformations

BTA と Specializer 実行例 :

24

Page 22: Maintaining  Invariant Traceability through Bidirectional Transformations

BTA と Specializer 実行例 :

25

Page 23: Maintaining  Invariant Traceability through Bidirectional Transformations

評価 例題と同じモデルを

Book の数を変化させて速度を評価 要素数 100以上での爆発的な速度増加を大幅に改善 100 までは I/O dominant

FIXED にする割合を変化させて効果を評価 およそ倍の速度で計算可能

26

Page 24: Maintaining  Invariant Traceability through Bidirectional Transformations

Partial Models: Towards Modeling and Reasoning with Uncertainty

M. Famelis, R. Salay, and M. Chechik (U. of Tronto)

Proc. ICSE2012 pp.573-583

27

ICSE’12 勉強会 Session N #4

担当:東工大 小林スライド中の図は論文から引用しています.

Page 25: Maintaining  Invariant Traceability through Bidirectional Transformations

概要 不確実性を取り扱うことのできるモデリング手法の提案

この論文での “不確実性 (uncertainty)” = “multiple possibilities” 例:「ある属性をどのクラスに持たせるべきか,現時点では判断できない」

対象:モデル=メタモデルが存在する型付グラフ “Partial Model” = 不確実性を許容するモデル = ノードとエッジ

の存在が {True, False, Maybe( 実際は論理式 )} で表現される.

28

Page 26: Maintaining  Invariant Traceability through Bidirectional Transformations

Reasoning with Partial Models 不確実性を取り除くために候補を選択する手段として

4 つの reasoning operations を定義 OP1: Construction

複数の候補モデルから Partial Model を構成する方法 不一致要素を Maybe として,その論理式を構成する

アルゴリズムで定義 OP2: Verification

Partial Model(ΦM) がプロパティ (Φp) を満たすか確認する方法 SAT 問題に変換 (ΦM ∧ Φp と ΦM ∧ ¬ Φp を確認 )

OP3: Diagnosis どの候補モデルがプロパティに違反しているかを見つける方法 SAT 問題に変換 (OP3a~c の 3種類が定義されている )

OP4: Refinement プロパティに違反している候補モデルを除外する方法 アルゴリズムで定義

29

Page 27: Maintaining  Invariant Traceability through Bidirectional Transformations

評価 RQ1: 伝統的な方法と比べて,提案手法のモデル

はで推論することはどの程度ふさわしい (feasible)か? E1: ΦM ∧ Φp と ΦM ∧ ¬ Φp を確認,時間を比較 モデルサイズ (S,M,L,XL), 不確実性 (S,M,L,XL) を変化

実験結果 E1: 従来法と比べて

最大 29倍高速 OP2, OP3 の一部は

大変効果的

30

Page 28: Maintaining  Invariant Traceability through Bidirectional Transformations

評価結果 RQ2: 提案手法は,不確実性の度合いに対してど

の程度の精度 (sensitive) か? E2: ΦM ∧ Φp をもつ partial model( 提案手法 ) ,全モデル (従来法 ) を作成.時間を比較

モデルサイズ (S,M,L,XL), 不確実性 (S,M,L,XL) を変化 実験結果

E2: 不確実性の度合いに相関がある 提案手法を使うと遅い.

( モデルサイズが小さいと特に )

31