ICSE 2011 Comprehending the Drift II

13
ICSE 2011 Comprehending the Drift II 東東東 東東東incl. OB 東東 Sirinut Thangthumachit 東東 東東 東東 東東 東東

description

ICSE 2011 Comprehending the Drift II. 東工大 佐伯研( incl. OB ) 先鋒 Sirinut Thangthumachit 中堅 林 晋平 大将 風戸 広史. Non-Essential Changes in Version Histories by D. Kawrykow and M. P. Robillard. 大事な変更は Non-Essential 変更と 一緒に 行われることが多い Non-Essential 変更 は どれくらい行われるか ソースコード差分とメソッドの更新にどれくらい影響があるか - PowerPoint PPT Presentation

Transcript of ICSE 2011 Comprehending the Drift II

Page 1: ICSE 2011 Comprehending the Drift II

ICSE 2011

Comprehending the Drift II

東工大 佐伯研( incl. OB )先鋒 Sirinut Thangthumachit中堅 林 晋平大将 風戸 広史

Page 2: ICSE 2011 Comprehending the Drift II

Non-Essential Changes in Version Historiesby D. Kawrykow and M. P. Robillard

• 大事な変更は Non-Essential 変更と一緒に行われることが多い– Non-Essential 変更はどれくらい行われるか– ソースコード差分とメソッドの更新にどれくらい影響があるか

• 本研究の貢献– Non-Essential 変更を版管理履歴から抽出するツールの構築– 7 OSS 内の 24000 変更セットに適用– 2.8 ~ 22.9% は Non-Essential – 2.6 ~ 15.5% のメソッド更新は Non-Essential – Non-Essential 変更の影響を明らかにした

Page 3: ICSE 2011 Comprehending the Drift II

Non-Essential Differences

Trivial Type Updates

Local Variable Extractions

Rename Refactorings

Trivial Keyword Modifications

Whitespace and Documentation Updates

Non-Essential Changes in version Histories, p.2

Page 4: ICSE 2011 Comprehending the Drift II

DiffCAT• 入力: 版管理ツールからの二つのバージョンの情報• 出力: Non-Essential 変更の情報、構造変更の情報、 Non-Essential 変更

が含まれていない AST

1. SemDiff と PPA を利用し、入力を準備2. ChangeDistiller で Method と Field の Rename Refactoring を抽出3. 独自の手法で Class と LocalVariable の Rename Refactoring を抽出4. 名前変更されたクラスを同じ名前にして、その中の Rename

Refactoring を抽出5. すべての Rename Refactorings を逆適用6. もう一度 ChangeDistiller を適用し、構造の変更を抽出

http://www.cs.mcgill.ca/~swevo/diffcat/

Page 5: ICSE 2011 Comprehending the Drift II

評価Non-Essential は 2.8-22.9%

メソッド更新の 9%

( Zimmermann et al., 2005)本手法では

Precision が 10.5% 増93,576 x 0.219 = 20,50181,162 x 0.242 = 19,631

→   4.2% 減

Non-Essential Changes in version Histories, Table 2, 3, 5

Page 6: ICSE 2011 Comprehending the Drift II

Aspect Recommendationfor Evolving Software

by T. T. Nguyen, H. V. Nguyen, H. A. Nguyen, and T.N. Nguyen

• いわゆるアスペクトマイニング手法– 既存手法との違い:

「 Non-AO → AO 」だけでなく,すでに AO なプログラムの進化の過程でのマイニングにも注目

• 貢献– 新しいアスペクト推薦アルゴリズム XScan

• AO/Non-AO 両種類のプログラムに適用可能– スケーラブルで高精度なツールの実現– 複数の実システムで評価

Page 7: ICSE 2011 Comprehending the Drift II

基本的な考え方• メソッド呼出によるインタラクションに注目

– 内的(呼出元に注目),外的(呼出先に注目),プロクシ外的 ( override の影響)

• Concern peer: インタラクションの類似度が閾値以上のメソッド対– 類似度 : 3 インタラクション集合の類似度の重みつき和– 集合内の各インタラクションの一致もインタラクション類似度に基

