ソフトウェアメトリクス そふとうぇあめとりくす
ソフトウェアメトリクス循環的複雑度技術的負債コード品質DORAメトリクス保守性
コードの品質ってどうやって測るの?
ソフトウェアメトリクスとは
ソフトウェアメトリクス とは、ソフトウェアの品質・生産性・保守性を定量的に測定するための指標群です。
主観的な評価ではなく客観的な数値でコードの状態を把握し、改善の優先度を判断するために使います。
コード品質メトリクス
| メトリクス | 概要 | 目安 |
|---|---|---|
| 循環的複雑度(Cyclomatic Complexity) | 関数内の条件分岐の複雑さ | 10以下が理想、20超えは要分割 |
| 認知的複雑度(Cognitive Complexity) | 人間が理解しにくさを測る新指標 | SonarQubeが採用 |
| コード重複率 | コピー&ペーストされたコードの割合 | 5%以下が望ましい |
| テストカバレッジ | テストされているコードの割合 | 80%以上を目標とすることが多い |
| コード行数(LOC) | ファイル・関数のサイズ感 | 関数200行以上は要分割検討 |
DORAメトリクス(開発チームの生産性)
GoogleのDevOps Research and Assessment(DORA)チームが定義した4つの指標です。
| 指標 | 内容 | ハイパフォーマーの目安 |
|---|---|---|
| デプロイ頻度 | 本番デプロイの頻度 | 1日複数回 |
| 変更リードタイム | コミットから本番までの時間 | 1時間未満 |
| 変更失敗率 | デプロイによる障害の割合 | 5%未満 |
| MTTR(平均復旧時間) | 障害から復旧までの時間 | 1時間未満 |
主な計測ツール
| ツール | 用途 |
|---|---|
| SonarQube | コード品質の総合ダッシュボード |
| CodeClimate | GitHub連携のコード品質分析 |
| Codecov | テストカバレッジの可視化 |
| Four Keys | DORAメトリクスの計測ツール(Google製) |
歴史と背景
- 1976年:McCabeが循環的複雑度を提唱
- 2018年:DORAメトリクスがDevOps研究として発表
- 現在:SpaceメトリクスやDXメトリクスなど開発者体験の指標も登場