(C) K. Tatsumi,201014
サイクロマチック複雑度
プログラムの制御フローをグラフ化し、以下の式で求
められる数で複雑度を表現
サイクロマチック数 = 辺の数 - 頂点の数 + 2
1関数内のサイクロマチック数
10以内が望ましい
20以上は避けるべき
パステストで実施すべき
テストケース数の上限も表す
パス1 : a → b → e → f
パス2 : a → b → e → a → b → e → f
パス3 : a → b → e → b → e → f
パス4 : a → c → f
パス5 : a → d → c → f
a
b c d
e
f
入口
出口
サイクロマチック数=9-6+2=5
[出典] T. J. McCabe, "A Complexity Measure," IEEE Transactions on Software Engineering,1976
15.
(C) K. Tatsumi,201015
ソフトウェアサイエンス
ソフトウェアサイエンス理論
プログラミング作業とは、いくつかのプログラムトークン(演算子やオペ
ランド)を選択したり組み合わせること
複雑性や生産性は、これらの基本要素の出現回数の関数で表せる
基本測定量
n1 = プログラム中の演算子の種類数 (算術演算子、比較演算子、関数名 など)
n2 = プログラム中のオペランドの種類数 (変数、定数、ラベル など)
N1 = 演算子の出現数
N2 = オペランドの出現数
評価尺度の導出
プログラムの大きさ(ビット数) V = (N1 + N2) log2(n1 + n2)
プログラムの水準(推定値) L = 2n2 / n1N2
プログラミングの困難さ(推定値) D = 1 / L = n1N2 / 2n2
プログラミング労力(推定値) E = V / L = n1N2 (N1 + N2) log2(n1 + n2) / 2n2
など
[出典] 山田,高橋, ソフトウェアマネジメントモデル入門, 共立出版,1993