UML 活动图深度解析:以在线购物系统为例
目录
一、UML 活动图的基本构成要素
二、题目原型
三、在线购物系统用户购物活动图详细剖析
(一)概述
(二)节点分析
三、注意事项
四、活动图绘画
五、UML 活动图在软件开发中的关键价值
六、总结
在软件开发与系统设计领域,UML(统一建模语言)活动图是可视化业务流程和工作流的强有力量具。它能清晰地展示系统中的一系列活动以及它们之间的流转关系,帮助开发团队、业务人员等各方人员更好地理解系统的运作机制。今天探讨 UML 活动图的构建、要素以及其在实际应用场景中的价值,并结合在线购物系统用户购物流程这一典型场景进行剖析。
一、UML 活动图的基本构成要素
-
活动(Activity)与动作状态(Action State) 活动代表系统中的操作或过程,如 “搜索商品”“生成购物订单” 等。它可以用圆角矩形表示,矩形内写上活动名称。动作状态则是活动执行的具体时刻和状况,表示某个动作正在进行或已完成,通常用小矩形框呈现动作名称。
-
迁移(Transition) 迁移是连接活动图元素的箭头,表示活动的流向。箭头上可添加条件或说明,限定活动流转的条件。例如,在用户购物过程中,从 “搜索商品” 到 “进入商品详情页” 的迁移,就明确了用户在完成搜索后下一步的操作方向。
-
判断节点(Decision Node) 判断节点用于条件判断,根据判断结果,活动沿不同迁移路径执行。它用菱形表示,内部写判断条件。在在线购物场景中,判断用户是 “继续购物” 还是 “结算”,就依赖判断节点来实现不同流程分支。
-
初始节点(Initial Node)与活动终点(Activity Final Node) 初始节点是活动图起点,用实心圆点表示,没有输入迁移,只有输出迁移,标志着流程启动。活动终点代表整个活动结束,用带有实心圆点的圆圈表示,一旦执行到该终点,流程完成。在用户购物活动图中,初始节点表示用户开始购物,活动终点表示整个购物流程结束。
二、题目原型
在某在线购物系统中,用户首先搜索商品,进入商品详情页,可以将商品加入购物车。用户可以多次重复这一步骤直至购物结束。购物结束后进入购物车页面,用户付款后,生成购物订单。对于订单中的每个商品,购物系统应当通知对应的商家进行发货。
请根据以上描述绘制用户购物的活动图。
三、在线购物系统用户购物活动图详细剖析
(一)概述
活动图用于描述在线购物系统中用户购物的过程,涵盖搜索商品、查看商品详情、加入购物车、结算、付款、生成订单以及通知商家发货等环节。通过活动图,能清晰呈现用户购物的完整流程及各环节之间的流转关系。
(二)节点分析
-
初始节点 :表示用户购物过程的起点,从这里开始执行购物活动。
-
活动节点
-
搜索商品 :用户在搜索框输入关键词,系统检索并展示商品列表。
-
进入商品详情页 :用户点击商品,进入详情页查看商品信息。从 “搜索商品” 迁移到 “进入商品详情页”,用户查看商品的详细信息,包括图片、描述、价格、评价等。
-
将商品加入购物车 :用户可将商品加入购物车,购物车作为对象节点,用于存储用户选择的商品。基于商品详情,用户做出决策,将商品加入购物车。这里有一个循环,用户可多次重复 “搜索商品 - 进入详情页 - 加入购物车” 这一过程,直至购物结束。在活动图中,通过从 “将商品加入购物车” 到 “搜索商品” 的迁移,并标注 “继续购物” 条件来体现循环结构。
-
进入购物车结算页面 :当用户完成购物,从 “将商品加入购物车” 迁移到 “进入购物车结算页面”。在结算页面,用户确认购物车中的商品信息、收货地址、支付方式等。
-
用户支付 :用户选择支付方式并完成付款操作。进入 “用户支付” 活动,这里又包含分支判断。若支付失败,流程返回到 “进入购物车结算页面”,用户可修改支付信息重新支付;支付成功则流向 “生成购物订单” 活动。
-
生成购物订单 :生成购物订单后,针对订单中的每个商品项,系统需要通知对应商家发货。这里引入迭代结构,用 “iterative” 关键字表示对每个商品项的循环处理。系统依次向各商品的商家发送发货通知,直至处理完所有商品项,整个购物流程才抵达活动终点,完成购物任务。
-
通知商家发货 :针对订单中的每个商品项,系统通知对应商家发货,此部分作为扩展区域,用迭代结构处理订单中的多个商品项,确保每个商品都能及时发货。
-
-
判断节点
-
在加入购物车后,判断用户是否继续购物。若是,返回搜索商品环节;若否,进入购物车结算页面。
-
在用户支付后,判断支付是否成功。若成功,生成购物订单;若失败,返回购物车结算页面重新支付。
-
-
活动终点 :表示用户购物过程的结束,当所有商品项都通知商家发货后,整个购物活动结束。
三、注意事项
-
购物车对象节点的使用 :购物车作为对象节点,在用户购物过程中起到关键作用。它可以动态添加商品,存储用户的选择,为结算和生成订单提供数据支持。在活动图中,购物车对象节点清晰地展示了商品的存储和流转过程。
-
扩展区域的体现 :对于订单中每个商品通知商家发货的部分,将其作为扩展区域,用迭代结构进行处理。在活动图中,通过循环箭头和条件判断,明确展示了对每个商品项的处理过程,确保系统能够准确地将发货通知发送给对应商家。
四、活动图绘画
五、UML 活动图在软件开发中的关键价值
-
业务流程梳理与沟通协作 在开发初期,活动图能将复杂的业务流程以直观易懂的方式呈现出来。对于开发团队内部,不同成员(如开发人员、测试人员、产品经理等)能基于活动图快速达成对业务逻辑的共识,避免因理解不一致导致的开发问题。同时,向业务人员展示活动图,可让他们直观地确认需求是否被准确捕获和实现,便于及时调整业务策略。
-
系统设计与开发指导 在系统设计阶段,活动图能帮助架构师和开发人员明确系统的功能模块和交互流程。根据活动图中的活动和迁移关系,可合理划分系统模块,设计类和接口,确定模块间的调用顺序和数据传递方式。在开发过程中,开发人员可依据活动图逐步实现每个活动对应的功能代码,确保开发进度和质量。
-
测试用例设计与系统验证 测试团队可基于活动图设计测试用例,覆盖不同的活动路径和分支条件。通过模拟各种可能的用户操作路径,验证系统是否按照预期的流程执行,是否正确处理了各种正常和异常情况。这有助于发现系统中的功能缺陷、逻辑漏洞等问题,提高系统的稳定性和可靠性。
六、总结
在软件开发领域,UML 活动图是可视化业务流程的强有力量具。本文探讨了 UML 活动图的构建、要素及其在实际场景中的价值,并结合在线购物系统用户购物流程进行剖析。在线购物系统活动图涵盖搜索商品、查看商品详情、加入购物车、结算、付款、生成订单及通知商家发货等环节,清晰呈现购物流程及流转关系。通过节点分析,明确初始节点、活动节点、判断节点和活动终点的作用与流转逻辑,强调购物车对象节点的使用及扩展区域的处理,确保活动图的完整性和准确性。活动图在软件开发中具有梳理业务流程、指导系统设计与开发、辅助测试用例设计等关键价值,是团队协作与系统理解的重要工具。
相关文章:

UML 活动图深度解析:以在线购物系统为例
目录 一、UML 活动图的基本构成要素 二、题目原型 三、在线购物系统用户购物活动图详细剖析 (一)概述 (二)节点分析 三、注意事项 四、活动图绘画 五、UML 活动图在软件开发中的关键价值 六、总结 在软件开发与系统设计领…...
利用车联网中的 V2V 通信技术传播公平的紧急信息
与移动自组织网络 (MANET) 相比,车载自组织网络 (VANET) 的节点移动速度更快。网络连接的节点可以在自身内部或其他基础设施之间交换安全或非安全消息,例如车对车 (V2V) 或车对万物 (V2X)。在车载通信中,紧急消息对于安全至关重要,必须分发给所有节点,以提醒它们注意潜在问…...
文件的读取操作
#import time # 导入time 库 # 打开文件 fileopen("E:\Dasktape/python_test.txt","r",encoding"UTF-8")# 读取文件 print(f"读取文件的所有内容内容:{file.read()}\n") #\n是换行字符 print(f"读取10个字节的文件内容:{file.re…...
数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!
公式推导: e i π − 1 e^{i\pi} -1 eiπ−1 被誉为数学中最美的公式之一,它连接了五个数学中最重要的常数: e i π 1 0 (欧拉恒等式) e^{i\pi} 1 0 \tag{欧拉恒等式} eiπ10(欧拉恒等式) 这不仅是巧合,而是复数与三角函数…...
【android bluetooth 协议分析 06】【l2cap详解 6】【L2CA_Register函数解析】
L2CA_Register() 函数的实现,它的作用是: 注册一个 L2CAP 服务(基于 PSM)并设置回调函数、MTU、安全等级、传输模式等信息,供 L2CAP 层用于处理连接、配置、数据、断开等事件。 1. L2CA_Register2/L2CA_Register 参数…...

