アットウィキロゴ
 

行数

  • 行数
    • 最も基本的なメトリック。プログラム規模を推し量る。
    • 関数(メソッド)、モジュール(クラスとかコンポーネントとか)、ファイル……と、単位はさまざま。
    • それぞれの個別値のほか、平均、分散や標準偏差なども有用。
      • 単独では意味がないが、障害(欠陥)の数や密度と合わせると、何かしらの傾向が見えてくる可能性あり。

サイクロマチック複雑度

  • サイクロマチック複雑度
    • C = e - n + 2p
    • オイラーの多面体定理から。
      • V - E + F = 2
      • 複雑度Cは「多面体の面の数」に相当する……が、このことはあまり重要ではあるまい。頂点と辺が多ければそのふたつが成す面も増える理屈。
    • コードの連接をe(edge), 分岐点と合流点をn(node, vertex)と見ると、プログラムは(有向)グラフを形成する。
    • 端的にはノード、つまり分岐の数。プログラムの開始点と終了点をノードと数える点に注意。
      • 分岐がゼロ個の場合、e = 1, n = 2 からC = 1。
      • ノードがひとつ増えればCは1増える。

入れ子の深さ

  • 入れ子の深さ(depth)
    • 当然、複雑度よりもシンコク。

  • 凝集度とか結合度とか。
  • OOP的には
    • 継承の深さ(DIT: Depth of Inheritance Tree)
    • サブクラスの数(NOC: Number of Children)
    • RFC: Responses for a Class。他のクラスに送るメッセージ数?
    • CBO: Coupling between Object classes。他のクラスのインスタンスやメソッドを参照している数
    • LCOM: Lack of Cohesion in Methods。



最終更新:2008年04月09日 14:30