ソフトウェアエンジニアリングリポジトリの規則性や傾向をみつける - 概要-
データをとってしまったもののどう使ったものか..という状況は結構ある。前に書いた収集したデータをコミュニケーション活性として使ってみてはという提案についても反応が多かった。
しかしながら、集めたメトリクスデータから知見を得ようというテーマに私が取り組んでいるのだから、もっと具体的に自身のテーマ(持ちネタ)を書くべき、という指摘を何人かの方から口頭でいただいた。ごもっともなので、具体的な方法の1つを紹介しようと思う。分量が多くなると読むほうも書くほうもたいへんので、複数回にわける。今回は概要と対象データの紹介がメインである。
テーマはソフトウェアエンジニアリングリポジトリ(プロダクトのメトリクス値やプロセスに関する値が蓄積されたものに対する総称)に対する相関ルール分析というものである。これは相関ルールマイニングという巨大なデータベースから「AかつBならばC」という規則性を抽出する手法をベースとして、数値データを多く含むソフトウェアエンジニアリングリポジトリ用に特化したものである。相関ルールマイニングのアルゴリズムや学術的問題定義はIBMのAgrawal氏、Srikant氏により提案されたものである。
対象となるソフトウェアエンジニアリングリポジトリには様々なものがある。たとえば
- IPA ソフトウェアエンジニアリングセンタが収集しているプロジェクトデータのリポジトリ(ソフトウェア開発データ白書2007にその紹介がある)
- オーストラリアのISBSGが国際的に集めているリポジトリ
- 米国のNASAが公開しているリポジトリ(ここで紹介)
がある。
CMMIをはじめいくつかの標準でも、メトリクスデータを計測、蓄積することを推奨したり定義したりしている。読者ご自身の組織にもいろいろとあるのではないだろうか。チームでシステム開発やソフトウェア開発を実施する場合には、工数やレビュー記録や不具合データやドキュメントやソースコードの規模を記録するのが通例となっていることが多い。
今回紹介する方法は、対象となるリポジトリに特に大きな制約はないが、私たちのチームでは、
- プロジェクト品質データ(工程別の不具合密度)に含まれる特徴や規則性
- プロジェクト特性データ(プロジェクト属性: 新規、改良、アーキテクチャ、開発メンバ数など、規模: 開発期間、工程別工数、LOC, FPなど、品質: 工程別不具合密度など)に含まれる特徴や規則性
- バグ票に含まれる特徴や規則性
- ソースコードメトリクスと発見不具合の規則性
の適用実績がある。
今後、上の4つについて紹介を進めていく。
2.と3.の適用事例の紹介を今月25日(木)に東京三田で開催されるエンピリカルソフトウェア工学研究会で講演することになった。ここで紹介したコードクローン分析による類似バグ検出についてパナソニックMSEの松井氏、佐々木氏からもその効果や現場での適用についてご講演いただく。登録が必要だが、参加無料だ。
プログラム、参加申し込み方法はこちらへ