《领域驱动设计:软件核心复杂性应对之道》之前言精读

写作之难,在于将 状的思想,通过树状的句法,用线性的文字展开

— 史蒂芬·平克《风格感觉:21世纪写作指南》

2004 年Eric Evans出版了领域驱动设计领域的第一本经典著作《Domain-Driven Design : Tackling Complexity in the Heart of Software》简称 DDD,中文版《 领域驱动设计:软件核心复杂性应对之道》

图片来自于出版 异步 区

笔者结合英文版和中文版进行精读,如果说写作是将 状的思想,通过树状的句法,用线性的文字展开,那么阅读的过程则恰恰相反,是一个逆向的过程,这个过程的因人而异。

— 庖丁解架构

  • 这本书有什么核心价值
  • 你为什么要阅读这本书
  • 那我们回过头来看看 《领域驱动设计:软件核心复杂性应对之道》,首先看看书名,《领域驱动设计》其实没什么感觉,或者有些困惑和抽象,关键部分是副标题,软件核心复杂性应对之道,原来本书是提出了一种应对软件研发核心复杂性的方法论,这种方法被称作领域驱动设计。既然是应对之道了,“道可道,非常道”啊,说明已经上升到已经思想高度了,同时也提示和术有点儿距离了。这时候我们的脑海里应该涌现出以下三个问题:

  • 软件研发中的核心复杂性是什么?
  • 什么是领域驱动设计?
  • 领域驱动设计是如何应对这种复杂性的?
  • 至少20年前,一些顶尖的软件设计人员就已经认识到领域建模和设计的重要性,但令人惊讶的是,这么长时间以来几乎没有人写出点儿什么,告诉大家应该做哪些工作或如何去做。尽管这些工作还没有被清楚地表述出来,但一种新的思潮已经形成,它像一股暗流一样在对象 区中涌动,我把这种思潮称为领域驱动设计(domain-driven design)。

    这句话放到现在 2021 年依然成立,值得欣慰的是出版了几本重要的著作,各个公司也已经有了一些具体的实践,要不是云原生应用和微服务的快速发展和普及,DDD 依然原地踏步。

    (1)在大多数软件项目中,主要的焦点应该是领域和领域逻辑;

    (2)复杂的领域设计应该基于模型。

    书的结构

    这本书分为四个部分

  • 第一部分“运用领域模型”,提出领域领域驱动开发的目标
  • 第二部分“模型驱动设计的构成组件”,将面向对象领域建模中的一些核心最佳实践提炼成一组基本的构造块,讨论一些能够保持模型和实现之间相互协调并调高效率的设计决策。
  • 第四部分“战略设计”,讨论在复杂系统,大型组织以及与外部系统和遗留系统交互中出现的复杂情况,提出了领域驱动设计的三大主要原则:上下文,提炼和大型结构。
  • 以上是《领域驱动设计:软件核心复杂性应对之道》的四个组成部分,至少目前笔者还不确定本是能不能解决前文提出的三个问题:

  • 软件研发中的核心复杂性是什么?
  • 什么是领域驱动设计?
  • 领域驱动设计是如何应对这种复杂性的?
  • 结合本书出版后的反响已经业界的反馈,笔者做出如下猜测:

  • 可能领域驱动设计这种方法论确实比较复杂,落地对于参与有一定的要求
  • 有没有可能将简单的问题复杂化,将解决方案当成问题,为了领域驱动设计而设计
  • 很多优秀的设计实践没有被分享和提炼出来
  • 笔者还有几个常识性的困惑,到底什么是领域?什么是领域模型?当大家在说领域和领域模型的时候在说什么?

    书的读者

    小结

    通过精读《领域驱动设计:软件核心复杂性应对之道》前言部分,笔者认为本书值得继续精读,但是笔者关心的三个问题希望在正文中能够得到解决:

  • 软件研发中的核心复杂性是什么?
  • 什么是领域驱动设计?
  • 领域驱动设计是如何应对这种复杂性的?
  • 参考资料

  • 《 领域驱动设计:软件核心复杂性应对之道》
  • Domain-Driven Design : Tackling Complexity in the Heart of Software》

  • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年4月15日
    下一篇 2021年4月15日

    相关推荐