圈子对《分析模式》的乱捧-分析模式注解和实现(03)

0 阅读5分钟

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


这个系列的文章可以看作视频教程《GJJ-004 分析模式及实现》的文字版,更全面的内容可到umlchina.com/url/video.html购买《GJJ-004 分析模式及实现》视频教程,时长10小时08分——这个篇幅得写100集以上了,慢慢等文字版,估计是等不来的。

分析模式:注解和实现(01)澄清模式用语Part1

分析模式:注解和实现(02)需求模式书籍


模式≠设计模式

和 C-分析 相关的模式

书名:Data Model Patterns: Conventions of Thought

作者:David C. Hay

出版时间:1996

中译本书名:无

此书出版比Martin Fowler的“Analysis Patterns”更早一些,在“Analysis Patterns”中也提到此书。

和“Analysis Patterns”相比,此书涉及的领域更实用,在讲述类似的模式时,此书中的模型更详细。

不过,Martin Fowler在某个擅长营销的网红圈子中,David C. Hay则没有。此书知名度明显不如“Analysis Patterns”。

图片图片

从上图可以看出,把组织(organization)和人(person)进一步泛化为Party的做法,在Data Model Patterns里面已经有了,不是Fowler引入的。

当然,这也不是Hay创造的,只是如实引入法律领域的术语。

书名:Analysis Patterns: Reusable Object Models

作者:Martin Fowler

出版时间:1997

中译本书名:分析模式:可复用的对象模型

图片图片图片

和《设计模式》一样,这本书的名字是讨巧的。很容易让人误解成:分析模式 等于 Fowler书中的模式,或者误解成:Fowler书中的模式是最典型或最基础的分析模式——这些都不对。

书名讨巧是小问题,只要没有被胡乱吹捧就好。

Fowler书中的模式是基于他所经历的项目提炼出来的,涉及领域有:人和组织、医疗卫生、会计和金融。即使在他所涉及的领域,所归纳的模式也没有首先覆盖该领域最常见的概念。例如,要围绕一名患者归纳一些模式,有比书中的“观察和测量”更值得关注的内容。

当然,这也说明Fowler没有乱编,他就是根据自己做咨询的项目所涉及的内容归纳出来的。

Hay的Data Model Patterns的第8章叫The Laboratory(实验室),里面也有观察和测量,感兴趣的读者可以找来对比一下:

图片

在医疗卫生领域,Silverston和Zachman的The Data Model Resource Book: Vol. 2的第4章更全面,我们看中译本的截图:

图片图片

更全面的医疗卫生模型,可以参考HL7标准的UML模型。

相对其他几本书,Fowler这本书的优点是使用了对象建模方法,并做了一些比较深入的建模思考。

=====以下是扩展=====

在宣传2020中译本的时候,某个圈子的人胡乱吹捧,本质上是对Martin Fowler的抹黑。

下面的截图摘自2020中译本的一篇书评,是由出版社官方账号推出的,可以看作“官方书评”了。

图片

书评说,Party是Fowler引入的,绝了!这个问题,上文谈到Hay的Data Model Patterns时已说过。

图片

我对ABAC了解不多,因此只针对“RBAC不就是岗位模式吗”做评点:

(1)Fowler书中的“岗位模式”内容只有1页

书评说“不就是岗位模式吗”,似乎在说RBAC可以被Fowler书中的“岗位模式”所概括,而且还隐隐暗示读者:RBAC有可能参考了Fowler书中的“岗位模式”。

事实上,Fowler书中的“岗位模式”只有1页,含1张简单的图,内容也不高深。下面的截图就是完整内容:

图片

(2)RBAC比Fowler的书早

Role-Based Access Controls的论文发表于1992年,全文共11页,两位作者Ferraiolo和Kuhn都是NIST(美国国家标准与技术研究院)的研究人员。论文可在NIST官网下载:

csrc.nist.gov/files/pubs/…

文中RBAC模型的形式化没有用图形表示,而是用文本。

1996年,Sandhu等人的论文Role-Based Access Control Models,全文22页,给出了可能很多人都见过的图形表示:

图片

论文下载地址:

csrc.nist.gov/csrc/media/…

说[1992年的11页严肃论文+1996年的22页严肃论文]不就是[1997年书上的1页]吗,大概率是有问题的。当然,如果这1页是麦克斯韦方程组,这样说有可能是合适的。读者可以分别下载对比一下。

这个味道很熟悉。

DDD圈子发明一个词,而且发明这个词就够了,剩下的圈子会补上——谈到某个东西时,就往那个词引——不就是DDD的***吗!

2000年,Shin和Ahn在论文UML-Based Representation of Role-Based Access Control中用UML的类图、用例图、协作图表示了RBAC模型。该论文UMLChina的《非程序员》电子杂志第25期(umlchina.com/xprogrammer/xprogrammer25.pdf)有翻译:

图片

如果不限定RBAC这个名字,而是类似的思想,起源就更早了。RBAC论文作者也写了同名的书Role-Based Access Control,以下是该书第2版的1.2.4 Origins of RBAC小节,阐述了RBAC的起源,可以回溯到1970年代。

图片

(3)书评盛赞的地方,翻译是错误的

有趣的是,该书评盛赞的“岗位模式”,2020中译本的翻译,刚好把意思译反了。

2020中译本的译文是:

图片

正确译文是:

一个人在被任命到岗位的时间段内,对该岗位的责任负责。

关于这个错误,我在“到底是谁配谁-《分析模式》漫谈33”一文中做了详细的剖析。

(待续)