Eric Evans在《领域驱动设计》的前言中说:

Leading software designers have recognized domain modeling and design as critical topics for at least 20 years, yet surprisingly little has been written about what needs to be done or how to do it. Although it has never been formulated clearly, a philosophy has emerged as an undercurrent in the object community, a philosophy I call domain-driven design.

领先的软件设计人员认识到领域建模和设计的关键性已经有【至少20年】,然而令人惊讶的是,关于需要做到什么或者如何做,【一直以来几乎没人写点什么】。不过,一种哲学像一股暗流已经在对象社群出现,虽然还从来没有被清晰确切地表述出来。我把这种哲学叫作“领域驱动设计”。


Eric Evans说的20年,指《领域驱动设计》出版时间2003年前面的20年,大约是1983-2002年。

事实和Eric Evans所说的在这个期间“几乎没人写点什么”恰好相反,那个年代的“领域驱动”味道比今天还要浓。

先以Eric Evans的这段文字提到的对象社群来说。如果没有各种面向对象分析和设计方法学,怎么会有UML的出现?

感兴趣的同学可以用object modeling analysis design method 等关键字灵活组合在amazon.com搜2000年之前的书籍,应该可以得到很多结果。

列出一些我认为有价值的面向对象分析设计的早期书籍,这些书籍的内容焦点都放在如何用对象思想去剖析一个领域的复杂性。

1988,Sally Shlaer和Stephen J. Mellor的“Object Oriented Systems Analysis”

1990,Peter Coad和Ed Yourdon的“Object Oriented Analysis (2nd Edition)”

1991,Ian Graham,“Object Oriented Methods”(Ian Graham的书很值得一读)

1991,James Rumbaugh等,“Object-Oriented Modeling and Design”

1992,Stephen J Mellor和Sally Shlaer,“Object Life Cycles: Modeling the World in States”

……

1995,Peter Coad等,“Object Models: Strategies, Patterns, and Applications”(一本案例集)

1996,Edward Yourdon和Carl A. Argila,“Case Studies in Object-Oriented Analysis and Design” (一本案例集)

1996,Martin Fowler,“Analysis Patterns:Reusable Object Models”(分析模式)

1999,Peter Coad等,Java Modeling in Color with UML(彩色UML建模)

……

没提到Grady Booch、Ivar Jacobson、Bertrand Meyer早期的书,也没提到GoF,要么是因为书中“领域”例子太简单,要么这个书就不是说“领域”的。

……

我们从以上列出的书中摘一些图,看看其中的“领域模型”是不是碾压今天大多数把DDD挂在嘴边的“发明家”?

1990年的“Object Oriented Analysis, 2nd Edition”书中的类图:

可以看到,Peter Coad等把类图划分成若干个主题。

1991年James Rumbaugh的“Object-Oriented Modeling and Design”书中的图更加精细:

1992年的“Object Life Cycles: Modeling the World in States”中的状态图:

1995年的“Object Models: Strategies, Patterns, and Applications”是一本案例集,仅能找到第二版中译本,以下是截图:


如果不限于面向对象建模,那方法就更多也更早了,诞生于1976年的实体-关系法、诞生于1981年的IDEF1……。

例如,以下是1990年的“Database Modeling and Design: The Entity-Relationship Approach”中的E-R图:

很多人都知道Martin Fowler写了一本“Analysis Patterns:Reusable Object Models”(分析模式:可复用对象模型),其实,David C. Hay的“Data Model Patterns:Conventions of Thought”出版时间更早,可惜不在那个网红圈子中,国内连中译本都没有。

《设计模式》作者之一Ralph Johnson在《分析模式》书的推荐序中也提到David C. Hay的书:

以下是“Data Model Patterns”中关于“开支”的截图,我认为该书的内容比《分析模式》还要丰富一些。

书中用的表示法是Oracle的“鸦脚”(学名Case*Method)。《分析模式》虽然全名叫《分析模式:可复用的对象模型》,名字里有个“对象”,其实里面用的表示法也是“鸦脚”。

再看一个Tom DeMarco1979年的“Structured analysis and system specification”书中的数据流图:


如果不局限于为了开发某个软件系统而建模,感兴趣的同学还可以用领域工程、领域分析、Domain Engineering、Domain Analysis,甚至软件重用、软件复用、Software Reuse等关键词搜上个世纪的书籍和文章。

用网上搜的一个幻灯片借花献佛吧,幻灯片地址:https://www.doc88.com/p-78061787560101.html?r=1

……

……

……


综上所述,Eric Evans所说的“几乎没人写点什么”是错误的。把前面20年描述成荒漠,为“领域驱动设计”营造横空出世的感觉,这是一种夸大。

上面列出的资料,Eric Evans只在书中提到了Fowler的“Analysis Patterns”,是一无所知,还是刻意忽略,就不得而知了。


《领域驱动设计》阐述了Eric Evans对分析和设计工作流的一些观点,谈不上是方法学。

在不少开发人员误以为会背诵设计模式,再喊几句“针对接口编程”、“分离变化”、“SRP”、“OCP”就算掌握了面向对象建模技能的时候,Eric Evans的书能重新提醒大家还是要聚焦于系统的核心领域,以它来驱动开发。这是值得肯定的。

书中很多地方用了“新式话语”,但内容其实不新,也不深,甚至有的是错误的。

这本来也是可以理解的,但如果有人把这些“新式话语”拿出来刻意夸大,那就要好好说说了。

