【UML】第16篇 活动图

目录

一、什么是活动图

二、应用场景:

三、绘图符号的说明:

四、语法:

五、例图

六、建模的流程

6.1 对业务流程建模时

6.2 对用例进行活动图建模时


一、什么是活动图

活动图(Activity Diagram)是UML中用于描述工作流程或操作执行流程的一种行为图。它展示了操作的流程,包括决策、并行处理、循环等,以及这些流程中涉及的各个活动或动作。

二、应用场景

  1. 业务流程建模:活动图非常适合描述复杂的业务流程,因为它可以清晰地展示流程中的各个步骤、决策点、并行流程等。
  2. 软件需求分析:在软件需求分析阶段,活动图可以帮助分析人员更好地理解系统的功能需求,特别是那些涉及多个用户、多个系统或并行处理的功能。
  3. 系统设计:活动图可以作为系统设计的一部分,描述系统或组件在执行特定功能时的行为。
  4. 工作流建模:对于需要明确指定任务执行顺序的系统,如生产流程控制系统或项目管理系统,活动图可以用来描述工作流。

三、绘图符号的说明

  • 动作/活动(Action/Activity):表示流程中的一个步骤或动作,用矩形表示。
  • 起始节点(Initial Node):表示流程的开始,用实心小黑圆点表示。
  • 活动终点(Activity Final Node):表示流程的正常结束,用带有内圆圈的空心圆表示。
  • 流控制(Flow Control):表示流程的方向,用带箭头的线连接各个活动或节点。
  • 决策/分支(Decision/Branch):表示基于某个条件的决策点,用菱形表示,菱形内通常包含决策条件。
  • 合并(Merge):表示多个分支合并为一个流程的点,也用菱形表示,但通常没有条件。
  • 分叉(Fork)和汇合(Join):表示流程的并行处理,分叉用一条线分为多条线表示,汇合则用多条线合并为一条线表示。
  • 对象流(Object Flow):表示对象在活动之间的流动,用带有标签的虚线箭头表示。

四、语法

在UML中,活动图的语法并不是像编程语言那样的严格规则集合,而是指如何使用上述绘图符号来构建图表。活动图的构建通常遵循以下原则:

  1. 起始节点表示流程的开始。
  2. 活动表示需要执行的任务或步骤。
  3. 决策节点用于根据条件选择不同的流程路径。
  4. 分叉和汇合用于表示并行处理。
  5. 活动终点表示流程的正常结束。
  6. 流控制箭头指示流程的方向。
  7. 对象流表示对象如何在活动之间传递。

活动图通常是通过UML建模工具以图形方式创建的,但也可以用文本或伪代码来描述,特别是在早期的需求分析阶段。然而,对于复杂的系统或流程,图形表示通常更加直观和易于理解。

五、例图

也可以是泳道图来对用例或者对象建模。

六、建模的流程

在建模时,通常选择对业务流程建模或对用例的交互进行建模。

6.1 对业务流程建模时

  1. 选择要描述的业务过程,找出业务过程中的关键对象或参与者,将重要的对象或参与者从左到右依次排开;
  2. 为反应动作状态的执行者,为这些对象或参与者添加泳道;
  3. 找出业务的关键动作状态或活动节点,在对应的泳道中添加动作状态或活动;
  4. 确定业务的起始点及结束状态,为活动图添加初始状态和结束状态;
  5. 从起始状态开始,按照动作的发生次序,依次添加到活动图中;
  6. 连接动作状态,并根据业务情况,添加分叉与汇合、分支与合并等节点;
  7. 如需描述对象的情况,使用对象流来补充活动图。
  8. 审查活动图中是否有遗漏或需要进一步说明的地方,是否需要使用另外一个活动图进一步描述某些活动。

