【UML】第12篇 序列图(1/2)——基本概念和构成

目录

一、什么是序列图(Sequence Diagram)

1.1 定义

1.2 主要用途

1.3 序列图和BPMN的区别和联系

二、序列图的构成

 2.1 对象

2.2 生命线

2.3 消息 

2.4 激活


序列图,是我个人认为的用处最多的一种图。产品和研发的同学,都应该熟练掌握的一种业务建模和沟通工具。

有时,我们会把序列图,和泳道图(Swimlane Diagram),或者BPMN图相混,认为是一种图。实际上,他们都可以为业务流程进行建模,不过使用的场景、针对的实体、流程描述的角度、颗粒度,都有很大的区别。

关于BPMN建模方式,可参考我之前的博文:业务建模工具BPMN-CSDN博客

一、什么是序列图(Sequence Diagram)

1.1 定义

序列图(Sequence Diagram)是一种用于显示对象之间交互的图形化表示。它描述了在特定场景下,对象之间按照时间顺序进行的消息传递和协作过程。

在序列图中,对象被表示为带有垂直虚线的矩形,虚线表示对象的生命周期。对象之间的交互通过箭头表示的消息来表示,箭头从一个对象的生命线指向另一个对象的生命线,表示消息的发送和接收。

1.2 主要用途

UML中的序列图是一种重要的建模工具,它可以帮助开发人员更好地理解系统的动态行为,并辅助设计和开发过程。

  1. 描述对象之间的动态交互:序列图可以清晰地展示对象之间的消息传递和协作过程,帮助开发人员理解系统的动态行为。
  2. 辅助设计和开发过程:通过绘制序列图,开发人员可以更好地理解系统需求和设计,从而更好地实现系统的功能。
  3. 用于测试和调试:序列图可以作为测试和调试的依据,帮助测试人员理解系统的预期行为并与实际行为进行比较。

1.3 序列图和BPMN的区别和联系

这方面很少有人对比,我来试着讲述一下。序列图和BPMN(业务流程建模与标注)中的流程图在用途、表达方式和关注点上有显著的区别,同时也存在一定的联系。

区别——

  1. 用途不同:序列图主要用于展示在特定场景下对象之间的交互顺序和消息传递,强调时间和顺序的关系;而BPMN的流程图则主要用于描述业务流程的执行过程,强调任务、活动和流程控制。
  2. 表达方式不同:序列图使用垂直线和箭头表示对象之间的消息传递和交互,对象被表示为带有垂直虚线的矩形;而BPMN的流程图使用符号和连接线表示任务、活动和流程控制,如椭圆表示任务,菱形表示决策点等。
  3. 关注点不同:序列图关注对象之间的动态交互和消息传递的细节,强调对象之间的协作;而BPMN的流程图关注业务流程的整体流程和任务执行顺序,强调流程的优化和改进。

联系——

  1. 都是建模工具:序列图和BPMN的流程图都是用于建模的工具,可以帮助人们更好地理解和描述复杂的系统或业务流程。
  2. 可相互补充:在实际应用中,序列图和BPMN的流程图可以相互补充。例如,可以使用BPMN的流程图描述整体业务流程,然后使用序列图详细描述流程中关键部分的对象交互和消息传递。

这两种工具,可以相互补充以提供更全面的视图和理解。

在实践中,序列图往往提现了BPMN中某个部分的具体实现逻辑。

二、序列图的构成

上图是一个典型的序列图的样子,用ROSE的风格画的,当然可能不是用的ROSE工具。ROSE的配色,黄底色,红边框,早已经深入人心。

序列图主要由对象(Object)、生命线(Lifeline)、激活(Activation)和消息(Message)构成。

  • 对象:对象是类的实例,在序列图中用带有垂直虚线的矩形表示,虚线表示对象的生命周期。我们经常会把Actor也画到同样的维度,比如Customer。
  • 生命线:生命线是一条垂直的虚线,表示对象的存在时间。
  • 激活:激活表示对象正在执行某个操作或方法,通常通过在生命线上绘制一个细长的矩形来表示。
  • 消息:消息是对象之间的交互,通过箭头表示从一个对象的生命线指向另一个对象的生命线,箭头上标注有消息的名称或内容。

