UML软件设计基础(UML图详解)
作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
(1) UML语义 描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外UML还支持对元模型的扩展定义。
(2) UML表示法 定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。
标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:
·第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
·第二类是静态图(Static diagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
·第三类是行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
·第四类是交互图(Interactive diagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。
·第五类是实现图( Implementation diagram )。其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
配置图定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备(用节点表示)以及它们之间的连接关系,也可显示连接的类型及部件之间的依赖性。在节点内部,放置可执行部件和对象以显示节点跟可执行软件单元的对应关系。
从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和合作图等四个图形,是标准建模语言 UML的动态建模机制。因此,标准建模语言UML的主要内容也可以归纳为静态建模机制和动态建模机制两大类。
1、UML 类图
UML类图模型类型表明了模型元素,如类,对象,界面等,之间的静态关系。UML 类图对类进行了定义。对这些类,对应的操作(方法)和属性可以用成员关系进行分配。类与类之间的关系也在UML 类图中进行了表达。这种关联是二元关系,是在类与类之间直接发生的。在这里,用菱形标志表示的插入的关联被用于表示多重关系。如果这一关联就是一个类,则可以使用关联的供给属性。关联的多重性可以被输入到关联连接的多重性(Src)和多重性(Trg)属性中。在UML语言中, 集成和复合表示特殊的关联。它们经过关联之间的连接入口而标明,并由关联之间连接的尾部的一个小白色(集成) 或黑色(复合) 菱形标志表示。关于这一点的范例,可参见图5.2.1.1-1类图—关联。
图5.2.1.1?1 UML 类图 – 关联
类与类之间的继承性关系被表示为一般关系,由三角形标志来表示。分配到优先类的属性和操作将会被传递到下一级次的类中。关于这一点的范例,可参见图5.2.1.1-2: UML 类图—继承性关系。
图5.2.1.1-2:UML 类图 – 继承性关系
2、UML类描述图
UML类描述图模型类型是标准UML图的一个补充。它对类进行了更加精确的说明。UML类描述图的建模选项UML 类图选项的一个子集,举例说明,所有UML 类描述图的建模选项在UML 类图中叶都具有。属性,操作,注释,对象,和界面的类都可以在UML 类描述图中得到分配。这种分配也可以在UML 类图中进行,但是一旦UML类图图形过载,就需要提供UML类描述图独立的建模方法。在这种情况下,UML类描述图必须被定义为UML类图中类的分配。总的来说有关联,但在UML类图中非必须的属性,操作,注释,对象以及界面,就可以被移植到UML类描述图中来。
3、UML使用案例图
UML使用案例图对应用案例(使用案例) 和使用者,即,它所包括的受到使用案例影响的对象,进行了说明。使用者就是指使用应用系统来完成任务的用户。UML使用案例图从用户的角度对系统的内部行为进行了说明。在ARIS体系中,使用者是作为人类对象类型来实现的。
使用者与使用案例之间的联接是一种通信关系。这表明了使用者执行完成使用案例的关系。使用案例之间的联系由一种概括关系所决定,这种关联用一个三角形点来表示。所需要的语义可以被分配到这种关系的旧版属性里去。UML 标准建议在扩展和使用中使用旧版。比如说,在异常条件下,扩展说明了一个使用案例扩展了另一个使用案例的应用范围的这种扩大了的关系。使用说明了一种使用的关系。举例说明,一个使用案例使用了另一个使用案例的应用案例说明,使得它可以被重新利用。图5.2.3-1 表现了UML使用案例图的一个样本模型。另外,程序包和注释对象类型在UML使用案例图中也是可得到的。
Figure 5.2.3?1 UML使用案例图
4、 UML 活动图
UML 活动图把整个过程按活动顺序进行了说明。在UML语言中,活动一般指的就是对象。因此,活动图被分配为到类,操作,或是使用案例,并且对相关的内部过程进行了说明。
因为活动图被认为是一种自动状态的特殊形式,一个活动图过程从一个初态开始,并以一个末态结束。活动表示了一种有内部动作和一个或更多输出转换的状态。这种转换是用活动之间的产生联接关系来表示的。一个活动与其他活动之间的关系可以是简单的,也可以是多层的输入与输出关系:
1. 多重出站关系可以被表示为条件。在这里要使用到决策符号(菱形)。用决策符号对一个条件建立模型是可选择的;或者,用户也可以只对几个出站联系建立模型。我们建议用户保持激活前驱站关系的连接角色属性,并把它表示在图中。
2. 分割/同步符号(竖直或水平划线)可以用来同时激活几个相继的活动,或是当某一活动的前期活动转换完成后再将其激活。
活动可以被认为是特殊的对象状态并创造一些特殊的对象状态。对象的状态可以用对象状态对象类型来说明,这种类型以与活动的关系的形式含有已经输出和已经输入联接(划线箭头)。
UML 用所谓“泳道”来说明执行活动的组织职责。泳道就是以一栏列出所有组织单元所负责的活动。为了这一目的,ARIS UML 活动图预先定义了一个两栏的图表。对活动所负责的组织单元(无论是一个内部人员,方位,人员类型,或是组织单元,或是工作组)在顶上一栏,在底下一栏里则是它所负责的活动,决策,分割/同步,对象状态和注释符号。
图5.2.4-1:UML 活动图表现了一个 UML 活动图及其相关组成部分。
图5.2.4-1:UML 活动图
5 UML 状态图
与UML 活动图一样,UML 状态图也对自动状态和相似情况进行了说明。然而,状态图的焦点更多的集中在对象的状态上面。它说明了一个对象在它的存在过程中所要承担的状态的顺序。不仅如此,它也包含了与此状态相关的一些动作。这些动作或者是进入状态(进入/)的先决条件,或者在这种状态中执行完成(执行/),或者是在离开这一状态时执行(退出/)。
ARIS UML 状态图提供了一些状态符号。状态转换,也叫转换,以直接联接(与…关联)的方式与状态之间建立了关联。同UML 活动图一样,一个状态图必须以一个初态作为开始,以一个末态作为结束。图5.2.5-1: UML 状态图 表示了一个UML 状态图。
图5.2.5-1:UML 状态图
6 UML 协作图
对象之间以信息交换形式表现的交互作用在UML协作图0中得到了说明。对象,也叫实例,是类中较为具体的样本。信息交换的模型是通过一个与联接有关的交互作用来建立的。与联接有关的交互作用的精确含义是通过以下概念的出现建立的:条件,信息号,操作,和参数等属性。这些属性的功能如下所示:
条件:条件即一种特殊的信息,这种信息在当前信息能够被发送之前必须被发送出去。这种信息以及其信息号是以列表的形式给出的。如果不存在这种先决性的信息,条件就是不必要的了。每一个条件与它的信息号之间是以一条斜杠(?/“)被分隔开的。
信息号: 信息号是在图表中标识一体哦信息的唯一号码。信息是以升序排列的。如果一个操作正在处理接收到的信息,同时它也送出了几条信息,旧的号码就会以一个单独的“子号码”作为补充。(例如:一个操作接受到了信息3.4,并以号码3.4.1 和3.4.2送出了两条信息)。信息号与操作之间以冒号(“:”)分隔。
操作:表示所给出的即将被执行的对象的类的操作。
参数: 参数对被调用的操作参数列表进行说明。参数列表被表示在括弧中。
例:1.3, 2.1 / 3.2.1:计算净值(总量,比率)
在这里,信息1.3 and 2.1 是条件,信息号就是 3.2.1这个数字,所要进行的操作就是计算净值,并且这一操作还含有总量和比率这两个参数。
图5.2.6-1:UML 协作图
7 UML 成分图
UML 能够对与以图表格式出现的实现过程有关的方面进行说明,如代码结构(成分)与系统运行时间结构(配置)。在ARIS体系中, UML 成分图就是为了实现这一目的而设计的。
成分是在编译或连接的时候,或是在系统操作的时候组成单元的项目。例如,可执行文件。成分之间第一种类型的联系表现的是成分的物理结构。一个成分也可以包含另外一个成分,这在它们之间的包含关系中得到了体现。成分之间的第二种类型的联系就是所谓的关系。一个成分通过界面对另一个成分进行调用,用一个小圆圈表示。提供界面的成分与支持关系连接(单划线),使用界面的成分与之通过一种调用关系进行连接(长箭头)。
当系统运行时也仍然可以进行成分配置(配置)。为了实现这一目的,对成分进行了分组,并分配到各个程序包(也叫节点)中。这种分配是通过成分与其程序包之间的包含关系完成的。以图解的方式把成分放入程序包对象的方法也是非常可取的。
图 5.2.7?1 UML 成分图示例
表现了一个UML成分图的实际例子。
图5.2.7?1 UML 成分图示例