コンポーネントの凝集性
どのクラスをどのコンポーネントに含めればいいのか
再利用・リリース等価の原則
再利用の単位とリリースの単位は等価になる。
ソフトウェアコンポーネントを再利用したくても、リリースプロセスでそのコンポーネントを追跡していなかったり、リリース番号がついていなかったりすると、再利用できない。
閉鎖性共通の原則
同じ理由、同じタイミングで変更されるクラスをコンポーネントにまとめること。
変更の理由やタイミングが異なるクラスは、別のコンポーネントに分けること。
全再利用の原則
コンポーネントのユーザーに対して、実際には使わないものへの依存を強要してはいけない。
コンポーネントの結合
非循環依存関係の原則
コンポーネントの依存グラフに循環依存があってはいけない。
安全依存の原則
安定度の高い方向に依存すること
安定度の指標
- ファン・イン(依存入力数、コンポーネント内のクラスに依存している外部のコンポーネントの数を表す)
- ファン・アウト(依存出力数。コンポーネント内にある、外部のコンポーネントに依存しているクラスの数を表す)
- I(不安定さ。I=ファン・アウト/(ファン・イン+ファン・アウト)。ゼロ以上1以下の値になる。)
安定度・抽象度等価の原則
コンポーネントの抽象度は、その安定度と同程度でなければならない。
抽象度の計算式
Nc:コンポーネント内のクラスの総数
Na:コンポーネント内の抽象クラスとインターフェイスの総数
A:抽象度。
A = Na÷Nc