这些元素共同构成了序列图,用于描述在特定场景下对象之间的交互顺序和消息传递。

 2.1 对象

对象有如下三种表示方法。

  1. 对象名+对象所属的类名;
  2. 只有对象名(省略类名);
  3. 只有类的名称(匿名对象);

2.2 生命线

这个不是你手上的那条,是对象的生命线,虚线,和对象的矩形一起,像个棒棒糖似的。

2.3 消息 

这里特意说一下,这些消息的标记,目前不同的版本,不同的工具,甚至团队内部,都有各自的规定。比如同步消息,异步消息,就有多种表示方法。甚至有时,使用半个箭头,这样特殊的模式。本文内容,使用的是UML2.5版本的约定。

1.同步消息(Synchronous Message)

  • 定义:同步消息是一种需要等待接收方处理完成后才能继续的消息。发送方在发送完消息后会等待,直到接收方处理完消息并返回结果。
  • 解释:同步消息类似于函数调用,发送方调用接收方的方法或操作,并等待其执行完成。发送方在等待期间会暂停自己的执行,直到接收方返回结果。
  • 图形表示:同步消息通常使用实线箭头表示,箭头指向接收方对象,并在箭头上标注消息的名称或内容。

2.异步消息(Asynchronous Message)

  • 定义:异步消息是一种发送方发送完消息后不等待接收方处理完成的消息。发送方在发送完消息后会立即继续自己的处理。
  • 解释:异步消息类似于发送事件或信号,发送方不关心接收方何时处理完成。发送方发送消息后可以继续执行其他操作,而不需要等待接收方的响应。
  • 图形表示:异步消息通常使用虚线箭头表示,箭头指向接收方对象,并在箭头上标注消息的名称或内容。

3.返回消息(Return Message)

  • 定义:返回消息是指当一个对象将消息发送给另一个对象后,另一个对象返回的虚线有向边,表示原消息已处理的消息。
  • 解释:返回消息用于表示对同步消息的响应,告诉发送方消息已被成功处理或返回处理结果。它通常与同步消息一起使用,表示消息的完整交互过程。
  • 图形表示:返回消息通常使用虚线箭头表示,箭头指向返回方对象,并在箭头上标注返回结果的名称或内容。

4.创建消息(Create Message)

  • 定义:创建消息是表示对消息传递目标对象的创建。
  • 解释:当某个对象需要创建另一个对象时,会使用创建消息来表示这个创建过程。创建消息可以包含对新对象的初始化和配置信息。
  • 图形表示:创建消息通常使用带有“create”标签的箭头表示,虚线,箭头指向新创建的对象,并在箭头上标注创建操作的名称或内容。

5.销毁消息(Destroy Message)

  • 定义:销毁消息是表示对消息传递目标对象的删除。
  • 解释:当某个对象需要销毁或删除另一个对象时,会使用销毁消息来表示这个销毁过程。销毁消息通知目标对象进行必要的清理和释放资源。
  • 图形表示:销毁消息通常使用带有“destroy”标签的箭头表示,虚线,箭头指向要销毁的对象,并在箭头上标注销毁操作的名称或内容。

6.自返消息(Self-Message)

  • 定义:自返消息是对象向自己发送的消息。它表示对象内部的某种行为或操作,而不是与其他对象的交互。
  • 解释:自返消息用于表示对象内部的状态变化或执行某个操作。它可以是对象调用自己的方法或执行自己的行为,而不涉及与其他对象的通信。
  • 图形表示:自返消息在序列图中通常使用指向对象自身的箭头表示。箭头的起点和终点都在同一个对象的生命线上,并在箭头上标注消息的名称或内容。

