当前位置: 首页 > news >正文

UML之序列图的参与者与生命线

序列图是建模过程中必选的一种描述行为的手段,它展示在某些有用的行为中元素之间的消息交换和相互作用。交互是构成行为的一个单元;这些元素必须是可连接元素,通常将这些可连接元素称为交互中的参与者(Participants)。

序列图中的参与者不是类或对象(这和许多建模者的认知不同),它们更接近于协作中的类型化角色或结构化分类器的一部分(实际上是组合关系中的部分)。它们的命名格式为”角色名:类型名“,其中用冒号将名称分割为两个部分,两个部分中任何一部分都可以为空,但不允许同时为空。由于它们不是对象,因此不能对参与者名称加下划线(但在UML的早期版本中允许这样做)。当省略”角色名“时,可以用指定类型的任何参与者来替代。“类型名”通常是类或数据类型的名称,当省略“类型名”时,任何指定角色的参与者都应该是在当前场景下适用且足够用的,而无论它属于哪个类或数据类型。

在“角色名“之后,你可能会看到由方括号包含的选择器”[selector]“,选择器用于指示当前打算使用的多值角色中的哪个元素,但它不是参与者名称的一部分。在实际应用中,selector通常是一个整数值索引,用于指向给定类型元素数组中的一个元素。

下图(图 1)是一个简单的序列图:

图 1 简单序列图

图中包含两个参与者:Patron类型的角色current和CirculationSystem类型的匿名角色。如前所述,参与者名称还可以是给出角色名而缺失类型名的形式。

序列图中的参与者一定是”可连接元素“,这些参与者通常描画在序列图的顶部,并且用一个矩形表示,矩形内部则是参与者名称,正如图 1所展示的那样。但根据参与者的不同构造型,它也有其他一些不同的表示形式,常见的一些形式如图 2所示。

 图 2 参与者的不同图示

在实际建模中,一些建模者会将用例图中的参与者(Actors)作为序列图中的参与者(Participants)。然而不幸的是,在UML规范中,用例图中的参与者(Actors)不能作为序列图中的可连接元素,即序列图中不应当出现参与者(Actors)。但另一方面,几乎所有的UML工具都支持将用例图中的参与者(Actors)作为序列图中的参与者(Participants)使用。这种用法通常被认为是合理的,当系统视角或边界变化时,例如序列图描述一个子系统时,所有其他与当前子系统有交互的子系统都将被视为参与者(Actors),但实际上,所有这些子系统最终都只是整个系统的一部分。包含一个参与者(Actors)的序列图例子如图 3所示。

图 3 包含Actor的序列图

在序列图顶部的这些参与者(Participants)都向下延伸出一条虚线,这条虚线称为”生命线“。每条生命线表示一个按时间顺序排列的事件(称为发生事件)序列,这些事件在生命线上按照从上到下的顺序发送或接收。在图 1中显示Patron先向CirculationSystem发送一条名为mayIBorrowBooks的消息,随后CirculationSystem回复了一条yesYouMay消息。

从单独一条时间线的角度来看,从图的顶部到底部代表时间顺序。因此,在Patron这一端,yesYouMay消息是在Patron发送mayIBorrowBooks消息之后接收到的;而在CirculationSystem这一端,mayIBorrowBooks消息是在它发送yesYouMay消息之前接收到的。

不同时间线之间位于同一水平线上的事件并不能说明它们在同一时间发生,例如对于mayIBorrowBooks消息,虽然在图 1中,它在Patron端和CirculationSystem端处于同一水平位置,但很容易想象,即使mayIBorrowBooks消息可以很快从Patron端发送至CirculationSystem端,也一定是Patron端的发送时间早于CirculationSystem端的接收时间。

通常,参与者之间的消息以括号结尾,例如mayIBorrowBooks()。在进行业务建模时,由于消息表达的还是概念层级交互,它意在给读者一个关于正在发生的事情的概念,而不试图做到形式上的正确或指定详细的实现细节,因而使用括号的情况较少。而在功能建模时,例如描述类或进程之间的交互,括号用于表示要传递的参数,此时参数将有助于说明通过消息传递的具体信息,对该层级的建模使用括号并标明参数是有用且必要的。

在序列图中,参与交互的生命线的头部通常都对齐在图的顶部。然而,生命线也可以在交互过程中创建,在这种情况下,头部位于创建点,而在创建点之下,新创建的生命线可以与已经存在的生命线进行交互。图 4展示了这种情况,生命线Lifeline2创建生命线Lifeline3,而此后Lifeline2与Lifeline3之间就如一开始就存在的生命线一般展开交互。

