ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

障害の原因となる銀の弾丸はないってこと?

2011-11-14 14:40:08 | そのほか
 ソフトウエア・メトリクスの分野(特にエンピリカル・ソフトウエア工学)の分野では、
障害の原因となる要因を、過去のプロジェクトから探し出し、それを元に、新規プロジェクト
に適用して、障害予測や各種見積もり予測に役立てようとしている。

 そのために、

PROMISE Software Engineering Repository
http://promise.site.uottawa.ca/SERepository/datasets-page.html

なんかで、プロジェクトデータが公開されているということは、前に書いた。

今日は、そこで興味深いことを見つけたので、書いてみる。




そこにある2つの(はじめにある、NASAのプロジェクト)CM1とJM1について

普通だと、障害原因を探るのに、ステップワイズ法(変数増減法)を使うと思うけど、
ここでは、決定木を使って、確かめられないか、考えてみよう。

CM1をWekaの決定木J48(C4.5と同じようなもの)で分析すると

となる。つまり、障害は、lOComment(Halstead's count of lines of comments)と
ev(g)(McCabe "essential complexity")で説明付いてしまう。

 ほ~、正答率88%だそうな。。。




とおもって、じゃあ、JM1でやると・・・

なんじゃこりゃ(-_-;)ちなみに正答率79.5%
なので、主要3要因、Loc、IOBlank、Total_Opでやると、こうなる

loc(McCabe's line count of code)、total_Op(total operators)
で説明付くらしい・・・
正答率81.1%なので、ぐちゃぐちゃなのより、よくなった。




あれ・・・指標、変わってない?

じゃあ、CM1のデータを、JM1の指標Loc,IOBlank,Total_Opとdefeateの値
だけを残して、決定木で分析したら?

なにもでてこないし、
逆にJM1のデータを、CM1の指標IOComment,ev(g)とdefeateだけを使って
決定木を分析すると、

出てくるけど、正答率は下がる。




つまり、決定木を使うと、

CM1の指標は、lOComment、ev(g)
JM1の指標は、Loc,Total_Op

が向いていて、他の変数ではあまりせつめいできなさそう。

・・・ということは、プロジェクトによって、障害が起こる要因はちがうってこと・・

障害の原因となる銀の弾丸はないってこと?


だとしたら、ステップワイズ法で変数を決定し、それを「ほかの」プロジェクトに適用することは無理ということになり、もしそのようなことがやりたいのなら、

(1)先に、いろいろなプロジェクトにおいて、
  何が障害を予見する要因かを探し出し、
  →J48でもいいけど、他にもっと適切な方法があると思う


(2)適用しようとするプロジェクトが(1)のどのプロジェクトと
  類似しているかを、K-NN法などで確認し、

(3)その似ているプロジェクトの障害説明要因を使って、
  適用したいプロジェクトの予測を行う

っていうように、やり方をがらりと変えないといけなくなると思うんですけど・・・


・・・データマイニングとか、この分野は専門外だから、よくわかんないんですけど、
どう思います?


P.S 実はこれ、大学院のレポート&発表で出したもの。

 そのときのコメントが、「でも、この要因でも、説明しているとはいえないよね。当てはまりはよくない。意外と、プログラマの技術力とかが測れたとして、その指標を入れたら、ガラリと変わるといったようなこともありえるかもね?」という意見がありました。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ソニーが音楽出版世界首位に | トップ | 初めてのRubyを読む そ... »
最新の画像もっと見る

そのほか」カテゴリの最新記事