UML时序图详解

news2024/11/24 15:22:04

上篇文章,介绍了UML状态图,并通过visio绘制一个全自动洗衣机的UML状态图实例进行讲解。

本篇,来继续介绍UML中的另一种图——时序图。

1 时序图简介

时序图(Sequence Diagram),也叫顺序图,或序列图,是一种UML动态图。

UML具有许多不同类型的图表,包括:

  • 静态图:用例图、类图、包图
  • 动态图:活动图、状态图、时序图、协作图

时序图通过描述对象之间发送消息的时间顺序显示多个对象之间的交互模式

时序图将交互关系表示为一个二维图

  • 纵向是时间轴,时间沿竖线向下延伸;横向轴代表了在协作中各独立对象的类元角色。
  • 类元角色用生命线表示。当对象存在时,角色用一条虚线表示;当对象的过程处于激活状态时,生命线是一个垂直矩形
  • 消息用从一个对象的生命线到另一个对象生命线的箭头表示。
  • 箭头以时间顺序在图中从上到下排列。

2 时序图元素介绍

2.1 参与者

参与者,或称为系统角色,以一个小人图标表示。

2.2 对象

对象,以一个矩形表示,在一个系统中可以有多个对象。

2.3 生命线

生命线就是一条垂直的虚线。

2.4 激活

激活,也叫会话,或控制焦点,代表时序图中对象执行一项操作的时期, 表示该对象被占用以完成某个任务,以一个垂直的窄的矩形表示。

2.5 消息

2.5.1 (同步)消息

以一条实线和实心箭头表示。

消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。

2.5.2 返回消息

以小于号和虚线表示。

返回消息表示从过程调用返回。

2.5.3 异步消息

以一条实线和大于号表示。

消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。

2.5.4 自关联消息

以一个半闭合的长方形+下方实心剪头表示。

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。

2.6 片段

2.6.1 选择片段

选择片段,或称条件分支,可根据不同的条件,执行不同的交互,类似于if-else语句

2.6.2 循环片段

表明该片段会被重复执行,类似于while或for语句

2.6.3 并向片段

2.6.4 片段总结

片段的功能,除了上面介绍的选择、循环和并向、还有许多其它类型,这里详细列举一下,作为参考:

片段类型名称说明
Alt选择在一组行为中根据特定的条件选择某个交互
Loop循环交互片段会被重复执行
Par并行支持交互片段的并发执行
Opt选项表示一个可选的行为
Break中断提供了和编程语言中的break类拟的机制
Seq弱顺序有两个或更多操作数片段,如果消息涉及的生命线不同,会并行交错
Strict强顺序有两个或更多操作数片段,这些片段必须按给定顺序发生

默认情况下,序列图表明可能发生的一系列消息。在运行的系统中,可能会出现您未选择显示在关系图上的其他消息。

以下片段类型可用于更改此释义:

片段类型名称说明
Consider考虑明确标志了应该被处理的消息
Assert断言标志了在交互片段中作为事件唯一的合法继续者的操作数
Neg否定用来标志不应该发生的交互
Ignore忽略明确定义了交互片段不应该响应的消息

3 visio绘制UML时序图

3.1 visio创建时序图

新建一个visio文件,打开后会自动提示选择创建某种类型的图,这里选择"软件和数据库 ->UML序列"

点击确定之后,会进入UML时序图的编辑界面,左侧可以看到用于UML时序图编辑的基本元素,将这些元素拖拽到右侧的编解面板中,可以看到这些元素的基本结构形式:

注意visio中的生命线绘图元素,实际上包含了参加者元素或对象元素,所以命名为了参与者生命线和对象生命线

3.2 时序图实例

下面通过一个实例来介绍一下UML时序图的画法。

这是一个嵌入式开发中,常见的对物联网设备进行配网的操作流程,配网的方式有很多,具体可看之前的文章:【图解】物联网设备的N种Wi-Fi配网方式,这个时序图是其中的一种配网方式——设备热点配网。

