20世纪90年代,人们推出了许多不同的面向对象设计和分析方法,OMT(Rumbaugh)、Booch和OOSE(Jacobson)是当中*为流行的3种方法。其中,OMT方法强在分析方面,但弱在设计方面;Booch方法强在设计方面,但弱在分析方面;OOSE方法强在行为分析方面,但弱在其他方面。
随着时间的推移,Booch出版了他的第2本书,其中采用了Rumbaugh和Jacobson所提倡的许多好的分析技术。Rumbaugh发表了一系列文章阐述了OMT-2,其中采用了Booch的许多好的设计技术。自此,这些面向对象的设计和分析方法之间开始出现了交叉,但它们仍然都拥有自己的独特表示法。这些不同表示法的使用给建模者造成了混乱,因为不同方法中的相同符号的含义可能并不相同。例如,实心小圆圈在OMT方法中是一个多重性指示器,在Booch方法中则是聚合符号。这个阶段就是后来人们所说的方法之战阶段。
UML的出现结束了方法之战。事实上,UML是一种统一了Booch、OMT和Objectory的表示法的建模语言,同时也采用了其他许多方法中的优良思想。目前,UML已经成为面向对象分析和设计方法的事实上的标准。UML相当适合于以体系结构为**的、用案驱动的、迭代式和渐增式的软件开发过程,其应用领域颇为广泛,除了可用于具有实时性要求的软件系统建模以及处理复杂数据的信息系统建模外,还可以用于描述非软件领域的系统。
UML适用于系统开发过程中从需求规约到系统完成后测试的各个阶段:在需求分析阶段,可以用用户模型视图来捕获用户需求;在分析和设计阶段,可以用静态结构视图和行为模型视图来描述系统的静态结构和动态行为;在实现阶段,可以将UML模型自动转换为用面向对象编程语言实现的代码;在测试阶段,UML模型还可作为各种类型软件测试的依据。为使读者理解UML在这些方面的应用,本书分成语言篇、建模篇和应用篇三大部分共13章。
语言篇包括第1章~第7章,着重介绍UML语言本身:第1章在简介20 世纪90 年代流行的各种面向对象软件建模方法的基础上,从3个方面将它们的建模能力与UML的建模能力进行比较;第2章按照视图、模型元素、图以及公共机制的顺序向读者简单介绍UML 的结构和基本元素,以使读者对UML有一个总体了解;第3章介绍用户模型视图,并在此基础上阐述用案中的控制流识别技术、用案识别技巧以及用案识别中易犯的错误;第4章介绍用来描述系统静态结构的结构模型视图;第5章介绍用来描述系统行为的行为模型视图;第6章介绍用来描述系统构造时结构和行为特征的实现模型视图;第7章介绍用来描述对系统的环境进行建模的环境模型视图。
建模篇包括第8章~第12章,着重讨论UML在体系结构建模、实时系统的建模、软件测试、关系数据库和C++语言的映射等方面的内容:第8章介绍利用UML进行软件体系结构建模的几种主要方法;第9章介绍如何利用UML和UML-RT **地为实时系统建模,同时分析比较Rational Rose和Rose-RT这两个建模工具实时建模的优缺点;第10章按照单元测试、集成测试和系统测试的顺序讨论基于UML的软件测试方法;第11章讨论从UML模型到关系数据库的映射问题(模型结构的映射和模型功能的映射);第12章研究UML 模型映射为相应C++代码的基本原理和方法,并侧重讨论UML 类图到C++类的映射。
应用篇只包括第13章,其目的是介绍UML在建模上的应用:第13章通过一个数码声音录音机的面向对象设计和实现过程来说明如何应用UML进行实际建模。
目前,由国内翻译的或者编写的与UML相关的著作已不下十余本,其中对UML中出现的许多专业术语的译法都不完全一致,从而给读者的阅读和理解带来一定的不便。因此,在这本书的编写过程中,编者一方面力求使得术语的中文译法反映英文本意,另一方面力求使其符合读者已有的习惯,同时还不能造成与其他术语已有惯用译法的混淆。例如,读者已经习惯于将use case译作“用例”,同时也习惯于将test case译作“测**例”,但二者同时出现时就容易导致混淆。经过慎重考虑我国软件界老前辈徐家福先生的建议,本书*后将use case译作“用案”。
我国计算机软件奠基人之一徐家福先生以80岁高龄为本书作序,认真审阅了本书,并对本书内容和许多术语的译法提出了很好的建议,使我们深受感动。在此我们对徐先生表示由衷的感谢,同时祝徐先生健康长寿。
本书成书于2003年,几经修改,方成此稿。
本书不仅适用于对UML比较熟悉并且对软件建模有所了解的开发人员,同时也可作为广大科技工作者和研究人员的参考书。由于UML的许多技术还在不断发展之中,加之编者水平有限,因此书中疏漏谬误之处恳切希望能够得到广大读者的批评指正。