图 4 在交互过程中创建生命线

在交互过程中创建的生命线在其被创建的时点才开始具有”生命“,但从序列图顶端开始的生命线并不是在当前序列图描述的交互开始时被创建的,它们可能在序列图所描述的交互开始前就已经存在。类似地,当序列图所描述的交互结束之后,它所涉及的各条生命线也并没有终结,而是继续存在。类似于可以在序列图交互过程中创建一条生命线,也可以在交互过程中终结某条生命线。终结生命线的符号是在生命线终结处画上一个大大的”ד,如图 5所示。

图 5 生命线终止

一条生命线一旦被终结,将不能够继续参与序列图中的后继交互。

UML – 光头颜说IT

UML之扩展用例_将这两个用例扩展语议,扩展为“用例实现”-CSDN博客

UML之包含用例-CSDN博客

UML之泛化用例_用例图泛化-CSDN博客

UML之参与者(Actor)_uml actor-CSDN博客

UML之发现用例-CSDN博客

UML之泛化、特化和继承_uml中泛化-CSDN博客

UML之组合与聚合_uml聚合和组合-CSDN博客

UML之关联-CSDN博客

UML之集合类型-CSDN博客

UML之属性与参数的多重性_类图多重性-CSDN博客

UML之模型、包及包的版型(构造型)_包体系结构-CSDN博客

UML之包的导入与访问_访问和引入包的区别-CSDN博客

UML之包与包图_uml类图中的包-CSDN博客

UML之类型_bolck definition diagram 中的signal,value type,enume-CSDN博客

UML之修饰符_图框架标题类型之谬-CSDN博客

UML之类与类图-CSDN博客

UML之图框架标题类型之谬_框架标题是什么-CSDN博客

相关文章:

UML之序列图的参与者与生命线

序列图是建模过程中必选的一种描述行为的手段,它展示在某些有用的行为中元素之间的消息交换和相互作用。交互是构成行为的一个单元;这些元素必须是可连接元素,通常将这些可连接元素称为交互中的参与者(Participants)。…...

基于Python Flask快速构建网络安全工具资源库的Web应用实践

引言 在网络安全领域,信息收集(OSINT)是渗透测试、漏洞挖掘和威胁分析的关键环节。然而,面对海量工具和分散的技术文档,安全研究人员常需耗费大量时间查找和比对工具信息。本文将介绍如何利用 Python Flask HTML 技…...

xv6-labs-2024 lab1

lab-1 注:实验环境在我的汇编随手记的末尾部分有搭建教程。 0.前置 第零章 xv6为我们提供了多种系统调用,其中,exec将从某个文件里读取内存镜像(这确实是一个好的说法),并且将其替换到调用它的内存空间,也就是这个…...

HTTP Form v.s. Flask-WTF Form v.s. Bootstrap Form

在Flask-WTF和Bootstrap 的Form创建中,添加了页面显示Flash Messages。 相比Flask_WTF, Bootstrap用 render_form(form)渲染样式,自动带错误提示,不需要像Flask_WTF那样手写 for error in ... 。 项目结构: register_app/ ├── HTTP_Form_App.py ├── FlaskWTF_Form…...

Linux网络编程——https的协议及其加密解密方式

目录 一、前言 https协议 常见的加密方式 1、对称加密 2、非对称加密 3、数字签名 1. 只用对称加密 2、只用单一的非对称加密 3、双方都使用非对称加密 4、非对称加密对称加密 证书 证书颁发流程 服务器与客户端的证书验证流程 5、证书非对称加密对称加密 前言 上一…...

Node.js 下载与安装(图文)

下载 官网:【直达:https://nodejs.org/en/】。 点击【Download】,选择【版本,系统】。点击【Windows Installer(.msi)】。 安装 双击【.msi文件】,选择【安装路径】,也可以一直【下一步】。 查看版本 …...

3.31-4.06 Web3 游戏周报:Pebble 玩家留存率登顶,Treasure DAO 面临重组危机

回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【3.31–4.06】Web3 游戏行业动态 链游生态系统 Treasure DAO 因财务危机面临重组,将终止游戏运营和 Treasure Chain3A 链游 Shrapnel 开发商 Neon Machine 深陷财务…...

echarts生成3D立体地图react组件

