UML图介绍

  • 概念

UML 是统一建模语言的缩写。

UML 图是基于 UML(统一建模语言)的图表,目的是直观地表示系统及其主要参与者、角色、动作、工件或类,以便更好地理解、更改、维护或记录信息关于系统。简而言之,UML 是一种现代的软件建模和文档化方法。事实上,它是最流行的业务流程建模技术之一。

  • 分类

UML图分为行为UML图和结构UML图两大类,前者分析和描述系统或流程的结构,后者则描述系统的行为、它的参与者和它的构建组件。

行为UML图包括:活动图、用例图、交互概览图、顺序图、状态图、通信图和时序图。

活动图:描述系统的动态行为,包括业务流程及其控制和数据流关系。活动图本质上是一种流程图。

用例图:描述系统的功能需求,包括参与者和用例及其交互关系。

交互概览图:描述多个交互图之间的关系。

顺序图:描述对象之间的交互顺序。

状态图:描述对象的状态及其转移条件。

通信图:描述对象之间的交互。

时序图:强调交互发生的时间顺序。

结构UML图包括:类图、对象图、组件图、复合结构图、部署图、包图和剖面图。

类图:描述系统中类的静态结构,包括类的属性和方法以及类之间的关系。

对象图:描述系统中对象的实例及其关系,是类图的实例化。

组件图:描述系统的物理结构,包括软件组件及其关系。

复合结构图:描述复杂结构的内部组织。

部署图:描述系统的硬件结构,包括节点及其通信关系。

包图:描述系统的模块结构及其依赖关系。

剖面图:描述系统的内部视图。

  • 描述

行为UML图

1、活动图

活动图

活动图的组成元素由初始节点、终止节点、活动和动作流、判断节点、合并节点、分叉节点和汇合节点、对象和对象流、泳道等组成。

1)初始节点和终止节点
初始节点,表示流程的开始。在UML活动图中,通常有一个初始节点,它没有任何入口,但有一个或多个出口,指向接下来的活动或决策节点。由一个实心球表示。
终止节点,表示流程的结束。终止节点没有任何出口,但有一个或多个入口。当流程到达终止节点时,表示整个活动图已经执行完毕。由一个半实心球表示。

2)活动和动作流
活动指执行特定动作,并在该动作完成之后向另一个状态转化,通常圆角方框表示,将表达的动作写在方框内。动作流连接活动,通常用实线箭头表示。

3)判断节点
判断节点也称为决策节点或条件节点,决策节点描述了一个触发事件在不同的触发条件下引起多个不同的转移,它有一个入口和多个出口,每个出口都关联一个条件。当流程到达决策节点时,会评估这些条件,并根据结果选择相应的出口,通常用菱形表示。

4)合并节点
合并节点主要用于将多个控制流合并,并统一导出到同一个离开控制流。这个节点没有时间和数据上的意义,也就是说,它不需要等待所有的进入控制流都完成,也不需要它们之间进行数据同步。合并节点的几个进入控制流之间是“或”的关系,只需要满足一个即可,不需要全部满足。
合并节点通常用菱形表示,至少有两个指向它的箭头,但只有一个由它发出的箭头指向其他动作或活动节点。

5)分叉节点和汇合节点
分叉节点用于将单一路径拆分为多个并发路径。分叉节点有一个入口和多个出口,流程到达分叉节点后,会同时沿所有出口执行。
汇合节点与分叉节点相反,用于将多个并发路径合并为一个单一路径。汇合节点有多个入口和一个出口,只有当所有入口都被激活时,流程才会继续执行到出口。

小tip:合并节点和汇合节点的主要区别是,合并节点更注重于将多个可能的路径合并成一个,而汇合节点则强调所有并发路径的同步完成。

6)对象和对象流
对象流表示对象在活动之间的传递,对象流可以表示输入到活动中的数据或活动产生的输出数据。它是可选的或必需的,这取决于它在活动中的重要性。对象通常用矩形表示,对象流连接对象和动作,通常用虚线箭头表示。

7)泳道
用于将活动图划分为不同的逻辑区域,每个区域代表一个参与者或责任方。泳道可以帮助清晰地展示不同参与者之间的交互和职责划分。

