DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
张逸老师写了新文章《领域建模的常见问题及解决方案》,我来谈一谈对这篇文章的感想。
(1)文章一开始,张逸老师大大地赞扬了事件风暴:
图1 摘自《领域建模的常见问题及解决方案》
张逸老师说,事件风暴是主流的建模方法,参与者交头接耳,大声讨论。
看来,霍金、陈景润是没有资格的了。
大家如果感兴趣,可以找来事件风暴的始作俑者Alberto Brandolini写的书看看,书尚未写完(大量的%、留白和FIXME),但已经收费了。
书中大量篇幅讨论怎么拉人,怎么布置环境,怎么开会讨论,然后,Duang的一声,模型就出来了?
把里面涉及软件的内容抹掉,用于中国足球也未尝不可。
怎么拉人,怎么布置环境,怎么开会讨论,然后,Duang的一声,国足就赢球了。
这和一些敏捷“软件开发”的培训很相似,一帮软件开发人员聚在一起拼玩具、搬气球。这些内容同样适用于保险推销员、美发店技师......。比起抓耳挠腮思考软件的复杂性,这样的培训简直太愉快了!
我在《软件方法》第1章中曾评价过这样的现象:
图2 摘自《软件方法》第1章
(2)张逸老师所给的事件风暴示例很有讲究
图3 摘自《领域建模的常见问题及解决方案》
这个图跟我们平时在各种DDD文章中看到的事件风暴不太一样。
平时在DDD文章中出现的事件风暴如图4,摘自最近看到的一篇公众号文章:
图4 摘自一篇公众号文章
★并非我故意不给链接。当时只下载了这张图,不记得文章标题。尝试用关键词“DDD”结合图上的某些词搜公众号,没找到含有该图的文章。了解的读者可在评论帮我补上。
这个图很符合我对领域驱动设计产出物的评价:投资少、见效快、产量高、仪式感十足。
*大量的同名黄贴纸:产品运营人员、系统、买家……
*一一对应,蓝色有“添加商品”,棕色的就有“商品已创建”;蓝色有“编辑库存”,棕色有“商城库存已编辑”……
★这样的一一对应,容易让人产生“状态和事件本质相同”的错觉,参见《评“状态和事件本质相同”》、《关于“评状态和事件本质相同”的6个疑问》。
*巧妙换词,“添加商品”对应的是“商品已创建”,而不是“商品已添加”,把“创建”换成“添加”,给读者带来新鲜感。
*巧妙增减词,“编辑库存”对应的是“商城库存已编辑”,增加了“商城”二字,带来了仪式感。当然,也可以反过来理解,“商城库存已编辑”是全文,“编辑库存”减了“商城”二字,带来了仪式感。
通过这样的一些技巧,整张图一下子就丰满了,用很少的时间和思考工作量,刷出很大的内容。
张逸老师所给出的“事件风暴”图3,和常见的图4长得不太像,图3完美地避开了刚才我所说的图4的问题。
图3更像是一个“系统用例图”,我把其中一部分用UML用例图画出来,读者可以对比一下:
图5 把图3变成用例图
这些“用例”怎么来的,估计也很玄妙,好像大家一头脑风暴就有了,再加上CRUD(新建、查询、修改、删除)四件套,整个工作量一下就丰满了。
这样的“方法”怎能不爱?
(3)接下来的内容,怎么没有“事件风暴”的影子了?
张逸老师的文章一开始就说事件风暴怎么怎么好,接着往下看文章的内容,却不再提事件风暴了,开始批评拍脑袋建模和随意建模,强调要固化,要严格。刚才说的“释放自己”呢?
内容上的问题,例如把各种各样的建模都叫“领域建模”,还有“分为三个阶段”然后又说“迭代建模”……这些我之前写的文章已经批评过,以后有机会再详谈。
仅从形式上看,所有的图形看起来都很精致,糊墙呢?贴纸呢?
一个解释可以是这样:
不再吹捧“事件风暴”是“建模方法”,而是降级成“获取建模素材”的方法,涉众爱怎么释放自己都行,收集素材嘛。该建模的时候,必须严格按照步骤走。
就算降级,也还是有问题。
对于“获取建模素材”而言,所谓的“事件风暴”,其实就是把具有不同利益的涉众同时集中到一个地点来获取素材。如果认真学习过前人关于需求的书籍和文章,会知道,这样的方式并不好。