7

《解构领域驱动设计》前言

 3 years ago
source link: http://zhangyi.xyz/Preface-of-DDD-Explained/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

《解构领域驱动设计》前言

2020-12-03

| DDD

| 49

写下本书内容第一个字的具体时间已不可考,从文档创建的时间看,本书的写作至少可以追溯到2017年11月,屈指算来,距今已是三载光阴流逝而过,为了本书,我已算得上呕心沥血。回想这悠悠三年,无论在万米高空的飞行途中,还是在蔚蓝海边的栖息之旅,抑或工作之余正襟危坐书桌之前,我的心弦一刻不敢放松,沉思于体系的构建,纠结于案例的选择,锱铢必较于每个文字的运用,我力求输出最好的文本,希望打造领域驱动设计技术书籍的经典!

我在ThoughtWorks的前同事滕云开我的玩笑,说:“老人家,你写完这本书,也就功德圆满了!”老人家是我在ThoughtWorks的诨名,虽然我对此称呼一直敬谢不敏,不过写作此书至今,我已心力交瘁,老人家的称谓也算名实相副了,至于是否“功德圆满”,就要交给读者诸君来品评了。本书内容主要来自我在GitChat发布的课程《领域驱动设计实践》。该课程历经两年,完成于2020年1月21日。当时的我,颇有感慨地写下如此后记:

课程写作结束了。战略篇一共 34 章,15 万 5 千字;战术篇一共 71 章,35 万 1 千字;合计 105 章,共 50 万 6 千余字,加上两篇开篇词与这篇可以称为写后感的后记,共108 章,算是凑齐了一百单八将。如此成果也足可慰藉我为之付出的两年多艰辛时光!

我对《领域驱动设计实践》课程的内容还算满意,然而,随着我对领域驱动设计理解的蜕变与升华,我的“野心”也在不断膨胀,不仅希望讲清楚该如何实践领域驱动设计,还企图对这套方法体系进行深层次的解构。这也是本书书名《解构领域驱动设计》得名的由来。

所谓“解构”,就是解析与重构:

  • 解析,就是要做到知其然更知其所以然
  • 重构,则要做到青出于蓝而胜于蓝

我钦佩并且尊敬Eric Evans对领域驱动设计革命性的创造,他对设计的洞见至今让我赞赏不已,尤其在我彻底吃透限界上下文的本质之后,结合微服务之大行其道,更让我彻底佩服他的远见卓识;然而,尊敬不是膜拜,佩服并非盲从,在实践领域驱动设计过程中,我确实发现了这套方法体系天生存在的不足,于是,我在本书提出了GitChat课程不曾涵盖的领域驱动设计统一过程(Domain-Driven Design Unified Process),相当于站在Eric Evans的巨人肩膀上,我构建了自己的一套领域驱动设计知识体系。

领域驱动设计统一过程的提出,从根基上改变了本书的结构,我调整和梳理了写作的脉络,呈现出与《领域驱动设计实践》课程迥然有别的全新面貌,整本书不再满足于粗略地将内容划分为战略篇和战术篇,而是在领域驱动设计统一过程的指导下,将该过程的全部三个阶段作为本书的三个核心篇章:全局分析、架构映射与领域建模,再辅以开篇和融合,共分为五篇二十五章,全面而完整地表达了我对领域驱动设计的全部认知与最佳实践。在对内容做进一步精简后,本书仍然达到了43万余字,算得上是软件技术类别的大部头著作了。

该如何阅读这样一本厚书?

若你时间足够充裕,又渴望彻底探索领域驱动设计的全貌,建议还是按部就班、循序渐进地开始你的阅读之旅。或许在阅读开篇的三个章节时,你会因为太多信息量的一次性涌入,产生迷惑、困扰和不解,那只是因为我期望率先为读者呈现领域驱动设计的整体面貌,在获得整体印象之后,哪怕只是在脑海中存留了如雾一般朦胧的轮廓,也足以指导你开启对设计细节的理解和认识。

若你追求高效阅读,又渴望寻求困惑于领域驱动设计问题的答案,当然可以根据目录按图索骥,精准定位你最为关心的技术讲解。或许你会失望,甚至产生质疑,从目录中你获得了太多全新的概念,而这些概念从未见诸于任何一本领域驱动设计的书籍,那只是因为这些概念都是我针对领域驱动设计提出的改进与补充,它们是我解构全新领域驱动设计知识体系的得意之笔。——要不然,一本技术书籍怎么会写三年之久呢?

