UML—时序图是什么

目录

前言:

什么是时序图:

时序图的组成元素:

1. 角色(Actor)

2. 对象(Object)

3. 生命线(LifeLine)

4. 激活期(Activation)

5. 消息类型(Message)

6.组合片段(Combined fragment)

时序图的绘制规则:​

绘制时序图的3步:

1.划清边界,识别交互语境

2.梳理角色和对象

3.添加消息

单点登录时序图:

 总结:


前言:

时序图作为常用的UML交互图,可以直观传达系统内外之间的交互过程,经常用在详细设计文档中。
经常有人玩笑说,想判断一个产品经理的逻辑能力,让他画一个流程图或时序图就知道了,原因是你必须在对业务了解的基础上,抽象出业务各个环节的交互,区分业务涉及的各个对象的边界,才能画出一张完整的流程图或时序图,所以时序图是产品经理,也是程序员的必备技能之一。
它的使用场景非常广泛,几乎各行各业都可以使用,用于梳理业务流程,使业务看起来非常清晰,也可以梳理开源软件,梳理各个组件之间的关系,层次非常清楚,便于记忆,也可以使用在更多场景。

什么是时序图:

时序图(Sequence Diagram)是一种UML(Unified Modeling Language)图表,用于描述系统中对象之间的交互行为。时序图可以显示对象之间的消息传递顺序,以及对象之间的协作和通信方式。时序图通常用于描述系统的动态行为,例如,用户与系统之间的交互、对象之间的交互等。

时序图的组成元素:

1. 角色(Actor)

系统角色,可以是人或者其他系统和子系统,以一个小人图标表示。

5272c72ce020451c978302441208df75.png

2. 对象(Object)

2296051179194259b25ef423a3230935.png

2.1对象的三种命名方式:

de266ad6f20f4b649b7267f30662445f.png
1.对象名和类名。例如:531b009ae5cf4537aafd27dcc3b12991.png(汉堡):070f2f7e31af4c54a0fb9432a840cfd8.png(汉堡):。在时序图中,用"对象:类"表示:
2.只显示对象,不显示类名。例如::吃6a373e1d717d49c7b01f4a792115a460.png(汉堡),在时序图中,用“对象”表示。
3.只显示类名,不显示对象名。例如:cd53c425669f4060bf34ec0eacec9a39.png(汉堡):,在时序图中,用“类名:”表示。

2.2命名方式的选择:

三种命名方式都可以,选择最容易让阅读该时序图的人理解的命名方式。

2.3对象的排序顺序

时序图中对象的左右顺序并不重要,但为了使时序图清晰简洁,应遵循以下两个原则:

  1. 将交互频繁的对象尽可能靠拢。

  2. 将初始化整个交互活动的对象放置在最左端。

3. 生命线(LifeLine)

时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线),以一条垂直的虚线表示。对象间的消息存在于两条虚线间。

beaf34fa8a3449b2be8563e6643ee1ae.png

4. 激活期(Activation)

表示一个对象执行一个动作所经历的时间段,一般情况下,当一个对象收到其它对象发送的消息称时时会被激活,在激活期内处理消息,激活结束时应发送一个消息

f64b3c9fac4f4b08bd1615efcdd969e6.png

5. 消息类型(Message)

14502a9bd9e94e038881b9846a8260c1.png

1.简单消息

简单消息可以泛指对象之间的任何消息的调用或发送,而不用关系是异步还是同步

2.同步消息

是指在发送消息时,程序必须等待接受者的相应,才可以执行。同步消息通常使用返回值或异常来表示相应的消息。

3.异步消息

是指发送消息之后,程序可以执行,不需要等待接收者的相应。异步消息通常使用回函数或事件来处理相应结果

4.自反消息

是简单消息的一种,只能是对象像自己发送消息,而不能给其它对象发送消息

6.组合片段(Combined fragment)

片段类型

名称

说明

Opt

选项

包含一个可能发生的序列。可以在临界中指定序列发生的条件

Alt

抉择

包含一个片段列表,这些片段包含消息序列,在任何情况下只发生一个序列

可以在每个片段中设置一个临界来指示该片段可以运行的条件,else的临界指示其他任何临界都不为True时运行的片段,如果所有临界都为False并且没有else,则不执行任何片段

LOOP

循环

片段重复一定次数,可以在临界中指示片段重复的条件

Loop组合片段具有"Min"和"Max"属性,它们指示片段可以重复的最小和最大次默认值是无限制的

