UML之活动图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML之活动图相关的知识,希望对你有一定的参考价值。
参考技术A 原文地址: https://blog.csdn.net/dwarcheng/article/details/52449168活动图是uml的动态模型的一种图形,一般用来描述相关用例图。准确的活动图定义:活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。活动图是一种特殊的状态图,它对于系统的功能建模特别重要,强调对象间的控制流程。
交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流
活动图是一种表述过程基理、业务过程以及工作流的技术。
它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模
下图是个简单的活动图例子,里面包括了大部分活动图的相关元素,大家应该都能看的差不多吧,有不明白的可以继续看,下面有针对各个元素有介绍啦,相信大家看完后面的,看这个图就不会有问题的。
另外,若想学会画活动图,必须先看大量的图,看明白别人的图,在慢慢画,慢慢一个图形就弄明白了。
其实uml包括了各种各样的图形,把每种图形都会画啦,基本uml也就会啦。
活动图描述系统使用的活动、判定点和分支,看起来和流程图没什么两样,并且传统的流程图所能表示的内容,大多数情况下也可以使用活动图表示,但是两者是有区别的,不能将两个概念混淆。
活动图与流程图的区别
⑴ 流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系
活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
⑵ 活动图能够表示并发活动的情形,而流程图不能。
⑶ 活动图是面向对象的,而流程图是面向过程的。
活动图与状态图都是状态机的表现形式,但是两者还是有本质区别:
状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。
上图是一个典型的状态图
活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
用来表示一个活动
分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。
分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流。
汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。
每个汇合可以有两个或多个输入转换和一个输出转换。
汇合将两条路径连接到一起,合并成一条路径。汇合指的是两个或者多个控制路径在此汇合的情况。汇合是一种便利的表示法,省略它不会丢失信息。汇合和分支常常成对的使用,合并表示从对应分支开始的条件行为的结束。
分叉和汇合都使用加粗的水平线段表示。
UML的活动图中包含的图形元素有动作状态、活动状态、动作流、分支与合并、分叉与汇合、泳道和对象流等。
泳道表明每个活动是由哪些人或哪些部门负责完成。
每个泳道代表特定含义的状态职责的部分。在活动图中,每个活动只能明确的属于一个泳道,泳道明确的表示了哪些活动是由哪些对象进行的。
每个泳道都有一个与其他泳道不同的名称。
每个泳道可能由一个或者多个类实施,类所执行的动作或拥有的状态按照发生的事件顺序自上而下的排列在泳道内。
在活动图中泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。
上图是一个未采用泳道的活动图
从两幅图的对比中,我们可以了解泳道技术是非常重要的,可以更明确表达出活动图的意图。
泳道将活动图中的活动化分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。
泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。
在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
在活动图中,泳道用垂直实线绘出,垂直线分隔的区域就是泳道。
在泳道上方可以给出泳道的名字或对象(对象类)的名字,该对象(对象类)负责泳道内的全部活动。
泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行。
动作流和对象流允许穿越分隔线。
用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。
对象流是动作状态或者活动状态与对象之间的依赖关系
对象流表示动作使用对象或者动作对对象的影响。
对象流中对象的特点:
⑴ 一个对象可以由多个动作操纵;
⑵ 一个动作输出的对象可以作为另一个动作输入的对象;
对象流中对象的特点:
⑶ 在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存期的不同时间点。
在活动图中,对象流用带有箭头的虚线表示。
如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响。
施加的影响包括创建、修改和撤销等。如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象。
状态图中的对象用矩形表示,矩形内是该对象的名称,名称下的方括号表明对象此时的状态。
还可以在对象名称的下面加一个分隔栏表示对象的属性值。
发送信号与接收信号
是一个对象节点,代表活动连接输入、输出值的连接点
用来标明每个活动节点所需输入的数据或者所产生的数据(建模业务流时则可表示产生或者消耗的资源)
表示重复或循环
当活动图过于复杂时可以用活动的分解来处理
一个活动可以分为若干个动作或子活动,这些动作和子活动本身又可以组成一个活动图。
不含内嵌活动或动作的活动称之为简单活动;
嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子活动图
⑴ 识别要对工作流描述的类或对象。找出负责工作流实现的业务对象,这些对象可以是显示业务领域的实体,也可以是一种抽象的概念和事物。找出业务对象的目的是为每一个重要的业务对象建立泳道。
⑵ 确定工作流的初始状态和终止状态,明确工作流的边界。
⑶ 对动作状态或活动状态建模。找出随时间发生的动作和活动,将它们表示为动作状态或活动状态。
⑷ 对动作流建模。对动作流建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为。
⑸ 对对象流建模。找出与工作流相关的重要对象,并将其连接到相应的动作状态和活动状态。
⑹ 对建立的模型进行精化和细化。
浅谈UML学习笔记动态图之状态图和活动图
Trufun Plato
原文转自trufun.net网站,更多UML资料和项目模型,可以到网站下载。
状态图
我先简单的理解一下,什么是状态机?
① 在日常生活中,状态机,我们理解为记录下给定时刻状态的机器,根据不同的输入对每个给定的变化而改变其状态或引发一个动作。
② 在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是展示状态与状态转换的图。
③ 状态图本质上就是一个状态机或是状态机的特殊情况。由表示状态的节点和表示状态之间转换的带箭头的直线组成。
• 认识状态的概念和分类:
• 状态图组成还包括:
? 活动图
活动图是另一个种动态视图,描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。
• 活动图的图形标准:
① 起点
【作用】描述活动图的开始状态
【表示方式】黑的实心圆
② 终止点
【作用】描述活动图的终止状态
【表示方式】实心圆的空心圆
③ 活动
【作用】可以是手动也可以自动的执行任务
【表示方式】圆角矩形
④ 状态
【作用】活动的所处状态
【表示方式】椭圆矩形
⑤ 转换
【作用】描述一个活动转向另一个活动
【表示方式】带箭头的实线段,指向转向的活动
• 活动图的组成
? 状态图中“动作”和活动图中的“动作状态”区别
• 相同点:
① 都是原子性的,动作要么不执行,要么就完全执行,不能中断
② 执行时间都极短
• 不同点:
动作状态和状态图中的状态不同,不能有入口动作和出口动作,也不能有内部转移
? 了解活动图和状态图的各自作用
• 状态图的作用:
① 清晰描述状态之间的转换顺序,通过转换顺序可以清晰看出事件的执行顺序
② 清晰的事件顺序有利于程序员在开发程序时避免出现事件错序的情况
③ 清晰地描述了状态转换时所必须触发德尔事件、监护条件和动作等影响转换的因素,有利于程序员汇总非法事件的进入
④ 通过判断更好地描述工作流因为不同的条件发生的分支
• 活动图的作用:
? 活动图和状态图的区别
• 目的不同:活动图的主要目的是描述动作及对象的改变结果,而状态图则是描述对象、子系统、系统在生命周期中的各种行为
• 活动图中的状态转换不需要任何触发事件,状态图则需要触发事件
• 活动图种的动作可以放在泳道中,状态图不可以
以上是关于UML之活动图的主要内容,如果未能解决你的问题,请参考以下文章