コナーセンス

ソフトウェア設計における変更の波及関係を表す概念。Meilir Page-Jonesが1996年に提唱。結合度をより精緻に分類・分析するための枠組み。

「あるコンポーネントを変更したとき、別のコンポーネントも変更しないと正しく動作しない」という依存関係の性質を指す。

分類

静的コナーセンス(ソースコードレベル)

種類 説明
名前のコナーセンス 同じ名前を参照 関数名、変数名
型のコナーセンス 同じ型を期待 引数の型
意味のコナーセンス 同じ値の解釈 マジックナンバー
位置のコナーセンス 引数の順序 位置引数
アルゴリズムのコナーセンス 同じアルゴリズムを使用 ハッシュ関数

動的コナーセンス(実行時)

種類 説明
実行のコナーセンス 実行順序の依存 初期化順序
タイミングのコナーセンス 実行タイミングの依存 競合状態
値のコナーセンス 複数の値が連動 開始日と終了日
同一性のコナーセンス 同じ実体を参照 シングルトン、DB行

同一性のコナーセンス

複数モジュール間で共有される実体の一貫性維持が必要となる状況:

これは最も強い(悪い)動的コナーセンスであり、可能な限り避けるべき。

設計指針

  1. 強いコナーセンスを弱いものに置き換える
  2. コナーセンスをカプセル化境界内に閉じ込める
  3. 境界を越えるコナーセンスを最小化する

結合度との関係

コナーセンスは結合度の概念を拡張・精緻化したもの。結合度の7段階分類は主に静的な関係を扱うが、コナーセンスは動的な依存関係も体系的に扱える。

関連

参照