ホーム » ソフトウェア品質 » 勉強会 » 「(ソフトウェア品質技術者のための)データ分析勉強会第7回目」に参加してきました。

「(ソフトウェア品質技術者のための)データ分析勉強会第7回目」に参加してきました。

【2013/1/31 13:30 小池さまより内容についてのご指摘があり、一部の内容を修正いたしました。】

1/18に東洋大学で行われた「(ソフトウェア品質技術者のための)データ分析勉強会第7回目」に参加しました。

今回のテーマは「プロダクトメトリクス」でした。プロダクトメトリクスとは、勉強会概要のページにも書かれていますが、「レビューやテストといったプロセスではなく、製品の特性を測定するメトリクス」です。この「プロダクトメトリクス」をRなど統計解析ツールを利用して分析することを行なうのが今回の勉強会でした。( すずき註:Rについては以下を参照するとよいかもしれません→ 「実践!Rで学ぶ統計解析の基礎」)

この勉強会では「データ指向のソフトウェア品質マネジメント」(通称:「デート本」 以下「デート本」と表記)をベースにして行われました。

測定する対象

まずは講義パートです。

デート本「6.3 規模の測定」を参照しながら、「何を測るべきか?」についてお話しました。LOCの場合、コメント文は対象に入れるのか外すのか?C言語の場合、includeファイルのカウントはどこでカウントするのか?などといったお話がありました。

プロダクトメトリクス

デート本「4.3 欠陥修正が生じやすいモジュールの予測」を参照しながら、以下のようなメトリクスの意味などを確認していきました。

  • TMLOC(Total Method Libe of Code:総メソッド行数)
  • WMC(Weight Methods per Class:重み付きメソッド数)
  • CBO(Coupling Between Object Classes:結合度)
  • LCOM(Lack of Cohesion in Methods:凝集度の欠如)
  • RFC(Response For a Class:応答処理の多さ)
  • Modify(修正の有無)

また以下のサイトを参考にして、凝集度や結合度について確認しました。

凝集度と結合度
http://homepage3.nifty.com/koha_hp/KeyWords/KW.Coupling.html

複雑さのメトリクスという意味では、以下のサイトも参考になります。
http://se.naist.jp/lecture/se3/2006/handouts/productmetrics2.pdf

ツール

さて、実際にプロダクトメトリクスを視るときに、ソースコードを逐一手で計算することはありえなません。というわけで、測定ツールをつかうことになります。ここでいくつかのツールの説明をしました。

  • QAC
    ソースコードの静的解析ツールです。ライセンス料金が少し高いです。
  • Adqua
    ツールの出力結果のメトリクスだけ見せられても、良いかどうか判断出来ません。Adquaの場合、出力結果を送ると、無駄なコードの有無や警告数などから、コードの品質を、信頼性・効率性・保守性・移植性・再利用性 という観点で100点満点で評価をしてもらえます。メトリクスの範囲も、システム/モジュール/ファイル といろいろな範囲で取得可能なようです。無料で使用出来ますが、最低年1回のデータ提出することや、組込みプログラム限定といったいくつかの条件があります。

ちなみに、私は、以下の様なツールを使ったことがあります。

Sourceonitorは扱いやすいのでよいかもしれません。 CCFinderXは、コードクローンを調べるためのツールですが、メトリクスも出力してくれます。ただ、Phythonの設定とかに手間取り苦労したような気がします^^;

データ分析時の留意点

午後になり、演習パートになりました。

データを受け取った時どのようにアプローチするかを決めなかればなりません。

たとえば、特定のメトリクスに着目し、1つまたは2つ以上の変数に着目して、あるいはある値を基準にグループ分けを行なうようなアプローチや、このようなサイト( http://aoki2.si.gunma-u.ac.jp/FlowChart/Tutorial.html ) に従いアプローチを決める方法などがあります。

とりあえず、以下の様なことをするとよさそうです。

  1. 散布図行列を出力する。
  2. 外れ値やおかしなデータがないか確認する。
    工数やバグ件数など、手で入力するようなデータはおかしなデータがはいりやすい
  3. 各変数自体の分布を調べる
    偏ったりする場合には、対数変換などのデータ処理を必要があるかどうかを考え
  4. 相関があるかどうかを視る
    目的変数と相関が強いものが説明変数の候補となる説明変数候補同士で相関があるかどうかを確認する。
    相関がある場合は、両方は不要なのでどちらかに絞るかを考える。

他にも以下の様なお話がありました。

  • レンジの幅が大きくしまうようなソフトウェアメトリクス時に、等分散性を確保するための補正手段として対数変換を行なうことがある。そのとき、値が0だと定義できないので、インパクトの与えない程度の補正(下駄をはかせる)は手段としてはあり。
  • 寄与率(重相関係数)、自由度調整寄与率(重回帰分析)をみて50%程度では一般的にあまり良いとはいえない。
  • 一般的にデータが多ければ、検定結果のp値は小さくなる。従って検定結果だけでは、モデルの精度を判断することが出来ないので、寄与率などの指標も見る必要がある。
  • 検定はデータが少ない時につかう。データが多い時にはあまり使わない。

外れ値の精査を行なうことは、データ解析結果をきれいにするためには必要なようです。どれくらいやればいいかは、また外れ値の扱いも、ケースバイケースになり難しいようです。うーん、難しい・・・。

 データやデータ間の相関などは、経験の差が出るようで、繰り返し・継続してやってみてセンスを磨くしかないようです。

次回予定

次回は、2013年2月16日(土)に実施予定。内容は、いろいろな分析手法を手を動かしながら試してみよう、ということになるようです。是非ご興味ある方がいらしゃいましたら参加してみてはいかがでしょうか。

(2013/1/21 21:12追記)

「(ソフトウェア品質技術者のための)データ分析勉強会第8回目」の参加申し込みが可能になっています

http://kokucheese.com/event/index/71408/

告知

講師の小池さんより以下の様なアナウンスがありました。ご参考までにお知らせします。

  • ソフトウェア品質のホンネ
    SQiPポータルサイトから参照できます。ソフトウェア品質の世界で著名な方々が執筆されてます。
  • 2/25 SQiP特別講演「データ指向のソフトウェア品質マネジメント」
    次年度はセミナーを予定しているのでその説明をします。参加費5000円(本付き8000円)ですので、ご興味あればぜひご参加くださいとのこと。
  • 2/14 第6回SQuBOKユーザ会勉強会
    小池さんと堀さんが講演なさいます。会場は、日科技連 千駄ヶ谷の講堂ですが、Ustreamで配信も行います。小池さんのテーマは、SQA活動についてで、以前実施されたIPASECの講義を元にするそうです。
  • 来年度のSQiP研究会で「メトリクス演習コース」を開設します。
    小池さん、小室さん、野中先生で演習コースを行なうとのこと。カリキュラムとしては3フェーズとし、メトリクス収集活動の明確化、ツールを利用した統計解析の習得、事例適用を想定しているようです。興味ある方はぜひ参加してくださいとのこと。
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中