UML活动图

article/2025/9/22 6:07:19

面向对象的软件开发方法的第一步:业务建模<--使用活动图

转载:https://www.cnblogs.com/xiaolongbao-lzh/p/4591953.html

活动图概述

•活动图和交互图是UML中对系统动态方面建模的两种主要形式

•交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流

•活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模

•UML 2.0而言,去除了“活动图是状态图的一种特例”这一规定

【用途】活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。

活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。

一、活动图的组成元素 Activity Diagram Element

1、活动状态图(Activity)——活动状态用于表达状态机中的非原子的运行

  活动状态图特点如下:

  (1)、活动状态可以分解成其他子活动或者动作状态。

  (2)、活动状态的内部活动可以用另一个活动图来表示。

  (3)、和动作状态不同,活动状态可以有入口动作出口动作,也可以有内部转移

  (4)、动作状态是活动状态的一个特例,如果某个活动状态只包括一个动作,那么它就是一个动作状态

  UML中活动状态和动作状态的图标相同,但是活动状态可以在图标中给出入口动作和出口动作等信息

  【图形】平滑的圆角矩形

                          

 

2、动作状态(Actions)—— 动作状态是指原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态。

  动作状态有如下特点:

  (1)、动作状态是原子的,它是构造活动图的最小单位

  (2)、动作状态是不可中断的。

  (3)、动作状态是瞬时的行为。

  (4)、动作状态可以有入转换,入转换既可以是动作流,也可以是对象流。动作状态至少有一条出转换,这条转换以内部的完成为起点,与外部事件无关

  (5)、动作状态与状态图中的状态不同,它不能有入口动作和出口动作,更不能有内部转移

  (6)、在一张活动图中,动作状态允许多处出现。

  【图形】平滑的圆角矩形

                           

 

3、动作状态约束(Action Constraints)——动作状态约束:用来约束动作状态

  【图形】如下图展示了动作状态的前置条件和后置条件

                    

 

 

4、动作流(Control Flow)——动作之间的转换称之为动作流活动图的转换

  【图形】用带箭头的直线表示,箭头的方向指向转入的方向。

                    

 

5、开始节点(Initial Node)——活动开始节点
  【图形】实心黑色圆点

                   

 

