年次活動報告書 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-
© Copyright 2025 ExpyDoc