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

Bruce 2021-3-19 15:20

老师,我看了一篇文章,里面提到领域愿景,感觉和您说的愿景不太一样,这两者有什么区别?

UMLChina潘加宇

这个图应该是Eric Evans的《领域驱动设计》人邮译本里面的,你可以把它看作是“伪创新”。

Eric Evans给出的“领域愿景说明”例子,主语是领域模型,按道理是说分析?如果把“模型”二字替换成“系统”看看,更像是系统的需求,工件名字却叫作“领域愿景”。Eric Evans估计是不了解愿景、需求和分析的区别。

我们在2005年制作《领域驱动设计》中译本的时候注意过这个问题,这个内容一直没人提,就算了,但如果有人拿出来当典范来推,那就要好好说说了。

软件开发的一个迭代周期中的四个工作流:

A-业务建模——定位需要改进的目标组织(人群或机构)以及该组织接下来最需要改进的问题。

B-需求——描述为了改进组织的问题,所引入的信息系统必须具有的表现。

C-分析——提炼为了满足功能需求,所引入的信息系统需要封装的核心域机制。

D-设计——考虑质量需求和设计约束,将核心域机制映射到选定非核心域上实现。

Eric Evans的“领域愿景”相当于从C、D的知识去臆想A、B​。

以下是回答的扩展。

有一些敏捷人士只有D的知识,在没有学习和掌握A、B、C的情况下,先高喊“砸烂一切”吸引热血青年,然后发现砸烂一切是不行的,又偷偷捡起自己砸烂的A、B、C,但又不好好学习其中的知识,只是从D来臆想A、B、C,就会得到各种伪创新,然后用“敏捷”包装起来到处宣传。很多“敏捷实践”实际上就是只掌握D的人怎么爽怎么来的实践。

这种现象值得警惕。因为“领域驱动设计”又是一个新的包装,有的“领域驱动设计”人士只有D的知识,然后用D去套A、B、C。既然“领域愿景”有了,“领域驱动设计特色的业务建模”、“领域驱动设计特色的需求”应该也不远了,没准已经有人在炮制了。

更麻烦的是,这些人士形成了一个互相吹捧的封闭体系。甲吹捧乙,乙吹捧丙,丙吹捧甲,偶尔搞一个“软件开发必读书单”,里面全是封闭体系里的甲乙丙。


weixinpanjiayu2