地图散点图效果: react项目中安装echarts、echarts-gl依赖: npm install echarts echarts-gl 文件目录结构: 地图组件map目录下文件代码,点击散点图圆点触发事件handleCityClick: index.jsx: import { …...

Node.js 中处理 Excel 文件的最佳实践

在现代应用开发中,Excel 文件仍然是数据交换和存储的重要格式之一。在 Node.js 环境中,处理 Excel 文件的需求日益增加。本文将介绍如何在 Node.js 中高效地处理 Excel 文件,涵盖工具选择、基本操作和最佳实践。 1. 选择合适的库 在 Node.js…...

解决Ubuntu系统鼠标不流畅的问题

电脑是联想的台式组装机,安装ubuntu系统(不管是16、18、20、22)后,鼠标都不流畅。最近几天想解决这个问题,于是怀疑到了显卡驱动上。怀疑之前一直用的是集成显卡,而不是独立显卡,毕竟2060的显卡…...

【Linux】虚拟机设置静态IP

主播我今天下午学了几节微服务课,上课的时候,直接把手机拿走了去上课(电脑连的我手机的热点),虚拟机没关,晚上主播我回来继续学,电脑连上热点之后,发现虚拟机连接不上了,…...

Web API:AbortController

Web API:AbortController 主要用途基本工作原理基本用法示例高级用例1. 实现请求超时2. 取消多个请求3. 与其他异步 API 一起使用 浏览器支持总结 主要用途 AbortController 是一个 Web API,主要用于取消一个或多个 Web 请求(如 fetch 请求&…...

服务器配置虚拟IP

服务器配置虚拟IP的核心步骤取决于具体场景,主要包括本地单机多IP配置和高可用集群下的虚拟IP管理两种模式。‌ 一、本地虚拟IP配置(单服务器多IP) ‌基于Linux系统‌: ‌确认网络接口‌:使用 ip addr 或 ifconfig 查…...

《AI大模型应知应会100篇》第5篇:大模型发展简史:从BERT到ChatGPT的演进

第5篇:大模型发展简史:从BERT到ChatGPT的演进 摘要 近年来,人工智能领域最引人注目的进步之一是大模型(Large Language Models, LLMs)的发展。这些模型不仅推动了自然语言处理(NLP)技术的飞跃&…...

小球反弹(蓝桥杯C语言)

有一长方形,长为 343720343720 单位长度,宽为 233333233333 单位长度。在其内部左上角顶点有一小球 (无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx:dy15:17dx:dy15:17。小球碰到长方形的…...

Java面试39-Zookeeper中的Watch机制的原理

Zookeeper是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper上的数据。 Zookeeper提供了一个Watch机制,可以让客户端感知到Zooke…...

3️⃣ Coze工作流基础教学(2025年全新版本)

目录 一、什么是工作流 二、为什么用工作流 三、工作流使用场景 四、怎么学习工作流 五、工作流功能概述 六、制作工作流基础流程 6.1 创建工作流 6.2 配置工作流 6.3 调试工作流 6.4 发布工作流 6.5 使用工作流 6.6 复制工作流 6.7 删除工作流 6.8 设置工作流异…...

备战蓝桥杯——走迷宫问题(BFS解决)

这是一个经典的BFS算法 1. BFS算法保证最短路径 核心机制:广度优先搜索按层遍历所有可能的路径,首次到达终点的路径长度即为最短步数。这是BFS的核心优势。队列的作用:通过队列按先进先出的顺序处理节点,确保每一步探索的都是当…...

usbip学习记录

USB/IP: USB device sharing over IP make menuconfig配置: Device Drivers -> Staging drivers -> USB/IP support Device Drivers -> Staging drivers -> USB/IP support -> Host driver 如果还有作为客户端的需要,继续做以下配置&a…...

mlir-tblgen 的应用渐进式示例

示例01 -gen-dialect-decls toy_dia.1.toy include "mlir/IR/OpBase.td" //include "mlir/IR/FunctionInterfaces.td" //include "mlir/IR/SymbolInterfaces.td" //include "mlir/Interfaces/SideEffectInterfaces.td"def Toy_Diale…...

AI大模型与未来社会结构的重构:从工具到共生体

一、引言:从蒸汽机到ChatGPT,文明的每一次跃迁都始于“工具的自我进化” 历史长河中,每一次技术革命,都伴随着人类社会组织、认知方式乃至价值体系的巨变。从18世纪的蒸汽机到20世纪的信息技术,再到21世纪的人工智能&…...

2015年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析

2015年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...

免费Deepseek-v3接口实现Browser-Use Web UI:浏览器自动化本地模拟抓取数据实录

源码 https://github.com/browser-use/web-ui 我们按照官方教程,修订几个环节,更快地部署 步骤 1:克隆存储库 git clone https://github.com/browser-use/web-ui.git cd web-ui Step 2: Set Up Python Environment 第 2 步:设置…...

Bash判断命令是否存在

在 Bash 脚本里,你可以通过多种方法判断某个命令是否存在。下面为你详细介绍几种常见的判断方式。 1. 使用command -v command -v命令能够返回指定命令的可执行文件路径,如果该命令不存在则不会有输出。借助这一特性,我们可以结合条件判断语…...

双指针(滑动窗口)

用于在数组或字符串的进行快速排序 匹配 排序或移动操作。 双指针不是真的指针,只是用两个变量来表示下标(在后面都用指针来表示) 双指针往往和单调性 排序 联系在一起,暴力往往是O(n方)双指针利用单调性可以优化到o(n) 有对撞指针 快慢指针 美丽区间…...

在PPT中同时自动播放多个视频的方法

在PPT中同时自动播放多个视频的方法 文章目录 在PPT中同时自动播放多个视频的方法1 准备视频2 设置动画为“出现”3 设置所有视频为“自动播放”4 最终效果与其他设置 在PPT制作的过程中,我们经常遇到需要同时自动播放多个视频的情况。本文将详细介绍实现这种效果的…...

使用 Vue 快速集成 FullCalendar 日历组件教程

FullCalendar 是一款功能强大的 JavaScript 日历组件,支持 React/Vue 等主流框架,提供丰富的日历视图和交互功能。本文将手把手教你在 Vue 项目中快速集成,并演示核心功能实现。 📦 主要特性亮点 ✅ 月/周/日多视图切换 ✅…...

xv6-labs-2024 lab2

lab-2 0. 前置 课程记录 操作系统的隔离性,举例说明就是,当我们的shell,或者qq挂掉了,我们不希望因为他,去影响其他的进程,所以在不同的应用程序之间,需要有隔离性,并且&#xff0…...

redis导入成功,缺不显示数据

SpringBootTest class SecurityApplicationTests {AutowiredStringRedisTemplate template; //添加这句代码,自动装载,即可解决文章三处代码报错Testvoid contextLoads() {String compact Jwts.builder().signWith(Jwts.SIG.HS512.key().build()).subj…...

Flink对比Spark streaming、Storm

对比Spark streaming、Storm 产品 模型 语义 容错机制 状态管理 延时 吞吐量 Storm native at-least-once ack 无 low low Spark streaming micro-batch exactly-once RDD checkpoint 有 medium high Flink native exactly-once checkpoint 有 low …...

力扣316去除重复字母-单调栈

题目来源: 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s "bcabc" 输出&#xff…...

第421场周赛:数组的最大因子得分、

Q1、数组的最大因子得分 1、题目描述 给你一个整数数组 nums。 因子得分 定义为数组所有元素的最小公倍数(LCM)与最大公约数(GCD)的 乘积。 在 最多 移除一个元素的情况下,返回 nums 的 最大因子得分。 注意&…...

COMSOL 与人工智能融合的多物理场应用:28个案例的思路、方法与工具概述

应用案例概述 基于 COMSOL 与人工智能(AI)结合的应用案例涵盖了 28 个多领域场景,包括工程(如热传导优化、结构力学预测)、能源(如电池热管理、燃料电池性能)、生物医学(如药物传递…...

【算法】插入排序

算法系列五:插入排序 一、直接插入排序 1.原理 2.实现 3.性质 3.1时间复杂度 3.2空间复杂度 3.3稳定性 二、希尔排序 1.原理 1.1优化方向 1.2优化原理 2.设计 2.1比较无序时 2.2比较有序时 3.实现 4.性质 4.1时间复杂度 4.2空间复杂度 4.3稳定性…...

企业展示型网站模板HTML5网站模板下载指南

在当今数字化浪潮中,企业网站已成为企业展示形象、推广产品和服务的重要窗口。一个设计精美、功能完善的企业展示型网站,不仅能提升企业的品牌形象,还能吸引潜在客户,促进业务增长。而HTML5网站模板,凭借其跨平台兼容性…...

C盘清理——快速处理

C盘清理 | 快速处理 软件:小番茄C盘清理 https://ccleancdn.xkbrowser.com/cleanmaster/FanQieClean_13054_st.exe 前言:为什么需要专业的C盘清理工具? 作为一位长期与Windows系统打交道的技术博主,我深知C盘空间不足带来的痛苦…...

什么是模型驱动开发MDD?有哪些应用场景?

模型驱动开发(Model-Driven Development,MDD)是一种以模型为核心的软件开发方法,其核心思想是通过创建高层次的抽象模型来描述系统的结构和行为,而非直接编写代码。这些模型经过自动化工具的转换或生成,最终…...

uniapp小程序生成海报/图片并保存分享

调研结果: 方法一:canvasuni.canvasToTempFilePath耗时太长,现在卡在canvas的绘制有问题,canvas绘制的部分东西不生效但是找不到原因 方法二:使用wxml-to-canvas其实也差不多是用canvas手动绘制,可能会卡在…...

从IoT到AIoT:智能边界的拓展与AI未来趋势预测

文章目录 引言:从连接万物到感知万物1. AIoT的本质:将智能嵌入万物2. AIoT的推动力量与挑战2.1 推动力量2.2 关键挑战 3. 五大AIoT未来趋势预测趋势一:边缘智能将成为主流架构趋势二:AI模型将向自适应与多任务演进趋势三&#xff…...

2012年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析

2012年-全国大学生数学建模竞赛(CUMCM)试题速浏、分类及浅析 全国大学生数学建模竞赛(China Undergraduate Mathematical Contest in Modeling)是国家教委高教司和中国工业与应用数学学会共同主办的面向全国大学生的群众性科技活动,目的在于激励学生学习数学的积极性,提高学…...

2140 星期计算

2140 星期计算 ⭐️难度:中等 🌟考点:2022、思维、省赛 📖 📚 1️⃣法一: 同余定理, import java.util.Scanner;public class Main2 {public static void main(String[] args) {Scanner sc …...

NVIDIA Jetson 环境安装指导 PyTorch | Conda | cudnn | docker

本文适用于Jetson Nano、TX1/TX2、Xavier 和 Orin系列的设备,供大家参考。 1、PyTorch不同版本安装 这里适用于Jetson Nano、TX1/TX2、Xavier 和 Orin ,需要JetPack 4.2以上。 下载地址:PyTorch for Jetson - Jetson & Embedded System…...

理解 Rust 中的 String 分配机制

在 Rust 中,哪怕是一行再普通不过的代码,也可能暗藏玄机。这次我们就来剖析这样一句看似简单的代码: let s "hello world".to_string();这行代码触发了 只读数据段(.rodata)、堆(heap&#xff0…...

园区网拓扑练习

1.拓扑图要求 1.按照图示的VLAN及IP地址需求,完成相关配需 2、要求SW1为VLAN 2/3的主根及主网关,SW2为vlan 20/30的主根及主网关,SW1和SW2互为备份 3.上层通过静态路由协议完成数据通信过程 4.AR1为企业出口路由器 5.要求全网可达 2.需求分…...

CentralCache

目录 一、Span和Spanlist 二、CentralCache 一、Span和Spanlist CentralCache其实也是哈希桶结构,只不过他是一个个的Span(Span是管理一定数量的页的结构),而且Span会管理一个freelist,用来挂起一个个的小内存块给Th…...

STM32 基础1

什么是GPIO的上拉和下拉电阻 下拉电阻:把一个不确定的信号通过电阳连接到地,其实就是初始化为低电平。 上拉电阻:把一个不确定的信号通过电连接到高电平,其实就是初始化为高电平。 本质:上拉地注入电流,下…...

Python爬虫第5节-urllib的异常处理、链接解析及 Robots 协议分析

目录 一、处理异常 1.1 URLError 1.2 HTTPError 二、解析链接 2.1 urlparse() 2.2 urlunparse() 2.3 urlsplit() 2.4 urlunsplit() 2.5 urljoin() 2.6 urlencode() 2.7 parse_qs() 2.8 parse_qsl() 2.9 quote() 2.10 unquote() 三、分析网站Robots协议 3.1 R…...

STM32——DAC转换

DAC简介 DAC,全称:Digital-to-Analog Converter,扑指数字/模拟转换器 ADC和DAC是模拟电路与数字电路之间的桥梁 DAC的特性参数 1.分辨率: 表示模拟电压的最小增量,常用二进制位数表示,比如&#xff1a…...

因果推断【Causal Inference】(一)

文章目录 1. 什么是因果推断?2. 为什么要提出因果推断?Motivation:辛普森悖论Scenario 1Scenario 2 3. 【Note】相关性≠因果3.1 混淆(Confounding)——共同原因3.2 样本选择偏差(Selection Bias)——共同结果 4. 潜在结果(Potential Outcome…...

人工智能通识速览(Part5. 大语言模型)

五、大语言模型 1.NLP 自然语言处理(Natural Language Processing, NLP)是人工智能领域的一个重要分支,专注于研究 计算机如何理解、生成和处理人类语言。它的目标是让机器能够像人类一样“读懂”文本或语音,并执 行翻译、问答、摘…...