第5章 统一建模语言
常用的静态图:用例图、类图、包图、对象图、部署图
常用的动态图:顺序图,通信图,状态机图,活动图
5.1 UML概述
◇ UML简介
UML是用于系统的可视化建模语言,通常与OO软件系统建模相关联,但其内建了大量扩展机制,和可以应用于更多的领域中:
?UML是一种语言,为软件开发人间提供了一种用于交流的词汇表,一种用于软件蓝图的标准语言;
?UML是一种可视化语言
?UML是一种可用于详细描述的语言
?UML是一种构造语言
?UML是一种文档化语言
?UML(Unified Modeling Language)是下面这些最好的建模方法中最好部分的集成:
商务流程模型(Work Flow)
对象建模方法
软构件建模思想
?UML是一种用可视化方法对软件系统进行描述、实施和说明的标准语言。
?支持用不同实现技术进行的软件开发全过程。
◇ UML的特征
(1)统一标准。UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。
(2)与UML结合最好的是用例驱动的、以体系结构为中心的、迭代的、增量的开发过程。
(3)面向对象的特性。UML还吸取了面向对象技术领域中其他流派的长处,其中也包括非面向对象方法的影响。
(4)独立于过程。UML作为建模语言,不依赖特定的程序设计,独立于开发过程。(选择题)
(5)UML对系统的逻辑模型和实现模型都能清晰的表示,可以用于复杂软件系统的建模。
5.2 UML的结构
◇ 结构概述
UML的结构包括UML的基本构造块、支配这些构造块如何放在一起的规则(体系结构)和一些运用于整个UML的机制。
1)构造块
UML有3种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。事物是UML的重要组成部分,关系把事物紧密联系在一起,图是很多有相互关系的事物的组。
2)公共机制
公共机制是指达到特定目标的公共UML方法,主要包括:
?规格说明:元素语义的文本描述,是模型真正的核心;
?修饰:UML为每一个事物设置了一个简单的记 ;
?公共分类:包括类元与实体(类元表示概念,实体表示具体的实体)、接口与实现(接口用来定义契约,实现就是具体的内容)两组公共分类;
?扩展机制:包括约束(添加新规则来扩展事物的语义)、构造型(用于定义新的事物)、标记值(添加新的特殊信息来扩展事物的规则说明)
3)规则
UML用于描述事物的语义规则分别是事物、关系和图命名。
?给一个名字以特定含义的语境,即范围;
?怎么使用或者看见名字,即可见性;
?事物如何正确、一致地相互联系,即完整性;
?运行或模拟动态模型的含义是什么,即执行。
UML对系统体系结构的定义是系统的组织结构,包括系统分解的组成部分,具体来说,就是指5个系统视图,分别是:
?逻辑视图:以问题域的词汇组成的类和对象的集合;
?进程视图:是逻辑视图的一次执行实例,描述了所设计的并发和同步结构;
?实现视图:对组成基于系统的物理代码的文件和构件进行建模;
?部署视图:表示软件到硬件的映射及分布结构;
?用例视图:最基本的需求分析模型。
◇ 事物
UML中的事物也称建模元素,包括结构事物、行为事物、分组事物和注释事物。这些事物是UML模型中最基本的面向对象的构造块。
1)结构事物
在模型中属于静态的部分,代表概念上或物理上的元素。总共有7类结构事物:类、接口、协作、用例、活动类、构件和结点。
2)行为事物
是UML模型中的动态部分,他们是模型的动词,代表时间和空间上的动作,有两种主要的行为事物:
?交互(内部活动):由一组对象之间在特定上下文中,为达到特定的目的而进行的一系列消息交换而组成的动作。
?状态机:是由一系列对象的状态组成。
3)分组事物
是UML模型中的组织的部分,可以把它们看成一个盒子,模型可以在其中被分解。UML只有一种分组的事物,称为包。包是一种将有组织的元素分组的机制。包存粹是一种概念上的东西,只存在于开发阶段。
4)注释事物
是UML的解释部分。
◇ 关系
UML用关系把事物结合在一起,UML中的关系主要有以下4种:
a)依赖:两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义;
b)关联:描述一组对象之间连接的结构关系;
c)泛化:一般化和特殊化的描述,描述特殊元素的对象可替换一般元素的对象;
d)实现:类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。
1)用例之间的关系
两个用例之间的关系可以概括为两种情况,一种是用于重用的包含关系,用构造型>表示,另一种是用于分离出不同行为的扩展关系,用构造型>表示。
①包含关系:当可以从两个或两个以上的原始用例中提取公共行为,或者发现能够使用一个构件来实现某一个用例很重要的部分功能时,应该使用包含关系来表示它们。提取出来的公共用例称为抽象用例。
②扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,则可以断定将这个用例分为一个主用例和一个或多个辅用例进行描述可能更加清晰。
2)类之间的关系
在建立抽象模型时,很少有类会单独存在,大多数都将会以某种方式彼此通信。类与类之间的关系有:关联关系、依赖关系、泛化关系、聚合关系、组合关系、实现关系、流关系等。
?关联关系:描述了给定类的单独对象之间语义上的连接。UML中关联关系用“——” 表示。
?依赖关系:有两个元素X、Y,如果修改了元素X的定义可能会引起另一个元素Y的定义的修改,则成元素Y依赖于元素X。 UML中用带箭头的虚线表示。
?泛化关系:描述了一般事物与该事物中的特殊种类之间的关系,即父类与子类之间的关系。继承关系是泛化关系的反关系,即子类是从父类继承的,而父类是子类的泛化。UML中使用带空心三角形的实线表示,箭头指向父类。
?聚合关系:是一种特殊形式的关联,是传递和反对称的,表示类之间的关系是部分与整体的关系,在UML中使用带有空心菱形的实线表示,空心菱形指向整体类;
?组合关系:即在部分与整体的关系中,表示“部分”的类的存在与否,与表示“整体”的类有着紧密的关系。UML中使用带有实心菱形的实线表示。
?实现关系:将说明与实现联系起来。接口是对行为而非实现的说明,而类包含实现的结构。UML中使用带有空心三角形的虚线表示。
?流关系:将一个对象的两个版本以连续的方式连接起来,表示一个对象的值、状态和位置的转换。流关系可以将类元角色在一次相互作用中连接起来。流的类型包括变成(同一个对象的不同版本)和复制(从现有对象创造出一个新的对象)两种。UML中使用“—à”表示。
5.3 用例图
◇ 用例图
用例图,通常用于显示若干角色以及这些角色与系统提供的用例之间的连接关系。用例是系统提供的功能的描述。(选择题)
用例模型描述的是外部参与者所理解的系统功能。用例模型用于系统需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成的共识。
5.4 类图和对象图
◇ 类图
在UML中,类和对象的模型分别由类图和对象图表示。
类图,表示系统中的类和类与类之间的关系,它是对系统静态结构的描述。一般类是一个三层结构。
1)类的命名:最顶部的格子包含类的名字。
2)类的属性:中间的格子包含类的属性,用以描述该类对象的共同特点,该项可省略。语法如下:
可见性 属性名:类型 = 默认值{约束特性}
3)类的操作:该项可省略。操作用于修改,检索类的属性或执行某些动作,也被称为功能。语法如下:
可见性 操作名(参数表):返回类型{约束特性}
◇ 对象图
? 对象是类的实例,对象图可以看做类图的实例,对象之间的连接是类之间关联关系的实例。对象图显示类的多个对象实例而不是真实的类。
?对象图显示某时刻对象和对象之间的关系,是类图的变化,由于对象存在生命周期,因此对象图只能在系统的某一时间段存在。(判断题)
5.5 交互图
◇ 交互图
交互图时表示各组对象如何依某种行为进行协作的模型。通常可以使用一个交互图表示和说明一个用例的行为。
在UML中,包括4中不同形式的交互图,分别是:
?顺序图,强调的是时序;
?通信图,强调消息流经的数据结构;
?定时图,强调消息跨越不同对象或角色的实际时间;
?交互概览图,是活动图和顺序图的混合物。
其中,顺序图和通信图是两种基本的交互图,可以相互转换,定时图和交互概览图是两种特殊的变体。
◇ 序列图(顺序图)
顺序图,用来描述对象之间动态的交互关系,也就是随着时间的推移,对象之间是如何交互的,着重体现对象间消息传递的时间顺序。
顺序图允许直观地表示出对象的生存期,在生存期内,对象可以对输入消息做出响应,并且可以发送信息。
◇ 通信图(协作图)
通信图,描述对象间的协作关系,协作图跟序列图相似,显示对象间的动态合作关系。通信图强调收发消息的对象或角色的结构组织。
如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图。(选择、判断)
◇ 定时图
定时图,可表示具有很强时间特性的交互,实际上是一种特殊形式的顺序图,与顺序图的区别主要表现在:
?坐标轴交换了位置,改为从左到右表示时间的推移;
?用生命线的“凹下凸起”表示状态的变化,每个水平位置表示一种不同的状态,状态的顺序可以有意义,也可以无意义;
?生命线可以跟在一根线后面,在这根线上显示一些不同的状态值;
?可以显示一个度量时间的标尺,用刻度表示时间间隔。
5.6 状态图
状态图用来描述对象状态和事件之间的系,通常用状态图来描述单个对象的行为,它确定了由事件序列引出的状态序列,并不是所有的类都需要使用状态图来描述它的行为,只有具有重要交互行为的类,才会使用状态图来描述。状态图是对类图的补充。
其中:
1)状态:又称中间状态,用圆角矩形表示;
2)初始状态:用一个黑色的实心圆圈表示。一张状态图只能有一个初态;
3)结束状态:又称终态,用一个同心圆(里面为黑色实心圆)表示。一张状态图中可能有多个结束状态。
4)状态转移:用箭头说明状态的转移情况,并用文字说明引发状态变化的事件是什么。
一个状态也可能被细分为多个子状态,那么如果将这些子状态都描绘出来,则这个状态就是复合状态。
状态图适合用于表述在不同用例之间的对象行为,并不适合表述包括若干协作的对象行为。
5.7 活动图
◇ 活动图
活动图用来表示系统中各种活动的次序。既可以描述用例的工作流程,即满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动;也可以用来描述类中某个方法的操作的行为。
活动图是由状态图变化而来的,它们用于不同的目的,活动图依据对象状态的变化来捕获动作(将要执行的工作或活动)与动作的结果。活动图中的一个活动结束后立即进入下一个活动。
在活动图中,还引入了一下几个概念:
1)判定:说明基于某些表达式的选择性路径,在UML中使用菱形表示;
2)分叉与结合:由于活动图建模时经常会遇到并发流,因此在UML中引入了分叉与结合的概念,使用粗实线表示。
◇ 带泳道的活动图
泳道将活动图的逻辑描述与顺序图、通信图的责任描述结合起来。
◇ 交互概览图
交互概览图并没有引入新的事物,仅仅是活动图和顺序图的混合产物。
对面向对象系统物理方面进行建模,需要使用两种图,分别是构件图和部署图。
5.8 构件图
◇ 构件图
构件图中通常包括构件、接口以及各种关系。构件指源代码文件、二进制代码文件、可执行文件等,而构件图用来显示编译、链接或执行时构件之间的依赖关系,即描述代码构件的物理结构及各构件之间的依赖关系
通常使用构件图完成以下工作:
1)对源代码进行建模,清晰地表示出各个不同源程序文件之间的关系;
2)对可执行体的发布建模,清晰地表示出各个可执行文件、DLL文件之间的关系;
3)对物理数据库建模,表示各种类型的数据库、表之间的关系;
4)对可调整的系统建模,如对于应用负载均衡、故障恢复等系统的建模。
5.9 部署图
◇ 部署图
部署图也称实施图,定义系统中软硬件的物理体系结构。
构件图说明构件之间的逻辑关系,而部署图则是在此基础上更进一步,描述系统硬件的物理拓扑结构,以及在此结构上执行的软件。
部署图可以显示计算节点的拓扑结构和通信路径,结点上运行的软件结构,常常用于帮助理解分布式系统。
在部署图中,通常包含以下关键的组成部分:
1)结点(Node)和连接。
结点代表一个物理设备以及其上运行的软件系统。
在UML中,使用一个立方体表示一个结点,结点名放在左上角。
结点之间的连线表示系统之间进行交互的通信路径,在UML中被称为连接。
通信类型则放在连接旁边的《》之间,表示所有的通信协议或 络类型。
2)构件和接口。
在部署图中,构件代表可执行的物理代码模块,如一个可执行程序等。逻辑上它可以与类图中的包或者类对应。
在面向对象方法中,类和构件等元素并不是所有的属性和操作都对外可见,它们对外提供了可见操作和属性,称为类和构件的接口。界面可以表示为一头是小圆圈的直线。
5.10 使用UML建模
其中,图形表示的语法由实例和图形元素到语义模型中元素的映射表示,语义模型的语法和语义由元模型、自然语言和约束来说明。
◇ 直接使用UML建模
?元-元模型层定义了元模型层的规格说明语言;
?元模型层为给定的建模语言定义规格说明;
?模型层用来定义特定软件系统的模型;
?用户对象用来构建给定模型的特定实例。
在4层元模型中,UML的结构主要体现在元模型层中,分为3个逻辑包:基础包、行为元素包和一般机制包,这些包又依次分为若干子包。
◎ UML中的通用表示
(1)字符串:表示有关模型的信息;
(2)名字:表示模型元素;
(3)标 :不同于编程语言中的标 ,是用于表示或说明图形符 的字符串;
(4)特殊字符串:表示某一模型元素的特性;
(5)类型表达式:声明属性、变量及参数,含义同编程语言中的类型表达式;
(6)实体类型:它是UML的扩充机制,运用实体类型可定义新类型的模型元素;
◎ UML语义部分
UML语义部分是对UML的准确描述,主要由以下3部分组成:
?通用元素:主要描述UML中各元素的语义。通用元素是UML中的基本构造单位,包括模型元素和视图元素,模型元素用来构造系统,视图元素用来构成系统的表示成分;(选择、判断)
?通用机制:主要描述使UML保持简单和概念上一致的机制的语义。包括定制、标记值、注记、约束、依赖关系、类型-实例、类型-类的对应关系等机制;
?通用类型:主要描述UML中各种类型的语义。这些类型包括布尔类型、表达式类型、列表类型、多重性类型、名字类型、坐标类型、字符串类型、时间类型、用户自定义类型等。
UML中语义的三部分不是相互独立的,而是相互交叉重叠、紧密相连,共同构成了UML的完整语义。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!