对PlantUML们的评价-《软件方法》全流程引领AI-第1章 02
AI辅助的建模步骤-《软件方法》全流程引领AI-第1章 03
第1章 ABCD工作流
1.5 警惕和揭秘伪创新
1.5.4 运作
1.5.4.4 割裂历史
伪创新会有意无意地忽略掉自己被“创新”出来之前的某段历史,把对比的参照物拉回到很多年前,来证明自己的“进步”。
“敏捷”的宣传中,一开始会描述“瀑布”如何如何糟糕,然后说“敏捷”如何如何比“瀑布”好。把“敏捷”直接和“瀑布”对比,似乎在“敏捷”出现之前就是“瀑布”。
实际上,增量迭代开发、持续集成等软件工程实践早已有之。即使是那篇被频繁引用的著名“瀑布”论文,Winston W. Royce发表于1970年的“Managing the Development of Large Software Systems”,也并不提倡以顺序模型作为团队的过程模型。图1-40是该文的一个截图,注意图中的“Iterative(迭代)”一词。对全文感兴趣的读者可自行搜索阅读。
图1-40 摘自Managing the Development of Large Software Systems(Royce W. W. , 1970)
这样的宣传,抹杀了造词“敏捷”之前的软件开发过程所取得的进展,给不了解情况的开发人员留下“这是敏捷发明的,所以嘴上喊着敏捷的人最懂”的印象。
“领域驱动设计”的宣传中,会说“面向过程”如何糟糕,“贫血模型”的假面向对象如何不好,或者说以前的方法是如何只关心“技术”不关心“业务”,似乎“领域驱动设计”之前就是一片空白。
Eric Evans可以说是始作俑者,他在“Domain-Driven Design”的前言中说:
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.
领先的软件设计人员认识到领域建模和设计的关键性已经有至少20年,然而令人惊讶的是,关于需要做到什么或者如何做,一直以来几乎没人写点什么。
对Eric Evans以上言语的批评,可参见我写的文章《DDD浮夸,Eric Evans开了个坏头》(umlchina.com/url/evans1.html)以及《领域驱动设计割裂历史,哪里有详细一些的真实历史?》(umlchina.com/url/dddhistory.html)。
Eric Evans说的20年,指《领域驱动设计》出版时间2003年前面的20年,大约是1983-2002年。事实和Eric Evans所说的在这个期间“几乎没人写点什么”恰好相反,去翻翻那个年代的各种面向对象方法学书籍,“领域驱动”味道比今天还要浓。
这是令人感到讽刺的。既然以“领域驱动设计”为名,按道理应该是领域逻辑越复杂的系统越需要“领域驱动设计”,但领域驱动设计“大行其道”的地方却是面向大众的互联网公司,鼓吹者所举例子的领域逻辑也非常简单,从内容上看,鼓吹者也不像是掌握了面向对象建模方法。参见《是不是互联网更适合用DDD》(umlchina.com/url/internetddd.html)。
究其原因,就是讲述 “X→aX,偷梁换柱”手法时说过的:大家热烈讨论 “领域驱动设计”,心照不宣地假装所有人对“传统”的面向对象分析设计已经熟悉到都不屑一谈了——一块掩盖自己无知的遮羞布。
1.5.4.5 封闭引用
伪创新圈子在“创新”时,不会系统化地检索文献,而是按照自己的接触面或爱好来引用文献。他们优先把引用停留在“圈子”内,例如Robert C. Martin Series、Martin Fowler Series,对“圈子”外的贡献所知甚少或视而不见。
这样,就形成了一个互吹互捧的封闭圈子。张三造(山寨或染色)了一个新词,他自己不吹,由李四、王五、赵六来帮着吹,李四造了一个新词,他自己不吹,由张三、王五、赵六来帮着吹……更离谱的是,有的人写文章,所引用的文献,作者全是自己公司的同事。
图1-41 封闭圈子引用
Eric Evans的《领域驱动设计》,参考文献共25篇,图1-42是前17篇。
图1-42 摘自《领域驱动设计》清华大学出版社2005中译本
[1][2] 的作者Alexander不是软件人士,[3][7][10]的作者不算在“敏捷”圈子里。除此之外,全在“敏捷”圈子里(对的,Larman也是)。
★还留了3本不在圈子里的,已经算不错的了。现在圈子里的文章,恨不得100%封闭引用。感兴趣的读者用“架构”这样一个中性的词搜索,看看热门文章里面的内容和参考文献,封闭到了什么地步。
就拿被多次引用的Martin Fowler来说,Fowler没有赶上1980-1990年代那一段面向对象分析设计方法学兴起的时期(所以没有Fowler方法学),他的第一本书“Analysis Patterns”出版的时候已经是1996年,当时Fowler32岁。Fowler在书中也称自己为“后来者”。
“Analysis Patterns”中使用的是James Odell的方法学,模式可以看作原创的。Fowler后来写的书涉猎甚广,但原创度不如“Analysis Patterns”。
引用Martin Fowler的书是可以的,但不应该停留在Martin Fowler,否则就会产生前面所说的“(20年)一直以来几乎没人写点什么”的错觉。
例如,David C. Hay有一本和“Analysis Patterns”类似的“Data Model Patterns”,在“Analysis Patterns”中也有引用,可惜不在圈子中,很少有人提。
★下面这段花絮属于写到此处时的随想,将来会删掉。
★我的遭遇和David C. Hay类似。最近一年我不是在翻译“Analysis Patterns”嘛,《分析模式》漫谈写了60多篇文章(umlchina.com/url/aptalk.html),把书上所有的模型图全部改编成了UML,并把一部分重要的模式用代码实现了。这些都是之前的译本没有做到的。你猜怎么着,这一年来,DDD圈子没有人提起过,当作不存在。
★啥?DDD圈子凭什么要提《分析模式》?问题是,上一个中译本(2020中译本),DDD圈子可是大力宣传的,已经把它纳入领域驱动设计的领地了!
★在此也一并回答有同学提过的问题:《分析模式》漫谈,为啥有时要顺带评点领域驱动设计?因为“Analysis Patterns”原书没有提到“领域驱动设计”(这个词还没出来呢),2004中译本中也没有提到“领域驱动设计”,而2020中译本中则出现了“领域驱动设计”。