本节和大家一起学习一下UML表示法,本文献给出UML的可视化表示法,通过例子给出模型元素的图形表示符号.从系统模型这一级别上看,UML表示法由9种图构成,下面就让我们一起看一下详细介绍吧。
UML表示法参考文献
本文献给出UML的可视化表示法,通过例子给出模型元素的图形表示符号.从系统模型这一级别上看,UML表示法由9种图构成,它们是:
静态结构图(Static Structure Diagram),其中包括类图(Class Diagram)和对象图(Object Diagram);
Use Case图 (Use Case Diagram);
顺序图(Sequence Diagram);
协作图(Collaboration Diagram);
状态图(Statechart Diagram);
活动图(Activity Diagram);
实现图(Implementation Diagram),其中包括成分图(Component Diagram)和展开图(Deployment Diagram)两种图.
尽管UML文件称“UML表示法指南定义了表示法并提供了例子”,但确切的说法应该是:该文件对建模元素的表示法给出了一般的文字描述,其图形的画法是通过例子表现的,并没有给出一般的图示.本文大部分插图是参照M.Fowler的著作[4]的作法从一般意义上给出的.
UML定义了一些在各种图中常用的元素,例如String(串)、Name(名)、Label(标签)、Keyword(关键词)、Expression(表达式)、Note(注释条)等,并给出它们的表示符号,例如关键词由一个被书名号括起的串表示,注释条用一个折起一角的长方形内的正文表示.在各种图中用来对一组模型元素打包的元素叫做“包”(Package),其表示法是用一个大的方框围起这组元素,并在角上用一个小框给出包的名字.
此外,UML还定义了一些称作“扩充机制”的元素.这种元素可以附加到其它模型元素之上,将原有的建模元素特化成一种语义较特殊的新变种,或者表示出它们的某些细节.这些元素可以起到对表示法进行扩充或细化的作用,它们是:
Constraint(约束):约束是模型元素之间的一种语义关系,它说明了某种条件和某些必须保持为真的命题.其表示法是在大括号{ }之间用一种工具能识别的语言(如UML提供的OCL)写出表示条件的正文串.
Comment(注释):注释是写在注释条表示符号(折起一个角的长方形)之内的正文串.所使用的语言应易于人的理解,不必考虑被工具理解.
Element Property(元素特征):用来显示模型元素的一些附带特征,如属性、关联、目标值等.其表示法是在大括号{ }内写出形式为 关键词=值 的正文串,多个串之间彼此用逗号隔开.
Stereotype(版式):用来附加到其它模型元素之上,将原有的建模元素特化成一种语义较特殊的新变种.带有版式的建模元素可看作原先建模元素的一个子类,它在属性、关系等方面与原先的元素形式相同,但用途更为具体.板式是用书名号《》括起来的关键字表示的.上述概念的表示法如图1所示.
以下分别介绍各种图以及图中用到的建模元素与UML表示法.
(1) 静态结构图
静态结构图包括类图(class diagram)和对象图(object diagram).“类图是静态结构模型的图形化示图.”“类图是(静态)声明的模型元素集合.”关于对象图,该文献中说道:“对象图是实例的一种图形,包括对象和数据的值,静态的对象图是类图的一个实例;它显示了在一个时间点上系统细节状态的一个快照”.该文献又指出:“对象图的用处是很有限的”,“工具没有必要支持独立形式的对象图.类图能包括对象,一个有对象而没有类的类图便是一个‘对象图’.不过这个术语对于刻画在各种方式下可能达到的特殊用法还是有用的”. 静态结构图中用到的各种建模元素的表示法如图2所示,以下分别加以介绍.
(2) Use Case图
“use case图用于表现活动者与use case之间的关系.”“use case模型表现一个系统或一个类对于系统外部的交互者的功能.”UML定义了如下几种构成use case图的元素(如图3).
Use Case:一个use case是一个系统或一个类提供的紧凑的功能单元,它是由系统与一个或多个外部交互者(即活动者)之间交换的消息序列以及系统执行的活动共同体现的.
Actor(活动者):活动者是直接与系统交互的外部对象所扮演的角色.
Use Case Relationship(use case关系),包括如下3种关系:communicates(通信),这是活动者与use case之间仅有的关系,是活动者对use case的参与;extends(延伸),从use case A到use case B的延伸关系表明B的实例(在延伸说明的特殊条件下)可能包含了在A中说明的行为;uses(使用):从A到B的使用关系表明A的实例也包括了在B中说明的行为.
(3) 顺序图
UML表示法中UML给出了两种形式的交互图(Interaction Diagram),一种叫顺序图,另一种叫协作图.它们基于相同的基本信息但强调不同的方面.顺序图(Sequence Diagram)展示按时间顺序排列出来的交互.特别是,它展示对象在其“生命线”上参加的交互和它们按时间顺序交换的消息.它不展示对象之间的关系.顺序图所表示的交互是一组在对象之间为产生所要求的操作或结果而进行合作时所交换的一组消息.顺序图有简单形式和详细形式两种画法,后一种画法与OOSE[3]等著作介绍的交互图大体一致——在水平方向展示各个参加交互的对象,垂直方向表示时间;整个平面显示各个对象之间进行交互的时间及空间关系,顺序图如图4所示.用于顺序图的建模元素有:
Object Lifeline(对象生命线):一条垂直的虚线,用于展示对象在从创建到撤消的时间范围内所扮演的角色.
Activation(活动期):展示对象直接地或通过其下级过程执行一个活动的时间段.
Message(消息):消息是对象之间的一次通信,用于传送信息并期望发生某种活动.消息的接收是一种事件.
Transition Time(过渡时间):消息发送或接收所用的时间.二者可能相同也可能不同.
(4) 协作图
协作图(Collaboration Diagram)是UML所说的另一种交互图,它表示在一些对象之间组织的操作和它们之间的链.与顺序图不同的是,协作图表示的是对象角色之间的关系,而不表示时间顺序.协作图描绘了在特定上下文中一组相关对象之间的协作,以及这组对象为产生所要求的操作或结果而进行协作时所交换的一组消息.协作图的图形表示以对象为结点,结点之间既有表示消息的箭头连线,也有表示关联的连线.消息连线有3种,分别表示调用、控制流和异步3种不同的消息,但仍有一些不能表示的情况,如阻塞(balking)和超时(time out)等,需要用一些进一步扩充的表示符号.协作图中使用的关联符号也包括多种不同的端点情况,如qualifier和composition等等.
UML表示法指南为协作图定义的概念或建模元素有:Collaboration(协作)、Collaboration Content(协作内容)、Interaction(交互)、Pattern Structure(模式结构)、Collaboration Role(协作角色)、Multiobject(多对象)、Active Object(主动对象)、Message Flows(消息流)、Creation/Destruction Markers(创建/折构标记),这里不再一一介绍.
(5) 状态图
状态图(Statechart Diagram)在UML中也称作状态机,它表现一个对象或一个交互在整个生存期内接受剌激时的状态序列以及它的反应与活动.它附属于一个类或一个方法.建立状态图所用的建模元素有:State(状态)、Composite State(复合状态)、Substate(子状态)、Event(事件)、Simple Transition(简单转换)、Complex Transition(复杂转换)、Nested State(嵌套状态)、Sending Message(发送消息)、Internal Transition(内部转换)等.状态图及其有关元素的表示法和现有的大部分OOA/OOD方法大同小异,这些不再详述.
(6) 活动图
活动图(Activity Diagram)是状态图的变种,它的状态表示操作所执行的活动(activity),其转换(transition)是由操作的完成而触发的.它表示了一个过程本身的状态机,过程是对类中一个操作的实现.构成活动图的元素有:Action State(活动状态)、Decision(判断)、Swimlane(泳道,在图中画出来就象游泳池中的泳道,把各个活动组放在不同的泳道中以便更加清晰)、Action-Object Flow Relationship(活动-对象流关系,表示一个活动与有关对象之间的消息和输入/输出关系)、Control Icon(控制图符,表示信号的发送与接收)等.
(7) 实现图
UML表示法中实现图(Implementation Diagram)表现实现方面的问题,包括源代码结构和运行时的实现结构.实现图分为两种,一种是表示代码自身结构的成分图,另一种是表示运行时系统结构的展开图.
成分图(Component Diagram)表示源代码、二进制代码及可执行代码等软件成分之间的依赖关系.各种软件模块在图中用成分(component)结点表示,它们之间的各种依赖关系(如编译、界面、调用等)用不同的箭头相连.
展开图(Deployment Diagram)表示运行时处理元素的配置以及依赖这些配置的软件成分、进程和对象.图的结点内可包含若干成分或对象,成分之间的箭头表示一个成分使用另一个成分的服务.
为构造实现图而定义的元素及图形表示有Node(结点)和Component(成分).同时UML规定了在一个对象内部定位其它成分和对象的画法.
【编辑推荐】