グーグルのクラウドを支えるテクノロジー > 第30回 バグ予測アルゴリズムとその実効性のケーススタディ(パート1)
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
CTC教育サービスはコラム「グーグルのクラウドを支えるテクノロジー > 第30回 バグ予測アルゴリズムとその実効性のケーススタディ(パート1) 」を公開しました。
はじめに
今回は、2013年に公開された論文「Does Bug Prediction Support Human Developers? Findings from a Google Case Study」を紹介します。これは、いくつかの既存の「バグ予測アルゴリズム」をGoogle社内の開発プロセスに適用して、その有効性、あるいは、実用化に向けた課題を調査した際のレポートです。結論としては、この調査では、具体的なバグ低減への寄与は見られなかったということですが、それぞれのアルゴリズムの特性や実用化に向けた課題には興味深い点があります。今回から数回に分けて、これらの内容を紹介していきます。
FixCacheアルゴリズムとRahmanアルゴリズム
冒頭の論文では、バグ予測のアルゴリズムについて、学術的な研究は盛んに行われているものの、現実のソフトウェア開発プロジェクトにおける有効性は十分に検証されていないという課題が指摘されています。そこで、学術的に評価の高いアルゴリズムである「FixCache」、そして、よりシンプルで直感的な「Rahmanアルゴリズム」の2種類を取り上げて、これらの有効性や実用化に向けた課題を検証することがレポートの目的としてあげられています。
FixCacheは、バグの存在の「局所性(locality)」を想定して、ファイル単位で「バグを含む可能性が高いソースファイル」を分類するアルゴリズムです。具体的には、リポジトリ内のすべてのファイルを定期的にチェックして、後述する条件を満たす場合、「バグを含む可能性が高いファイル一覧」に登録されます。この一覧に含まれるファイル数には上限があり、新しいファイルが登録されると、先に登録されたファイルから順に一覧から削除されます。登録済みのファイルが再登録された場合は、このタイミングで新しく登録されたものとして扱われるので、何度も再登録されるファイルは一覧に残り続けることになります(図1)。
この続きは以下をご覧ください
https://www.school.ctc-g.co.jp/columns/nakai2/nakai230.html
ソーシャルもやってます!