Domain Model 是一个面向产品需求文档(PRD)的领域建模技能,其核心作用是把 PRD 中的业务规则和用户旅程翻译成正式的领域模型,涵盖实体(entities)、不变量(invariants)、关系(relationships)和限界上下文(bounded contexts)。
用途 当已经存在 PRD,并且团队需要建立一套共享的领域语言时,可以使用该技能。它帮助把散落在需求文档中的业务概念整理为结构化的领域制品,为后续实现规格提供业务抽象层面的基础。
主要能力 该技能围绕一条工作流展开:discovery(发现)→ entities(实体)→ relationships(关系)→ rules(规则)→ output(输出)。其中存在一个循环:新实体可能反过来重塑关系。
- Discovery:读取 PRD,是整个建模的起点。
- Entities:枚举实体,包含属性、不变量和生命周期。
- Relationships:映射关系,包含基数(cardinalities)和限界上下文。
- Rules:分配业务规则,将每条 BR-N 关联到一个或多个实体生命周期状态。
- Output:产出领域制品并向下游交接。
触发方式 该技能由特定指令触发,不同触发词对应不同产出文件:
- 构建模型(“build domain model”“define entities”“model the domain”)→ discovery.md
- 枚举实体及其属性、不变量、生命周期 → entities.md
- 映射关系及其基数和限界上下文 → relationships.md
- 分配业务规则(“validate BR coverage”“assign rules”)→ rules.md
- 产出制品(“output”“produce domain.md”)→ output.md
- 更新模式(“update domain model”“domain gap found”“spec found violation”)→ discovery.md(更新模式)
使用方式与准则
- 在执行任何其他操作之前先阅读 PRD,模型由 PRD 推导而来。
- 每个实体都必须能追溯到至少一个 PRD 旅程或功能需求(FR)。
- 每条 BR-N 都必须分配到一个或多个实体生命周期状态。
- 显式标记不变量,它们是被执行的契约。
- 在交接前将实体归入限界上下文。
适用场景 适用于已有 PRD、需要把业务规则与用户旅程形式化为领域模型的团队,尤其是需要建立共享领域语言、为下游实现规格提供业务抽象基础的场景。
限制与反模式
- 实现泄漏(Implementation Leakage):不要把实现层的数据模型(表名、ORM 类、列类型、外键)与领域概念混在一起。领域模型处于业务抽象层,只包含实体、生命周期状态和不变量。文件路径和代码依据属于下游实现规格,不属于此处。判断标准是:非工程背景的利益相关者能否识别这些语言?如果不能,说明已经泄漏。
- 过早定稿(Premature Finality):领域模型永远不是最终版本。当实现过程中暴露出缺口(与不变量矛盾的行为、未预料的状态、模型中不存在的实体)时,应进入更新模式,而不是静默修补制品。模型与运行中的系统必须保持同步。
关于该技能的收费、价格、平台支持等信息,资料中暂未提供。