抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

Eric Evans:领域驱动设计有利于软件开发吗?

2016 年 6 月 20 日

Eric Evans 最近在伦敦举办的 DDD eXchange 大会上做了一次主题演讲。他在演讲中指出,过去的几年中,对领域驱动设计(DDD)的兴趣有所增加。他认为,我们正处在一个开发人员更关注设计的时代,部分原因是因为我们更多的工作在分布式系统上,而其中的模型具有较高的价值。

Evans 认为,DDD 仍然有意思的其中一个原因是,因为我们质疑它潜在的假设,并取得了一些不错的结果。挑战它的一种方法是问如下这样的问题:

  • DDD 是否有助于我们以某种定义的方式更快或者更好地交付软件?
  • DDD 是否有助于我们适应?我们可以将同样的原则应用在过去 10 年已经发生根本变化的 IT 世界吗?
  • 那些 DDD 原则是否有助于我们创新?我们现在做软件设计比以前好了,是因为现在这些原则帮助我们找到新的做事方式了?

DDD 的原则依赖我们以一定的方式考虑模型。但是以 Evans 的经验,人们往往将领域模型简化为 UML 图。虽然数据结构是一个重要方面,但这不是他用模型来参照的东西;各种动态方面也是重要的。完整性或现实的描述不是目的;一个模型应该有一个小范围的关注点,并在一些特定的方法上是有用的。他用 Mercator 投影来作比较:Mercator 投影是专为航海而创造的世界模型,但对于其他目的并不是特别有用。

经常,Evans 发现,人们试图创造一个如此优雅的模型使得一步就可以到达那里的时候,他们就会卡住。相反,他认为,我们应当交付那些一开始并不那么好的模型,并开始使用它们。然后,我们可以学习并创造越来越好的模型,直到最终发现那个可以引以为豪的模型。

Evans 强调我们不应该局限于模型看起来的样子。他对模型的观点包括许多不同的模型范式:

  • 关注于事物的面向对象会反过来带出行为。这是 Evans 写他的关于 DDD 一书时的主要技术。
  • 事件溯源,其中事件发生的顺序成为中心而事物都是次要的。它有许多优点也有一些缺点。Evans 指出,面向事件的建模似乎也能很好的适用于许多业务流程。
  • 关系是一系列适合问题的面向集合的模型,其中许多事物互相比较或互相关联。Evans 指出我们应当使用它本来的意图,而不仅仅是存储面向对象数据的一个坏方法。

Evans 认为 DDD 有助于我们创新的一个例子是事件溯源。它是领域建模的一种不同风格,也是建模思想从关注数据结构的变化到所发生事情的转变。在一定的领域里,与已经发生事情的相关离散事件可能是非常有价值的。

Evans 提到的另一个例子是事件风暴,这种技术在近年来已经产生一些影响。它是以发生在领域上下文中的事件开始,并寻找作为基础元素的事件。他认为事件风暴和事件溯源这两种技术都可以和事件一起工作,当一起使用的时候可能会产生积极的影响。

明年的DDD Exchange 定于2017 年4 月下旬,大会的注册已经开始。

查看英文原文 Eric Evans: Is Domain-Driven Design Beneficial for Software Development?


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 6 月 20 日 19:001482

评论

发布
暂无评论
发现更多内容

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

Java 程序员 架构 面试 IT

一切努力似乎都徒劳?|靠谱点评

无量靠谱

求天理 存人欲|靠谱点评

无量靠谱

震惊!300多页美团百亿级系统架构设计实录首公开

Java 白

Java 编程 架构 面试 架构师

细说JavaScript正则表达式(RegExp)

devpoint

正则表达式 regex JavaScrip 8 月日更

fil最新消息!Fil价值与未来如何?

IPFS星盟小熊

区块链 分布式存储 IPFS fil FIL价值

上游思维:上工治未病

石云升

读书笔记 公司管理 8月日更 上游思维

Alibaba12年技术老兵整理的“MySQL 学习笔记”带你轻松拿捏MySQL

Java~~~

Java MySQL 数据库 架构 面试

Java的四种引用类型

W🌥

Java JVM 八月日更

如何在二三线城市月薪过万(二)面试100人后的经验总结!教你如何做面霸

小黄鸡1992

8 月日更

到底啥是区块链分叉?

CECBC区块链专委会

区块链技术 | 数字货币的未来发展前景趋势分析

CECBC区块链专委会

上线仅仅三小时,豆瓣评分均9.0的“四本程序员必刷书籍”火了

Java 编程 面试 IT 计算机

“硬钢字节”阿里大牛分享内部数据结构与算法(诛仙版)源码笔记

Java~~~

Java 架构 面试 算法 数据结构与算法

fil矿机价格怎么计算?fil矿机托管费用怎么计算?

IPFS老胡

fil矿机价格怎么计算 fil矿机托管费用怎么计算

Python代码阅读(第9篇):返回最长的输入对象

Felix

Python 编程 Code Programing 阅读代码

【LeetCode】股票的最大利润Java题解

HQ数字卡

算法 LeetCode 8月日更

fil挖矿怎么样?fil挖矿收益怎样?

IPFS老胡

fil挖矿怎么样 fil挖矿收益怎样

新药研发周期越来越短,北鲲云超算平台如何提高药企竞争力?

北鲲云

Alibaba22届校招启动!连夜整理一份七大专题Java架构速成笔记

Java~~~

Java 架构 面试 阿里 校招

七夕特别篇|用Python绘画牛郎织女在鹊桥相见

Python研究者

8 月日更

Vue进阶(三十四): webstorm 应用 git 进行版本管理

No Silver Bullet

git Vue 八月日更

秒杀系统设计-超卖问题

泽睿

秒杀 秒杀系统

猎杀时刻!阿里高工总结698页Spring学习笔记,疯狂狩猎大厂offer

Java~~~

Java spring 架构 面试 微服务

二本4年Java经验,五面阿里艰苦经历(定薪45K),回馈一波心得体会

Crud的程序员

Java spring 编程语言 java架构

DAPP钱包开发模式详细介绍

橙子区块链l53o56oloo3

dapp 钱包系统开发 DAPP智能合约交易系统开发

minetest Window编译运行

c++ 开源 游戏 我的世界

这份阿里P8级别内部疯传的“Linux私房菜”让你一次吃个饱

Java 编程 程序员 IT 计算机

我为什么不建议大家等公司倒闭之后,再找工作!

非著名程序员

认知提升 招聘管理 面试求职 8月日更 8 月日更

提升个人影响力的简单原则

俞凡

认知

区块链和比特币到底有什么关系?

CECBC区块链专委会

Study Go: From Zero to Hero

Study Go: From Zero to Hero

Eric Evans:领域驱动设计有利于软件开发吗?-InfoQ