解读一下此时序图:

  • 参与者(主角)是用户,因为是用户触发了整个流程的执行
  • 对象有3个:手机上的APP程序、待连网的物联网设备、WiFi路由器
  • 配网的时序逻辑为:
    • 用户按下设备的配网按钮,设备开启一个热点,并广播自己的热点信息(热点名称和密码)
    • 用户在APP上输入WiFi路由器的名称和密码(用于后续发给设备)
    • 用户操作APP,连接上设备的热点,然后把WiFi路由器的名称和密码发给设备
    • 设备收到WiFi路由器的名称和密码后,尝试连接路由器,配网成功

本时序图中,暂未体现出片段的用法,以后有能用到片段用法的例子再举例分析。

3.4 visio中框图不能调节宽度解决

在用Visio绘制UML时序图,使用“交互操作数”时,可能遇到宽度被锁定不能调节的问题,解决方法如下:

步骤一:文件----选项----高级----常规-----勾选“以开发人员模式运行”

步骤二:菜单栏出现“开发工具”选项,点击受保护框图,取消宽度的保护

4 总结

本篇介绍了UML时序图的基础知识,并通过visio绘制一个物联网设备WIFI配网的UML时序图实例,来介绍UML时序图的画法与所表达的含义。

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

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

相关文章

基于SpringBoot的招聘信息管理系统设计与实现

前言 本次设计任务是要设计一个招聘信息管理系统,通过这个系统能够满足管理员,用户和企业的招聘信息管理功能。系统的主要功能包括首页、个人中心、用户管理、企业管理、工作类型管理、企业招聘管理、投简信息管理、面试邀请管理、求职信息管理、社区留…

银行数字化转型导师坚鹏:银行数字化转型的5大发展趋势

银行数字化转型的发展趋势主要包括以下5个方面: 从过去的局部数字化转型向全面数字化转型转变:2022年1月,中国银保监会发布《关于银行业保险业数字化转型的指导意见》,标志着中国银行业的数字化转型已经不是过去银行自己主导的局…

简单理解正向代理和反向代理

上一篇文章说到反向代理是用来做负载均衡的,同时我就想到了那么正向代理是不是也可以说一说,可能还是有很多人是弄不清他俩的区别是什么的吧? 那么本次文章就用借钱的例子来阐述一下什么是正向代理,什么是反向代理 正向代理 正…

Android系统的问题分析笔记(4) - Android设备硬件基础

