DDD强调了对复杂领域要构造满足业务的业务模型,但是领域模型的创建需要我们具备对领域的理解,比如现在要做电商相关的业务开发,但是我以前对电商一点都不了解,这样的情况下不可能构建领域模型,下面就是一些积累领域知识的一些方法。
1. 知识提炼与协作流程
知识提炼是一个持续的过程,模型会随着系统迭代所而演化,好的模型能够保持传神的概念和专业术语,被开发人员和业务人员理解。
知识提炼.png- 领域专家+开发团队:使用
通用语言
交流协作并达成共识,除了关注技术实现外,更应该关注业务领域,构建业务领域模型。 - 业务人员:关注业务需求,关注输入和输出。
2.提炼领域知识的方式
- 多和领域专家进行交流。
- 从案例开始,逐步理解业务流程。(比如下单、支付、退款)
- 提出有力的问题,关注需求背后的业务目标。
- 系统需求来自何处?
- 系统如何为业务提供价值?
- 不构建这个系统会发生什么?
- 不用急于给系统概念命名,除非已经非常明确,前期可以用颜色区分。
- 采用BDD(行为驱动开发),思考系统在
场景
下会产生的事件
以及对应的输出
,更加全面的了解系统。
3.查看现有模型
成熟的领域系统中往往已经遵循一个已知的模型,这个时候需要学习与业务领域更多的信息。
-
理解需求意图
业务方通常基于当前系统约束提需求,而并非他们真正想要的,要理解隐含的愿景和业务目标
-
事件风暴
开发团队、业务人员、领域专家一起把业务中的词汇都列出来,写在白板上,分别阐述对这个词汇的理解,同时包括各种动作、状态、事件。事件风暴有利于是丰富通用语言的关键流程,这样大家可以业务术语达成共识,后续在专注核心子域的地方也会进一步介绍。
- 理解达成业务目标的影响范围
比如业务需求希望提高百分20%的销量,开发人员、业务人员都会重新审视当前系统,比如推荐策略、营销活动、系统性能,在这个过程中,这样也会加深对当前系统存在的模型的理解。
- 理解业务
理解当前业务中的客户渠道、业务模式、成本结构、盈利模式。
- 有针对性学习其他已知的系统
这个很普遍,自己的所开发的系统市场上有很多成熟的解决方案和设计,可以多了解他们的系统架构和模式。
网友评论