づく→ 止まらない再帰.近似アルゴリズムを利用

public class BankAccount { Database db; public void deposit(double value) { db.lock(); ResultSet r = db.execute(…); db.unlock(); } public void withdraw(double value) { db.lock(); ResultSet r = db.execute(…); db.unlock(); } …

呼び出し元 BA.deposit呼び出し先 DB.execute後呼び出し {DB.unlock}前呼び出し {DB.lock}• BA.deposit の内的インタラクション集合 :

{ (DB.execute, {DB.unlock}, {DB.lock}) }• BA.withdraw の内的インタラクション集合 :

{ (DB.execute, {DB.unlock}, {DB.lock}) }

• DB.execute の外的インタラクション集合 :{ (BA.deposit, {DB.unlock}, {DB.lock}), (BA.withdraw, {DB.unlock}, {DB.lock}) }

Page 8: ICSE 2011 Comprehending the Drift II

アスペクトの推薦1. Peer の候補を抽出

– クローン検出器 Clever [ASE09] による類似メソッド対– 名前の似た(語の列として見て LCS の長い)メソッド対– 共通のメソッドを override するメソッド対

2. Peer 候補のスキャン– 既知のデータを使って Peer 候補の類似度を計算しソート– 閾値以上の類似度をもつものは Peer として確定させ,以降の類似度

計算に反映させる

3. Peer グラフの探索– Peer 関係を枝とするグラフの島( Peer groups )をアスペクトとみな

す• 外的インタラクションを多く持つものを高くランク付け

4. 推薦– Non-AO → AO: ふつうに推薦– AO プログラムの更新 : 既存アスペクトを展開し,検出結果と比較

Page 9: ICSE 2011 Comprehending the Drift II

評価• 速い : Peer 検出は多くの対象で 2 分以下

– 全時間で支配的なのは内部で使うクローン解析

• 正確 : CBFA [ASE08] を相手に JHotDraw で比較– AO 実装である AJHotDraw を正解として使っている

• 更新もうまくいった :– 多くのカバレッジ( recall )

は 100%

Aspect Recommendation for Evolving Software, Table 7 より引用

Page 10: ICSE 2011 Comprehending the Drift II

Identifying Program, Test, and Environmental Changes That Affect Behaviour

by R. Holmes and D. Notkin

• 目的– ソフトウェアが意図したとおりに変更できたか (想定外の動作がないか ) を確認する

• おもな貢献– 動的/静的な呼び出し依存性の差分解析を組み合わた依存性の新たな分類手法を提案、実装

– 依存性の分類のうち、プログラマの興味を惹くもの、無視してよいものを識別

– 3 つの OSS のソースコード改版履歴へ適用し、興味を惹く依存性は全体の 1 % より小さいことを示した

– 商用システム開発の 1 スプリント (2週間 ) を通じて適用し、提案手法の分類が実際に役立つことを確認

Page 11: ICSE 2011 Comprehending the Drift II

例題

• 呼び出しの依存性を隣接バージョン間で比較

R. Holmes, D. Notkin: “Identifying Program, Test, and Environmental Changes That Affect Behaviour”, In Proc. ICSE 2011,Figure 2 より引用

変化なし

追加

V1S V2S

V1D

V2D

静的解析

動的解析

Page 12: ICSE 2011 Comprehending the Drift II

提案手法

• 静的解析 (s), 動的解析 (d) による依存性集合を組み合わせて、 4 集合ベン図の 15区画に分類– 追加 (+), 削除 (-), 変化なし (無印 )

• 区画をさらに分類– Inconsistent– Consistent– Not executed– Unchanged– Unlikely

R. Holmes, D. Notkin: “Identifying Program, Test, and Environmental Changes That Affect Behaviour”, In Proc. ICSE 2011,Figure 1 より引用

Page 13: ICSE 2011 Comprehending the Drift II

評価

3 つの OSS, 最新の各 10チェンジセットに適用

R. Holmes, D. Notkin: “Identifying Program, Test, and Environmental Changes That Affect Behaviour”, In Proc. ICSE 2011, Table 2 より引用

無視してよい依存性 (99.94%)