全部博文(584)
分类: 嵌入式
2011-02-20 15:34:30
2.2 图
图(diagram)由图片(graph)组成,图片是模型元素的符号化。把这些符号有机地组织起来形成的图表
示了系统的一个特殊部分或某个方面。一个典型的系统模型应有多个各种类型的图。图是一个具体视图的组成部分,在画一个图时,就相当于把这个图分配给某个视
图了依。据图本身的内容,有些图可能是多个视图的一部分。
UML
中包含用例图、类图、对象图、状态图、序列图、协作图、活动图、组件图、展开图共九种。本小节讨论九种图的基本概念。关于图的语法含义它们之间怎样交互等
所有细节将在后继章节中叙述。使用这九种图就可以描述世界上任何复杂的事物,这就充分地显示了UML 的多样性和灵活性。
2.2.1 用例图
用
例图(use-case diagram)用于显示若干角色(actor)以及这些角色与系统提供的用例之间的连接关系,如图2-1
所示。用例是系统提供的功能(即系统的具体用法)的描述。通常一个实际的用例采用普通的文字描述,作为用例符号的文档性质。当然,实际的用例图也可以用活
动图描述。用例图仅仅从角色触发系统功能的用户等使用系统的角度描述系统中的信息,也就是站在系统外部察看系统功能,它并不描述系统内部对该功能的具体操
作方式。用例图定义的是系统的功能需求。关于用例图的图示方法、含义等更进一步的介绍放在第三章中。
2.2.2 类图
类图(class diagram)用来表示系统中的类和类与类之间的关系,它是对系统静态结构的描述如图2-2 所示。
类
用来表示系统中需要处理的事物,类与类之间有多种连接方式(关系),比如关联(彼此间的连接)、依赖(一个类使用另一个类)、通用化(一个类是另一个类的
特殊化)、或打包(packaged)(多个类聚合成一个基本元素)。类与类之间的这些关系都体现在类图的内部结构之中,通过类的属性
(attribute)和操作(operation)这些术语反映出来。在系统的生命周期中,类图所描述的静态结构在任何情况下都是有效的。
一个典型的系统中通常有若干个类图,一个类图不一定包含系统中所有的类,一个类还可以加到几个类图中。在第四章中,我们再详细讨论。
2.2.3 对象图
对象图是类图的变体。两者之间的差别在于对象图表示的是类的对象实例,而不是真实的类。对象图是类图的一个范例(example),它及时具体地反映了系统执行到某处时系统的工作状况。
对象图中使用的图示符号与类图几乎完全相同,只不过对象图中的对象名加了下划线,而且类与类之间关系的所有实例也都画了出来,如图2-3 所示,图2-3(a)的类图抽象地显示各个类及它们之间的关系,图2-3(b)的对象图则是图2-3(a)类图的一个实例表示。
对象图没有类图重要,对象图通常用来示例一个复杂的类图,通过对象图反映真正的实例是什么,它们之间可能具有什么样的关系,帮助对类图的理解。对象图也可以用在协作图中作为其一个组成部分,用来反映一组对象之间的动态协作关系。
2.2.6 协作图
协作图和序列图的作用一样,反映的也是动态协作。除了显示消息变化(称为交互)外,协作图还显示了对象和它们之间的关系
(称为上下文有关)。由于协作图或序列图都反映对象之间的交互,所以建模者可以任意选择一种反映对象间的协作。如果需要强调时间和序列,最好选择序列图;
如果需要强调上下文相关,最好选择协作图。
协作图与对象图的画法一样,图中含有若干个对象及它们之间的关系(使用对象图或类图中的符号)对象之间
流动的消息用消息箭头表示,箭头中间用标签标识消息被发送的序号、条件、迭代(iteration)方式、返回值等等。通过识别消息标签的语法,开发者可
以看出对象间的协作,也可以跟踪执行流程和消息的变化情况。
协作图中也能包含活动对象,多个活动对象可以并发执行如图。2-6 所示,第五章和第八章详细讨论协作图。
2.2.7 活动图
活动图(activity diagram)反映一个连续的活动流,如图2-7 所示。相对于描述活动流(比如用例或交互)来说,活动图更常用于描述某个操作执行时的活动状况。
活动图由各种动作状态(action state)构成,每个动作状态包含可执行动作的规范说明。当某个动作执行完毕该,动作的状态就会随着改变这样动作状态的控制就从一个状态流向另一个与之相连的状态。
活动图中还可以显示决策、条件、动作状态的并行执行、消息(被动作发送或接收)的规范说明等内容。活动图在第五章中详述。
2.2.8 组件图
组件图(component diagram)用来反映代码的物理结构。
代码的物理结构用代码组件表示。组件可以是源代码、二进制文件或可执行文件组件。
组件包含了逻辑类或逻辑类的实现信息,因此逻辑视图与组件视图之间存在着映射关系。组件之间也存在依赖关系,利用这种依赖关系可以方便地很容易地分析一个组件的变化会给其他的组件带来怎样的影响。
组件可以与公开的任何接口(比如,OLE COM 接口)一起显示,也可以把它们组
合起来形成一个包(package),在组件图中显示这种组合包。实际编程工作中经常使用组件图(如图2-8 所示)。第六章中将进一步详述组件图。
2.2.9 展开图
展开图(deployment
diagram)用来显示系统中软件和硬件的物理架构。通常展开图中显示实际的计算机和设备(用结点表示)以及各个结点之间的关系(还可以显示关系的类
型)。每个结点内部显示的可执行的组件和对象清晰地反映出哪个软件运行在哪个结点上。组件之间的依赖关系也可以显示在展开图中。
正如前面所陈述,
展开图用来表示展开视图,描述系统的实际物理结构。用例视图是对系统应具有的功能的描述,它们二者看上去差别很大,似乎没有什么联系。然而,如果对系统的
模型定义明确,那么从物理架构的结点出发,找到它含有的组件,再通过组件到达它实现的类,再到达类的对象参与的交互,直至最终到达一个用例也是可能的。从
整体来说,系统的不同视图给系统的描述应当是一致的,(如图2-9 所示)关于展开图的讨论放在第六章中详述。