2、用例图

用例图

1)参与者,用小人表示
按官方文档的定义,参与者是在系统外部与系统交互的人或事物,可以是人、部门或系统。
产品面向的用户,也是在系统之外的参与者。
有时,系统内部也有一些人或对象,参与完成业务,这种称之为业务工人,并非参与者,需区分清楚。

2)用例,用椭圆表示
用例,表示参与者为完成某个目标的一系列活动。用例名称,以动宾短语出现,表示参与者做的事情。
用例是业务分析、需求分析、系统分析与设计过程的基本单位,粒度可大可小。
粒度的确定,一直是个难题,没有标准,只能根据实际情况分析。一个大型系统,可能会有上百个用例,一个小产品,也许只有几个用例。

这有 2 个经验供你参考:
完整性,一个用例是一个完整的使用场景,不是零散的动作步骤。比如,拿起手机刷微信是个完整的场景,拿起手机只是一个步骤。
独立性,一个用例有一个明确、独立的目标,如果一个用例包括多个目标,则可再逐层细化出子用例。

3)边界,用矩形表示
边界将系统内外分开,参与者在外面,用例在里面。边界内的用例,就是系统要实现的事情。
一个系统的好坏,常取决于边界是否清晰,即明确做什么,不做什么。边界内的事,是系统的任务;如没有特定条件推动,系统与外界没有联系。
设计产品时,一出现自相矛盾、疑惑的问题,往往可能是不知不觉偏离了最初的定位,跑到边界外部。
因此,做产品要多回归定位,检查产品有没有越界。一个好的产品,是界限分明的,做什么不做什么从不含糊。

4)关系,用常见的箭头连线
UML 中关系挺多的,常用的有关联、包含、扩展、实现四种。
关联关系,一般由参与者指向用例,意味着参与者发起用例。当然,也有少数情况,是用例指向参与者,如推送消息,是系统自动触发用户。
包含关系,指一个用例包含了子用例,由父用例指向子用例。请注意,父用例并不等于所有子用例之和,它的范围可以大于所有子用例。子用例是一定会执行的。
扩展关系,指一个用例在某种情况下需要完成特定活动,由扩展用例指向被扩展用例。与包含关系不同,扩展是特殊分支,在特定情况下才出现的支流,如电商的订单退款。
实现关系,连接用例与用例实现,表示一个用例可以有哪几种实现方式。

5)用例表,图形之外的文字补充
除了画图,UML 中用例图还会写用例表,以描述说明用例,内容包括用例名称、用例描述、参与者、前后置条件、基本流程等。

3、交互概览图

交互概览图

交互概述图是将活动图和顺序图嫁接在一起的图。

本质就是可以用交互图代替活动节点的活动图,每个单独的活动都可以被描绘为包含嵌套交互图的框架,是交互图和活动图的结合使用。
包含元素:
1)活动图的所有元素
2)交互元素
直接在矩形框里面绘制内嵌的交互图,并且在交互框上协商交互图的类型,然后直接在交互框里面绘制内嵌的交互图
3)交互发生
表示引用别的交互图,在交互框的标题上写上ref,在交互框里面写上引用的交互图的名字

绘制方法又两种

先用活动图描述主线活动,然后用顺序图(一般用顺序图,也可以是别的交互图)补充完善具体的活动节点。(一般用这种)
以顺序图为主,用活动图细化顺序图中某些重要的对象的活动描述。

交互概览图的细节可以使用时序图以外应该还可以用别的交互图来描述,比如通讯图,定时图,甚至是交互概览图。

4、顺序图

顺序图

