UML--活动图详解

article/2025/9/22 4:00:02

活动图

活动图是状态机的一个特殊例子,它强调计算过程中的顺序和并发步骤。活动图所有或多数状态都是活动状态或动作状态,所有或大部分的转换都由原状态中完成的活动触发。

活动图的含义

活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。通常,活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。

在UML中,活动图的起点用来描述活动图的开始状态,用黑的实心圆表示。活动图的中止点描述活动图的终止状态,用一个含有实心圆的空心圆表示。活动图中的活动既可以是手动执行的任务,也可以是自动执行的任务。

在这里插入图片描述
活动图与状态图的区别:
活动图可以算是状态图的一个变种,并且活动图的符号与状态图的符号非常相似,有时会让人混淆。

活动图的主要目的是描述动作及对象的改变结果,而状态图则是以状态的概念描述对象、子系统、系统在生命周期中的各种行为。

活动图中的状态转换不需要任何触发事件。活动图中的动作可以放在泳道中,而状态图则不可以。

活动图的作用

活动图是模型中的完整单元,表示一个程序或工作流,常用于计算流程和工作流程的建模。活动图着重描述用例实例或对象的活动,以及操作实现中所完成的工作。活动图通常出现在设计的前期,即在所有实现决定前出现,特别是在对象被指定执行所有活动前。

活动图的作用主要体现在以下几点:

  • 描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。
  • 活动图对用例描述尤其有用,它可对用例的工作流建模,显示用例内部和用例之间的路径。它可以说明用例的实例是如何执行动作以及如何改变对象状态的。
  • 显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。
  • 活动图对理解业务处理过程十分有用。活动图可以画出工作流用以描述业务,有利于领域专家进行交流。通过活动图可以明确业务处理操作是如何进行的,以及可能产生的变化。
  • 描绘复杂过程的算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。

注意:活动图假定在整个计算机处理的过程中,没有外部事件引起中断,否则普通的状态图更适合描述此种情况。

互动图的组成

动作状态:
动作状态(Action State)是原子性的动作或操作的执行状态,它不能被外部事件的转换中断。动作状态的原子性决定了动作状态要么不执行,要么就完全执行,不能中断。

在UML中,动作状态使用平滑的圆角矩形表示,动作状态表示的动作写在矩形内部,如下图:
在这里插入图片描述

活动状态:
活动状态是非原子性的,用来表示一个具有子结构的纯粹计算的执行。活动状态可以分解成其他子活动状态或动作状态,可以被使转换离开状态的时间从外部中断。活动状态可以有内部转换,可以有入口动作和出口动作。活动状态具有至少一个输出完成转换,当状态中的活动完成时该转换被激发。

活动状态和动作状态的表示图标相同,都是平滑的圆角矩形。不同的是,活动状态可以在图标中给出入口动作和出口动作等信息,如下图:

在这里插入图片描述

组合活动:
组合活动是一种内嵌活动图的状态。我们把不含内嵌活动或动作的活动成为简单活动,把嵌套了若干活动或动作的活动成为组合活动。

一个组合活动在表面上看是一个状态,但其本质却是一组子活动的概括。一个组合活动可以分解为多个活动或者动作的组合。每个组合活动都有自己的名字和相应的自活动图。一旦进入组合活动,嵌套在其中的自活动图就开始执行,直到到大子活动图的最后一个状态,组合活动才结束。与一般的活动图状态一样,组合活动不具备原子性,它可以在执行的过程中被中断。

在这里插入图片描述

分叉与结合:
并发(Concurrency)指的是在同一时间间隔内,有两个或两个以上的活动执行。对于一些复杂的大型系统而言,对象在运行时往往不止存在一个控制流,而是存在两个或多个并发运行的控制流。为了对并发的控制流建模,在UML中引入了分叉和结合的概念。

分叉表示将一个控制流分成两个或多个并发运行的分支,结合用来表示并行分支在此得到汇合。

分叉和结合在UML中的表示方法相似,都是用粗黑线表示。分叉具有一个输入转换,两个或多个输出转换,每个转换都可以是独立的控制流,如下图:
在这里插入图片描述
结合与分叉相反,结合具有两个或多个输入转换,只有一个输出转换。先完成的控制流需要在此等待,只有当所有的控制流都到达结合点时,控制才能继续进行,如下图:

在这里插入图片描述
分支与合并:
分支在活动图中很常见,它是转换的一部分,它将转换路径分成多个部分,每一部分都有单独的监护条件和不同的结果。当动作流遇到分支时,会根据监护条件(布尔值)的真假来判定动作的流向。分支的每个路径的监护条件应该都是互斥的,这样可以保证只有一条路径的转换被激发。

合并指的是两个或者多个控制路径在此汇合的情况。合并是一种便利的表示法,省略它不会丢失信息。合并和分支常常成对使用,合并表示从对应分支开始的条件行为的结束。

在UML活动图中,分支与合并都是用空心的菱形表示的。分支有一个输入箭头和两个输出箭头,而合并有两个输入箭头和一个输出箭头,如下图:

在这里插入图片描述

泳道:
为了对活动图的职责进行组织而在活动图中将活动状态分为不同的组,成为泳道(Swimlane)。每个泳道代表了特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确地表示了哪些活动是由哪些对象进行的。每个泳道都有一个与其它泳道不同的名称。

每个泳道都可能由一个或者多个类实施,类所执行的动作或拥有的状态按照发生的事件顺序自上而下排列在泳道内。

在活动图中,每个泳道通过垂直实线与他的邻居泳道相分离。泳道的上方是名称,不同泳道中的活动既可以顺序进行,也可以并发进行。虽然每个活动状态都指派了一条泳道,但是转移则可能跨越数条泳道。

