架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

栏目: 编程工具 · 发布时间: 5年前

内容简介:「领域驱动设计」之于微服务,好比麦当劳之于汉堡(个人更喜欢肯德基,汉堡要大些,麦当劳的汉堡,想吃顿饱饭,请先给我上6个:joy:)。但是TDD测试驱动、MDD模型驱动好像也很火啊,到底什么在驱动?不用着急,这是三个5分钟就能区分开的概念。开发中在协同工作。首先纠正两个误区。DDD是Domain-Driven

提出问题

「领域驱动设计」之于微服务,好比麦当劳之于汉堡(个人更喜欢肯德基,汉堡要大些,麦当劳的汉堡,想吃顿饱饭,请先给我上6个:joy:)。但是TDD测试驱动、MDD模型驱动好像也很火啊,到底什么在驱动?

分析问题

不用着急,这是三个5分钟就能区分开的概念。开发中在协同工作。

首先纠正两个误区。DDD是Domain-Driven Design 领域驱动设计。但是TDD和MDD的D意思是 Development 开发的意思。TDD对应测试驱动开发,MDD对应模型驱动开发。

这就是为什么很多大佬在大谈特谈「领域」,但是测试驱动、模型驱动其实也都在用,但谈的少些。因为这是我等实际一线写代码的同学才用的。

其次,它们三者之间的关系也不是感官直觉感受到的这种:

架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

而实际上他们是在不同的阶段使用的方法。在我们团队,使用关系是这种:

架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

下面会介绍我们团队怎么用的。

解决问题

在Eric Evans的《领域驱动设计-软件核心复杂性应对之道》中第一节的消化知识开始就开始建模。在我们平时的设计开发中,在描述总体设计思路也需要用模型也表示。一般常使用的图有:

流程图

https://baike.baidu.com/item/%E6%B5%81%E7%A8%8B%E5%9B%BE

时序图 https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin

实体-联系图 https://baike.baidu.com/item/%E5%AE%9E%E4%BD%93%E5%85%B3%E7%B3%BB%E5%9B%BE/9005309

用例图 https://baike.baidu.com/item/%E7%94%A8%E4%BE%8B%E5%9B%BE/9531932?fr=aladdin

领域模型 https://baike.baidu.com/item/%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/1022567?fr=aladdin

这些本质上是模型驱动开发的一种方法。现在很多公司和组织在研究一些更方便建模的工具。基于MDA(模型驱动架构)的 工具 涌现的比较多了,但是基本都是收费的。

在我们团队中,会用以文档形式,里面附加常用的图的形式来做初版方案的review。review完之后要进行可行性验证,这种会用代码建立一个demo版本。 在这个阶段,需要将完整的测试用例都补充完整,并测试通过。确保测试用例的正确性。开发阶段,测试结果需要和建模阶段的结果一致。

所以可以理解为demo版是一个带有mock的粗糙开发版本。实际的开发阶段是对demo版本的重构。因为demo版实际功能已经实现了,测试用例不需要有改变。这也符合Martin Fowler的《重构-改善既有代码的设计》的思想。

总结

以提出问题为驱动,以解决问题为整合、用输出倒逼输入产品化。

推荐阅读

程序常用的设计技巧

到底多大才算高并发?

美团分布式服务通信框架及服务治理系统OCTO

学会用数据说话-分布式锁究竟可以多少并发?

大话高可用


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品经理全栈运营实战笔记

产品经理全栈运营实战笔记

林俊宇 / 化学工业出版社 / 49.8元

本书凝结作者多年的产品运营经验,读者会看到很多创业公司做运营的经验,书中列举了几十个互联网产品的运营案例去解析如何真正做好一个产品的冷启动到发展期再到平稳期。本书主要分为六篇:互联网运营的全面貌;我的运营生涯;后产品时代的运营之道;揭秘刷屏事件的背后运营;技能学习;深度思考。本书有很多关于产品运营的基础知识,会帮助你做好、做透。而且将理论和作者自己的案例以及其他人的运营案例结合起来,会让读者更容易......一起来看看 《产品经理全栈运营实战笔记》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具