Break

中断

如果执行此片段,则放弃序列的其余部分,可以使用临界来指示发生中断的条件

Par

并行

并行处理。片段中的时间可以交错

Critical

关键

用在Par或Sep片段中。指示片段中的消息不得与其他消息交错

Sep

弱顺序

有两个或更多操作数片段,设计用一生命线的消息必须以片段的顺序发生,如果消息设计的生命线不同,来自不同片段的消息可能并行交错

Strict

强顺序

有两个或更多操作数片段,这些片段必须按给定顺序发生

Consider

考虑

指定片段描述的消息列表,其他消息可发生在运行的系统中,但对此描述来说意义不大

在"Messages"属性来键入该列表

Ignorre

忽略

此片段未描述的消息列表,这些消息可能发生在运行的系统中,但对此描述来说意义不大

在"Messages"属性中不能键入该列表

Assert

断言

操作数片段指定唯一有效的序列,通常在Consider或Ignore片段中

Neg

否定

此片段:中显示的序列不得发生。通常用来Consider或Ignore片段中

时序图的绘制规则:
20d3cbe62de94e2d8848b3ac7a97581e.png

绘制时序图的3步:

1.划清边界,识别交互语境

即界定好自己所要画的时序图的范围,了解所要画的时序图的前提和背景。
比如“学生信息管理”就是所要绘制的时序图的交互内容,就不需要往上延伸到学生注册并认证身份,不需要用户登录,也不需要往下延伸到查询课表、资料下载等无关的内容上。

2.梳理角色和对象

在”学生信息管理的时序图”中校色有学生/教务用户,对象有教务界面,学生信息界面、管理学生信息界面、数据库.
注意的是:角色和对象都是名词,动词不可以作为角色和对象

3.添加消息

从触发整个交互的某个消息开始,在生命线之间,从上到下一次画出所有消息,并注明每个消息的特性,如参数等

单点登录时序图:

c0f8b09a10a64293a8e2714d6cb49c32.png

 总结:

时序图可以帮助我们更好地理解系统中各个对象之间的交互关系和消息传递顺序,以及对象之间的协作和通信方式。时序图可以用于描述系统中的动态行为,例如,用户与系统之间的交互、对象之间的交互等。在软件开发过程中,时序图通常用于设计和验证系统的交互行为,以及检查系统中的潜在错误和问题。

参考资料:​​​​​​产品经理&程序员技能提升之「时序图」,附9张实操案例! (qq.com)​​​​​​

参考资料:快速学习时序图:时序图简介、画法及实例 | 人人都是产品经理 (woshipm.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis-集群切片

切片集群 我曾遇到过这么一个需求:要用 Redis 保存 5000 万个键值对,每个键值对大约是 512B,为了能快速部署并对外提供服务,我们采用云主机来运行 Redis 实例,那么,该如何选择云主机的内存容量呢&#xff…

linux目录与文件管理

目录与路径 关于执行文件路径的变量:$PATH ls完整文件名为:/bin/ls 在任何文件夹下输入ls命令可以显示出一些信息而不是找不到命令,这就是因为环境变量PATH所致。在执行命令时,系统会依照PATH的设置去每个PATH定义的目录下查找文…

【mysql】实现设置表中所有数据的update_time,要求每1000条设置在一天

实现效果示例 执行SQL:(mysql 版本查看: select VERSION() :5.7.36-log) 实现效果: 这里最后一个id 9 > 总条数 6,所以没有更新到,直接手动补下就行 SELECT * FROM my_test S…

最新ai系统ChatGPT商业运营版网站源码+支持GPT4.0/支持AI绘画+已支持OpenAI GPT全模型+国内AI全模型+绘画池系统

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

全平台七合一万能DIY小程序源码系统 带完整搭建教程

近年来互联网技术的飞速发展,尤其是移动互联网的普及。随着微信、支付宝、百度、抖音、头条等平台的迅速崛起,小程序成为了这些平台上重要的应用形态。这些小程序的应用范围广泛,包括电商、教育、娱乐、生活服务等各个领域。然而,…

常用排序算法

目录 直接插入排序 希尔排序 ​编辑 选择排序 堆排序 冒泡排序 快速排序 hoare版 挖坑法 前后指针法 非递归 归并排序 非递归 计数排序 直接插入排序 直接插入排序跟依次模扑克牌一样,将最后一张牌依次与前面的牌比较,最后将牌插入到指定位…

【设计模式】第16节:行为型模式之“命令模式”

一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

分布式理论和分布式锁知识点总结

文章目录 (一) 分布式理论算法和协议1)CAP理论总结 2)BASE理论BASE 理论的核心思想基本可用软状态最终一致性 3)Paxos算法Basic Paxos 算法4) Raft算法1 拜占庭将军 5)Gossip协议 (二) 分布式锁分布式锁应该具备哪些条…

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库

Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库安装 IndexDB类库引入 localForage测试 新增数据、获取数据 Vue使用 IndexDB vue操作IndexDB数据库 Vue操作IndexDB数据库 大部分场景使用 LocalStore都…