在这里插入图片描述
对象流:
对象流(Object Flow)是将对象流状态作为输入或输出的控制流。在活动图中,对象流描述了动作状态或者活动状态与对象之间的关系,表示动作使用对象以及动作对对象的影响。

对象流中的对象表示的不仅仅是对象自身,还表示了对象作为过程中的一个状态存在,因此也可以将这种对象成为对象流状态(Object Flow State),用以和普通对象区别。

在活动图中,一个对象可以由多个动作操作。对象可以是一个转换的目的,以及一个互动完成转换的源。当前转发激发,对象流状态变成活动的。同一个对象可以不止一次地出现,它的每一次出现都表明该对象处于生存期的不同时间点。

一个对象流状态必须与它所表示的参数和结果的类型匹配。如果它是一个操作的输入,则必须与参数的类型匹配。反之,如果它是一个操作的输出,则必须与结果的类型匹配。

活动图中的对象用矩形表示,其中包含带下划线的类名,在类名下方的中括号中则是状态名,表明对象此时的状态,如下图:
在这里插入图片描述

对象流表示了对象与对象、对象间彼此操作与转换的关系。为了在活动图中把它们与普通转换分开,用带箭头的虚线而非实线来表示对象流。如果虚线箭头从活动指向对象流状态,则表示输出。输出表示动作对对象施加了影响,影响包括创建、修改、撤销等。如果虚线箭头从对象流状态指向活动,则表示输入。输入表示动作使用了对象流所指向的对象流状态。如果活动有多个输出值或后继控制流,那么箭头背向分叉符号。反之,如果有多个输入箭头,则指向结合符号。


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

相关文章

UML 活动图

UML 概述 UML 全称 Unified Modeling Language,又称统一建模语言或标准建模语言,是始于1997年一个 OMG 标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。 UML是一种定义良好、…

UML图之四——活动图

点击打开链接活动图是一种流程图,用来描述活动的序列,从一个活动到另一个活动的控制流。 活动图的作用:描述用例,描述类的操作。 活动图的构成 必要组成元素: 1、活动:命令的执行,活动的进行…

EA绘制活动图

目录 创建一个project新建一个包添加图创建泳道更改泳道方向添加活动 创建一个project 新建一个包 添加图 创建泳道 更改泳道方向 添加活动 画折线可以鼠标放在线处,按shift 按ctrl鼠标滚轮可以缩放视图

活动图的制作非常简单,只需5个步骤即可完成精美互动图!

“需求分析”,就是活动图的核心思想。 它合理的利用图像表达方式,对某个案例的执行工作及实现过程进行直观的分析呈现,当一副完整的图形展示出来的时候,会比复杂的文字描述表现更加直观且通俗易懂,可以使对方一目了然看懂该项案例的功能。并且,还可以同时说明案例分工以…

【UML】活动图(Activity Diagram)

目录: 1、什么是活动图 2、活动图的构成 (1)起点 (2)重点 (3)活动名称 (4)判断条件 (5)同步条 (6)接收信号 &…

【图形设计】手把手教你画活动图,再无难搞的流程分析

编辑导语:在工作中,每当遇到复杂多变的业务,流程冗长时,可以借助活动图来分解流程。作者从四个方面分析如何画活动图,搞定流程分析。 上次介绍了《用例图这样画,3步让你做需求分析有理有据》,这…

UML图:活动图详细介绍

活动图简介 什么是活动图(Activity Diagram) 活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流,活动图在本质上是一种流程图;活动图着重表现从一个活动到另一个活动的…

活动图、类图、顺序图、状态图

目录 1. 活动图1.1 活动图的开始、结束、对象1.2 活动节点1.3 分支1.4 分岔和汇合( Forking and Joining)1.5 泳道(Swimlanes)1.6 活动图小结 2. 类图2.1 类图定义2.2 类图中常用的UML元素2.3 UML中类的表示2.4 类元素的命名2.5 关…

【UML】——活动图

一、活动图概述 1、流程图: 常被用来建立算法模型,使用流程图可以表示一个算法的执行序列、过程、判定点、分支和循环 活动图和流程图十分类似,不同之处在于它支持并行活动 活动图的缺点:很难清楚的描述动作与对象之间的关系&…

活动图与流程图区别以及各自画法

* 定义 一、流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务必需的管理过程。 二、活动图(activity diagram,动态图)是阐明了业务…

UML——活动图

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan 在没有接触UML图的时候我们最常画的图就是流程图,通过画机房收费系统的活动图发现活动图的本质上是一种流程图,它包括的要素有开始状态、活动、判断节点、除此之外和流程…

UML--活动图

一、 概述 活动图(Activity Diagram)是描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。它对于系统的功能建模特别重要,强调对象间的控制流程,活动图在本质上是一种流程图 二、特点 -描述一个操作执行过程中所完成的…

用例图、类图、状态图、活动图、顺序图、协作图

实验二 UML建模工具 1.实验目的 (1)熟悉StarUML等工具软件的特色及工作环境; (2)熟悉各种UML图的含义及用途;掌握利用starUML等工具绘制各种UML图的方法。 2.实验内容 (1)上网…

UML活动图

面向对象的软件开发方法的第一步&#xff1a;业务建模<--使用活动图 转载&#xff1a;https://www.cnblogs.com/xiaolongbao-lzh/p/4591953.html 活动图概述 •活动图和交互图是UML中对系统动态方面建模的两种主要形式 •交互图强调的是对象到对象的控制流&#xff0c;而…

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…