什么是领域建模,盘点领域建模的思想和方法( 二 )
领域建模涉及哪些概念?
领域:要讨论的问题的范围称为领域或问题领域 。
子域:在不同纬度划分域的相对内聚的单位 。例如 , 电子商务业务涉及订单、库存、营销子领域等 。
语境:特定人群在讨论的问题域就是形成的语境 。这里要强调一个概念 , 特定人群不是以团队或项目划分的群体 , 而是以知识划分的群体 。也就是说 , 语境不是普遍的 , 而是存在于一个人群内部的 , 而这些语境大部分是以隐性知识的形式存在的 。
领域语言(无处不在的语言):领域模型可以成为交流的通用语言的核心 , 同时团队交流与软件实现紧密相连 。这种共同语言是整个团队工作中无处不在的语言 。
实体:实体是一个领域概念 , 在领域中需要唯一的标识 。因为我们有时候需要区分它是哪个实体 。有两个实体 , 如果唯一标识符不同 , 那么即使实体的所有其他属性都相同 , 我们也认为它们是两个不同的实体;因为一个实体有一个生命周期 , 它可能在创建后被保存到数据库中 , 然后在某个时候被取出 。所以 , 如果我们不为一个实体定义一个唯一的标识 , 那么我们就无法分辨是这个实体还是哪个实体 。
值对象:值对象没有唯一标识 , 这是它和实体最大的区别 。某电影说FBI通过隐私查询发现男主和女主在大学时的送货地址相同 , 判断两人同居过 。这里的地址可以作为一个值对象 , 它的所有属性决定了它是谁 , 而不必用ID来区分 。
触发事件:企业应用事件大致可以分为三类:系统事件、应用事件和域事件 。域事件的触发点在域模型中 , 因此得名 。通过使用领域事件 , 可以实现领域模型对象状态的异步更新 , 外部系统接口的委托调用 , 通过事件调度机制实现系统集成 。在系统分析阶段 , 我的观点是事件类型不分 。
想想颜色建模中Event和MI的区别和联系?
电信信息架构中有很多事件 , 如下图所示 。
观点:不建议在分析阶段区分Entity和value object
不建议在分析阶段区分实体和值对象 。比如客户和地址的关系和区别是一样的 。在后续的细化过程中 , 自然是知道的清清楚楚 。例如 , 地址可以重复使用 , 并且不是唯一的 。
观点:业务规则可以作为补充添加到领域模型中
业务规则可以作为补充添加到域模型中 。例如 , 在下图中 , 送货单和订单项目之间的关系有一个约束语句:只有当所有订单项目都已交付时 , 订单才能成功关闭 。
我们来看看DDD的内容 。这些是领域建模(应该在分析阶段确定) 。
如上图 , 分析阶段最多只能使用实体和值对象 。再一次 , DDD是一个专注于设计的工具 。
基于以上领域和领域语言的概念 , 就不难理解不同的领域对同一个名词有不同的含义 , 甚至同一个媒介有不同的内涵和外延 。我们可以把领域表达成一个问题领域 。
比如电商网站有优惠券 , 包括天猫购物优惠券、店铺优惠券、商品优惠券等 。下图是淘宝优惠券截图 。
还有一个专门做凭证导航的网站:券商妈妈 。
这两个网站经营的优惠券是一类东西 。他们的型号一样吗?这两个网站都管理代金券 , 但业务实体(代金券)不同 , 因为它们要解决的问题域不同 。券商妈妈是流量入口 , 讲究接收和跳转;淘宝优惠券关注的是使用情况【下单时扣除订单金额】 , 包括使用优惠券的用户对店铺的粘性 , 二次消费等 。实体的经营行为和地位也不同 。
问题领域与问题解决领域
最后总结一下 , 问题域和问题求解域是两个范畴 , 分别属于分析、设计和实现阶段 。不同阶段使用的工具和目标也不同 , 如下图所示:
在分析阶段的领域模型中 , 我认为主要是描述领域实体和关系 , 可以辅助解释领域术语(可以是业务字典的形式)和约束(业务规则) , 而业务实体(领域实体)只能描述主要特征 。
未完待续 , 领域建模刍议(二)将介绍建模的方法体系 。
Ps:系统思考是最好的总结和学习 。我在写这一章的过程中发现了一些模糊的内容 , 包括写完之后的很多未知 。
推荐阅读
- 怎么查看商标是否被注册,商标自助检索平台介绍
- 什么是综合性人才,综合型人才最基本的特点
- 汪小菲|汪小菲这状态活脱脱的就是一个怨夫啊
- 张颂文|甄嬛传番外篇:其实陵容早就知道甄嬛的私情,只是一直未忍揭穿
- 解放军领子上的徽章不同,分别代表什么级别 解放军肩章
- 蝙蝠喜欢什么样的环境、蝙蝠吃什么
- 思维导图是什么意思该怎么画?思维导图到底是什么
- 麻沸散问世于什么时候朝代;麻沸散问世于什么时候-简短介绍?
- 文玩|2023年正规进口的文玩独角什么价格?
- 周一围|周一围和张颂文是大学同学引热议外出吃饭保温杯不离手
