转载

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

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 )关注我们。

原文  http://www.infoq.com/cn/news/2016/06/ddd-software-development
正文到此结束
Loading...