6.2 对用例进行活动图建模时

  1. 选定要建模的用例,确定用例执行的基本流程;
  2. 通过用例的事件流找出参与者的主动动作,把这些动作整理为活动图中的动作状态或活动状态;
  3. 为参与到用例基本流程的参与者和系统添加泳道;
  4. 把动作状态和活动状态添加到对应的泳道中;
  5. 使用分叉与汇合、分支与合并来描述用例执行中的并发动作和特殊事件的备选动作;
  6. 审查活动图是否符合实际情况,是否有遗漏,以及是否需要借助另外一个活动图来描述活动的情况。

(未来会做更详细的探讨,敬请关注)

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

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

相关文章

Linux学习记录——삼십칠 传输层TCP协议(2)

文章目录 1、滑动窗口2、拥塞控制3、延迟应答4、捎带应答5、总结TCP可靠性和性能提高6、面向字节流7、粘包问题8、异常情况9、全连接、半连接 上一篇是传输层TCP协议(1)。本篇默认读者已经清楚TCP报头各个部分、可靠性和握手挥手的含义。 有时候会把客户…

KVM Vcpu概述

KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT Intel的硬件虚拟化技术大致分为3类: 1、VT-x技术:是指Intel处理器中的一些虚拟化技术支持,包括CPU中最基础的VMX技术,也包括内存虚拟化的硬件支…

R语言将list转变为dataframe(常用)

在R语言使用中常常遇到list文件需要转变为dataframe格式文件处理。这是需要写循环来进行转换。IOBR查看其收录的相关基因集(自备)_iobr_deg-CSDN博客 示例文件 list文件&#xff1a; 循环转换为dataframe data <- signature_tme dat <- as.data.frame(t(sapply(data, …

USB_CH340一键下载电路

目录标题 1、CH340概述2、CH340芯片特点3、CH340系列芯片4、CH340引脚定义5、CH340传统的一键下载电路5.1、Stm32串口下载5.2、ESP32串口下载5.3、注意 6、免外围电路下载 1、CH340概述 CH340是一个USB总线的转接芯片&#xff0c;可实现USB转串口或者USB转打印口。 2、CH340芯…

OFBiz RCE漏洞复现(CVE-2023-51467)

漏洞名称 Apache OFBiz 鉴权绕过导致命令执行 漏洞描述 Apache OFBiz是一个非常著名的电子商务平台&#xff0c;是一个非常著名的开源项目&#xff0c;提供了创建基于最新J2EE/XML规范和技术标准&#xff0c;构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式…

c++二叉排序树的非递归插入与递归插入,递归之间不同写法的差异和代码示例比对

二叉排序树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;&#xff0c;是一种特殊的二叉树&#xff0c;它具有以下性质&#xff1a; 每个节点都有一个键&#xff08;Key&#xff09;和两个子节点&#xff0c;分别称为左子节点和右子节点。 左子节点的键小于其…

腾讯云优惠券(代金券)领取方法及最新优惠活动汇总

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为用户提供优质、高效、安全可靠的云计算服务。为了回馈广大用户&#xff0c;腾讯云会不定期地推出各种优惠活动&#xff0c;其中包括优惠券的发放。本文将分享腾讯云优惠券的领取方法并汇总最新优惠活动&#xff0…

DNS 域名解析 后续(二)-----主从复制、分离解析

&#xff08;软件名 bind , 服务名 named&#xff09; bind主包 yum install bind bind-utils -y 主软件 和 配置包管理软件&#xff08;工具包&#xff09; rpm -q bind #检查是否安装dns服务 yum install bind bind-utils -y #安装dns服务,安装bind软件包 &#xff0…

函数的秘密

1. 函数的概念 在数学中我们学习过函数&#xff0c;而在C语言中其有着与数学不同的概念&#xff1a; 在C语言中&#xff0c;函数是指一组执行特定任务的语句&#xff0c;这些语句可以重复使用&#xff0c;并且可以在程序的不同部分调用。通过使用函数&#xff0c;程序员可以将…

docker容器互通方式

目录 docker中容器互通的方式 1、方式一&#xff1a;--link 2、方式二&#xff1a;创建service&#xff1a; docker中容器互通的方式 1、方式一&#xff1a;--link docker run --name mysql-container -d mysql:latest docker run --link mysql-container:app-container -i…