顺序图主要包括四个元素:对象(object)、生命线 (lifeline)、激活 (activation)和消息(message)。
1)对象与生命线
顺序图中的对象与对象图中的概念一样,都是类的实例。顺序图中的对象可以是系统的参与在者或者任何有效的系统对象。对象的创建由头符号来表示,即在对象创建点的生命线顶部使用显示对象和类名的矩形来标记,二者用冒号隔开(即对象名:类名)这种格式。
在位置上,一个被放置于顺序图顶端的对象,意味着在这个交互开始之前,我们已经拥有这样一个对象了。如果一个对象出现在其他位置上(不在顶端),则说明这个对象是在交互执行到某些步骤的时候被创建出来的,被创建出来的对象可以在接下来的时间里被其他对象的消息所激活,也可以以同样的方式被销毁。
对象在其在顺序图中的生命周期表示为一条生命线。生命线代表了一次交互中的一个参与对象在一段时间内存在。具体地说,在生命线所代表的时间内,对象一直是可以被访问的—–随时可以发送消息给它

2)激活
激活,又称为控制焦点,表示一个对象执行一个动作所经历的时间段,既可以直接执行,也可以通过安排下级过程来执行。同时,激活可以表示对应对象在这段时间内不是空闲的,它正在完成某个任务,或正在被占用。一般来说,一个激活的开始应该是收到了其他对象传来的消息,这段激活会处理该消息,执行一些相关操作,然后反馈或者进行下一步消息传递。通常来说,一个激活结束的时候应该伴有一个消息的发出。
激活在UML中用一个细长的矩形表示,显示在生命线上。矩形的顶部表示对象所执行动作的开始,底部表示动作的结束。

3)消息
消息是从一个对象(发送者)向另一个对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。消息是对象和对象协同工作的信息载体,它代表了一系列实体间的通信内容。消息的实现有不同的方式,如过程调用、豆式地产:生一个事 件、活动线程间的内部通信等。例如,当某对象调用了另一个对象的一个操作时,就可以看作是两个对象之间通过发送消息来达成的。
发送信号和调用类的操作是相似的。他们都是两个对象之间的通信,以此来传递信息值,接收者所接受到的值来做出相应的反应,然而在现实层面上,信号和调用各自有不同的特性和细节行为,因此二者是不同的UML元素。
在顺序图中,消息表不为从一个对象的生命线指向另一个对絮的生命线的箭头。有些信息可能是从外部发来的。在不确定外部对象的类型时,也可以从图的边缘处引入箭头来表示外部消息。顺序图中不同生命线上的时标是相互独立的,所以箭头和生命线所成的角度不具有任何意义。对于某一对象发给自己的消息,箭头的起点和终点都是在同一条生命线上。消息按照时间顺序从图的顶部到底部垂直排列。如果一个收到信息的对象还没有被激活,那么这条消息将会激活这个对象。
最常见的消息是简单消息(又被称为顺序消息)。简单消息的图形表示也同样简单,只要用一个实心箭头就可以。简单消息表示控制流,可以泛指任何交互,但不描述任何通信信息当你的设计不需要复杂的消息类型,或者能很容易判断出顺序图中各个消息的消意类型时,为简单起见,你可以将所有的消息都画成简单消息。
在传送一个消息时,对消息的接收往往会产生一个动作。这个动作可能引发目标对象以及该对象可以访问的其他对象的状态改变。根据消息产生的动作,消息也有不同的表示在UML中,有以下几种主要动作:

调用:调用某个对象的一个操作。可以是对象之间的调用,也可以是对对象本身的调用,即自身调用或递归调用。调用属于同步机制,例如:当对象A发送消息调用对象B时,A会等待B执行完所调用的方法后再继续执行。在UML中使用一个头部为实心三角的箭头来表示调用

返回:返回消息不是主动发出的,而是一个对象接收到其他对象的消息后返回的消息。很多情况下一个消息的接收会要求一个返回,如果把所有对源消息的返回全部绘制在顺序图中,图将变的复杂难以阅读。所以仅需要绘制重要的返回消息。在UML中虚线箭头表示返回

创建:创建一个对象时发送的消息,在UML中使用具有<>构造型的消息表示

销毁:销毁一个对象(也允许对象销毁自身)。

5、状态图

状态图

状态图主要由五种元素组成,分别是状态、转换、事件、动作和活动。

状态:表示对象的生命周期中的一种条件/情况,有初态和终态之分
转换:表示两种状态间的一种关系
事件:表示在某一时间与空间下所发生的有意义的事情
动作:表示一个可执行的原子操作,是UML能够表达的最小计算单元
活动:表示状态机中的非原子执行,一般由一系列动作组成

