序
为什么建模是一件既有趣又回报诸多的事情?从孩童时起,我就喜欢上了构建模型。那时我搭建最多的是汽车和飞机。当时我并不知道乐高玩具的存在。不过,从我的儿子很小的时候起,乐高就一直伴随着他的成长。用这些乐高积木构思和搭建模型是如此令人着迷。构建一个基础模型非常简单,几乎可以无止境地发挥想象力。
你也许也会联想到某些新潮的建筑模型。
模型在我们生活中无处不在。如果你喜欢玩桌游,你正是在使用模型。这里的模型可能是房产和业主,或是岛屿和幸存者,抑或是领地和建设活动,等等。同样,视频游戏也藏匿了多个模型。这些模型也许塑造了一个奇幻世界,那里充满了奇特的人物,他们扮演着梦幻般的角色。而扑克牌或者与之相关的游戏则是体现着竞技的模型。模型就是生活的一部分。人们总是在使用模型,虽然往往并不会承认。
为何如此?因为人人皆有各自的学习方式。虽然学习方式有很多种,但讨论最多的三种方式是听觉、视觉和触觉。听觉学习者通过声音和聆听来学习。视觉学习者通过阅读和浏览影像来学习。触觉学习者通过触摸的行为来学习。有趣的是,每个人都会热衷于某种学习方式,以至于有时会在其他学习方式上遇到麻烦。例如,触觉学习者能记住他们所做过的事情,但可能会忘记过程中所听见的内容。建模的过程主要会涉及视觉和触觉的刺激,因此你可能会认为视觉和触觉学习者比听觉学习者更具有优势。然而,事实并非总是如此,尤其当一组建模者在构建的过程中使用有声沟通时。换句话说,模型的构建过程应该适用于大多数人的学习方式。
从建模中学习的能力是人类与生俱来的,为何不利用它去构建已经给生活带来巨大帮助和影响的软件模型呢?事实上,软件模型需要人类去实现,也应该由人类去完成。我认为,人类本应该是优秀的软件模型构建者。
我强烈期望能够帮助你使用最好的建模工具来实现软件。这些工具已被打包成“领域驱动设计”工具箱,或称之为“DDD”工具箱。该工具箱实际上是一套模式,在Eric Evans所著的《领域驱动设计:软件核心复杂性应对之道》[DDD]一书中首次提出。我期望将DDD带给每一个人。如果必须表达我的观点,我想说的是,让我把DDD介绍给大家吧!DDD也本该如此,它是面向模型设计的人们用于构建卓越软件模型的工具箱。本书中,我会尽可能地简化DDD的学习和使用,并将其带给每一位读者。
对于听觉学习者而言,DDD通过团队的沟通来构建基于通用语言的开发模型,并以此创造学习的契机。对于视觉和触觉学习者来说,在团队进行战略和战术建模时使用DDD,其过程高度视觉化并非常注重实操。绘制上下文映射图 并使用事件风暴构建业务流程时尤为如此。因此,我相信DDD可以帮助到每一位期待通过模型构建来学习并且希望获得伟大成就的人。
本书所面向的读者
本书适用于对快速学习DDD核心概念和主要工具感兴趣的人。最主要的读者是软件架构师和开发者,他们将在项目中实践DDD。通常,软件开发者会很快发现DDD的美妙之处,并被其强大的工具深深地吸引。尽管如此,本书也可以帮助高管、领域专家、经理人、业务分析师、信息架构师和测试人员理解这一主题。并非只有那些从事信息技术(IT)行业和研发(R&D)行业的从业者才能从书中获益。
如果你是一位顾问,并且正在推荐你的客户使用DDD,那么请将本书提供给主要负责人,这会帮他们快速地理解DDD。如果你团队中的初级、中级甚至资深开发人员需要尽快在项目上采用DDD,但对其并不熟悉,请让他们阅读此书。本书至少可以让所有的项目负责人和开发人员熟悉DDD词汇表,并了解即将使用的主要工具,这将使他们能在项目推进过程中不断地分享一些有意义的内容。
无论你处于什么样的经验水平或担任什么样的职务,请阅读本书并在项目中实践DDD。之后再重读此书,看看你从项目中学到了什么,以及将来如何进一步改进。
本书的内容
第1章解释了DDD能为你和你所在的组织带来什么,并详尽地说明了你将学到什么,以及DDD为何如此重要。
第2章介绍了DDD的战略设计,并教授了DDD的重要概念:限界上下文与通用语言。第3章解释了子域,以及在新应用建模时如何使用子域应对新应用与现有遗留系统集成的复杂性。第4章教授了团队在战略层面上的各种协作方式,以及软件的集成方式,即所谓的上下文映射。
第5章将注意力转移到了使用聚合进行战术建模中。领域事件是一个与聚合共同使用的重要而又强大的战术建模工具,它是第6章的主题——运用领域事件进行战术设计。
最后,第7章会着重介绍一些加速设计和管理项目的工具,它们可以帮助团队建立并保持研发节奏。以上的两个话题很少在其他DDD书籍中讨论,但确实是那些决心将DDD付诸实践的人所迫切需要的。
行文惯例
请在阅读中注意几点行文惯例。所有讨论的DDD工具都会用楷体字表示。例如,你将会看到以楷体印刷的限界上下文和领域事件。另外所有的源代码将会用等宽字体印刷。本书正文章节中出现在方括号内的首字母缩写代表相关的书籍和文献,它们都列在本书末尾的参考文献中。
除此之外,本书重点强调的,也是读者最为喜欢的部分是,通过大量图表和插图进行的视觉学习方式。本书中所有插图都没有任何数字编号,这是因为我不想让太多的数字分散你的注意力。每个案例的图表和插图都会位于对其讨论的正文之前,这也意味着当你阅读本书时,这些视觉图形将首先引发你的思考 。而当阅读正文时,你也可以反过来参考之前的插图和图表。