6、终止节点(Final Node)——分为活动终止节点(activity final nodes流程终止节点(flow final nodes)

  (1)、活动终止节点表示整个活动的结束

  【图形】圆圈+内部实心黑色圆点

                                

 

  (2)、而流程终止节点表示是子流程的结束。

  【图形】圆圈+内部十字叉

                               

 

7、对象(Objects)

  【图形】矩形方框  

             

 

8、数据存储对象(DataStore) ——使用关键字«datastore»

   【图形】矩形方框,内含关键字

                                

 

9、对象流(Object Flows)——对象流是动作状态或者活动状态对象之间的依赖关系,表示动作使用对象或动作对对象的影响

  用活动图描述某个对象时,可以把涉及到的对象放置在活动图中并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。

  对象流中的对象有以下特点:

  (1)、一个对象可以由多个动作操作

  (2)、一个动作输出的对象可以作为另一个动作输入的对象。

  (3)、在活动图中,同一个对象可以多次出现,它的每一次出现表面该对象正处于对象生存期的不同时间点。

  【图形】用带有箭头的虚线表示。如果箭头是从动作状态出发指向对象,则表示动作对对象施加了一定的影响。施加的影响包括创建、修改和撤销等。如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象。

  状态图中的对象用矩形表示矩形内是该对象的名称名称下的方括号表明对象此时的状态

             

 

 

10、分支与合并(Decision and Merge Nodes)——选择分支
  【图形】分支与合并用菱形表示,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。

                                         

 

11、分叉与汇合(Fork and Join Nodes)——分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。

  对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。

  【图形】分为水平风向和垂直方向。

 

12、时间信号

                             

 

13、发送信号

                         

 

14、接收信号

                       

 

14、泳道(Partition)——泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。
在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。

泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线

               

 

二、活动图案例分析

例1.购物用例图

 

1、  泳道分为:会员泳道和系统泳道。会员选择商品并加入购物车,系统完成订单生成及其支付完毕。

2、  开始节点:会员添加商品到购物车,点击【订单确认】,开始交于系统处理订单流程

3、  结束节点:商品发送完毕和付款成功,订单处理流程结束

4、  活动状态:产生订单、Check Credit Cart核对信用卡、Check Stock 核对库存量、Deliver Goods 发送商品、Process Credit Cart付款

5、  分叉与汇合:【产生订单】份叉为检查库存量和会员支付金额是否足够,如果不足,取消订单,如过库存量和支付金额足够,发送商品和付款,最后汇合为订单完成。

例2. 带有发送信号与接收信号的活动图

例3.带对象流的活动图

例4.辅助活动图

 


http://chatgpt.dhexx.cn/article/fFG6FQ3O.shtml

相关文章

UML图绘制(三)-----活动图的画法 一

一.什么是活动图 活动图&#xff08;activity diagram&#xff09;是阐明了业务用例实现的工作流程。 业务工作流程说明了业务为向所服务的业务主角提供其所需要的价值而必须完成的工作&#xff0c; 业务用例由一系列活动组成&#xff0c;他们共同为业务主角生成某些工件。 …

最标准的UML(活动图)画法

本人在查阅网上相关资料后&#xff0c;感觉标准都不统一&#xff0c;画什么的都有&#xff0c;所以查阅了UML参考手册&#xff0c;希望可以帮助到学习活动图的小伙伴 下述内容参考来源为《UML参考手册》 1、活动图的图标示例&#xff0c;开始节点为黑色实心圆&#xff0c;而不…

UML活动图画法详细解析

活动图基本概念 活动图是UML中一种重要的用于表达系统动态特性的图。 活动图的作用是描述一系列具体动态过程的执行逻辑&#xff0c;展现活动和活动之间转移的控制流&#xff0c;并且它采用一种着重逻辑过程的方式来叙述。 例如起床上班活动图&#xff1a; 活动图的主要组成…

使用Visio画各种可视化的流程图之活动图和状态图

一、活动图 活动图:描述了业务实现用例的工作流程。 步骤如下: 1.点击新建->类别-软件和数据库-UML活动-创建。 2.添加初始节点。 3.添加动作、判定、节点、注释等形状。 4.连接各个节点&#xff0c;并添加最后一个节点。 二、状态图 状态图:是描述状态到状态控制流&…

一张图阐述UML活动图的画法【软件工程】

文章目录 I.介绍活动图II.一图搞定活动图画法 I.介绍活动图 活动图是软件工程UML图的一个重要的种类&#xff0c;是状态图的一个变体&#xff0c;显示了系统从一个活动到另一个活动的流程&#xff0c;阐明了业务用例实现的工作流程。 活动图显示了一些活动,强调的是对象之间的…

浏览器历史版本下载地址

Google Chrome 历史版本下载&#xff1a; https://www.slimjet.com/chrome/google-chrome-old-version.php FireFox 历史版本&#xff1a; http://ftp.mozilla.org/pub/firefox/releases/ IE 历史版本&#xff1a; IE历史版本不用下载&#xff0c;直接在IE中按下F12&#xff0…

浏览器历史版本列表

Firefox、Chroem、Edge、Safari等都是全平台同版本号发布。 浏览器历史版本主要用来配合标签以及CSS属性来查看浏览器从哪一年开始支持该属性&#xff0c;从而好选择使用哪个标签以及属性。 标签以及CSS属性兼容可以参考&#xff1a;https://blog.csdn.net/lengye7/article/de…

google 浏览器下载历史版本的方法

现在的浏览器版本更新太快&#xff0c;有时我们需要下来之前的浏览器版本&#xff0c;这里来记录一下如何下载 google 浏览器的历史版本。 1.我们先确定要下载 google 浏览器的哪个版本&#xff0c;版本号是多少&#xff08;https://en.wikipedia.org/wiki/Google_Chrome_vers…

JavaIO编程之ReadLine

用Java写了一个客户端和服务器对话的小程序&#xff0c;用TCP/IP协议&#xff0c;程序运行之后&#xff0c;客户端和服务器端能连接上&#xff0c;可是彼此都收不到对方的消息&#xff0c;而且readLine()后面的代码也不执行了。。。 网上查了查&#xff0c;才知道&#xff0c;…

Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

转载请注明出处&#xff1a;http://blog.csdn.net/anxpp/article/details/51512200&#xff0c;谢谢&#xff01; 本文会从传统的BIO到NIO再到AIO自浅至深介绍&#xff0c;并附上完整的代码讲解。 下面代码中会使用这样一个例子&#xff1a;客户端发送一段算式的字符串到服务器…

IO编程 之 缓冲篇

涉及linux中IO编程的时候&#xff0c;我们总是不可避免地要跟各种各样的缓冲机制打交道&#xff0c;学好linux IO编程不是简单地掌握几个函数的用法就万事大吉&#xff0c;正确地运用IO需要对其缓冲机制全面的理解&#xff0c;切不可依葫芦画瓢&#xff0c;蒙混过关。 切入正题…

【蓝桥杯单片机组】两种外设访问方式:IO编程和MM编程

微信搜索&#xff1a;ReCclay&#xff0c;也可免费阅读博主蓝桥系列所有文章&#xff0c;后台回复“代码”即可获取蓝桥所有备赛代码&#xff01;关注博主公众号&#xff0c;还可拥有加入博主粉丝群实时沟通技术难题、免费下载CSDN资源等多项福利&#xff0c;还在等什么呢&…

树莓派——9、IO操控代码编程

编写操控io的代码 关于树莓派的cpu型号&#xff1a; 使用pinout 使用cat /proc/cpuinfo 查阅资料&#xff1a; 查阅资料发现树莓派3b的CPU型号就是BCM2709&#xff0c;也就是pinout中的BCM2827 要先确定IO空间的起始地址&#xff08;物理地址&#xff09; ps&#xff1a;树莓…

PHP并发IO编程之路

并发IO问题一直是服务器端编程中的技术难题&#xff0c;从最早的同步阻塞直接Fork进程&#xff0c;到Worker进程池/线程池&#xff0c;到现在的异步IO、协程。PHP程序员因为有强大的LAMP框架&#xff0c;对这类底层方面的知识知之甚少&#xff0c;本文目的就是详细介绍PHP进行并…

几种 IO编程比较

参考&#xff1a; Netty权威指南第一版 Java 网络IO编程总结&#xff08;BIO、NIO、AIO均含完整实例代码&#xff09; 1. 传统的BIO模型 通常由一个独立的Acceptor线程负责监听客户端的连接&#xff0c;它接收到客户端连接请求之后为每个客户端创建一个新的线程进行处理&am…

Java实验报告(七)|IO编程

文章目录 题目一题目二题目三 题目一 &#xff08;一&#xff09;编程实现打印目录“C:/”下所有后缀为“.txt”文件名。 import java.io.File; import java.util.Scanner; public class ShowTxt {public static void main(String[] args) {System.out.println("请输入要…

Linux下C语言编程(1):IO编程

笔者今天来讲讲Linux下IO口的使用。用的硬件是三大开源器件之一的BeagleBone&#xff08;狗骨头&#xff09;。 &#xff08;PS 三大开源器件&#xff1a;树莓派、Arduino和Beagle Bone&#xff09; 硬件介绍 TI公司的AM3358 集成 1G MHz ARM Cortex™ A8 内核&#xff0c; 4G…

IO接口编程

IO接口编程 作者&#xff1a; Saint 掘金&#xff1a;https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博&#xff1a;https://weibo.com/5458277467/profile?topnav1&wvr6&is_all1 GitHub&#xff1a;github.com/saint-000 CSDN: https://me.csdn.net/qq_405319…

网络编程IO

文章目录 前言用户空间和内核空间系统调用一、同步IO模型1、阻塞式IO模型2、非阻塞式IO模型3、IO复用模型4、信号驱动IO模型 二、异步IO模型三、同步和异步 前言 IO操作由两个部分组成&#xff1a;发起IO请求、实际进行IO操作。 也就是下图所示的等待数据从磁盘拷贝到内核空间…

Linux 下文件IO编程进程控制实验

Linux 下文件IO编程&进程控制实验 一、基本I/O操作 (1).Linux的输入/输出&#xff08;I/O&#xff09;操作&#xff0c;通常为五个方面&#xff1a;打开&#xff0c;读取&#xff0c;写入&#xff0c;定位和关闭&#xff1b;对应的函数分别为&#xff1a;open&#xff08;…