• Imagix 4D ユーザガイド
  • 目次

クラスレベルのメトリクス

以下に、プロジェクト・ソースコードで、クラス、テンプレート、インターフェイス、構造体、共用体向けに生成されるメトリクスを記載します。

オブジェクト指向を対象としたCK(Chidamber and Kemerer)メトリクス

CKメソッドの凝集性の欠落 (LCOM) Lack of Cohesion of Methods(LCOM)は、クラスのメンバ関数における凝集性を表す測定値です(Chidamber および Kemerer が LCOM を提案。1994年に定義を改訂)。
ユーザは、クラスの凝集性における別の定義を選択することも可能です。そのうちの1つに、Li ならびに Henry によるグラフ理論の計算における、Hitz と Montazeri の1996年の再定義があります。2つめは Henderson-Sellers 氏が提唱する定義で、特定の属性(メンバ変数)を読み取りや設定を行わないメソッド(メンバ関数)の比率であり、クラスの属性すべてが平均化されたものです。
CKオブジェクト間のカップリングクラスの結合度、もしくは依存性における尺度です(CK メトリクスの CBO)。これは使用される外部クラスの数量を表します。
CK継承ツリーの深さクラスから基底クラスへの継承ツリーの深さを示します(CK メトリクスの DIT)。
CK子の数クラスから直接的に派生したクラスの数量を示します(CK メトリクスの NOC)。
CKクラスへの応答クラスのメソッドによって呼び出されるメソッドの数を表し、クラスの応答数の測定値です(CK メトリクスの RFC)。
CKクラス単位の重みつきメソッド数クラスのメソッドに対するサイクロマティック複雑度の合計値です(CK メトリクスの WMC)。

McCabe 複雑度メトリクス

McCabe平均サイクロマティック複雑度全クラスメソッドに対するサイクロマティック複雑度(cyclomatic complexity)の平均値です。
McCabe最大サイクロマティック複雑度全クラスメソッドに対するサイクロマティック複雑度(cyclomatic complexity)の最大値です。
McCabe総サイクロマティック複雑度全クラスメソッドに対するサイクロマティック複雑度(cyclomatic complexity)の合計値です(CK クラスの応答数と同一)。

Halstead 複雑度メトリクス

Halsteadインテリジェントコンテントクラスの内容量(複雑度)における言語独立性の測定値です(Halstead I)。
Halsteadメンタルエフォートクラスの作成あるいは理解に必須となる、基本的な知的作業量の測定値です(Halstead E)。
Halsteadプログラム量クラスの情報量における測定値です(Halstead V)。
Halsteadプログラム困難度クラスが実装するアルゴリズムの簡潔性における測定値です(Halstead D)。
これは Halstead Program Level (抽象度)に相反するメトリクスとなります。

その他のメトリクス

クラス階層とローカル変数のカップリングあるクラスにおける結合度あるいは依存性の測定値で、CK クラスの結合度の代替になります。継承されたクラスの数、ネストされたクラスの数、静的メンバ関数への呼び出しの数、およびクラスのメンバ関数によって使用され、なおかつクラス型を持つパラメータならびにローカル変数の数に基づいて計算が行われます。この値が高くなるにつれ、クラスの理解、使用、修正に要する時間が増加することになります。
精確な数値を算出するには、必ず -locals オプションを有効にしてデータを収集してください。
派生クラスあるクラスから派生したクラスの階層の深さを示します。
外部メソッドとカップリングクラスのメンバメソッドによって使用される外部クラス、および呼び出される外部メソッドの総数です。これは、呼び出されるクラスならびに外部メソッド間における結合の合計数になります。
精確な数値を算出するには、必ず -locals オプションを有効にしてデータを収集してください。
継承クラスの論理入力数クラスにより直接継承された基底クラスの数です。
メンバprivateメソッドの数クラスのローカルメソッド(private のメンバ関数)の数です。
メンバ属性の数クラスの属性(メンバ変数)の数です。
クラスのネストクラス(メンバクラス)の数ネストされたクラス(メンバクラス)の数です。
クラスのメンバtypedefの数クラスのメンバ typedefs の数です。
メンバメソッドの数クラスのメソッド(メンバ関数)の数です。
呼び出されるメソッド-外部クラスメソッドにより呼び出される外部メソッドの数です。
呼び出されるメソッド-内部クラスメソッドにより呼び出される内部メソッドの数です。
クラスの総数クラスにおけるメンバの合計数です。