课程名称:DDD(领域驱动设计)思想解读及优秀实践
课程章节: 战略设计
课程讲师: 尤达_技术咖啡
课程内容:
通过案例实践学习DDD战略设计。了解案例项目背景,理解利用DDD思想对软件系统进行建模和设计的整体过程
1,整个流程,分四个步骤,不是一个流程完成进行下一个流程,而是在战术设计的时候,四个步骤都在进行。
2,整个流程遵循建模涡流,比如:领域划分之后,找线性上下文,发现线性上下文,战术设计发现
战略设计时候会将模型分成限界上下文,随着业务推进,出现了更多实体,就产生了新的限界上下文,战略设计重新修改和通用语言也有可能要改,都是没问题的。
战略设计内部,先对领域进行划分,然后再寻找限界上下文BC,理想情况下,限界上下文和子领域是一一对应的,如果一个子领域下划分了两个限界上下文,那么说明之前的领域划分是有问题,所以需要重新划分领域,重新寻找限界上下文。
参与人员:领域专家,医疗系统医生就是领域专家,也就是从业者就是领域专家,通常也会让产品做领域专家。
1,用户故事:
提出问题,不是给解决方案。例如:我是医生,我想要看最近一年看的病,这样我就知道那种病患病率更高,治愈率更高。
提出问题-》用who-what–why来描述-》重复的讨论和图形表达(用例图,或者事件风暴的方式),来得到一个更加完善的需求
(不要指望产品,上来就给一个完整的需求文档,都写的非常清楚,这是不现实的。需要和产品进行反复的沟通才能得到)
2,通用语言
例如:医学专用名词
在这个阶段,大部分都是领域专家在讲解,其他人都在记录和提问问题,
3,战略设计
战略设计做三件事:领域划分,寻找界限上下文,确定上下文映射(映射关系决定在哪做防腐层)
4,战术设计
战术设计:就是确定实体,仓库,值对象,聚合,确定了这些代码基本上就能确定,设计人员和架构师应该深度参加写代码。所以
工厂,实体,仓库,
5,领域拆分,寻找界限上下文,寻找集合等
有三种方式:领域故事陈述(和用例分析法没有本质区别,就是上面用户故事,这种方式最简单),
事件风暴法(用的最广泛),四色建模法。
6,总结
使用storytelling方式建模,就是用在建立通用语言