Does Bug Prediction Support Human Developers? Findings from a Google Case Study

22
Does Bug Prediction Support Human Developers? Findings from a Google Case Study Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, and E. James Whitehead Jr. (Univ. of California, USA; Google Inc., USA; Xi’an Jiaotong Univ., China) P1 担担 担担 担担 担担担担担 一()

description

P1. Does Bug Prediction Support Human Developers? Findings from a Google Case Study. Chris Lewis, Zhongpeng Lin, Caitlin Sadowski , Xiaoyan Zhu, Rong Ou , and E. James Whitehead Jr. (Univ. of California, USA; Google Inc., USA; Xi’an Jiaotong Univ., China). 担当:山下 一寛(九州大学). - PowerPoint PPT Presentation

Transcript of Does Bug Prediction Support Human Developers? Findings from a Google Case Study

Page 1: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

Does Bug Prediction Support Human Developers?

Findings from a Google Case StudyChris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, and E. James Whitehead Jr. (Univ. of California, USA; Google Inc., USA; Xi’an Jiaotong Univ., China)

P1

担当:山下 一寛(九州大学)

Page 2: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

Goal と Research QuestionGoal: バグ予測アルゴリズムに対し,開発者がどのように行動するのかを知りたい.

RQ1: バグ予測のアルゴリズムはバグを含んだファイルをいくつ予測できるか?また,どのアルゴリズムが好ましいか?RQ2: バグ予測アルゴリズムが持つべき特徴とは?RQ3: RQ1,2 で得た知見からより良いアルゴリズムを設計し,利用したとき開発者の行動は変わるのか?

P1: Does Bug Prediction Support Human Developers? 2

Page 3: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

User Study 1

P1: Does Bug Prediction Support Human Developers? 3

Bug PredictionProject 予測結果

Developer of Project

このファイルはバグを含んでいそうですか?

FileAFileB…

Page 4: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

User Study 2

P1: Does Bug Prediction Support Human Developers? 4

バグ予測のアルゴリズムに必要なことって・・・?

Page 5: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

User Study 3

P1: Does Bug Prediction Support Human Developers? 5

Source CodeMondrian

(Review System) Report Reviewer Action

Bug Prediction

違いは出るのか?

Page 6: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

Results of User Study 1

P1: Does Bug Prediction Support Human Developers? 6

Rahman のアルゴリズムが一番良かった

図は p.376 Fig.1,2 より引用

Page 7: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

Results of User Study 2Desirable Characteristics

1. Actionable Messages2. Obvious Reasoning3. Bias Towards the New4. Parallelizable5. Effectiveness Scaling

P1: Does Bug Prediction Support Human Developers? 7

5つの望ましい点が見つかった

Page 8: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

Results of User Study 3

P1: Does Bug Prediction Support Human Developers? 8

顕著な変化は見られなかった

図,表は p.379 Fig.3 , p.380 Table III より引用

Page 9: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

所感開発者がどう思うかという観点は必要だと

思う.

また, Google のエンジニアに協力してもらい,実際にこのような観点で実験を行った.

論文の構成が分り易い.特に実験の部分

P1: Does Bug Prediction Support Human Developers? 9

Page 10: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

TRANSFER DEFECT

LEARNINGJaechang Nam , Sinno Jialin Pan , Sunghun Kim

担当:和歌山大学 柏 祐太郎山谷 陽亮

