UML--活动图详解_uml活动图-程序员宅基地

技术标签: UML  活动图  

活动图

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

活动图的含义

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

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

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

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

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

活动图的作用

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

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

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

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

互动图的组成

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

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

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

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

在这里插入图片描述

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

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

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

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

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

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

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

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cold___play/article/details/102710530

智能推荐

IBM服务器管理口IMM的管理地址设置_192.168.70.125-程序员宅基地

文章浏览阅读8.6k次。一般,服务器后面都有:IMM口作为管理口IMM管理端口默认IP:192.168.70.125用户名:USERID密码:PASSW0RD注意字母为大写,密码中的“0”是数字0可以在UEFI中修改IMM的IP地址在开机自检的过程中根据提示按F1进入UEFI设置在UEFI中进入System Setting->Integrated Management Module->Network configuration。在输入需要修改的IP地址后,选择Save Network Setting_192.168.70.125

撞错-程序员宅基地

文章浏览阅读558次。上机内容:验证“求余运算”的语法规则 上机目的:学会用“撞错”理解语法要求的方法 /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者:隋鑫 * 完成日期:2012 年 10月22 日 * 版 本 号:v1.0 * * 输入描述: 无 * 问题描述:设计一个包

mysql InnoDB行锁_mysql innodb_row_lock-程序员宅基地

文章浏览阅读417次。mysql的InnoDB存储引擎既支持行级锁,也支持表级锁,默认行级锁。行级锁开销大,加锁慢,会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度最高。事务及其ACID属性事务是由一组sql语句组成的逻辑处理单元,具有4个属性;原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行。一致性(Consistent):在事务开始和..._mysql innodb_row_lock

解决Chrome代理proxy switchy无法使用方法_谷歌代理插件用不了是什么原因-程序员宅基地

文章浏览阅读1.4w次。被这问题困扰了好久,症状就是无论安装什么代理切换插件,设置完代理还是“直接连接”的效果,并不使用代理。即使将所有代理插件都卸载,Chrome的设置中依然显示“您的代理由扩展程序管理”……原因就是:代理插件和Unblock Youku插件的“普通模式”有冲突……如果同时安装了这两个插件,则设置代理后应该把Unblock Youku插件设置为“精简模式”或“转发模式”,问题得解。_谷歌代理插件用不了是什么原因

Failed to resolve:com.esri.arcgis.android:arcgis-android:10.2.9_failed to resolve: com.esri affected modules: <a h-程序员宅基地

文章浏览阅读2.2k次。因移动自有品牌手机A6无法运行arcgis android 100.1/100.2/100.3,100.3以上版本没有亲测。所以下载arcgis-android:10.2.9版本sdk进行试用,发现自带的samples在gradle失败,报错Failed to resolve:com.esri.arcgis.android:arcgis-android:10.2.9解决办..._failed to resolve: com.esri affected modules:

Hologres INSERT ON CONFLICT_hologres 插入更新sql 主键冲突-程序员宅基地

文章浏览阅读1.5k次。对于Hologres不支持UPDATE JOIN语法的替代方案。_hologres 插入更新sql 主键冲突

随便推点

编译原理基本定义(LR(0)与SLR(1))_lr0和slr1-程序员宅基地

文章浏览阅读6.5k次,点赞27次,收藏108次。LR(0)第一步:改写为扩广文法,一般只是新加一个起始非终结符,并且将所有的产生式拆开即可,然后在所有文法的前面加从0开始的编号,以便构建LR(0)分析表的时候有用。第二步:列出所有项目。这个比较简单,将所有的产生式插空加点即可。第三步:写出所有项目集规范族。即写出所有项目的转移,并且标号。第四步:画出状态转移。即根据第三步构造的项目写出DFA。第五步:作出LR(0)分析表。一般题目都只会问到LR(0)的分析表,有些第三小问会问对一些指定的输入串进行分析,这时候也比较简单,下面先给个例子。例子_lr0和slr1

2019云栖大会开幕,5G边缘计算成首日焦点_边缘计算 算力触手可及-程序员宅基地

文章浏览阅读265次。9月25日,全球顶尖科技盛会——2019云栖大会如期上演,1000余位当代技术领军人物与数万名开发者集结杭州,聚焦数字经济,共话面向未来20年的基础科学、科技创新与应用突破。其中,边缘计算技术领域因5G万物智联的快速发展而备受关注,阿里云5G边缘计算专场吸引了数百位参会嘉宾的驻足。于9月25日下午举办的5G边缘计算专场中,阿里云携手中国电子技术标准化研究院、中国联通、禧云信息、千方科技、高..._边缘计算 算力触手可及

etl工具nifi使用系列(一):nifi介绍及基本概念_nifi etl-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏23次。之前一段时间从事nifi的开发工作,想总结一些经验以便大家快速上手nifietl工具nifi使用系列(一):nifi介绍及基本概念 etl工具nifi使用系列(二):简单数据处理processor的使用 etl工具nifi使用系列(三):关于nifi Expression Language 表达式 etl工具nifi使用系列(四):打印日志调试 etl工具nifi使用系列(五):与_nifi etl

日常积累3:模型辨识_模型辨识方法-程序员宅基地

文章浏览阅读1.8k次。日常积累3:模型辨识使用MATLAB的系统辨识工具箱的简单总结一、数据获取数据获取进行模型辨识(如系统的传递函数辨识)前,需要获取系统的输入输出数据,基于这些数据进行辨识。为便于介绍,我们在SIMULINK中搭建一个一阶惯性环节模拟实际系统,获取其输入输出数据(In、Out)。(为模拟真实系统的过程,我们采用定步长求解器仿真,仿真步长为5ms)生成结构体数据使用命令iddata,其内部参数常用为data = iddata(y,u,Ts),y为输出数据、u为输入数据、Ts为采样周期。对于_模型辨识方法

NERO8.3.6.0(官方完整版+序列号)_nero8序列号永久使用-程序员宅基地

文章浏览阅读9.8k次。下载完成后进行安装,在安装的时候使用这个注册号 AK2K-4M9K-9M87-KX0X-8A42-KX1A-9KXA 安装后就是Nero 8 Ultra Edition HD版本,也就是最好的版本。完整版集成了Ask Toolbar,在安装过程中出现选择的时候,一定要去掉它,同时在安装过程中会出现让你选择nero支持的各种图片,音乐,视频类型,这些都不选,如果选了会使你的电脑中原来_nero8序列号永久使用

.NET网络编程学习(一)-程序员宅基地

文章浏览阅读584次。.NET网络编程学习(一)最近在学习.NET下的网络编程,关于它的方便和强大就不说了,以下是个人学习过程的一些体会,整理如下..NET网络编程主要涉及到两个命名空间:System.Net和System.Net.Sockets先来看看System.Net命名空间(1)Dns类public static class DnsDns 类是一个静态类,它从 Internet 域名系统 (DNS) 检索关于特定主机的信息。在 IPHostEntry 类的实例中返回来自 DNS 查询的主机信息。如果指定的_网络编程

推荐文章

热门文章

相关标签