很多同学看DDD介绍的书籍,采用死记硬背的方式去实践,碰到与书籍中抽象或文字上很难理解的地方时难免迷茫。
为什么要采用DDD?DDD和敏杰开发的关系是什么?DDD能给我们带来什么好处?DDD建ER图或模型时和发过去是一样的,为什么说DDD更好呢?
现在是过去的将来,不了解历史,就很难理解当前的设计思想!
传统的软件开发模式包含下面几个步骤:
1、 需求分析人员与业务沟通,
2、 需求分析人员写成产品说明书
3、 架构师根据产品说明书进行架构设计,包括分层设计、边界设定、模块关系、数据库定义
4、 模块owner根据架构师拆分的模块进行模块内的详细设计。
5、 开发人员根据模块owner的拆分的最小开发单元进行开发
6、QA根据架构师和需求说明书进行黑盒验证。
从实现难度来说,需求分析人员需要和业务部门的所有人员进行沟通,了解他们的业务模式和诉求,对需求人员的要求就非常高,如果产品说明谁失真程度较高或很水,后面架构师、模块owner、开发人员、QA的开发工作就可能是白白浪费了。
同样对架构师的要求也非常高,他会影响后面的owner、开发人员、qa等同学的工作效果。
DDD的软件开发模式:
1、 多名业务领域专家定义领域内的限界上下文、模型、事件。
2、 架构师负责领域划分、边界等是否合理的确认。
3、 各模块owner和开发人员直接与业务领域专家沟通上下文、模型、事件、聚合等。
这样的话,信息传递的节点变少了,失真的可能性降低了。开发出来的软件和业务的契合度更高。
所以,DDD是从管理、组织结构、开发形态、沟通效率、人员职责上做了整体的优化,就像20世纪福特骑车从手工造车进行流水线造车一样,DDD也是设计了一套全新的软件开发流水线,重新定义流水线工位、角色、上下文、组装.
网友评论