ゲーミフィケーションを用いた欠陥除去の促進

年次活動報告書 2013
ゲーミフィケーションを用いた欠陥除去の促進
顔写真
国立情報学研究所
助教 坂本
1. はじめに
ソフトウェア開発において欠陥の混入を防ぐため、静
的解析技術を用いて欠陥に繋がる箇所を検出し、ソフト
ウェアの品質向上を支援するツール、例えば、FindBugs
(http://findbugs.sourceforge.net/)やPMD(http://pmd.
sourceforge.net/)が開発されている[1]。
しかし、検出する欠陥数が莫大である上、誤検出が発
生するため、実際の開発では検出した欠陥を修正せずに
残してしまうケースが多い[2]。さらに、誤検出の問題に
取り組む研究はあるものの、完全な防止は極めて難しい。
本研究では、誤検出など静的解析ツールの性能上の問
題を考慮せずに、ゲーミフィケーションを用いることで、
欠陥が無視される問題を緩和する仕組みを提案する。提
案する仕組みでは、バグパターンを修正する度に利用者
の得点を加算する制度(得点制度)を備えており、得点
による開発メンバー間の競争を促し、欠陥の無視を防ぐ。
また、我々は提案した仕組みをツールGame-based Bug
Catcher(GBC)として実装して、有効性を評価した。
本研究では、以下の二点を研究課題(RQ)とする。
・RQ1:既存の静的解析ツールに対して、ゲーミフィ
ケーションを導入することができるか?
・RQ2:既存の静的解析ツールに得点制度を導入する
ことで、欠陥はより修正されやすくなるか?
一憲
とで、検出欠陥の差分から追加・修正された欠陥、また、
各リビジョンの更新者から著者および修正者を特定する。
図 1. GBC の全体像
2.2. ゲーミフィケーションの導入
ゲーミフィケーションとは、ゲーム要素をゲーム以外
の分野に応用することで、利用者のモチベーション向上
を図る手法である。例えば、ソーシャルネットワークサ
ービスの Foursquare(https://foursquare.com)では、
携帯端末などの位置情報を記録するライフログサービス
を提供している。サービスの利用頻度を高めるために、
位置情報の記録を通した競争の仕組みを提供しており、
利用者のモチベーションの向上に成功している。
GBC では Findbugs が検出した欠陥が修正されたか
どうかに基づく得点制度を導入する。Findbugs によって
検出される欠陥には種類と重大さの情報が付与されてい
るため、これらの情報に基づいて点数を計算する。さら
に、各ユーザが獲得した点数を表示することで、ユーザ
間の競争を促す。競争は学習意欲を向上させる手段とし
て有効であり[3]、欠陥の無視防止にも期待される。
2. 得点制度を備えたゲーミフィケーションツール
静的解析ツールが検出した欠陥を無視する問題を解決
するため、検出された欠陥を修正するモチベーション(意
欲)を向上する仕組みを提案する。図 1 で提案した仕組
みを導入したGBC のシステム全体像を示す。
2.1. FindBugs とGit による検出した欠陥の解析
GBC の開発にあたり、欠陥検出を行う静的解析ツール
として FindBugs を採用した。また、欠陥が修正された
かどうかを判定するため、ソースコードのバージョン履
歴を管理するGit を利用する。
Git によって管理されたあ
るリビジョンのソースコードと、その更新元であるリビ
ジョンのソースコードの両方にFindBugs を適用するこ
3.
GBC を利用した被験者実験と考察
GBC の有効性を評価するために被験者実験を行った。
今回対象とした被験者は、Java 言語の使用経験がある情
報系の大学生および大学院生計6 名である。
-1-
年次活動報告書 2013
3.1. 実験手順
本実験では、Java 言語で開発されたオープンソースソ
フトウェア(OSS)を対象として、FindBugs によって
検出された欠陥をできるだけ早く修正することを目的と
した。対象OSS は、Minecraft のサーバーを拡張するソ
フトウェアであるbukkit と、Twitter の機能をJava プ
ログラム上から利用するためのライブラリである
twitter4j である。ただし、twitter4j は検出された欠陥数
があまりにも多かったため、機能の中核部分である
twitter4j-core のみを対象とした。なお、bukkit のLOC
は26917 行であり、
twitter4j-core は18123 行であった。
実験手順は以下の通りである。
1. 3 名のグループを2 つ(GA、GB)作る。
2. 各被験者は bukkit と twitter4j-core(SA、SB)の
Git リポジトリを各自のマシンにコピーする。
3. 30 分間SA を対象に実験を行う。GA はFindBugs
と GBC を利用して欠陥の修正を行い、GB は
FindBugs のみを利用して修正を行う。なお、GBC
を用いる場合は、各メンバーの編集がリモートリポ
ジトリに反映される度に修正結果を表示する。
4. 開始から30 分後、修正対象をSB に変更し、同様に
30 分間、GA はFindBugs のみでバグパターン修正
を行い、GB はGBC も併用して修正を行う。
Git リポジトリの履歴からファイルの更新者を取得し
て、修正者を特定することで、得点を付与するユーザの
特定に成功した。さらに、検出された欠陥の情報を利用
した得点制度を導入することで、ゲーミフィケーション
の導入に成功した。従って、静的解析ツールによる欠陥
修正作業に、ゲーミフィケーションは導入できる。
・RQ2:既存の静的解析ツールに得点制度を導入する
ことで、欠陥はより修正されやすくなるか?
欠陥の減少率は、どちらのグループも 1.5 倍以上増加
しているため、得点制度によって欠陥の修正数が向上す
ることを確認できた。さらに、実験後の被験者に対する
インタビュー調査の結果では、6 名中5 名が、欠陥修正に
対するモチベーションが向上するため、GBC を利用した
方が良いと答えた。また、GBC を利用しない場合につい
て、6 名全員が、検出数が多すぎて修正するモチベーショ
ンが出ないと答えており、既存の技術のみでは欠陥の無
視の問題を解決することが困難であることが分かった。
以上から、GBC は検出数の多さから欠陥が無視されがち
になる問題を緩和することができ、欠陥をより多く修正
するための手法として有効であることが分かった。
4. おわりに
本研究では、開発者により多くの欠陥を修正するよう
に促すため、ゲーミフィケーションを用いた欠陥除去の
促進する手法を提案した。手法の有効性を確かめるため、
FindBugs と Git から検出した欠陥の情報と欠陥の修正
者を取得して、ゲーミフィケーションの一種である得点
制度を導入したツール GBC を開発した。被験者6名に
対して評価実験を実施したところ、GBC によって欠陥の
修正数および欠陥の現象率が向上することを確認した。
3.2. 実験結果
表1 で各グループについてGBC を利用した場合とそ
うでない場合で、修正される欠陥数の比較結果を示す。
実験結果を見ると、GA とGB ともにゲーミフィケーシ
ョンを導入した場合は、欠陥の修正数が上昇している。
また、修正前と後での欠陥の減少率は、どちらも 1.5 倍
以上増加している。従って、得点制度に基づいたゲーミ
フィケーションを導入することで、検出された欠陥の修
正数を向上させることに成功した。
参考文献
[1] D. Hovemeyer and W. Pugh, “Finding bugs is easy”,
19th Annual ACM Conference on Object-Oriented
Programming, Systems, Languages, and Applications,
pp. 92-106, 2004.
[2] B. Johnson, Y. Song, and E. Murphy-Hill, “Why
Don't Software Developers Use Static Analysis Tools to
FindBugs?”, International Conference on Software
Engineering, pp. 672-681, 2013.
[3] G. Gabrysiak, R. Hebig, L. Pirl, H. Giese,
“Cooperating with a Non-governmental Organization
to Teach Gathering and Implementation of
Requirements”, 26th International Conference on
Software Engineering Education and Training, pp.
11-20, 2012.
表 1. GBC あり/なしの欠陥修正数の比較結果
グ ル 対象 GBC
欠陥の 欠陥の
ープ OSS の有無 検出数 修正数
GA
SA
あり
168
26
SB
なし
150
13
GB
SA
なし
168
41
SB
あり
150
59
欠陥の
減少率
15.48%
8.67%
24.40%
39.33%
4.3. 考察
以上の実験結果から、RQ1 とRQ2 へ回答する。
・RQ1:既存の静的解析ツールに対して、ゲーミフィ
ケーションを導入することができるか?
-2-