软件方法(上):业务建模和需求(第2版)
上QQ阅读APP看书,第一时间看更新

1.4 UML简史

随着市场所要求软件的复杂度不断增大,软件开发的方法学也在不断进化。从没有方法到简单的功能分解法,再到数据流/实体关系法。进入20世纪90年代,面向对象分析设计(OOAD)方法学开始受到青睐,许多方法学家纷纷提出了自己的OOAD方法学。流行度比较高的方法学主要有Booch、Shlaer/Mellor、Wirfs-Brock责任驱动设计、Coad/Yourdon、Rumbaugh OMT和Jacobson OOSE。

这种百花齐放的局面带来了一个问题:各方法学有自己的一套概念、定义和标记符号。例如现在UML中的操作(Operation),在不同方法学中的叫法有责任(Responsibility)、服务(Service)、方法(Method)、成员函数(Member Function)……同一个类图,不同方法学也有各自的符号表达,如图1-4所示。这些细微的差异造成了混乱,使开发人员无从选择,也妨碍了面向对象分析设计方法学的推广。

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接纳为标准。相当于UML 1.4.2的ISO标准是ISO/IEC 19501,相当于UML 2.1.2的ISO标准是ISO/IEC 19505。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。

图1-4 不同方法学图形比较(同样一个三角形符号,在Coad/Yourdon方法学中用于表示关联,而在OMT方法学中用于表示泛化)

UML的最新版本是OMG于2015年6月通过的UML 2.5,相关网址如下。

OMG UML 2.5规范:http://www.omg.org/spec/UML/2.5/PDF

ISO UML规范:

http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=52854

中华人民共和国国家标准:http://www.chinagb.org/ChineseStandardShow-197675.html

时间过去二十年了,UML不断发展,在表示法上已经获得了胜利。随便打开一本现在出版的软件开发书,里面如果提到建模,使用的符号基本都是UML,即便在纸上随便画个草图,样子也是UML的样子。各种主流的开发平台也相继添加了UML建模的功能。OMG还和各种行业标准组织如DMTF、HL7等结盟,用UML表达行业标准。

另外,以UML为契机,掀起了一股普及软件工程的热潮,在UML出现后的几年,不但有关建模的新书数量暴增,包括CMM/CMMI、敏捷过程等软件过程改进书籍数量也出现了大幅度增长。制定UML标准的角色(OMG)、根据标准制作建模工具的角色(UML工具厂商)、使用UML工具开发软件的角色(开发人员)这三种角色的剥离,也导致建模工具的数量和种类出现了爆炸性的增长。而之前的数据流等方法从来没有像面向对象分析设计方法一样,出现UML这样的统一表示法,从而带动大量书籍和工具的产生。

最开始一批UML书籍,基本上由方法学家所写的。最近几年,以“UML”为题的新书大多为高校教材或普及性教材。这并不是说UML已经不重要,而是没有必要再去强调,焦点不再是“要不要UML”,而是要不要建模、如何建模。

根据UMLChina的统计,UML相关工具最多时达168种,经过市场的洗礼,现在还在更新的还有近百种。有钱买贵的,没钱就买便宜的或者用免费或开源的,可参见UMLChina整理的UML工具大全:http://www.umlchina.com/Tools/Newindex1.htm。