Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >架构视角 - DDD、TDD、MDD领域驱动、测试驱动还是模型驱动?

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

作者头像
静儿
发布于 2019-05-15 06:02:18
发布于 2019-05-15 06:02:18
4.1K0
举报
文章被收录于专栏:编程一生编程一生

提出问题

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

分析问题

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

首先纠正两个误区。DDD是Domain-Driven Design领域驱动设计。但是TDD和MDD的D意思是Development开发的意思。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的《重构-改善既有代码的设计》的思想。

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Sprint测试交付物设计
本文主要介绍了在敏捷开发流程中,如何在每个Sprint内进行交付物的定义和交付,包括燃尽图、冒烟测试、测试用例、测试报告、功能测试、测试计划、测试Bug列表和压力测试报告等交付物的详细定义和说明。同时,文章还提供了相关的参考和备注信息,以帮助读者更好地理解交付物的定义和说明。
企鹅号小编
2018/01/09
9430
Sprint测试交付物设计
浅谈线程和进程
事实上大部分程序员并没有系统化的学习过,也有很多人并没有机会好好运用它。所以,如果拉一个工作多年的程序员讨论,对方未必能说出个所以然。
Frank909
2020/06/16
5780
浅谈线程和进程
HTML基础03-HTML标签(下)01-表格标签
表格主要是用来显示、展示数据的,因为它可以让数据显示的非常规整,具有良好的可读性。特别是在后台展示数据时,熟练运用表格就显得尤为重要。一个清爽简约的表格能够把繁杂的数据表现的条理有序。
yangjiao
2021/03/04
5960
"字符"、"字符集"、"进制"、"编码"、"加密" 这都是啥?
对于大多数搞安全的来说,应该是能理解上面几个名次的,不过如果我说GBK ,Unicode, UTF-8, GB2312, ISO-xxxx, 二进制,八进制,十六进制 ASCII, BIG5, UTF-16,UTF-32,UTF-DOM,半角字符,全角字符 等等,这回你还能分清楚吗?
意大利的猫
2020/08/20
9360
孟德尔误差是个什么鬼?
孟德尔定律很数学化,当基因区分显隐性时,分离定律(AaAa呈现3:1),自由组合定律(AaBbAaBb呈现9:3:3:1)。同父同母生育的孩子,应该是遗传父母各一半的遗传物质,因此全同胞的个体应该是一样的。之所以九子各不同,是因为存在抽样误差,而这种误差在遗传学中,又称为孟德尔抽样误差。
邓飞
2019/09/25
1.4K0
孟德尔误差是个什么鬼?
NLP之word2vec简介
Word2vec,是为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。
里克贝斯
2021/05/21
5430
NLP之word2vec简介
科研SCI论文图片基础知识详解
SCI论文图片的编辑是一门简单,却不容易的学问。在编辑图片的过程中,涉及到很多软件的配合使用,同时我们的目的不仅是满足投稿杂志的参数要求,还希望尽量做得美观好看。
生信交流平台
2020/09/22
4.1K0
科研SCI论文图片基础知识详解
软件安全性测试(连载16)
顾翔老师近期推出一对一入职面试辅导。有兴趣者可加微信xianggu19720625与我联系。先要提供简历初选,合适者进一步洽谈。
顾翔
2020/01/17
4180
巴黎出生、加拿大求学,Yoshua Bengio刚刚拿到了法国荣誉军团骑士勋章
机器之心报道 编辑:张倩 Bengio 表示,「法国是我出生和成长的地方,我很高兴能在蒙特利尔接受这枚来自法国的勋章。」 昨天,人工智能实验室 MILA(蒙特利尔学习算法研究所)发消息称,该实验室创始人、图灵奖得主 Yoshua Bengio 刚刚获得了法国政府授予的荣誉军团骑士勋章。 法国驻加拿大大使 Kareen Rispal 向 Yoshua Bengio 颁发荣誉军团骑士勋章。 该勋章是法国政府颁授的最高荣誉骑士团勋章(Chivalric order),1802 年由时任第一执政拿破仑设立以取代旧
机器之心
2022/03/09
4070
混合开发:TDD、DDD和BDD交集的值
测试驱动开发(TDD)是一种开发软件的过程,其中在编写代码之前先编写测试。一旦完成,开发人员将努力编写足够的代码以通过测试,然后开始重构。
程序猿玄微子
2020/12/05
2K0
混合开发:TDD、DDD和BDD交集的值
chatbot聊天机器人技术路线
(其中第一种是属于“调用第三方API”,也就是说核心代码和数据库不掌握在自己手里)(第二、三、四种属于开源框架,也就是说我们可以下载其源码,采用,相对快速的自己搭建一个聊天机器人,核心代码和数据库都掌握在自己手里)
机器学习AI算法工程
2022/12/13
2.3K0
蛋疼的Visual Studio2012 驱动模板创建的工程竟然无法编译
其实安装Visual studio2012的一个主要原因就是原生态的驱动开发支持,但是却发现一件很蛋疼的事情。自带的模板创建的项目没办法编译,提示如下的错误:
obaby
2023/02/24
5580
集群和分布式的区别?
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。-百度百科
逍遥壮士
2021/01/05
6260
NLP与NLA的区别是什么?
自然语言处理(Natural Language Processing,简称NLP)是指用计算机来处理、理解以及运用人类的自然语言(如中文、英文等),从而实现机器和人类更平等、更流畅地沟通交流。只有当计算机具备了NLP能力,机器才算实现了真正的智能。
逍遥壮士
2022/12/01
7550
NLP与NLA的区别是什么?
脑机接口
脑机接口(Brain Computer Interface,BCI [4] ),指在人或动物大脑与外部设备之间创建的直接连接,实现脑与设备的信息交换。这一概念其实早已有之,但直到上世纪九十年代以后,才开始有阶段性成果出现。
逍遥壮士
2021/04/13
4940
脑机接口
什么是 RESTful Web服务
总结就是: 上面的提到的特点,可以总结为“ 用明确的方法 操作 语义清晰的资源,来呈现不同的资源表现形式”。
张云飞Vir
2020/04/24
3.1K0
006. 经济学博士的 Emacs 奇妙之旅
本期节目请来了一位特别嘉宾 Kathy,她不仅仅是一名四年经验的 Emacs 拥趸,而且还是一位留学英国的经济学在读博士。
飞驰的西瓜
2022/07/26
3910
006. 经济学博士的 Emacs 奇妙之旅
大模型应用之基于Langchain的测试用例生成
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
京东技术
2024/06/11
1.5K3
大模型应用之基于Langchain的测试用例生成
服务器07-一代宗师“冯诺依曼”
1)计算机由五个部分组成,包括:运算器、控制器、存储器、输入和输出设备,并描述了这五部分的职能和相互关系。 2)计算机的设计思想之一是二进制。 3)计算机基本工作原理是存储程序和程序控制。
大话IT架构
2020/03/31
6400
服务器07-一代宗师“冯诺依曼”
5年内开炸第一颗小行星,改变其轨道!中国计划建立小行星预警监测系统
大数据文摘出品 不知道多少科幻片中,小行星成为了人类灭绝的罪魁祸首。 在超高的速度加持下,直径只有十几公里的小行星撞击地球,都有可能造成人类毁灭。 为了提前预警这样的事件发生,人类做出了不少努力。 美国航天局NASA就在2016年1月成立了行星防御协调办公室(lanetary Defense Coordination Office,PDCO),隶属于美国国家航空和宇宙航行局的美国国家航空暨太空总署科学任务理事会科学部。 目的就是为了寻找和分类近地天体,如彗星和小行星以及可能撞击地球的潜在危险天体,并帮助美
大数据文摘
2022/04/26
6200
5年内开炸第一颗小行星,改变其轨道!中国计划建立小行星预警监测系统
相关推荐
Sprint测试交付物设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档