← ノート一覧

安定依存の原則(SDP: Stable Dependencies Principle)

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

安定度の高い方向に依存すること。

  • 変動を想定したコンポーネントは、変更しづらいコンポーネントから依存されてはいけない。
  • 変更しやすい設計で作ったモジュールであっても、ほかのコンポーネントから依存されると、あっという間に変更しづらくなる。
  • 安定依存の原則(SDP)を満たしていれば、手軽に変更できるように作ったモジュールが変更しづらいモジュールから依存されないことを保証できる。
  • コンポーネントの I (不安定さ) を依存するコンポーネントの I よりも大きくするべき。
  • コンポーネントの依存性の方向を順番にたどると、I の値は減少していくべき。
  • コンポーネント構造を設計するときは、安定度の高いコンポーネントもあれば、安定度の低いコンポーネントもあるようにしておきたい。

安定度の指標

コンポーネントの安定度を測定する方法の一つとして、コンポーネントに依存しているコンポーネントの数や、そのコンポーネントが依存しているコンポーネントの数を調べる。

  • ファン・イン
    • 依存入力数。コンポーネント内のクラスに依存している外部のコンポーネントの数。
  • ファン・アウト
    • 依存出力数。コンポーネント内にある、外部のコンポーネントに依存しているクラスの数。
  • I(Instability)
    • 不安定さ。
    • I = ファン・アウト ÷ (ファン・イン + ファン・アウト)
    • I = 0 が最も安定しているコンポーネント
    • I = 1 が最も不安定なコンポーネント

ファン・インとファン・アウトを算出するには、対象コンポーネントに含まれるクラスと依存関係にある外部コンポーネントのクラスの数を調べる。

Amazon アソシエイトについて

この記事には Amazon アソシエイトのリンクが含まれています。Amazonのアソシエイトとして、SuzumiyaAoba は適格販売により収入を得ています。