UML 总结(基于《标准建模语言UML教程》)

news2024/11/22 12:09:49

定义

        UML 又称为统一建模语言或标准建模语言,是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。尽管UML 本身没有对过程有任何定义,但UML 对任何使用它的方法(或过程)提出的要求是:支持用例驱动、以架构为中心、递增和迭代的开发

UML 目标

UML 架构

        UML是由图和元模型组成的。图是UML 的语法,而元模型则给出图的意思,是UML 的语义。UML的语义是定义在一个四层建模概念框架中的,这四层分别是:元元模型层、元模型层、模型层、用户模型层。

UML 三要素

        UML 组成的三要素包括基本构造块、图、运用于整个语言的公共机制;(基于软考架构设计官方教材)

  • 基本构造块包括:事物与关系;
    • 四种事物包括:结构事物、行为事物、分组事物、注释事物
      • 结构事物:是UML 模型中的名词。它们通常是模型的静态部分,描述概念或物理元素
        • 包括:类(Class)、接口(Interface)、协作(Collaboration)、用例(UseCase)、主动类(Active Class)、构件(COmponent)、制品(Artifact)、结点(node)。
      • 行为事物:是UML 模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。
        • 包括:交互(Interaction)、状态机(State Machine)和活动(Activity)。

UML 与 4+1视图

        UML 是用来描述模型的,它用模型来描述系统的结构或静态特征、以及行为或动态特征。它从不同的视角为系统的架构建模,形成系统的不同视图,包括:用例视图(场景)、逻辑视图、并发视图、组件视图、物理视图

  • 展开视图(环境模型视图)(物理视图):体现了系统实现环境的结构和行为特征

UML2.0定义的视图种类及其分类

        UML2.0 定义了13种图(基于软考架构设计官方教材)包括:

类图、对象图、用例图、状态图、活动图、构件图、部署图、组合结构图、包图、序列图、通信图、交互概览图、计时图

UML 图分类

用例图

定义

        用例图是静态模型,是用户与系统交互的最简表示形式,展现了用户和他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。

元素构成

  • 系统边界:使用一个矩形框表示一个系统,并将系统的名称放在顶部。在矩形内的所有东西都属于这个系统,而在矩形外的任何东西都能够使用这个系统
  • 注释:

  • 用例规约:用例图只是在总体上大致描述了系统所提供的各种服务,让人们对系统有一个总体的认知。但对于每一个用例,还需要详细地描述信息,以便让别人对于整个系统更加详细的了解,这些信息包含在"用例规约"中

用例规约包括:简要说明、事件流、用例场景、特殊需求、前置条件、后置条件

  1. 简要说明:简要说明是指对用例作用和目的的简要描述
  2. 事件流:事件流包括基本流和备选流。基本描述的是用例的基本流程,是指用例”正常“运行时的场景。备选流描述的是用例执行过程中可能发生的异常和失败场景。
  3. 用例场景:同一个用例在实际执行的时候会有很多不同的情况发生,称之为用例场景,也可以说用例场景就是用例的实例,用例场景包括成功用例和失败场景
  4. 特殊需求:特殊需求是指一个用例的非功能性需求和设计约束。特殊需求通常是非功能性需求,包括可靠性、性能、可用性和可拓展性等。
  5. 前置条件:前置条件是指执行用例之间系统必须所处的状态。例如,前置条件是要求用户有访问的权限,或是要求某个用例必须已经执行完。
  6. 后置条件:后置条件是指用例执行完毕后系统可能处于的一组状态。例如,要求在某个用例执行完成后,必须执行另一个用例。

关联关系

  •  关联关系:使用一根实线连接参与者和用例,表示参与者和用例在进行一种基本的交流或互动。
  • 包含关系(include):包含关系当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享
    • 使用一根带有箭头的虚线,由基本用例指向包含用例
  • 拓展关系(extend):拓展关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。
    • 使用一根带有箭头的虚线,由拓展用例指向基本用例
  • 泛化关系(generalization):使用一个带实线的三角形空心箭头来表示泛化关系,三角形箭头由子指向父。子参与者继承父参与者的所有关系、子用例继承父用例的所有结构、行为和关系

