1.领域驱动简介.2.领域.子域.限界上下文.3.上下文映射图
1.领域驱动简介
领域驱动本身是一款古老的软件建模思想
领域驱动两大特性:通用语言.限界上下文
1.通用语言是一种思想.解释是:团队共享的术语.便于交流.//比如行业的术语或者.一个圈子内通俗的名称如开发者们对Visual Studio 的简称:VS.
2.限界上下文是整个应用程序之内一种概念性边界.这个边界内的领域术语.词组或句子.都是通用语言.都有确定的上下文含义.//限界上下文就像一个圈.包含了内部的术语.也能和其他限界上下文交互.
限界上下文和通用语言属于一对一关系.限界上下文能容纳一个独立的业务领域所使用的通用语言.
注意当整个团队工作在同一个限界上下文中通用语言才是通用.
虽然我们只工作在一个限界上下文中.但是我们通常需要和其他限界上下文交互.这时候可以通过上下文映射图集成.
每个限界上下文都有自己的通用语言.但是语言间的通用术语会有很多重叠.
如果试图将一种通用语言运用在整个企业中.难免会失败.//以燃料为例.汽车的柴油和航空煤油.
2.领域.子域.限界上下文
领域是一个团体所做的事和他包含的事物.商业机构通常会确定一个市场.然后在这个市场上销售产品.每个团体都有他的业务范围和行为.这个业务范围就是领域.当你为某个公司开发软件时.你面对的就是这个公司的领域.
假设物流是一个领域.物流领域应该有四个子域.产品.订单.发票.物流.假设这套领域开始运转.零售商用产品向客户展示.达成购买意向.出现订单.最后生成发票.安排物流.
产品.订单.发票.物流这四个子域构成了物流领域.
常规的产品在销售后必应存在需求量大或者小的情况.量大就容易脱销.量小就容易过剩.都会对利润造成损伤.
所以就需要一个核心域:销量预测系统.通过历史销售记录或者.市场调研等方式.采购正确的数量.
举个栗子.解释限界上下文中通用语言的含义.
每一个子域的业务范围就是一个限界上下文.含有通用语言.
在产品的限界上下文中.客户的含义只需要:购买历史.对此产品的忠诚度.购买能力.
在下单的限界上下文中.客户含义只需要:名字.购买产品.寄送地址.价格.
客户在每个限界上下文中属于通用语言.但是只限于此限界上下文使用.
3.上下文映射图
一个公司的上下文映射图可以抽象的理解为.一个简单的框图.表示若干限界上下文的映射关系.
上下文映射图表现的是公司架构当前的状态.可以直白的看出公司中系统的上下游关系.以及平行关系.
相比传统的开发思想.大泥球.瀑布.领域驱动设计一般采取敏捷.
系统间明确统一上下游系统交互协议.
单个系统注意解耦合.
以物流为例.一位客户浏览产品系统确定订购.首先产品系统和库存系统交互.提供产品.然后产品系统和订单交互生成订单.付款后和发票系统交互生成发票.最后通过物流系统交付客户.最终将此销售记录提交预测系统.
预测控制产品系统中能展示的用品.
看起来就像一个金字塔结构.底层的库存系统最庞大.各种用品.
上一层金字塔产品.只展示有效.能盈利的用品.
在上一层订单.只有达成购买意向的用品.
在上一层发票.已经付款的用品.不包含购买后未处理客户就申请退款的用品.
金字塔顶.双方达成共识.货物交付.