UML建模图文详解教程07——活动图


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著

在这里插入图片描述

活动图概述

活动图(activity diagram)是 UML中一种重要的用于表达系统动态特性的图。活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。

具体地说,活动图的表达能力包括了逻辑判断、分支甚至并发。所以活动图的表达能力要远高于流程图。流程图仅仅展示一个固定的过程,而活动图可以展示并发和控制分支,并且可以对活动与活动之间信息的流动进行建模。

活动图的组成元素

请务必熟悉并掌握以下核心知识点。

动作和活动节点

动作代表一个原子操作,操作可能是任何合法的行为。在活动图中,动作使用一个左右两端为圆弧的矩形框来表示,在这个图形内部加人该动作的描述。

在这里插入图片描述
活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图中的表达方式和动作相同,它们之间的区分需要依靠编辑工具或附加说明来完成。

活动节点本身可以代表一个复杂过程,它的控制流由其他的活动节点和动作组成,如需要可以另附其他的活动图来表达活动节点的控制流。

开始和终止

活动图中的开始和终止是两个标记符号。开始标记注明了业务流程的起始位置,使用一个实心黑色圆点表示。终止标记注明了业务流程的可能结束位置,使用一个与开始标记等大的、内有一个黑色实心小圆点的空心圆圈来表示。

在这里插入图片描述

控制流

控制流是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导着各个动作的连续执行。

在 UMI中,控制流使用一条从前一个动作(或活动节点)出发指向下一个动作(或活动节点)的简单箭头表示。

在这里插入图片描述

判断节点

判断节点是活动图中进行逻辑判断、并创造分支的一种方法。判断节点具有一个进入控制流和至少两个导出控制流(从当前节点出发指向其他动作或节点的流称为导出流或离开流),判断节点的前一个动作应当是判断型动作。

在活动图中判断节点用一个菱形来表示。并且作为判断节点,这个菱形有且仅有一个指向它的箭头,有至少两个由它出发指向其他动作或活动节点的箭头。

在这里插入图片描述

合并节点

合并节点将多个控制流进行合并,并统一导出到同一个离开控制流。在活动图中合并节点也同样使用一个菱形来表示。作为合并节点,这个菱形应该至少有两个指向它的箭头,有且仅有一个由它出发指向其他动作或活动节点的箭头。

在这里插入图片描述

泳道

活动图中的元素可以使用泳道来分组。泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。在业务模型中,每个泳道的负责对象可能是一个单位或一个部门。例如,在一次考试的全过程中,有如下过程:

  • (1)老师出卷
  • (2) 学生作答
  • (3) 老师批卷
  • (4)老师打印成绩单
  • (5)学生领取成绩单

在这个过程中,可以发现每个过程的主语都是该动作的执行者,那么在这个简单的过程中可以分“老师”和“学生”两个泳道,把动作与负责执行它的对象用这种形如二维表的方式进行关联。

在这里插入图片描述

分叉节点与结合节点

在活动图中,我们使用分叉节点和结合节点来表示并发。

分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进入控制流和多个离开控制流。

结合节点是将多个并发控制流收束回同一流程的节点标记。

在这里插入图片描述

航空购票系统活动图

在此,以航空购票系统的购买机票用例为例绘制活动图;图示如下:

在这里插入图片描述

确定泳道

开始创建活动图时,需要首先确定参与的对象,即确定活动图有几个泳道。泳道说明了活动是由该对象执行的。在该案例中,我们将其粗粒度地分为用户和系统两个泳道。

与创建用例图类似,请在Model中创建活动图;图示如下:

在这里插入图片描述
点击确定后,图示如下:

在这里插入图片描述
选中活动图,右键单击选择添加图,再选择UML Behavioral和Activity;图示如下:

在这里插入图片描述
单击确定后,图示如下:

在这里插入图片描述
首先,将工具箱中的泳道Partition拖拽至绘图区添加用户泳道;图示如下:

在这里插入图片描述
点击确定,图示如下:

在这里插入图片描述
调整泳道方向,图示如下:

在这里插入图片描述
调整泳道方向和长度;图示如下:

在这里插入图片描述
类似地,添加系统泳道并将其与用户泳道对齐;图示如下:

在这里插入图片描述

按照逻辑顺序完成活动图

在添加完泳道后,需要梳理整个控制流的过程:用户首先选择购票的航班,此时如果该航班已无余票,则系统提示该航班已无票,用户重新选择航班;如果航班有余票,则系统请求用户确认购票信息,此时用户可以取消购票也可以确认购票并支付,支付完成后系统修。

首先,将Initial拖动至用户泳道作为起点;图示如下:

在这里插入图片描述
点击确定后,图示如下:
在这里插入图片描述
将Activity拖动至用户泳道作为选择航班的活动;图示如下:

在这里插入图片描述
点击确定后,可以调整活动框大小;图示如下:

在这里插入图片描述
将Decision拖动至系统泳道作为判断节点;图示如下:
在这里插入图片描述
单击确定后图示如下:

在这里插入图片描述
类似地,在系统泳道添加两个活动即提示航班无余票和确认机票信息;图示如下:

在这里插入图片描述

将Decision拖动至用户泳道作为判断节点;图示如下:

在这里插入图片描述

将Final拖动至系统泳道作为第一个终止;图示如下:

在这里插入图片描述

单击确定;图示如下:

在这里插入图片描述
将Activity拖动至用户泳道作为支付活动;图示如下:

在这里插入图片描述
将工具箱中的Fork/Join拖动至系统泳道作为分叉节点;图示如下:

在这里插入图片描述
单击确定后调整分叉节点长度;图示如下:

在这里插入图片描述
类似地,在系统泳道中的分叉节点添加修改机票状态活动和生成订票记录活动;图示如下:

在这里插入图片描述
类似地,将工具箱中的Fork/Join拖动至系统泳道作为结合节点;图示如下:

在这里插入图片描述

最后,将Final拖动至系统泳道作为第二个终止;图示如下:

在这里插入图片描述
接下来,我们依据流程使用工具箱中Activity Relationships中的Control Flow连线;图示如下:

在这里插入图片描述
在目前的活动图中,还缺乏判断节点的说明;图示如下:

在这里插入图片描述
请双击连线添加说明文本;图示如下:
在这里插入图片描述

单击确定后并调整文本位置;图示如下:

在这里插入图片描述

类似地,添加有余票的文本说明;图示如下:

在这里插入图片描述

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

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

相关文章

[原创](免改BIOS)使用Clover升级旧电脑-(高阶玩法)让固态硬盘内置Win11 PE启动系统

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

推荐几款优秀的Chrome插件,值得收藏!

文章目录 1、Tampermonkey2、WeTab3、Chrono下载管理器4、AdBlock5、Cookie-Editor 1、Tampermonkey 使用用户脚本自由地改变网络,提升您的浏览体验,使用篡改猴!🌐🚀 篡改猴是一款功能强大的浏览器扩展功能&#xff0c…

【Python微信机器人】第四篇:实战发送文本和图片消息(使用篇)

目录修整 目前的系列目录(后面会根据实际情况变动): 在windows11上编译python将python注入到其他进程并运行注入Python并使用ctypes主动调用进程内的函数和读取内存结构体调用汇编引擎实战发送文本和图片消息(同时支持32位和64位微信)允许Python加载运行py脚本且支持热加载&a…

【电路笔记】-分压器

分压器 文章目录 分压器1、概述2、负载分压器3、分压器网络4、无功分压器4.1 电容分压器4.2 感应分压器 5、总结 有时,需要精确的电压值作为参考,或者仅在需要较少功率的电路的特定阶段之前需要。 分压器是解决此问题的一个简单方法,因为它们…

vue3 for循环创建的多个e-form 添加校验

v-for 创建 ref <el-form :model"item" :rules"state.rules" :ref"el > getRiskSpreadRef(el, index)" ></el-form>// 定义ref list const riskSpreadRefList ref<HTMLElement[]>([]);// ref存到数组 const getRiskSpread…

(Matalb回归预测)GA-BP遗传算法优化BP神经网络的多维回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码&#xff1a; 四、分享本文全部代码数据说明手册&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于M…

【黑马甄选离线数仓day04_维度域开发】

1. 维度主题表数据导出 1.1 PostgreSQL介绍 PostgreSQL 是一个功能强大的开源对象关系数据库系统&#xff0c;它使用和扩展了 SQL 语言&#xff0c;并结合了许多安全存储和扩展最复杂数据工作负载的功能。 官方网址&#xff1a;PostgreSQL: The worlds most advanced open s…

ModuleNotFoundError: No module named ‘torch_sparse‘

1、卸载 先把torch-geometric、torch-sparse、torch-scatter、torch-cluster、 torch-spline-conv全部卸载了 pip uninstall torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv 2.conda list确定PyTorch的版本&#xff0c;我的是1.10 3、确定下载地…

使用v-md-editor开发sql查看器--实战

v-md-editor markdown编辑器 文档&#xff1a;https://code-farmer-i.github.io/vue-markdown-editor/zh/ echo 创建一个空目录&#xff0c;使用vscode打开此空目录&#xff0c;进入终端&#xff0c;输入如下命令 npm create vitelatest . -- --template vue echo 选择 vue 和 …

腾讯云云服务器旗舰新品SA5重磅首发

近日&#xff0c;腾讯云云服务器CVM再升级&#xff0c;极具性价比的云服务器旗舰新机型SA5重磅发布&#xff0c;搭载第四代AMD EPYC处理器&#xff08;Bergamo&#xff09;&#xff0c; 相比云服务器SA3实例&#xff0c;整机性能最大提升120%以上。 温馨提醒&#xff1a;购买腾…

搭建SRS视频服务器

去官方网站下载FFmpeg6.1 https://ffmpeg.org/download.html拷贝到CentOS7.9中的/opt目录下&#xff0c;解压并重命名 tar -xvf ffmpeg-6.1.tar.xz 解压后编译安装 ./configure make make install从github下载SRS4.0release 解压后 如果ffmpeg的路径不在/usr/local/bin/ffmpe…

【沐风老师】在3dMax中如何把对象随机散布在表面上?

在3dMax中如何把对象随机散布在表面上&#xff1f; 在这个教程中&#xff0c;给大家讲解在3dMax中如何把对象随机散布到另一个对象的表面上。有不少3dMax的初学者在将对象分布在随机表面上时感到手足无措。如果&#xff0c;将每个对象手动放置在表面上并花时间调整每个对象根本…