类图

定义

        类图是显示了模型的静态结构,特别是模型中存在的类,类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。

表示方法

作用

关联关系

对象图

定义

        对象图是一种结构图,用于展示系统中对象之间的静态关系。对象图显示了系统中的对象实例以及它们之间的关系,通常用于详细描述类图中的类和实例。

        对象图是类图在某一时刻的实例,是一个系统的具体状态在某一时刻的快照。

作用

状态图

定义

作用

元素构成

状态

        状态主要用于描述一个对象在生命周期内的一个时间段。状态包括状态名,内部转移,进入/退出操作、子状态、延迟的事件等状态的特征。

  • 初态:
    • 显示状态图中状态执行的开始,用一个实心原型表示。
  • 选择状态:
    • 条件分支上方括号内的文字表示监护条件,用一个棱形形表示。
  • 组合状态
    • 含有子状态的状态被称为组合或嵌套状态
    • 两种表示方法
      • 顺序子状态:如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,即多个子状态之间是互斥的,不能同时存在,这种子状态称为顺序子状态。
      • 并发子状态:有时组合状态有两个或者多个并发的子状态机,此时称组成状态的子状态为并发子状态。
      • 顺序子状态与并发子状态的区别在于后者在同一层次给出两个或多个顺序子状态,对象处于同一层次中来自每个并发子状态的一个时序状态中。
  • 历史状态:使用历史状态,可以存储目前退出组合状态时所处的子状态,则返回组合状态时可以直接回到相应的子状态。
转换

        转换是两个状态之间的关联,表示对象在第一状态中执行一定的动作,并在某个特定事情发生并且某个特定的条件满足时进入下一个状态。

  • 转换的组成
    • 源状态(source State):源状态就是被转换影响的状态。某对象处于源状态,当它接收到触发事件或满足监护条件,就会激活一个转换。
    • 目标状态(Target State):转换完成后,对象状态发生变化,这时对象所处的状态就是转换的目标状态。
    • 触发事件(Trigger):引起转换的事件,这里所指的事件可以是信号、调用、时间段或状态的一个改变。
    • 监护条件(Guard):是一个方块括起来的布尔表达式,它被放在触发事件的后面。监护条件可以引用对象的属性值和触发事件的参数
    • 结果(Effect):对象状态转移后的结果。
  • 一般转换:一般情况下的状态转换是两个不同状态之间的转换。
  • 自身转换:自身转换是指状态可以有返回自身状态的转换
事件
  • 事件的表达式:事件名(参数表)[监护条件]/动作表达式^发送子句
同步条

        在并发状态机中,同步条用于表示多个控制流必须同时到达某个点才能继续执行。

序列图

定义

        时序图,也叫顺序图,或序列图,是一种UML 动态图;时序图通过描述对象之间发送消息的时间顺序显示多个对象之间的交互模式

作用

元素构成

  • 参与者:或称为系统角色,以一个小人图标表示。
  • 对象:以一个矩形表示,在一个系统中可以有多个对象
  • 生命线:生命线就是一条垂直的虚线
  • 激活:也叫会话,或控制焦点,代表时序图中对象执行一项操作的时期,表示该对象被占用以完成某个任务,以一个垂直的窄的矩形表示。对象激活就是在激活条的顶部激活。
  • 片段

片段类型

名称

说明

Alt

选择

Alt片段组合可以理解为if…else if…else条件语句。

Loop

循环

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

Par

并行

Opt

选项

包含一个可能发生或不发生的序列。Opt相当于if…语句。

Break

中断

配合Loop 使用,循环中返回

Seq

弱顺序

Strict

强顺序

协作图(通信图)

定义

作用

元素构成

活动图

定义

        活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。

作用

