チェックポイント: カプセル
- カプセルの名前と説明は、システム内でそのカプセルが果たす役割を的確に表している。
- カプセルには、入念に定義された目的があり、一まとまりになった相互に関連する責任を収めている。
- カプセルは、システム内の重要な制御の中心を表すとともに、システム内の重要な制御スレッドも表している。
- カプセルが果たす役割は外部ポートにおいて反映されていて、それらの役割ごとにそれぞれ 1 つ以上の別々のポートがある。
- どのポートも、複数の役割で使用されることはない。
- 同時進行のシナリオの相互作用を制御する必要がある場合、複数の個別ポートを備えたカプセルが使用されている。
- 将来変更が見込まれる場合、連結を解除する手段としてインターフェース・カプセルが使用されている。
- カプセルを使用して、将来見込まれる変更と設計上の決定が効率よく分離される。
- コーディネーター・カプセルを使って、複数のエンティティーどうしの複雑かつ動的な関係 (1 対多または多対多) を管理する。
- プロセスをカプセル化するのにカプセルどうしの調停を行う必要がある場合、コーディネーター・カプセルを使用する。
- 初期化順序は正しく配慮されている。
- それぞれ独立した制御スレッドの始動および同期に対して配慮が払われている。
- 継承が適切に使用されている。
- 一般化/特殊化階層が非常に浅かったり過度に深すぎたりしている兆候はない。
- 明確な共通性が継承階層において反映されている。
- 継承を、実装時の考慮の対象 (たとえば、コードの再利用) として主に使用するのではなく、設計上の共通抽象の取り込みの手段として使用している。
- スーパークラスは、単にサブクラスの属性を併合したものではなく、論理抽象を表している。
- 継承階層には、直交プロパティーを備えた中間の抽象クラスは入っていない。
チェックポイント: 設計クラスも参照してください。
| |
|