ソフトウェアメトリクス
ソフトウェアの規模、複雑さ、品質などを、定量的に測るための指標。ソースコードの行数やバグの数などから算出し、品質の管理や見積もりに使う。
イマシルちゃんの解説
ソフトウェアメトリクスは、プログラムの規模や品質などを数値で確かめるための指標だよ。
例えば、見つかったバグの件数をソースコードの規模で割ったバグ密度があるんだ。
単にバグの件数を比べるより、プログラムの大きさの違いを考慮して調べられるよ。
同じ測り方で過去の結果やほかの部分と比べると、重点的に確認したい箇所を探す手掛かりになるんだ。
ただ、見つかったバグが少ないだけでは、テストが足りない可能性もあるの。
数値だけで良し悪しを決めず、調べた条件も合わせて改善を考えるために使うんだよ。
この解説はわかりやすかったですか?
より深い解説
定義
ソフトウェアメトリクスは、ソフトウェアやその開発の過程の特性を、数値として測定するための尺度である。測定した値をもとに、品質の評価、問題のある箇所の特定、工数の見積もり、プロジェクトの進捗の管理などを行う。
主なメトリクス
| メトリクス | 内容 |
|---|---|
| ソースコードの行数(LOC、KLOC) | 規模を表す。KLOCは1,000行 |
| ファンクションポイント | 外部への入出力やファイルなどの機能の量から、規模を見積もる |
| サイクロマティック複雑度 | プログラムの制御の流れの複雑さ(分岐の多さ)を表す |
| バグ密度 | 規模あたりのバグの数(例:1KLOCあたりのバグの件数) |
| テスト密度 | 規模あたりのテスト項目の数 |
| コードカバレッジ | テストで実行された命令や分岐の割合 |
サイクロマティック複雑度
サイクロマティック複雑度(マッケーブの複雑度)は、プログラムの制御フローグラフから、次の式で求める。
複雑度 = 辺の数 − ノードの数 + 2
簡単には「分岐(if、ループの条件など)の数 + 1」で求められる。値が大きいほど、テストすべき経路が多く、誤りが入りやすい。一般に、10を超えるような関数は、分割を検討する目安とされる。
バグ密度の使い方
| 状況 | 考えられること |
|---|---|
| バグ密度が基準より高い | 品質が悪い可能性。設計やコーディングを見直す |
| バグ密度が基準より極端に低い | 品質がよいとは限らない。テストが不十分でバグを見つけられていない可能性がある |
バグ密度やテスト密度は、過去のプロジェクトの実績などから基準値を決め、その範囲に収まっているかを確認するのに使う。
メトリクスを使うときの注意
- 1つの数値だけで品質を判断しない(複数のメトリクスを組み合わせる)
- 数値そのものを目標にすると、数値を良く見せるための行動(テスト項目の水増しなど)を招く
- 同じ測り方で継続的に測定し、変化の傾向を見る
開発を支援するツールとの関係
バグの数とソースコードの規模などから、品質管理のためのメトリクスを算出するのは、メトリクスの計測ツール(コード解析ツールなど)の役割である。見つかったバグそのものの記録と、修正の計画や履歴を管理するのは、バグトラッキングシステムの役割である。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午前Ⅱ