Proceedings of the 2013 International Conference on Software Engineering (ICSE '13), pp. 382-391, 2013

Page 11: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

CROSS-PROJECT 欠陥予測

新規プロジェクト

不具合予測モデル

大規模プロジェクト

不具合予測モデル

不具合の場所を予測

不具合の場所を予測

データ分布の違い

予測精度が低い

データの分散を小さくすることでcross-project 欠陥予測の精度を上げる

11

Page 12: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

目的 プロジェクト間のデータの分散を小さくするこ

とで cross-project 欠陥予測の精度を上げる

アプローチ 予測の前に TCA または TCA+ を実施

TCA : Transfer Component Analysis

目的とアプローチ

12P. Bug Prediction P2

Page 13: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

TCA ・ TCA+

TCA(Transfer Component Analysis)

• 教師なしデータによる Transfer Learning• 共通性を見つけ分布の違いを吸収

TCA+

• TCA における正しい正規化を見つける• 1. データセットの特徴を捉える• 2. プロジェクトの類似度を測定• 3. 正規化の方法を決める

*http://www.slideshare.net/hunkim/transfer-defectlearningnew-completed

*

13P. Bug Prediction P2

Page 14: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

評価尺度:不具合の位置を予測する精度( F値)

評価方法

cross-project 欠陥予測

within-project 欠陥予測 小さいプロジェクトの十分でないデータ量で作られた予測モデル

TCA なし TCA ・ TCA+

14P. Bug Prediction P2

Page 15: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

結果 TCA および TCA+ を用いた場合との比較

TCA一部の正規化方法では TCA なしより予測精度が上がっ

た正規化方法によっては TCA なしより予測精度が下がっ

TCA+適切な正規化方法が選ばれ,全ての予測精度が上がった

within-project 欠陥予測との比較TCA+ は within-project 欠陥予測に匹敵する精度が得

られた15

P. Bug Prediction P2

Page 16: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

所感 1章で良くまとめられていて全体像を掴みやす

いcross-project 欠陥予測の必要性や現状

データの分散を小さくできる点で TCA は応用の幅が広いと感じた

cross-project 欠陥予測するにはまだ精度が足りないwithin-project 予測の精度と変わらない場合も

16P. Bug Prediction P2

Page 17: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

IT’S NOT A BUG, IT’S A FEATURE:HOW   MISCLASSIFICATION IMPACTS BUG PREDICTION

Kim Herzig, Sascha Just, Andreas Zeller

担当:和歌山大学  松本 明 吉行 勇人

Proceedings of the 2013 International Conference on Software Engineering (ICSE '13), pp. 392-401, 2013

Page 18: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

背景 不具合報告には、「バグ」と「バグでないも

の」がある

プロジェクトの管理者が不具合報告を分類した際に、誤分類が含まれている可能性がある

多くの予測モデルは、管理者による分類が正しいものとして構築されており、もし誤分類があれば予測モデルの精度を脅かす問題となる

P. Bug Prediction P3 18

Page 19: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

評価方法 5 つ の オ ー プ ン ソ ー ス プ ロ ジ ェ ク ト

( HTTPClient, Jackrabbit, Lucene-Java, Rhino, Tomcat5 )の計 7,401 件の不具合報告を一定のルールの下で再分類する

例)「バグ」と判別されるルール1. NullpointerException に関する報告があるも

の2. コードを変更する必要があるもの3. ランタイムエラーやメモリリークを修正するも

のP. Bug Prediction P3 19

Page 20: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

分類方法

1. 著者の1人が全ての不具合報告を確認し、誤分類があれば分類し直してタグをつける

2. 別の著者がタグ付けされてある不具合報告を確認し、再分類する

3. 二人の分類結果を比較してマージする

P. Bug Prediction P3 20

図は当該論文より引用

Page 21: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

結果 誤分類

全ての不具合報告のうち、 42.6% が誤って分類されていた

全てのバグ報告のうち、 33.8% はバグではなかった

誤分類の影響defect-prone で あ る と さ れ た フ ァ イ ル の う

ち、 39% はバグが存在していなかった元のデータセットで defect-prone であるとされた

ファイルのうち 16% ~ 40% は、再分類後のデータセットでは defect-prone ではなかった

P. Bug Prediction P3 21

Page 22: Does Bug Prediction Support  Human Developers? Findings from a Google Case Study

まとめと所感

まとめ定量分析に用いるデータセットを機械的に整理するだ

けでなく、人の手でもチェックする必要がある不具合報告の分類は管理者の主観によって左右される

ため、予測モデルの妥当性が脅かされる可能性がある

所感今後、誤分類をどう処理すればよいのか?7000 件以上の不具合を目で見て確認するという、手

間と時間のかかる作業を行った著書らの研究熱意に感動した

P. Bug Prediction P3 22