DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
1.3 统一建模语言UML
1.3.1 UML的历史和现状
上一节阐述了A→B→C→D的推导是不可避免的,但具体如何推导,有各种不同的做法,这些做法可以称为“方法”。甚至只要愿意,每个人都可以创造自己的“方法”,无非是有的正确,有的错误,有的高效,有的低效。有一些“方法”被归纳出来,并向业界推广,这些可以称为“方法学”。
最开始的软件开发方法学重点关注的是D部分,即所谓的“程序设计方法学”。后来,才逐渐在方法学中加入前面的部分,大致的添加顺序和推导的顺序刚好相反,→C→B→A。其中的很多概念借用了其他学科的术语。像“流程建模”、“需求”等术语在计算机出现之前就已经存在,而且含义和今天软件开发中使用时的含义差不多。
本书不想花很多篇幅来回顾这些方法学中的概念的历史,感兴趣的读者可自行搜索相关论文,例如Kolligs 等人写的“The Origins of Requirements”[Kolligs 2021]。
20世纪60-80年代,有名的软件方法方法学有:功能分解、数据流、E-R(实体-关系)等。
进入20世纪90年代,OOAD(面向对象分析设计)方法学开始受到青睐,许多方法学家纷纷提出了自己的OOAD方法学。流行度比较高的方法学有Booch、Shlaer/Mellor、Wirfs-Brock责任驱动设计、Coad/Yourdon、Rumbaugh OMT和Jacobson OOSE。其中,Jacobson的方法学添加了用例、业务工人、业务实体等概念,为OOAD方法学扩展了业务建模和需求部分。
这种百花齐放的局面带来了一个问题:各个方法学有自己的一套概念、定义和标记符号。
例如现在UML中的操作(Operation),在不同方法学各有叫法,这些叫法有:责任(Responsibility)、服务(Service)、方法(Method)、成员函数(Member Function)……
同一个类图,不同方法学也有各自的符号表示,如图1-7所示。在图中,我们可以看到,同样一个三角形符号,在OMT方法学中表示泛化,在Coad/Yourdon方法学中却表示关联,Coad/Yourdon方法学中泛化用的是类似铃铛的形状。
类似这样的差异造成了混乱,使开发人员无从选择,也妨碍了方法学的推广。
图1-7 不同方法学图形比较
1994年,Rational公司的James Rumbaugh和Grady Booch开始合并OMT和Booch方法。随后,Ivar Jacobson带着他的OOSE方法学加入了Rational公司,一同参与合并工作。这项工作造成了很大的冲击,因为在此之前,各种方法学的拥护者觉得没有必要放弃自己已经采用的表示法来接受统一的表示法。
Rational公司的这三位方法学家被大家称为“三友”(three amigo)。1996年,三友开始与James Odell、Peter Coad、David Harel等来自其他公司的方法学家合作,吸纳他们的成果精华。1997年9月,所有建议被合并成一套建议书提交给OMG。1997年11月,OMG全体成员一致通过UML,并接纳为标准。
从2005年起,UML被ISO接纳为标准。ISO/IEC 19501相当于UML 1.4.2,ISO/IEC 19505相当于UML 2.1.2。2012年,ISO继续接纳UML 2.4.1为ISO/IEC 19505-1:2012 和ISO/IEC 19505-2:2012,接纳OCL 2.3.1为ISO/IEC 19507:2012。
2011年,中华人民共和国也发布了统一建模语言国家标准GB/T28174。
UML的最新版本是OMG于2017年12月通过的UML 2.5.1,相关网址:https://www.omg.org/spec/UML/。
OMG还和各种行业标准组织如DMTF、HL7等结盟,用UML表达行业标准。
UML诞生已经超过25年,在软件开发表示法标准上已经获得了胜利。随便打开一本现在出版的软件开发书,里面如果提到建模,使用的标准符号基本都是UML。
另外,以UML为契机,掀起了一股普及软件工程的热潮,在UML出现后的几年,不但有关建模的新书数量暴增,包括CMM/CMMI、敏捷过程等软件过程改进书籍数量也出现了大幅度增长。制定UML标准的角色(OMG)、根据标准制作建模工具的角色(UML工具厂商)、使用UML工具开发软件的角色(开发人员)这三种角色的剥离,也导致建模工具的数量和种类出现了爆炸性的增长。而之前的数据流等方法从来没有像面向对象分析设计方法一样,出现UML这样的统一表示法,从而带动大量书籍和工具的产生。
最开始一批UML书籍,基本上由方法学家所写。最近几年,以“UML”为题的新书大多为高校教材或普及性教材。这并不是说UML已经不重要,而是没有必要再去强调,焦点不再是“要不要UML”,而是要不要建模、如何建模。
根据UMLChina的统计,UML相关工具最多时达168种。经过市场的洗礼,现在还在更新的还有几十种,有商业工具,也有免费或开源工具。隔一段时间,UMLChina会整理最近的UML工具更新情况,发布在http://www.umlchina.com/url/tools.html。