6、通信图

通信图

通信图主要由活动者,对象,链接和消息组成。
对象:与顺序图中的对象的概念相同,都是类的实例。
链接:与对象图中的链的概念相同,是关联的实例,表示对象之间的结构关系。
消息:也与顺序图中的消息的概念相同,是从一个对象向其他对象发送信号,或由一个对象调用另一个对象的操作。但为了表明消息的时间顺序,通信图必须添加消息编号。

7、时序图

时序图

时序图中包括如下元素:角色,对象,生命线,激活,消息和组合片段。
角色:可以是人、机器、其他系统、子系统。用小人表示。
对象:表示系统的参与者或者任何有效的系统对象。用矩形表示。
生命线:代表时序图中的对象在一段时期内的存在。用一条垂直的虚线表示。
激活:表示时间段的符号,在这个时间段内对象将执行相应的操作。用一个窄长的矩形来表示,矩形的高度表示执行操作的活动期。
消息:是用来表示一个对象向其他一个或者多个对象发送信号,或者由一个对象调用另外一个对象的操作。
组合片段:用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。

结构UML图

1、类图

类图

类图是一种用于描述系统结构的图形化工具。它以类和对象为基础,主要用于表示系统中的类、接口、继承关系、关联关系等元素,以及它们之间的静态结构和关系。
UML中描述对象和类之间相互关系的方式包括:继承(泛化)、实现、依赖、关联、聚合、组合。

继承(泛化):是一种继承关系(is-a),表示一般与特殊的关系,它指定了子类如何特化父类的所有特性和行为。例如:老虎是动物的一种,既有老虎的特性也有动物的共性。
实现:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
依赖:是一种使用的关系,即一个类的实现需要另一个类的协助。如方法参数需要传入另一个类的对象,就表示依赖这个类。
关联:表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。程序中一个类的全局变量引用了另一个类,就表示关联了这个类,关联关系分为单项关联和双向关联。
聚合:是整体与个体的关系(has-a),且个体可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合是关联关系的一种,是强的关联关系;关联和聚合在语义无法区分,必须考察具体的逻辑关系
组合:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

2、对象图

对象图

对象图由对象、链接和属性值等要素构成,主要描述系统特定时间点的实例化信息。
对象:是UML对象图的核心构成要素,代表系统中的实体实例。对象用矩形表示,矩形内写明对象的名称和类名称,格式通常为对象名:类名。
链接(Link):表示对象之间的关联关系,通常用实线表示。
属性值(Attribute Value):表示对象的当前状态,即对象内属性的具体值。

3、组件图

组件图

组件图(Component Diagram)又称为构件图,他描述的是在软件系统中遵从并实现一组接口的物理的、可替换的软件模块。
组件图 = 构件(Component) + 接口(Interface) + 关系(Relationship) + 端口(Port) + 连接器(Connector)

组件图包含的元素:组件、接口、外部接口、连接器和关系组成。

4、复合结构图

复合结构图

同结构图+其他组合

5、部署图

部署图

一般由节点和连线组成。部署图描述的是靠节点完成,描述软件是如何在硬件上映射的以及网络的拓扑结构。

6、包图

包图

包图是一种维护和描述系统总体结构的模型,是表示顶层架构的机制。
包图主要由包、依赖关系、泛化关系、拥有(组成)关系组成。
包拥有的元素:类、接口、组件、节点、协作、用例、图以及其他包。
1)一个模型元素不能被一个以上的包所拥有。
2)如果包被撤销,其中的元素也要被撤销。
3)一个包形成了一个命名空间。
4)一个包的各个同类建模元素不能具有相同的名字;
5)不同包的各个建模元素能具有相同的名字,因为它们代表不同的建模元素;
6)同一个包内,不同种类的模型元素能够具有相同的名字。

引入(import):指允许一个包中的元素存取另一个包中的元素。
注意:输入依赖是单向的。
输出(export):包的公共部分,称为包的输出(Export)。包的输出只对另一个与它有输入依赖的包才是可视的、可取的。

7、剖面图

This entry was posted in 默认. Bookmark the permalink.