元素构成

  • 起点和终点
    • 在UML中,活动图的起点用来描述活动图的开始状态,用黑的实心圆表示。活动图的中止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。
  • 组合活动
    • 组合活动是一种内嵌活动图的状态。我们把不含内嵌活动或动作的活动称为简单活动,把嵌套了若干活动或动作的活动称为组合活动。
  • 分叉与结合
    • 分叉表示将一个控制流分成两个或多个并发运行的分支,结合用来表示并行分支在此得到汇合。
  • 分支与合并
    • 在UML 活动图中,分支与合并都是用空心的菱形表示的。分支有一个输入箭头和两个输出箭头,而合并有两个输入箭头和一个输出箭头。
  • 泳道
    • 为了对活动图的职责进行组织而在活动图中将活动状态分为不同的组,成为泳道。每个泳道代表了特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确的表示了哪些活动是由哪些对象进行的。每个泳道都有一个与其它泳道不同的名称。

组件图(构件图)

定义

元素构成

  • 端口:端口是UML2.0 引入的概念;端口描述了在构件与它的环境之间以及在构件与它的内部构件之间的一个显示的交互点

关联关系

  • 依赖关系:通过带箭头的线条表示,箭头指向被依赖的组件或接口。
  • 实现关系:通过带空心三角形的线条表示,三角形指向接口。

部署图

定义

作用

元素构成

包图

定义

        包被描述成文件夹,可以用于UML 任何一种图上。它是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包之间关系的描述,展现出系统的模块与模块之间的依赖关系。一个包图可以由任何一种UML 图组成,通常是UML 用例图或者是UML 类图。包图只是把某些类放在一个包中,因此可以看作是类图的一种。

作用

关联关系

包的设计原则

        包的设计原则包括:重用等价、共同重用、共同封闭、无循环依赖、稳定依赖

组合结构图

定义

        组合结构图是一种静态结构图,可以表示一个类的内部成员对象之间的相互关系,是对传统类图的一个补充

元素构成

交互概览图

定义

  • 一个交互概览图是活动图的一种形式,它的节点代表交互图。交互图包含时序图,通信图,交互概览图等。大多数交互概览图标注与活动图一样。例如:起始,结束,判断,合并,分叉和结合节点是完全相同。并且,交互概览图介绍了两种新的元素:交互发生和交互元素。
  • 交互概览图将活动图中的动作改为交互概览图的交互关系。
  • 交互概览图将系统工作流中的每个过程使用时序图或通信图来描述,并通过箭头和判定决策点将这些模型联系起来,构成一个完整的工作流。

元素构成

交互概览图的形式

  • 以活动图为主线,并用顺序图表述细节;
    • 如果你是对工作流进行建模,那么应该先采用活动图来表示工作流的活动控制流,然后再通过顺序图来描述其中一些活动节点的对象控制流,阐述更多实现细节;
  • 以顺序图为主线,并用活动图表述细节
    • 如果你是在为代码的设计、实现进行建模,那么可以先通过顺序图理清对象之间的控制流;然后再通过活动图来表示某些重要的方法、调用的算法流程。

UML图对比

类图与对象图的区别

类图

对象图

在类中包含三个部分:类名,类的属性和类的操作

对象包含两个部分:对象的名称和对象的属性

类的名称栏只包含类名

对象的名称栏包含“对象名”:“类名”

类的属性栏定义了所有的属性特征

对象的属性栏定义了属性的当前值

类中列出了操作

对象图中不包含操作内容,因为对象属于同一个类的对象,其操作是相同的

类中使用了关联连接,关联中使用名称,角色以及约束等特征定义

对象使用链进行连接,链中包含名称,角色

类代表的是对象的分类所以必须说明可以参与关联的对象的数目

对象代表的是单独的实体,所有的链都是1对1的,因此不涉及到多重性

动态图对比

图形

特点

主要区别

顺序图

  1. 展示用例中的行为顺序和对象之间的交互
  2. 强调消息在对象间的发送和接收顺序
  3. 消息按时间顺序从上到下排列
  4. 显示对象实例及生命周期

注重时间顺序,消息如何在对象间发送和接收

协作图

  1. 展示对象之间的关系和交互
  2. 强调对象之间的链接和协作
  3. 使用编号显示消息发送的顺序

注重对象关系和协作,而不是时间顺序