mac m1下navicat执行mongorestore 到mongodb

首先,下载https://www.mongodb.com/try/download/mongocli 解压缩后 有可执行文件使用navicat打开 加载后再重新点击 选择 要恢复的文件即可

Vue之CSS基础

CSS:层叠样式表 1、选择器 从模板template中选择某元素进行样式设置 需要注意的是作用域到底是当前模板还是整个html文档 1.1 基础(单一)选择器 标签、类、 id、通配符 标签、直接使用标签名,比如div,span… 优点:全选 模板中的名{。。。}…

数字化时代,谈谈无处不在的大数据和商业智能BI的关系

随着数字化时代的正式到来,众多领域开展了新一轮的科技革命和产业革命,通过大数据或商业智能BI等数据类技术解决方案,完成了从业务、产品到经营模式、管理决策的全方位升级,获得了突破性的成长。 如今,大数据和商业智…

3D模型格式转换工具HOOPS Exchange对工业级3D产品HOOPS的支持与应用

一、概述 HOOPS Exchange是一套高性能模型转换软件库,可以给软件提供强大的模型的导入和导出功能,我们可以将其单独作为转换工具使用,也可以将其集成到自己的软件中。 同样,HOOPS 的其它产品,也离不开HOOPS Exchange…

SpringBoot整合阿里云OSS对象存储

文章目录 1、OSS介绍及开通1.1、阿里云OSS简介1.2、开通OSS 2、创建存储空间bucket及密钥获取2.1、创建存储空间2.2、获取密钥 3、OSS快速入门案例4、在springboot项目中整合4.1、将oss配置放到yml文件中4.2、创建Oss属性类,接收yml文件中的属性4.3、封装文件上传功…

Vue Router使用VueUse更改标签页名称的工具函数

进入正题 安装 npm i vueuse/core or pnpm i vueuse/core or yarn add vueuse/corerouter/helper.js import { useTitle } from vueuse/coreexport const usePageTitle (to) > {const projectTitle import.meta.env.VITE_APP_TITLE // 将可变名抽出到 .env 内配置cons…

docker进阶

文章目录 docker 进阶Part1 常用命令总结docker version 查看docker客户端和服务端信息docker info 查看更加详细信息docker images 列出所有镜像基本用法常用选项 docker search 搜索镜像基本用法示例用法 docker pull 拉取镜像基本用法示例用法 docker rmi 删除镜像基本用法示…

前后端配合实现按钮级操作权限控制

背景 公司项目需要做到按钮级权限限制,至此有了该文,如有错误,请联系博主指出,多多感谢。 角色配置前后端操作 首先最基本的角色配置,配置该类角色有哪些菜单以及那些菜单的哪些按钮权限 菜单及菜单按钮由前端维护&a…

kali搭建docker

kali搭建docker 更新kali源 sudo apt update出错 更新一下密钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6安装docker sudo apt install docker.io -y #安装docker docker -v #docker版本 sudo systemctl status docker #查看docker…

C语言数据结构之数据结构入门

目录 数据结构介绍 数据结构发展史 何为算法 数据结构基础 基本概念和术语 四大逻辑结构(Logic Structure) 数据类型 理解复杂度概念 时间空间复杂度定义 度量时间复杂度的方法 程序运行时的内存与地址 编程预备 数据结构介绍 数据结构发展…

CSS+Javascript+Html日历控件

最近&#xff0c;因需要用HTMLJAVASCRIPTCSS实现了一个日历控件&#xff0c;效果如下&#xff1a; 单击上月、下月进行日历切换。当前日期在日历中变颜色标注显示。还是老老套路、老方法&#xff0c;分HMLCSSJAVASCRIPT三部分代码。 一、html代码 <h1>学习计划</h1…