《领域驱动设计:软件核心复杂性应对之道》读书笔记
作者:[美]埃里克 埃文斯
译者:赵俐等
一、软件开发的复杂性
有很多因素会使软件开发复杂化,但最根本的原因是问题领域本身错综复杂。如果你要为一家人员复杂的企业提高自动化程度,那么你开发的软件将无法回避这种复杂性,你所能做的只有控制这种复杂性。
二、控制复杂性的关键
控制复杂性的关键是有一个好的领域模型,这个模型不应该仅仅停留在领域的表面,而是要透过表象抓住领域的实质结构,从而为软件开发人员提供他们所需的支持。好的领域模型价值连城,但要想开发出好的模型也并非易事。
领域驱动设计描述并建立了领域建模艺术的词汇库。它提供了一个参考框架,人们可以用它来解释相关活动,并用它来传授这门难学的技艺。
三、领域驱动
1、不将概念与实现割裂开
首先,在领域建模过程中不应将概念与实现割裂开来。高效的领域建模人员不仅应该能够在白板上与会计师进行讨论,而且还应该能与程序员一道编写Java代码。之所以要具备这些能力,一部分原因是如果不考虑实现问题就无法构建出有用的概念模型。但概念与实现密不可分的最主要原因在于,领域模型的最大价值是它提供了一种通用语言,这种语言是将领域专家和技术人员联系在一起的纽带。
2、初始版本后再建模
另一个经验是领域模型并不是按照“先建模,后实现”这个次序来工作的。像很多人一样,我也反对“先设计,再构建”这种固定的思维模式。Eric的经验告诉我们,真正强大的领域模型是随着时间演进的,即使是最有经验的建模人员也往往发现他们是在系统的初始版本完成之后才有了最好的想法。
3、从成功和失败中学习经验
领域模型对软件开发的控制有着巨大影响,不管软件开发是用什么语言或环境实现的。
最后,也是很重要的一点,我最敬佩Eric的一点是他敢于在本书中谈论自己的一些失败经历很多作者都喜欢摆出一副无所不能的架势,有时着实让人不屑。但Eric清楚地表明他像我们大多数人一样,既品尝过成功的美酒,也体验过失败的沮丧。重要的是他能够从成功和失败中学习,而对我们来说更重要的是他能够将所有经验传授给我们。