今日学んだこと:コナーセンスに関して

2025年9月10日

概要

今日はコナーセンスについて学んだ。

ポイント1

システムの全体的な正しさを維持するため、 あるコンポーネントの変更が別のコンポーネントの変更を必要とする場合、 2つのコンポーネントはコナーセント(接続)されている。

静的なコナーセンスとは、コードレベルでの結合を指す。 これは『ソフトウェアの構造化設計法』で定義された求心性と遠心性の結合を洗練させたものだ。 言い換えれば、アーキテクトは、次のような静的なコナーセンスの種類を、 求心的か遠心的かを問わず、何らかの結合の度合いとして捉えられる。

  • 名前のコナーセンス(Connascence of Name:CoN)
  • 型のコナーセンス(Connascence of Type:CoT)
  • 意味のコナーセンス(Connascence of Meaning:CoM)
  • 位置のコナーセンス(Connascence of Position:CoP)
  • アルゴリズムのコナーセンス(Connascence of Algorithm:CoA)

ポイント2

Pag-Jonesが定義したもう1つのコナーセンスの分類が、動的なコナーセンスだ。

  • 実行順序のコナーセンス(Connascence of Execution:CoE)
  • タイミングのコナーセンス(Connascence of Timing:CoT)
  • 値のコナーセンス(Connascence of Values:CoV)
  • アイデンティティのコナーセンス(Connascence of Identity:CoI)

動的なコナーセンスを評価するのは、 静的なコナーセンスを評価するのに比べるとずっと難しい。 なぜなら、コールグラフと同じくらい効率的に実行時呼び出しを分析できるツールを、 私たちはまだ手にしていないからだ。