五、战略设计(限界上下文)
战略设计部分最重要的一部分来了。这里先简单介绍一下它, 限界可以从字面意思中看出来,重点在于边界,界限。上下文我们应该都知道,合理来的意思就是上下文的边界,限界上下文划分的是否会直接或间接影响项目的整体进度和质量。下面我们先解决两个东西:
(1) 上下文是什么?
简单点说,这就是我们所处的领域,它包含了我们所需要解决问题的整体集合。
(2) 为什么需要边界?
每一个领域都太过庞大,我们必须把他们划分成单个的小问题,逐个击破。
讲完这两个问题之后,我们需要重新审视一下领域这个名词,领域是 DDD中的第一个D,对于它的解释一般为: 某一特定范围内的问题集合。根据这个集合,人类会本能将其划分,社会或者市场会针对某一范围内的问题,产生一些特定划分。这里我依然拿房地产行业举例: 我们在房地产没有任何计算机浸入时,我们就知道什么叫房源(当然可能叫法不一样),我们买房子肯定是找到卖房子的人,然后和他们签署有效凭据,然后确认这个房子就是购买者的。无论在什么时候,房地产的基本行为是不变的,这些流程中涉及到的相关事物,我们叫做子域。很自然,我们能够说出来的就是:
a. 买房子的凭据—订单
b. 房子—房源
c. 卖房子的人—门店,经纪人,开发商
这些是行业自出现就已经由社会分化体系所产生的,并不需要我们做过多处理。可是我们仍然给他们分出优先级,哪些问题最重要,最需要优先解决。这里可以按照核心域 > 支撑域 > 通用域的关系,依次从领域中区分出来。每一家企业对于重要性的次序可能都不一样,比如核心域的区分,就得从公司核心竞争力去考虑; 支撑域表示为核心域服务的子域; 通用域则是没有涉及过多行业相关信息以及领域信息,可以由第三方提供的子域。
从上文我们可以看出子域和限界上下文都是用来划分领域的,但是是从不同角度去划分的,见下图:
子域和限界上下文,核心作用都是帮助我们来分配资源的。
- 先找到最重要的,优先级最高的问题
- 然后将人力,时间资源合理划分成多份,对应去处理这些问题
- 最重要的是根据当前实际情况,合理分配已有资源,实现效益最大化
总结一下
限界上下文其实在相对小团队中,很难看出起到非常巨大的作用。因为本来资源就十分有限,而且所需要解决的问题也没有什么区分度,这些因素都导致我们不能非常直接的看到限界上下文区分的作用。最后我做一个类比:
限界上下文的划分就好像是我们在做一场大的战役布局,得根据敌我双方的特点,进行排兵布阵,把各个兵团的擅长之处去做他们擅长的事,至于该怎么排兵布阵,我放在下一节来讲。