我写的其他DDD相关评论:

[答疑]通用语言(Ubiquitous Language)是伪创新吗?

[答疑]是不是互联网更适合用DDD

[答疑]这个DDD上下文图是不是废话刷工作量

建模工具对领域驱动设计的支持[DDDChina2021幻灯]

[全文]DDD话语批评之一:评张逸的“状态和事件本质相同”

“创新”何太急-评张逸的“业务服务”(一)

“创新”何太急-评张逸的“业务服务”(二)用例的“客观标准”

“创新”何太急-评张逸的“业务服务”(三)系统用例是“深入到系统内部”?(1)

针对张逸观点的一些评点

《实现领域驱动设计》的翻译错误

猴子掰玉米?比较不同版《领域驱动设计》说“不变式”和“聚合”

[答疑]《领域驱动设计》里的“领域愿景”属于伪创新

DDD浮夸,Eric Evans开了个坏头相关推荐

  1. 我为什么写《DDD浮夸,Eric Evans开了个坏头》

    1月12日,我发了一篇<[答疑]通用语言(Ubiquitous Language)是伪创新吗?>,里面针对伪创新做了一些展开的论述. 然后,张逸老师在微信群质疑: 于是,我就开始写< ...

  2. Eric Evans说DDD还未结束

    在Explore DDD 2018大会上,Eric Evans做了"怀疑.乐观和实用主义"的主题演讲,他在演讲中表示,"DDD还没有结束".在"领域驱 ...

  3. [外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。

    原文:http://www.infoq.com/interviews/Technology-Influences-DDD# 要实现DDD(domain drive  design 领域驱动设计)原始意 ...

  4. Eric Evans谈领域驱动设计、微服务与边界

    在今年于伦敦举办的DDD Exchange大会的主题演讲中,Eric Evans表达了他对微服务的看法.尽管微服务这个词现在已经有点炒作的味道,但Evans相信微服务确实蕴含着巨大的价值,它为我们带来 ...

  5. ps因计算机限制打不开,电脑突然坏了只有打不开PS这是什么原因在线 – 手机爱问...

    2014-09-12 XBOX ONE和PS4哪个比较好?在线等,挺急的! X1价格稍高 3700左右 因为强制捆绑了体感机 PS4现在3100左右 没有体感机 如果需要可以另外购买 虽然现在PS4的 ...

  6. Android开发之listview添加头布局(header)和脚布局(footer)的方法

    我们先说下添加的方法 方法一:正常添加lvCouponList.addHeaderView(headerView);lvCouponList.addFooterView(footerView); 方法 ...

  7. 伪创新为什么受欢迎-《软件方法》节选

    <软件方法>强化自测题集>>**** <软件方法>各章合集>> 8.1.8.3 伪创新为什么受欢迎 比起严谨的建模方法,伪创新更受欢迎,因为它迎合了&q ...

  8. 软件方法(下)分析和设计第8章分析 之 分析类图——知识篇Part02(202204更新)

    DDD领域驱动设计批评-文集-点击查看>> <软件方法>强化自测题集-点击查看>>**** 8.1.8 伪创新 有的人(国内国外都有)没有掌握相应技能,也不愿意认真 ...

  9. 如何落地业务建模(1) 业务建模、DDD

    业务建模 解决问题还是定义问题 业务建模首先是一个定义问题的方法,其次才是解决问题的方法.我们很容易理解解决问题带来的价值,但也很容易忽略定义问题的力量.如果问题定义得准确,那么实现起来也不会太复杂: ...

最新文章

  1. 基本拖拽效果,使用 mousedown , mousemove , mouseup实现
  2. 95-140-120-源码-transform-算子iterate
  3. python集合运算_从零开始学Python - 第014课:常用数据结构之集合
  4. android 抽屉关闭时的卡顿
  5. button组件 untiy_Unity自定义Button组件Transition
  6. Java Web之MySQL在项目中的使用
  7. python建模预测_如何使用Python进行节目观众数的线性回归预测
  8. 8.input设备(input子系统)驱动
  9. ShuffleNet_v1论文阅读
  10. sem与seo的区别
  11. Jeshoots - 类别齐全的高质量免费商业摄影图库
  12. 米家小相机最新固件_不到1000元的米家小相机 都有哪些缺点
  13. C++操作Excel表格
  14. 【3D建模制作技巧分享】Zbrush中凹凸贴图、法线贴图和置换贴图的区别
  15. 西联汇款和Bharti Airtel向印度数百万银行账户和非洲移动钱包提供实时全球支付服务
  16. php的四种基本算法
  17. Visulalize Boost Voronoi in OpenSceneGraph
  18. 【Jetson Nano】使用python3模拟向阿里云发送数据
  19. 这里记录几个国外的网站
  20. 【vue】vue + ECharts 实现中国地图

热门文章

  1. 生成微信小程序指定页面二维码
  2. LSM-tree原理与应用
  3. 使用spring-cloud-bus报错error occurred in message handler [org.springframework.integration.amqp.outbound
  4. 进阶光照与材质之模拟真实世界的光照
  5. NSIS打包软件,初步使用心得
  6. Synergy报错 grabbed clipboard 和 disconnected 连接不上客户端
  7. 2020IT网吧如何建立网吧电影系统
  8. c语言怎么做步骤循环,C语言基础教程之循环
  9. 项目准备和启动——软件项目合同条款评审
  10. ANTS | 报错:Could not find ANTS program N4BiasFieldCorrection; please check installation