【MFC】 VS2022打开低版本的MFC,双击.rc文件,DIalog加载失败,页面弹窗fatal error RC***:cannot open*****
打开以前的MFC示例报错,打开VS2019的实例以及更早VS版本的实例都一样,打不开,还报错; 错误 MSB8041 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 GxCameraEvents_VS2015 C:\P…...

Centos9 安装 nginx 及配置
1. 安装nginx 安装依赖软件,安装之前可以看一下是否已经安装过以下软件,dnf list installed | grep zlib dnf install gcc-c dnf install zlib dnf install pcre pcre-devel dnf install openssl openssl-devel下载nginx,这里是下载到opt文…...

使用Handsontable实现动态表格和下载表格
1.效果 2.实现代码 首先要加载Handsontable,在示例中我是cdn的方式引入的,vue的话需要下载插件 let hot null;var exportPlugin null;function showHandsontable(param) {const container document.getElementById("hot-container");// 如果…...

Action:Update your application‘s configuration
在使用Maven项目时,有一个报错信息是:Update your applications configuration 这类问题,就是我们的application.yml文件 或者 application.properties文件 内容哪里写错了 最有可能就是对齐方式有问题...

【计算机网络】IP地址
IPv4 五类地址 1.0.0.0 ~ 126.255.255.255A类子网8位,主机24位128.0.0.0 ~ 191.255.255.255B类子网16位,主机16位192.0.0.0 ~ 223.255.255.255C类子网24位,主机8位224.0.0.0 ~ 239.255.255.255D类不分网络地址和主机地址,作为组播…...

Rundeck 介绍及安装:自动化调度与执行工具
Rundeck介绍 概述:Rundeck 是什么? Rundeck 是一款开源的自动化调度和任务执行工具,专为运维场景设计,帮助工程师通过统一的平台管理和执行跨系统、跨节点的任务。它由 PagerDuty 维护(2016 年收购)&#…...

vue element使用el-table时,切换tab,table表格列项发生错位问题
展示问题 问题描述:使用el-table的fixed"right"属性后,如果切换tab时,回出现最后一列错误的问题 官网提供解决方法:doLayout 需要注意的事项:我这里是通过组件使用的table组件,涉及多层组件封装…...

第十二章 Python语言-大数据分析PySpark(终)
目录 一. PySpark前言介绍 二.基础准备 三.数据输入 四.数据计算 1.数据计算-map方法 2.数据计算-flatMap算子 3.数据计算-reduceByKey方法 4.数据计算-filter方法 5.数据计算-distinct方法 6.数据计算-sortBy方法 五.数据输出 1.输出Python对象 (1&am…...
【RedisLockRegistry】分布式锁
RedisLockRegistry分布式锁 介绍 RedisLockRegistry是Spring框架提供的一种分布式锁机制,它基于Redis来实现对共享资源的保护,防止多个进程同时对同一资源进行修改,从而避免数据不一致或其他问题 基本原理 RedisLockRegistry通过Redi…...
leetcode-排序
排序 面试题 01.01. 判定字符是否唯一 题目 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 示例 1: 输入: s "leetcode" 输出: false 示例 2: 输入: s "abc" 输出: true限制: 0 < len(s) &…...

AD相同网络的铜皮和导线连接不上
出现这样的情况是不是很烦恼,明明是相同的网络连接不上????? 直接修改铜皮属性(选择所有相同这个选项) 这样就可以连接上了...

keil修改字体无效,修改字体为“微软雅黑”方法
在网上下载了微软雅黑字体,微软雅黑参考下载链接 结果在Edit->Configuration中找不到这个字体 这个时候可以在keil的安装目录中找到UV4/global.prop文件 用记事本打开它进行编辑,把字体名字改成微软雅黑 重新打开keil就发现字体成功修改了。 这个…...

【网络编程】从零开始彻底了解网络编程(三)
本篇博客给大家带来的是网络编程的知识点. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便进步 TCP流…...

NVIDIA --- 端到端自动驾驶
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、传统驾驶模型二、NVIDIA的端到端驾驶模型1.基本模型2.自查讯向量3.通用框架 总结 前言 端到端自动驾驶指的是系统接收来自摄像头雷达和激光雷达的原始传感…...
关于在Springboot中设置时间格式问题
目录 1-设置全局时间格式1.Date类型的时间2.JDK8时间3.使Date类和JDK8时间类统统格式化时间 2-关于DateTimeFormat注解 1-设置全局时间格式 1.Date类型的时间 对于老项目来说,springboot中许多类使用的是Date类型的时间,没有用到LocalDateTime等JDK8时…...

CSRF请求伪造
该漏洞主要是关乎于用户,告诫用户不可乱点击链接,提升自我防范,才能不落入Hacker布置的陷阱! 1. cookie与session 简单理解一下两者作用 1.1. 🍪 Cookie:就像超市的会员卡 存储位置:你钱包里…...

(一)单机架构、应用数据分离架构、应用服务集群架构
文章目录 明确为什么要学习架构的演进单机架构什么是单机架构单机架构的模型单机架构的优缺点优点缺点 单机架构的技术案例 应用数据分离架构什么是应用数据分离架构架构模型应用数据分离架构的优缺点优点缺点 技术案例 应用服务集群架构什么是应用服务集群架构架构模型应用服务…...

Python数据分析案例72——基于股吧评论数据的情感分析和主题建模(LDA)
背景 好久没更新了,最近忙其他去了。最近股市波动太大,看了不少新闻的评论。抽空写了个股吧评论数据的LDA建模和情感分析,简单写到博客上来更新一下。 数据来源 上证指数(000001)股吧_上证指数怎么样_分析讨论社区— 数据来源上述网站的东…...
Git分支管理方案
成都众望智慧有限公司Git分支管理方案 采用 轻量级Git Flow 敏捷版本控制策略,在保证稳定性的同时提升开发效率。以下是优化后的方案: 1. 精简分支模型(相比6-8人团队减少分支层级) 分支类型作用生命周期devops生产环境代码&am…...

力扣-160.相交链表
题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返…...
c语言中float和double 类型的区别
在 C 语言里,float和double都用于表示浮点数,不过二者在多个方面存在差异,下面为你详细介绍: 1. 存储空间大小 在 C 语言中,数据类型所占用的存储空间大小通常与编译器和系统架构有关,但一般来说…...

【C++】特殊类的设计、单例模式以及Cpp类型转换
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章: C 智能指针使用,以及shared_ptr编写 下篇文章ÿ…...

050_基于springboot的音乐网站
一、系统架构 前端:vue | element-ui | html | jquery | css | ajax 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven | nodejs | idea 二、代码及数据 三、功能介绍 01. web端-注册 02. web端-登录 03. web…...
全局变量Msg.sender
msg.sender 在 Solidity 中,有一些全局变量可以被所有函数调用。 其中一个就是 msg.sender,它指的是当前调用者(或智能合约)的 address。 注意:在 Solidity 中,功能执行始终需要从外部调用者开始。 一个合…...

【论文阅读】平滑量化:对大型语言模型进行准确高效的训练后量化
论文题目:SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 论文地址:[2211.10438] SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 代码地址:http…...