我自鸣得意的开创性概念一一罗列于此:

  • 业务活动:它是全局分析的基本业务单元,在统一语言的指导下完成对业务需求的抽象,既可帮助我们识别限界上下文,对它的细节分析还可以帮助开发团队开展领域分析建模、领域设计建模和领域实现建模;业务活动的粒度也是服务契约的粒度,由此拉近了需求分析与软件设计的距离,甚至可以说打通了需求分析与软件设计的鸿沟。
  • 菱形对称架构:虽然该模式脱胎于整洁架构与六边形架构,但它更为简洁,与限界上下文的搭配可谓珠联璧合,既保证了限界上下文作为基本架构单元的自治性,又融入了上下文映射的通信模式,极大了丰富了设计元素的角色构造型。
  • 场景驱动设计:采用过程式的设计思维,却又遵循面向对象的职责分配,从而在提高设计质量的同时降低了开发团队的设计门槛,完成了从领域分析模型到领域实现模型的无缝转换,并可作为测试驱动开发的前奏,让领域逻辑的实现变得更加稳健而高效。

以上概念皆为领域驱动设计统一过程的设计元素,同时又能与领域驱动设计的固有模式有机融合。至于我对软件复杂度成因的剖析,对价值需求和业务需求的划分,在领域驱动设计统一过程基础上建立的领域驱动设计魔方、参考过程模型与能力评估模型,诸多新概念、新方法、新模式、新体系虽说都出自我的一孔之见,但自觉可圈可点,确乎来自于我的一线实践和总结。至于内容的优劣,还是交给读者诸君来品判吧。

照例表示致谢!

感谢GitChat创始人谢工女士,没有她的支持与鼓励,就不会有《领域驱动设计实践》课程的诞生,自然不会让我下定决心撰写本书。感谢人民邮电出版社异步图书的杨海玲女士,是她的宽容与耐心,使得我能够有足够充裕的时间精心打磨本书的内容,没有因为错过最好的出版时间窗口,而催促我逼迫我尽快交稿。感谢京东周吉鑫、Amazon高翊凱 (Kim, Kao) 、腾讯王立、阿里蚂蚁金服于君泽(花名右军)与ThoughtWorks王威诸兄的抬爱,不仅拨冗为我的著作写序,也给予了许多好的建议与指点,提升了本书的整体质量。感谢阿里的彭佳斌(花名言武)、自主创业人张闯、中航信杨成科、工商银行劳永安,四位兄台作为本书试读的第一批读者,花费了大量时间认真阅读了我的初稿,提出了非常宝贵的反馈意见,帮助我订正了不少错误。感谢我的领域驱动设计技术交流群,近1500名群友的耐心等待以及坚持不懈的催促,使得我能够坚持写完本书。

之所以“三年磨一剑”,是希望通过我的努力让本书的质量对得起读者!可是,在态度上对得起读者的同时,我却对不起我生命中最重要的两个人:我的妻子漆茜与儿子张子瞻。这三年经历了风雨阳光,很遗憾,我把大部分业余时间都交给了《解构领域驱动设计》,多少个晚上笔耕不缀,妻子陪着儿子,我则陪着电脑。为了支持我的创作,没有怨怼,只有默默的支持。本书的出版,有他们一大半的功劳!最后,还要感谢我的父母,每次匆匆回家看望他们,极短的时间和他们聊天,挤出来的时间都留给本书的写作了!

在写作本篇前言的前一天,我偶然读到苏东坡的一首小词:
春未老,风细柳斜斜。试上超然台上看,半壕春水一城花。烟雨暗千家。
寒食后,酒醒却咨嗟。休对故人思故国,且将新火试新茶。诗酒趁年华。

蓦然内心被叩击,仿佛心弦被优美的辞章轻轻地带着诗意拨弄。吾身虽不能上超然台,然而书成之后,是否能够看到半壕春水一城花呢?未曾饮酒,却咨嗟,是否多情笑我早生华发?如今的我,已然焙出新火,恰当新火试新茶,却不知待到明年春未老时,能否做到何妨吟啸且徐行的落拓不羁?不管如何,还当诗酒趁年华,如此当——仰天大笑出门去,吾辈岂是蓬蒿人!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK