Use Case Driven Object Modeling with UMLTheory and Practice ch2. Domain Modeling (2/2)

ユースケース駆動モデリング勉強メモ

[https://www.apress.com/gp/book/9781590597743:embed:cite]


Domain Modeling in Theory

Internet Bookstore: Second Attempt at the Domain Model

  • チームでブレストする

    • 要件で明示されていなくても当然含めるべきドメインモデルが見つかったりする
  • スコープ外の外部システムはクラスではなくアクター
  • 名詞の形をしているが、実質動詞であるようなものは取り除く

    • 例: Checkout(貸し出し)
  • オブジェクトとするには小さすぎるものは他のオブジェクトの属性にする

    • 例: 本の「著者」

Internet Bookstore: Building Generalization Relationships

  • 関連多すぎな状態を汎化でほぐす
  • Related Books, Search ResultsなどはすべてBook Listの一種

Domain Modeling in Practice

Exercises

  • モデリング初期から関連の多重度まで考えない

    • 詳細すぎる
    • 最初はクラスと関連の洗い出しに専念する
  • テーブルとクラスを1対1に対応付けて、クラスに属性を並べ立てないこと

    • 【補】性能のために非正規化して1つのテーブルに情報を詰め込んだりしがち
    • なので、現実のモノに即していない
    • 現実のモノに即したクラスに分割する
    • 概してドメインモデリングでは属性を書かないもの
  • ドメインモデル(=問題領域の概念整理)に設計の詳細(=解決領域の知識)を持ち込まない

    • 解決領域の知識の例
    • 抽象クラス
    • メソッドの割り当て
    • デザインパターン (Factoryとか)

      • ロバストネス分析 = 事前設計あたりでようやく出てくるべきもの