UML2.0完全建立在UML1.x基础之上,大多数的UML1.x模型在UML2.0中都可以用。但UML2.0在用例图、顺序图、活动图和构件图都有所改进,特别是改善了结构建模的性能。下面让我们一起来看一下UML2.0与UML1.x的异同吧。
UML2.0与UML1.x的异同
1.UML简介
1.1UML的定义
UnifiedModelingLanguage(统一建模语言)是国际对象管理组织OMG制定的一个通用的、可视化建模语言标准,可以用来描述(specify)、可视化(visualize)、构造(construct)和记载(document)软件密集型系统的各种工件(artifacts,又译制品)。是当今世界上面向对象系统开发领域中最激动人心的工具之一。
1.2UML的特点
UML的“通用性”主要是指不仅仅可以用它来描述软件,而且还可以用它来描述一般企业或组织的业务流程以及由软、硬件共同组成、以软件为主的复杂系统(即所谓的软件密集型系统),甚至还包括非软件系统。
UML的“可视性”是指可以通过UML一系列的图形符号,组成多种视图(view)来直观、清晰地表达系统分析设计中方方面面的、许多复杂的概念。UML主要是为了人的阅读和使用而设计的,所以它采用了半形式化的,易于人们理解、交流的形式。
UML是一种分析设计专用的建模语言,它本身不是编程(programming)语言,不能直接执行,却可用它来生成可执行的软件程序。UML是一种抽象层次比C、C++、Java、VB、Delphi等文本高级语言更高的图形语言,通过它我们可以抽象地表示用高级编程语言编写的文本程序的逻辑结构和行为。相比传统的第三代、第四代高级编程语言(3GL、4GL),UML能够更加高效、准确地反映软件设计的方案和思路,在当代软件工程中是真正用来“设计程序”(designprograms)的语言。从这个意义上看,不妨称UML为“甚高级”或第五代程序设计语言(5GL)。
UML基本上不能算作全新的发明,它并非学者教授、科研机构的最新研究成果,而是直接来自于产业界、工程界的实践总结,是在归纳基础上进行理论升华的产物,其核心内容反映了30多年来全球软件工业的领导者在软件设计构造领域的最佳实践和成功经验,因而具有很高的实用价值。
实践证明,作为对象技术的核心,面向对象分析设计(OOAD)方法比传统方法能更加准确、全面地描述物理现实世界和由逻辑概念构成的软件世界。UML是用来表述OO概念的一种语言工具,而很奇妙,它本身作为一件产品同样也是由世界级的软件大师们用OO方法设计出来的,这使得UML具有传统建模语言所不具备的极强的语义表达能力和非常灵活的可扩展性。
2.UML1.x与UML2.0比较
UML2.0完全建立在UML1.x基础之上,大多数的UML1.x模型在UML2.0中都可用。但UML2.0在结构建模方面有一系列重大的改进,包括结构类、精确的接口和端口、拓展性、交互片断和操作符以及基于时间建模能力的增强。
2.1UML的版本
UML1.x从1997年发布的UML1.0到2003年3月发布1.5版本,而UML2.x由2004年发布2.0版本,至今最新的版本已是UML2.1。
2.2UML2.0的新特点
UML2.0标准有以下特点:
◆first-class的扩展机制允许建模人员增加自己的元类(metaclass),从而可以更加容易地定义新的UMLProfile,将建模扩展到新的应用领域。
◆对基于组件开发的内置支持简化了基于EJB、CORBA组件或COM+的应用建模;对运行时架构的支持允许在系统的不同部分进行对象和数据流建模;对可执行模型(executablemodel)的支持也得到了普遍加强。
◆对关系更加精确的表示改进了继承、组合和聚合以及状态机的建模。
◆行为建模方面,改进了对封装和伸缩性的支持,去掉了从活动图到状态图的映射(注:活动图不再是一种特殊的状态图),并改进了顺序图的结构。
◆对语言的句法和语义的简化,以及整体结构上更好的组织。#p#
2.3UML2.0的组成的变化
UML2.0解决了用户在使用UML1.x过程中所遇到的一些问题。下面我就针对uml2.0上层的变化作一个简要的说明。
2.3.1用例图
用例图中的主体内容用例、参与者、通信关联并没有变化。不过如果用UML1.x,则只能用用例图所归属的包来表达一组用例的逻辑组织关系,即用用例在模型中所处的物理位置表达逻辑组织关系。在UML2.0中,为每个用例增加了一个称为“Subject”的特征,这项特征的取值可以作为在逻辑层面划分一组用例的一项依据。用例所属的“系统边界”就是“Subject”的一种典型例子。
2.3.2顺序图
顺序图是最常用的一种图示。我们用它来描述对象间的交互关系,着重体现交互的时间顺序。
对于顺序图,UML2.0主要做了三大改进。
1.允许顺序图中明确的表达分支判断逻辑。我个人认为这是一种非常实用的功能,能够将以前要通过两张图才能表达的意思通过一个图就表达出来了。但这并不意味着顺序图擅长表达这种逻辑,所以并不需要在顺序图中展现所有的分支判断逻辑。
2.允许“纵向”与“横向”地对顺序图进行拆分与引用。这就解决了以前一张图由于流程过多造成幅面过大浏览不便的困难。
3.提供了一种新图,称为“交互纵览图”(InteractionOverviewDiagram),可以直观地表达一组相关顺序图之间的流转逻辑。以前遇到这种情况通常只能通过活动图间接表达。
2.3.3活动图
活动图也是比较常用的一种图示,接近于流程图。
在UML2.0中,活动图增加了许多新特性。例如泳道可以划分层次,增加丰富的同步表达能力,在活动图中引入对象等。
2.3.4构件图
构件图是在物理层面对系统结构及内容的直观描述,最接近于通常意义上的模块结构图。
在UML2.0中,构件图有比较明显的改进。构件本身内容的表述更清晰,包括构件所提供的接口、所要求的接口、盖构件所实现的类(逻辑内容)、以及盖构件所对应的具体“制品”(artifact,即物理内容)。构件之间的依赖关系通过“组装连接器”(assemblingconnector)更加明确地表达。其实构件图的改进在一定程度上得益于UML2.0新引入的另一种图以及相关的概念表述,即“组合结构图”(compositestructurediagram)。
2.3.5新增加的图
在表述结构的图中,现增加了“包图”(Packagediagram)和“组合结构图”。“包图”展现模型要素的基本组织单元,以及这些组织单元之间的依赖关系,包括引用关系(PackageImport)和扩展关系(PackageMerge)。在通用的建模工具中,一般可以用类图描述包图中的逻辑内容。“组合结构图”描述系统中的某一部分(即“组合结构”)的内部内容,包括该部分与系统其他部分的交互点,这种图能够展示该部分内容“内部”参与者的配置情况。“组合结构图”中引入了一些重要的概念:例如“端口”(port),“端口”将组合结构与外部环境隔离,实现了双向的封装,既涵盖了该组合结构所提供的行为(PrrovidedInterface),同时也指出了该组合结构所需要的服务(RequiredInterface);再如“协议”(protocol),基于UML中的“协作”(collaboration)的概念,展示那些可服用的交互序列,其实质目的是描述那些可以在不同上下文环境中复用的协作模式。“协议”中所反映的任务由具体的“端口”承担。
在表述行为的图中,新增加了“交互纵览图”(InteractionOverviewDiagram)以及“计时图”(TimingDiagram)。前面已经介绍过“交互纵览图”的内容与作用。“计时图”是一种可选的交互图,展示交互过程中的真实时间信息,具体描述对象状态变化的时间点以及维持特定状态的时间段。
3.本文小结
UML2.0的内容远比前面介绍的要多。但是最重要的一点是,UML1.x模型在大部分情况下都将继续有效。而其他需要提及的三大重要事项如下:
第一,交互框图将活动框图和顺序框图结合在一起,使活动框图成为了一系列顺序框图的“主框图”。
第二,在UML1.x中,活动框图和状态框图具有同样的语义。换句话说,它们表达同样的事情,但用了不同的标记。在UML2.0中,活动框图是基于Petri网络令牌语义,而不是基于有限状态自动控制,因此更具有表现力。虽然它对计算算法不是很重要,但是对过程建模很有帮助。
第三,UML2.0包含了表示结构元素(对象)之间数据流动的流程框图(FlowDiagrams)。它与协作框图(collaborationdiagram)中的信息流动类似,但不完全相同。
【编辑推荐】