フォールト・プローンネス・フィルタリング

2008年7月度SEA関西プロセス分科会に参加。
テーマは、「フォールト・プローンネス・フィルタリング」。

ここで使われている「プローン(prone)」は、日本語の表現で言うところの「〜っぽい」とか、「〜らしい」という感じで捕らえる。
ソフトウェアを構成するモジュールの中で、不具合っぽいモジュール(Fault Prone,FP)を予測するための技術に関するお話がテーマです。

現場の技術者であれば、メトリクスを基にした不具合の傾向分析にそれほど効果を感じていないという方も多いと思います。
何より、集めるのが面倒(コストがかかる)だし、集めたところでデータの信頼性に疑問が残る。
こういった問題は情報学会でも議論の続いてきたテーマで、最近は、日常の開発を進めていれば自然にあつまるデータから、不具合や開発の分析に有効な情報を集める「リポジトリ・マイニング」による手法の研究が進んでいるらしい。ソフトウェアのリポジトリには、ソースの変更履歴、バグトラッキングメーリングリストなど、多くの情報が潜んでいます。それを発掘するという意味でMining。「GoldRush!」の可能性を秘めているが、やはり、その解析手法がポイントになる。

今回、紹介されたのは、e-mailのSPAMフィルタに使われている「Bayesianフィルタ」をFP(Fault Prone,不具合のありそうなモジュール)特定に用いたという研究です。
予約語とか、識別子、セパレータ、演算子リテラルの組み合わせからトークンを構成し、不具合の起こるモジュール/起こらなかったモジュールをcorpuses辞書に登録していく。
Eclipseで適応してみると、かなりの精度でFPを検出したらしい。

まだまだ検証の余地があるが、そもそもまともなメトリクス収集の難しい古典的な手法と比べ、合理的な手法に思える。
この発表ではJavaプロジェクトということでEclipseリポジトリマイニングによる結果分析を行っていたが、実測不具合件数などが未熟っぽく感じるので、もっと安定して枯れたプロジェクトや、より現場に近いプロジェクトでの分析完成度向上に期待したい。
参加者のみなさんも、同じように可能性を感じる方が多かったのか、多くの質疑が飛び交った。

FP予測の研究過程や、今後の可能性についてまとまったお話を聞ける良い機会でした。
良い刺激になったし面白かった。
たまにはこういう勉強会も行かないといけませんねぇ。