『ドメイン駆動設計』ではモデル駆動設計の基本要素の一つとしてエンティティがある。
追跡番号や識別番号を使って管理したい関心事を特定するモデル要素。
データモデリングや概念モデリングとして従来からある手法と同じアプローチ。
業務ロジックに焦点を合わせるドメインモデリングでは、
エンティティは脇役。主役は計算判断ロジックを表現するための値オブジェクト。
値オブジェクトは基本的にはエンティティの属性や状態を表現するのでエンティティと関係する。
主役である値オブジェクトを発見するために、エンティティの属性に注目する手法がある。手がかりとしては悪くないが
計算判断ロジックは複数のエンティティにまたがる横断的関心事になることが多い。
エンティティと値オブジェクトの結びつきよりも、どんな値を使ってどんな計算と判定をし、その結果どんな値を導きくという値(に種類)の関係に注目したモデリングが重要。つまりドメインモデルの主役は値オブジェクト。
複数の値オブジェクトを使った計算判断を表現する手段が集約。
集約は計算判断の文脈(目的と状況)を表現する複合オブジェクト。
計算判断の文脈にはPricing、Availability、Allocation、Authorization、Routingなどがある。
これらの文脈の根底にあるのは最適化。複数の制約条件を組み合わせて、何らかのポリシー(判断基準)を元により好ましい解を見つける。