状态图

  1. 展示对象在其生命周期内的状态变化
  2. 描述不同状态之间的转换条件和事件
  3. 强调对象从创建到销毁的整个生命周期中的状态

专注于对象状态变化和转换条件,不关注具体的交互细节

活动图

  1. 展示系统内的业务流程和控制流
  2. 描述各个活动和动作的顺序
  3. 可以表示并发活动和分支流程

强调流程控制和业务流程,适用于描述复杂的工作流程和并行处理

协作图与时序图的对比

特性

时序图

协作图

侧重点

时间顺序

对象关系

显示内容

消息传递的先后顺序和时间线

对象之间的链接和消息传递路径

处理复杂性

适用于复杂的交互场景

适用于简单的交互过程

主要元素

角色、对象、生命线、控制焦点、消息

对象、链接、消息

应用场景

适用于分析复杂的交互场景和系统的动态行为,帮助开发人员理解事件发生的顺序和系统的时间行为

适用于描述对象如何协作完成某个任务,帮助开发人员了解对象间的链接和交互方式,尤其适用于简单的交互过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2224550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【含开题报告+文档+PPT+源码】基于vue框架的东升餐饮点餐管理平台的设计与实现

开题报告 在当前信息化社会背景下,餐饮行业正经历着由传统线下服务模式向线上线下深度融合的转变。随着移动互联网技术及大数据应用的飞速发展,用户对于餐饮服务平台的需求也日益多元化和个性化。他们期望能在一个集便捷、高效、个性化于一体的平台上完…

自动化测试工具Ranorex Studio(十六)-添加新Action

在Action表中,有两种手动添加action的方式。 一种方法是指定Action本身(’添加新Action’),然后分配对应的对象库条目(在多数情况下)。 第二种方法是直接把对象库条目拖放到Action表内,然后生成…

力扣 中等 2466.统计构造好字符串的方案数