问题 典型的Android手机/平板硬件架构是怎么样的? 1 典型Android手机/平板硬件架构图 2 基带处理器 (Baseband Processor) 市场上大多数的手机采用了相互独立的处理单元来分别处理用户界面软件和射频功能。即:应用处理器 (Application Processor&#…

5年积淀,Mapmost打造连接无限的数字孪生平台

数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完成映射,从而反映相对应的实体装备的全生命周期过程。在“数字中国”、“实景中国”战略指导下,数字孪生…

【Redis】IO多路复用机制

IO多路复用的概念 IO多路复用其实一听感觉很高大上,但是如果细细的拆分以下, IO:网络IO,操作系统层面指数据在内核态和用户态之间的读写操作。 多路:多个客户端连接(连接就是套接字描述符,即Socket) 复用&…

什么是零知识证明?

零知识证明(Zero Knowledge Proof,以下简称ZKP)是一种加密学中的重要技术,它可以让一个人向另一个人证明某个事情是真的,而不需要透露这个事情的具体内容,即不需要泄露任何信息。ZKP 技术可以在不牺牲隐私的…

难见的oracle 9i恢复---2023年----惜分飞

时过境迁,以前恢复大量oracle 8/9版本的库,现在一套oracle 9i的库都比较稀奇了.今天恢复客户一套9.2.0.6的aix环境rac库,通过分析确认主要问题: 1. 重建控制文件,resetlogs库遗漏数据文件 2. 数据库启动主要报错ORA-600 2663和ORA-600 kclchkblk_4 Tue Nov 8 09:…

Python dshelper:动动鼠标,搞定数据探索!

本次分享一个Python数据探索小工具dshelper,适合快速查看数据基本特征、数据可视化等使用场景。 无需代码,自动完成数据集描述统计; 无需代码,界面点鼠标绘制多种统计图: 支持命令行、jupyter notebook、docker三种…

RK3588平台开发系列讲解(进程篇)Linux 进程的数据结构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、Linux 进程的数据结构二、创建 task_struct 结构三、Linux 进程地址空间四、Linux 进程文件表沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍 Linux 如何表示进程。 一、Linux 进程的数据结构…

Java测试:OJ练习(字符串合并后返回按照先后顺序排列的不重复新字符串、合并数组并按升序排列、Arrays 类中的sort方法)

1、给定一个长度为n的字符 串,字符串中只包含大小写字母。 请你返回该字符串拥有那些字符。 并将它们按照出现的先后!顺序拼接成一个新的字符串。 这是我最开始写的,代码有点问题: public String setString(String str) {char[]…

文本三剑客之——Awk

Awk Awk简介Awk语法格式Awk常见内置变量Awk实例演示按行输出文本BEGIN模式和END模式按字段输出文本通过管道,双引号调用shell命令date 的用法getline的用法awk数组 Awk简介 Awk是一个功能强大的编辑工具,用于在Linux/UNIX 下对文本和数据进行处理。数据…

代码随想录算法训练营第六天|242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

哈希表的表示方式:数组、set、map 数组:范围可控的情况下,可以用数组 set:哈希值较大的情况下,或数值分布很分散的情况 map:key 和 value对应的情况下 能用数组尽量用数组,因为数组会比较快&…

Netty内存管理

关键概念 PoolArena——内存管理的统筹者 PoolArena是内存管理的统筹者。它内部有一个PoolChunkList组成的链表 PoolChunkList——对PoolChunk的管理 PoolChunkList内部有一个PoolChunk组成的链表。通常一个PoolChunkList中的所有PoolChunk使用率(已分配内存/ChunkSize)都在…

机器学习算法分类

机器学习常用算法的分类: 根据数据集组成不同,可以把机器学习算法分为: 监督学习无监督学习半监督学习强化学习 1、监督学习 - 定义: - 输入数据是由输入特征值和目标值所组成 - 函数的输出可以是一个连续的值(称为回…

【文本三剑客】AWK

AWK 一、AWK的工作原理1.1命令格式1.2awk常见的内建变量 二、awk实验2.1按行输入文本2.2按字段输出文本2.3通过管道符、双引号调用shell命令 一、AWK的工作原理 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中&…

银行数字化转型导师坚鹏:银行数字化转型面临的5大机遇与4大挑战

在机遇方面,主要面临以下5大机遇: 国家战略及政策机遇:乡村振兴战略、制造强国战略、绿色金融战略等战略的落实将会给银行数字化转型带来新的业务机遇,《中国银保监会关于推动银行业和保险业高质量发展的指导意见》、《关于银行业…

第五章 面向对象-4abstract抽象

1.4 abstract class抽象类 声明抽象类&#xff0c;使用关键字abstract //内部匿名类 Db db new Db(){ };3.了解抽象类 抽象方法 AbstractClassMain.java /** Copyright (c) 2017, 2023, zxy.cn All rights reserved.**/ package cn.practice2;/*** <p>Description:&…

Chatgpt中文版无需代理,ChatGPT镜像

Chatgpt中文版无需代理 网站ChatGPT中文版 ChatGPT中文版是一个基于人工智能技术的聊天机器人&#xff0c;它可以模拟人类的自然语言交互&#xff0c;回答用户的各种问题和提供各种服务。它的核心技术是GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型&am…