こんにちは!
ソフトウェアテストの小ネタ AdventCalender2018、12/10担当のあさこです。
今年も、小ネタはメトリクス系でいかせていただきます!
昨年も、12/10に書いていた...^^;
今回いいたいこと
今回は、アーキテクチャメトリクスと、メトリクスを利用する前提条件について触れて行きたいと思います。
そのココロは...、メトリクスは指標じゃなくて、あくまでもリスクなどを判断する一つの材料なんだよね...ってのを言いたかった。その一例(アーキテクチャメトリクス)と、なんで材料に過ぎないの?というところ(前提条件)をちょっと紹介したかったのです。ちょっとだけ、お付き合いくださいませ。
今回のお品書き
以下のような内容を、小ネタなので、簡単にお伝えします。
アーキテクチャメトリクス
ccfinder
ccfinderは、みなさんご存知でしょうか?
一言で紹介しますと、コードクローン探知ツールです。
http://www.ccfinder.net/ccfinderx-j.htmlwww.ccfinder.net
フリーツールですので、お気軽に...試せるかと思いきや、そんなことはありません...
32bit版しかリリースされていないので、64bit上で動かそうとするといろいろクセがあります。もし、チャレンジなさりたい方は、こちらを参照ください!
こちらで取れるメトリクスはいろいろありますが、コードクローン除去を目的として「あたり」をつける時には、以下に着目します。
<ファイルメトリクス>に出てくる、RSA、RSI、CVR、NBRです。
RSA、RSI、CVRが1に近い(クローン含有率が高い)ファイルや、NBRが1以上(他ファイルに影響のあるクローンが存在する)のファイルメトリクスに注目して、コードクローン率を下げて行きましょう!
※画面などが無くてごめんなさい。
さらにいうと、これもソースコードメトリクスかもしれませんが、アーキテクチャ目線でみることができるなぁと思ったので、勝手にアーキテクチャメトリクスに入れてみました。
Lattix
テクマトリクス社から出ている、有償のツールです。
今出ているツールの中で、アーキテクチャをしっかり見ることができるツールはこのくらいなのではないか、と思うので、紹介させていただきます。
パッケージや、クラス単位で変更をするとどのていど影響が出るのか、などをメトリクスで見ることができます。シュミレーションができるツールになります。
有償ツールなので、メトリクスも一部紹介にとどめておきます(笑)。詳細は、上記リンク先をご覧ください。
- 要素数
- 複雑度
- 依存関係数
- 依存度平均
- システム安定性
- 影響度平均
- 結合度
- 結合濃度
- 結合強度
など
メトリクスで分析する上での前提条件
分析する目的
もちろん、予実差を見たり、実績がどんな状況なのか(大丈夫なの?やばいの?)を把握するためですよね。どんな状況なのか?を見るのは、何かと比較する。
大丈夫なの?やばいの?を見るには、大丈夫!って思えるよりどころがないと把握できない。とすると、「今やっているもの」が、うまくいっていた前例と同じクラスタに属するという仮説が成り立たないとダメですよね。
「同じ母集団に測りたいもの・比較するものが属している」ことが必要、ということです。
使うツール
統計。統計まで行かない分析もありますが、良く使われるのは、「統計」かなぁと思います。目的のところに書きましたが、母集団は同じで無いといけません。
そして、母集団が同じところからサンプル(標本)を持ってきます。
特性は同じでも、サンプルを示すベクトルが平行だったり、等倍の関係だったり...という間柄では使えません。
統計処理をする上では、同じ村に住んでいても、血縁が濃すぎると異常結果しか導出できないからです。(たとえが悪いかな...)
なので、「お互いに独立」であり、「直交」している間柄である必要があるのです。
前提条件まとめ
- 同じ母集団に測りたいもの・比較するものが属している
- 「お互いに独立」であり、「直交」している間柄である
- 上記ふたつは、あくまでも仮説のうえになりたっているので、「絶対」という条件ではない。よって、合格/不合格などの「指標」として扱うのではなく、「参照」「参考」として扱うべきなのではと私は考えています。
以上、小並感な感想記事でした。
明日は、なそくん(@hiroyuki3gou )です!バトンタッチ!