文章目录 题目介绍题解 题目介绍 题解 题意:每次可以爬 zero 或 one 个台阶,返回爬 low 到 high 个台阶的方案数。 和上题337.组合总和 (链接)的思路一样,只不过是将可以爬的台阶数从数组换成了两个数(ze…

视频美颜平台的搭建指南:基于直播美颜SDK的完整解决方案

众所周知,直播美颜SDK是实现视频美颜功能的核心。本文将详细解析如何基于直播美颜SDK搭建一个完整的视频美颜平台。 一、视频美颜SDK的核心功能 直播美颜SDK作为平台的技术核心,能够提供丰富的美颜效果和稳定的视频处理能力。通常,SDK具备以…

iOS AVAudioSession 详解【音乐播放器的配置】

前言 在 iOS 音频开发中,AVAudioSession 是至关重要的工具,它控制着应用的音频行为,包括播放、录音、后台支持和音频中断处理等。对于音乐播放器等音频需求强烈的应用,设计一个合理的 AVAudioSession 管理体系不仅能保证音频播放…

RabbitMQ是一个开源的消息代理和队列服务器

RabbitMQ是一个开源的消息代理和队列服务器,它基于AMQP(Advanced Message Queuing Protocol,高级消息队列协议)协议实现,同时也支持其他消息协议如STOMP、MQTT等。作为一个可靠的消息传递服务,RabbitMQ在分…

青少年CTF平台的基础题writeup

青少年CTF平台 1、文章管理系统 首先他这里有一个问号id,就想着使用mysql跑一下,但是windows的sqlmap很不给力,都不动,所以我后面换成了kali机来跑 跑一下就跑出了好多的数据库 第一次我使用ctftraining不出货,跑的一…

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 一 标定板的制作生成标定的PDF文件PDF转为图像格式图像加载到仿真中 二 仿真场景设置加载机器人加载的控制dummy ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b48549d355d8441d8dfc20bc7ba7196…

【K8S系列】Kubernetes Pod节点CrashLoopBackOff 状态及解决方案详解【已解决】

在 Kubernetes 中,Pod 的状态为 CrashLoopBackOff 表示某个容器在启动后崩溃,Kubernetes 尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍 CrashLoopBackOff 状态的原因、解决方案及相关命令的输出解释。 …

.NET Core WebApi第1讲(概念):Web基础、AJAX、JQuery

动态页面:数据流动 / Web服务器 / Ajax / 前后端分离 / restful风格源栈课堂一起帮https://17bang.ren/Code/261 一、Web基础 二、AJAX诞生 三、JQuery

ctfshow(262,264)--反序列化漏洞--字符串逃逸

Web262 源代码: index.php: error_reporting(0); class message{public $from;public $msg;public $to;public $tokenuser;public function __construct($f,$m,$t){$this->from $f;$this->msg $m;$this->to $t;} }$f $_GET[f]; $m $_GET[m]; $t $_…

虚拟现实新纪元:VR/AR技术将如何改变娱乐与教育

内容概要 在当今科技飞速发展的时代,虚拟现实(VR)和增强现实(AR)技术不仅让我们的娱乐体验如虎添翼,更为教育变革注入了新活力。这些技术的飞跃进展,将原本平淡无奇的场景转变为令人沉醉的沉浸…

HICP--2

在area 0的路由器只生成 area 0 的数据库,只在area 1 的一样。但是既在又在的生成两个 area的 LSDB 一、区域间三类LSA 在OSPF(Open Shortest Path First)协议中,区域间三类LSA(Link-State Advertisement&#xff09…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第七篇-体积纹理绘制】

我们前几篇已经完成了渲染部分,现在终于开始做动态绘制功能了 之前使用的是这样一个体积雾的切片图,那么现在要做的就是动态编辑它 首先,让我们简单了解一下它是如何运作的: 开始绘制画布以渲染目标,并将材质绘制到画…

Python字幕滚动:为视频添加专业级动态效果!

Python实现由下向上滚动字幕 在数字媒体和编程领域,动态文本效果总能吸引观众的注意力。其中,滚动字幕是一种常见的视觉效果,经常用于视频、演示文稿和网页中。在Python中,我们可以通过多种方式来实现滚动字幕效果,比…

《2024中国泛娱乐出海洞察报告》解析,垂直且多元化方向发展!

随着以“社交”为代表的全球泛娱乐市场规模不断扩大以及用户需求不断细化,中国泛娱乐出海产品正朝着更加垂直化、多元化的方向发展。基于此,《2024中国泛娱乐出海洞察报告》深入剖析了中国泛娱乐行业出海进程以及各细分赛道出海现状及核心特征。针对中国…

qt QMediaPlaylist

QMediaPlaylist 是 Qt Multimedia 模块中的一个类,用于管理媒体文件的播放列表。它提供了一种方便的方式来组织和控制多媒体内容的播放,如音频和视频文件。 主要方法 QMediaPlaylist(00bject *parent nullptr):构造一个新的媒体播放列表对象。void add…

什么是分库分表?为什么要分库分表?什么时候需要分库分表?怎么样拆分?(数据库分库分表详解)

文章目录 1、什么是分库分表?1.1、分库分表的概念1.2、分库分表的方式1.2.1、垂直分库1.2.2、垂直分表1.2.3、水平分库1.2.4、水平分表 2、为什么要分库分表?3、什么时候需要分库分表?4、分库分表的数据路由4.1、数据路由的目的4.2、数据路由…

2024数学分析【南昌大学】

计算极限 lim ⁡ n → ∞ 2024 n ( 1 − cos ⁡ 1 n 2 ) n 3 1 + n 2 − n \mathop {\lim }\limits_{n \to \infty } \frac{{\sqrt[n]{{2024}}\left( {1 - \cos \frac{1}{{{n^2}}}} \right){n^3}}}{{\sqrt {1 + {n^2}} - n}} n→∞lim​1+n2 ​−nn2024 ​(1−cosn21​)n3​ …

桥接模式,外界与主机通,与虚拟机不通

一 二 在此选择Windows与外界连接的网卡,通过有线连就选有线网卡,通过无线连就选无线网卡。 三 如果需要设置固定IP,则选择"Manual"进行设置。我这边根据实际需要,走无线的时候用DHCP,走有线的时候设固定IP…