7.简单消息(Simple Message)

  • 定义:简单消息是对象之间最基本的通信方式,表示一个对象向另一个对象发送消息或请求。
  • 解释:简单消息用于描述对象之间的交互,它可以是同步消息或异步消息的一种简化表示。简单消息不涉及复杂的控制流或返回值,只是简单地表示一个对象调用另一个对象的方法或操作。
  • 图形表示:简单消息在序列图中使用箭头表示,箭头从发送方对象的生命线指向接收方对象的生命线。箭头上可以标注消息的名称或内容。

简单消息实际就是不标明是同步还是异步消息,只表达表消息这个事实。

以上的约定中,图形也比较好记忆,同步和简单消息,就是实线,虚线不特别标记,就是异步消息,方向是返回,或者标记有创建、销毁的,就是相应的意义。这样也比较简单,不要总是换箭头的模式,一会空心,一会实心,一会菱形,弄个太复杂。

同步消息的典型例子,就是上课铃和下课铃,上课铃打完,就要上课,上课没有结束,下课铃是不可能打的。程序中,这些都要控制。但是需要并发的网络购物等,就不同了。客户下单后,即使没有付款,也不会影响对另一件商品下单。除非是买的火车票,有重复的时段等特殊情况。

2.4 激活

激活表示一个对象执行一个动作所经历的时间段。一般情况下,当一个对象收到其它对象发送的消息时被激活,在激活期内处理该消息,激活结束时应该发出一个消息。在UML中使用处于生命线上的垂直长条矩形来表示。矩形的开始处为对象开始操作动作,底部表示操作动作的结束。

此外,对象的生命线,可能遇到销毁的情况。一般有2种处理方式,一是一个对象给另一个对象发销毁消息,用虚线加销毁标记,另外也可以对象自己销毁,在生命线上打个×,就可以了。

(未完待续)

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

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

相关文章

向量投影:如何将一个向量投影到矩阵的行向量生成子空间?

向量投影:如何将一个向量投影到矩阵的行向量生成子空间? 前言 本问题是在学习Rosen梯度投影优化方法的时候遇到的问题,主要是对于正交投影矩阵(NT(NNT)-1N)的不理解,因此经过查阅资料,学习了关于向量投影的知识&…

【Datawhale x 财务学习笔记】用智谱清言的代码沙盒进行分析

体验网址 智谱清言:https://chatglm.cn/ prompt 帮我分析一下这个excel文件,从财务角度给出利润情况,并给出优化建议体验结果 首先,我将查看上传的Excel文件的内容,以便了解其结构和包含的数据。然后,我…

相机内参标定理论篇------张正友标定法

一、为什么做相机标定? 标定是为了得到相机坐标系下的点和图像像素点的映射关系,为摄影几何、计算机视觉等应用做准备。 二、为什么需要张正友标定法? 张正友标定法使手工标定相机成为可能,使相机标定不再需要精密的设备帮助。…

7种常见的网络安全设备及其功能

网络安全设备在现代网络环境中起着至关重要的作用,帮助保护个人和组织免受恶意攻击。本文将介绍7种常见的网络安全设备,包括防火墙、入侵检测系统、反病毒软件、数据加密设备、虚拟私人网络、安全信息和事件管理系统以及网络访问控制设备,并详…

Torchvision中的Transforms的使用

一、transforms结构及用法 查看tansforms.py说明文档: ToTensor类作用是:将一个PIL图片或numpy形式转换成tensor的数据类型 python的用法-》tensor数据类型 通过 transforms.ToTensor去看两个问题 1、transforms该如何使用(python) 2、为什么我们需要Te…

碳排放预测 | 基于ARIMA和GM(1,1)的碳排放预测(Matlab)

目录 预测效果基本介绍模型描述ARIMA模型GM(1,1)模型 程序设计参考资料 预测效果 基本介绍 基于ARIMA和GM(1,1)的碳排放预测(Matlab) 基于ARIMA(自回归移动平均模型)和GM(1,1)(灰色预测模型)的碳排放预测是…

Pinely Round 3 (Div. 1 + Div. 2)(A~D)(有意思的题)

A - Distinct Buttons 题意: 思路:模拟从(0,0)到每个位置需要哪些操作,如果总共需要4种操作就输出NO。 // Problem: A. Distinct Buttons // Contest: Codeforces - Pinely Round 3 (Div. 1 Div. 2) // URL: https…