《ARM Linux内核源码剖析》读书笔记——0号进程(init_task)的创建时机

最近在读《ARM Linux内核源码剖析》&#xff0c;一直没有看到0号进程&#xff08;init_task进程)在哪里创建的。直到看到下面这篇文章才发现书中漏掉了set_task_stack_end_magic(&init_task)这行代码。 下面这篇文章提到&#xff1a;start_kernel()上来就会运行 set_task_…

怎么取消开机密码?4个必备方法!

“每次我开机都要输入密码&#xff0c;感觉有点麻烦&#xff0c;有什么方可以快速取消开机密码的吗&#xff1f;快给我推荐推荐吧&#xff01;” 为电脑设置开机密码&#xff0c;可以更好地保护电脑中的重要数据。但是用户需要在每次开机时都输入密码。这对于部分用户来说可能是…

常见类型的yaml文件如何编写?--kind: Service

基本说明 在 Kubernetes 中&#xff0c;Service 是一种抽象的方式&#xff0c;用于定义一组 Pod 的访问方式和网络服务。Service 提供了一个稳定的网络端点&#xff08;Endpoint&#xff09;&#xff0c;使得其他服务或外部用户可以通过 Service 来访问被管理的 Pod。 负载均…

连续整数相加C++

很多整数可以由一段连续的正整数序列&#xff08;至少两个数&#xff09;相加而成&#xff0c;比如 25345671213。 输入一个整数 N&#xff0c;输出 N 的全部正整数序列&#xff0c;如果没有则输出 NONE。 输入格式 一个整数 N。 输出格式 每行输出一个满足条件的整数序列。序…

2024.1.13 Kafka六大机制和Structured Streaming

目录 一 . Kafka中生产者数据分发策略 二. Kafka消费者的负载均衡机制 三 . 数据不丢失机制 生产者端是如何保证数据不丢失的呢&#xff1f; Broker端如何保证数据不丢失 消费端如何保证数据不丢失 Kafka中消费者如何对数据仅且只消费一次 四 . 启动Kafka eagle命令 数…

Python数据结构——列表

目录 一、认识Python数据结构 二、列表概述 三、列表切片 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;常见形式 &#xff08;三&#xff09;特别说明 四、列表的基本操作 &#xff08;一&#xff09;创建列表 &#xff08;二&#xff09;列表元素增加…

全新加密叙事,以Solmash为代表的 LaunchPad 平台如何为用户赋能?

铭文市场的火爆带来“Fair Launch”这种全新的代币启动方式&#xff0c;Fair Launch 的特点在于其为所有人参与 Launch 带来了公平的机会&#xff0c;所有链上玩家们都需要通过先到先得的方式 Mint 资产&#xff0c;VC 在 Fair Launch 中几乎没有话语权&#xff0c;不同的投资者…

CSS伪类:为网页增添交互和样式

CSS伪类是一项强大的特性&#xff0c;它允许开发者根据不同的状态、位置和结构选择器来选择和样式化HTML元素。通过使用CSS伪类&#xff0c;我们可以为网页增添交互性、响应性和样式化效果。本文将深入探讨CSS伪类的概念、常见用法和一些实用示例。 CSS伪类是什么 CSS伪类是一…

qml 传递界面对象指针给c++,以及c++调用qml函数,并在c++中更新ChartView数据

由于QVariant在qml中构建解析大量数据时,效率较低,比如有60万个点时,C++用QVariant传到qml中时,界面就会很卡。所以逆向思维,把qml界面对象指针传给c++,在c++中渲染界面数据。 下面讲具体实现: 1.c++创建对象并暴露给qml,并定义槽函数给qml直接调用 global.h:class…

【AI的未来 - AI Agent系列】【MetaGPT】1. AI Agent如何重构世界

上篇文章我们跑起来了第一个MetaGPT程序。本文主要学习了一下理论&#xff0c;什么是智能体&#xff0c;以及智能体如何重构世界。 0. 什么是智能体 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 用人话说&#xff0c;我理解的Agent&#xff1a; 智…