/note/tech

Connascence:コードの結合度を測るもうひとつの指標

コナーセンス(Connascence)とは、1992年にMeilir Page-Jones によって考案されたソフトウェア品質指標で、それまでの結合メトリクスを改良して、オブジェクト指向言語用に再構築したものとなります。

静的なコナーセンス: コードレベルで生じる結びつき
    名前のコナーセンス Connascence of Name (CoN)
        他方のコンポーネントが持つ要素の名前(メソッド名など)を参照している状態
    型のコナーセンス Connascence of Type (CoT)
        他方のコンポーネントが持つ要素の型を知っている状態
    意味のコナーセンス Connascence of Meaning (CoM)
        複数のコンポーネントが特定の値の意味を共有している状態
    位置のコナーセンス Connascence of Position (CoP)
        メソッドのパラメータ順序などを知っている必要がある状態
    アルゴリズムのコナーセンス Connascence of Algorithm (CoA)
        他方のコンポーネントがどんなアルゴリズムを用いているかを知っている必要がある状態
動的なコナーセンス: 実行時に生じる結びつき
    実行順序のコナーセンス Connascence of Execution (CoE)
        他方のコンポーネントを利用するにあたって、メソッドなどの実行順を知っている必要がある状態
    タイミングのコナーセンス Connascence of Time (CoT)
        他方のコンポーネントを利用するにあたって、実行タイミングなどを知っている必要がある状態
    値のコナーセンス Connascence of Value (CoV)
        コンポーネントが持つ値同士が関連していて、同期をとって管理する必要がある状態
    アイデンティティのコナーセンス Connascence of Identity (CoI)
        複数のコンポーネントが、個別具体のインスタンスを共有している状態