【docker笔记】docker理论及安装

前言 本笔记来源于尚硅谷docker教学视频 视频地址:https://www.bilibili.com/video/BV1gr4y1U7CY/?spm_id_from333.337.search-card.all.click 纯手打笔记,来之不易,感谢支持~ Docker简介 docker为什么会出现 想象一下:一个应用…

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层 1、数据集 在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。 该数据集由裁剪成 384x384 (适用…

第1课 配置FFmpeg+OpenCV开发环境

一、配置开发环境 1.下载FFmpegOpenCV开发所用的SDK压缩包,并解压到E:\SDK下,解压后的路径应为:E:\SDK\ffmpeg-sdk\58\x86\dll及E:\SDK\opencv-sdk\340\x86\dll。 2.新建VC项目,名称为demo1,项目类弄为MFC应用程序&a…

第26关 K8s日志收集揭秘:利用Log-pilot收集POD内业务日志文件

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 OK,到目前为止,我们的服务顺利容器化并上了K8s,同时也能通过外部网络进行请求访问,相关的服务数据也能进行持久化存储了,那么接下来…

【新版】软考 - 系统架构设计师(总结笔记)

个人总结学习笔记,仅供参考!!!! →点击 笔者主页,欢迎关注哦(互相学习,共同成长) 笔记目录 📢【系统架构设计系列】系统架构设计专业技能 计算机组成与结构操作系统信…

MATLAB - 四元数(quaternion)

系列文章目录 前言 一、简介 四元数是一种四元超复数,用于三维旋转和定向。 四元数的表示形式为 abicjdk,其中 a、b、c 和 d 为实数,i、j 和 k 为基元,满足等式:i2 j2 k2 ijk -1。 四元数集用 H 表示&#xff0c…

Flink面试题与详解

Flink面试题目合集 从牛客网上找到的一些面试题,如果还有其他的,欢迎大家补充。 1、能否详细描述下Apache Flink的架构组件和其工作原理?请介绍一下Flink on YARN部署模式的工作原理。 官网图: 由两个部分组成,JM&am…

将PPT的图保持高分辨率导入到Word / WPS中

1、将PPT中画好的图组合在一起,选择组合后的图复制(Ctrlc) 2、在Word中,选中左上角的粘贴选项--->选择性粘贴 WPS选择元文件 / Word选择增强型图元文件 这样放大也不模糊了

提前预测刚体移动轨迹 预测运动轨迹

提前预测刚体移动轨迹 预测运动轨迹 一、效果二、介绍三、脚本RigidbodyExtension.cs 计算工具类DrawLine.cs 画线工具类 四、资源分享 一、效果 二、介绍 通过计算Unity物理系统的运动方位来判断下一步移动的位置,主要用于物体运动的提前预测,通常使用…

华为vrrp+mstp+ospf+dhcp+dhcp relay配置案例

1、左边是vlan 10主桥,右边是vlan 20的主桥,并且互为备桥 2、 vlan 10 vrrp网关默认用左边,vlan 20的vrrp 网关默认用右边,对应mstp生成树 3、两边都track检测,不通就把vrrp减掉60,这样就会自动切另一边了 …

Hadoop入门学习笔记——七、Hive语法

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 七、Hive语法7.1. 数据库相关操作7.1.1. 创建数据库7.1.2…

kubernetes集群 应用实践 zookeeper部署

kubernetes集群 应用实践 zookeeper部署 零、环境说明 一、zookeeper持久存储准备 zookeeper属于有状态应用,需要为zookeeper部署后端存储服务。 1.1 在NFS服务器添加一块硬盘vdc [rootnfsserver ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT …

【Python】基于flaskMVT架构与session实现博客前台登录登出功能

目录 一、MVT说明 1.Model层 2.View层 3.Template层 二、功能说明 三、代码框架展示 四、具体代码实现 models.py 登录界面前端代码 博客界面前端代码(profile.html) main.py 一、MVT说明 MVT架构是Model-View-Template的缩写,是…