活动图:用于表示系统中各种活动的次序,它的应用非常广泛,即可用来描述用例的工作流程,也可用来描述类中某个方法的操作行为。常用于表示业务流程,对系统功能建模,强调对象之间的控制流。活动图是由状态图变化而来的,活动图依据对象状态的变化来捕获动作。活动图中一个活动结束后将立即进入下一个活动,状态图中状态的变迁可能需要事件的触发。主要用于系统功能建模。

活动图VS传统流程图:程序流程图明确地指定了每个活动的先后顺序,而活动图仅描述了活动和必要的工作顺序,这是两者的根本区别。另外,流程图限于顺序进程,而活动图支持并发进程。

活动图VS状态图:状态图注重于由事件驱动的系统的变化状态;活动图注重于从活动到活动的控制流。活动图是状态机的一种特殊情况,其中全部或大多数状态是活动状态,并且全部或大多数转换时通过源状态中活动的完成来触发的。活动图适应状态机的全部特征。活动图和状态图在对一个对象的生命周期建模时都是有用的。

注:数据流图和流程图是结构化方法中的概念。

类模型体现了系统的静态结构,用例模型则从用户的角度对系统的动态行为进行了宏观建模,并通过交互模型将对象与消息有机地结合在一起。但有些时候,我们还需要更好地表示行为的细节,这就可以借助于活动图和状态图来实现。

1.简单活动图

图2-10展示了一个用户订单处理过程的流程图,接下来就结合这个基本的活动图来学会正确的阅读方法。

图2-10用户订单处理简单活动图

(1)初始节点和活动终点。在活动图中有两个特殊的节点,一个用来表示活动的初始节点,它用一个实心圆表示,在一张不包括子图的活动图中有且只有一个初始节点。而另一个则是表示活动处理完成的活动终点,它用一个圆圈内加一个实心圆来表示,在活动图中可能包含多个活动终点。例如,在本例中,用户取消和订单完成就是两个可能的活动终点。

(2)活动节点。活动节点是活动图中最主要的元素之一,它用来表示一个活动,例如图2-10中的“用户下订单”、“用户选择支付方式”、“生成送货单”等都是活动节点。在UML中,活动节点所描述的活动可以是原子的动作,也可以是能进一步分解的一系列操作;它可以是文字描述、表达式、事件等。在图2-11中列出的就是一些可能的活动节点描述。

图2-11活动节点

(3)转换。当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之为转换,用一条带箭头的直线来表示。如果需要对这些转换设置一些条件,使其在满足特定的条件时才触发,则可以借助监护条件来完成。

(4)分支与监护条件。对于任何一个控制流而言,都一定会存在分支、循环等形式的控制流。在活动图中,分支用一个菱形表示,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。但要注意,在多个离开转换上的监护条件不能有矛盾,否则就会使得流程产生混乱。

虽然在活动图中,没有直接提供表示循环的建模元素,但可以利用分支来实现“循环”控制流的表示。例如,在图2-10所示的例子中,一个订单可能对应多个供应商,如果订单没有完成的话,说明还有供应商没有完成送货任务,因此可以在分支“所有订单项已送货完毕”中,增加一个离开转换,指向“供应商送货”活动节点来表示这种循环,修改后的活动图如图2-12所示。

图2-12修改后的简单活动图

(5)分岔与汇合。在实际的控制流中,除了顺序结构、分支结构和循环结构之外,还可能存在并发的事件流。在UML中,可以采用一个同步线来说明这些并行控制流的分岔和汇合。如图2-13所示,同步线是一条水平或垂直的粗线段。如图2-13所示,分岔是有一个进入转换,两个或多个离开转换;而汇合则是两个或多个进入转换,一个离开转换。例如,在本例中,当“用户下订单”之后,系统将并行处理两方面事务:一是根据订单所涉及的产品生成送货单;二是处理用户的支付。这两类事件是并发处理。当这两个并发处理都完成时,这时控制流汇合,转到“供应商送货”活动中。

图2-13分岔与汇合图示

2.带泳道的活动图

简单活动图虽然明确地说明了整个控制流的过程,但是却没有说明每个活动是由谁做的。对应到编程而言,就是没有明确地表示出每个活动是由什么类来负责的;对应到业务建模,就是没有明确地表示出机构中的哪一个部门负责实施什么操作。

为了在简单活动图的基础上,有效地表示各个活动由谁负责的信息,可以通过泳道(SwimLane)来实现。例如针对图2-12所示的活动图,活动的主要负责人包括客户、系统、供应商,因此可以将其分成三个泳道,绘制出如图2-14所示的活动图。

图2-14带泳道的活动图

在图2-14中,泳道将活动图中的活动节点分成了几个小组,每个小组都显示出了负责实施这些操作的角色。在本图中,这些都是一些现实世界中的实体,而同样,也可以用来表示不同的类。

每个泳道在视觉上是用一条垂直的线将它们分开,并且每个泳道都必须有一个唯一的名称,例如本图中的客户、系统、供应商。从图中也可以看出,每个活动节点、分支是必须只属于一个泳道的,而转换、分岔与汇合是可以跨泳道的。通过泳道,我们不仅体现了整个活动控制流,还体现出了每个活动的实施者。

UML 活动图(转载)的更多相关文章

  1. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图

    [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...

  2. Thinking in UML 学习笔记(四)——UML活动图来看核心

    在UML活动图的性质是一个流程图,它需要描述为完成活动的特定目标的描述来完成,这些交互运行顺序. UML有两个级别的活动图,的用例场景的叙述性描述,还有的对象用来描述交互的描述. 工具.它不是我们的分 ...

  3. UML活动图与流程图的区别

    http://blog.chinaunix.net/uid-11572501-id-3847592.html UML活动图与流程图的区别 (1).流程图着重描述处理过程,它的主要控制结构是顺序.分支和 ...

  4. DataUml Design 介绍10 - DataUML 1.4版本功能(增加UML活动图和用例图)

    DataUml Design 1.4版本正式发布 1.解决软件自动关闭的问题 2.增加UML活动图和用例图功能 详细介绍稍后继续...........................

  5. UML活动图(转载)

    概述: 活动图是另一个重要的UML图来描述系统的动态方面. 活动图基本上是代表流程形成一个活动到另一个活动的流程图.活动可以被描述为一个系统的操作. 因此,绘制控制流从一个操作到另一个.此流可以是连续 ...

  6. uml活动图

    uml是程序员需要掌握一个重要工具,特别在研究hadoop(http://www.iigrowing.cn/hadoop)系统中,有很多相关的uml图形需要绘制,为了方便大家了解uml,在网络上找了些 ...

  7. UML活动图(二)

    转载于https://www.cnblogs.com/xiaolongbao-lzh/p/4591953.html 活动图概述 •活动图和交互图是UML中对系统动态方面建模的两种主要形式 •交互图强调 ...

  8. UML活动图(Activity Diagram)

    目录: 1.什么是活动图 2.活动图的构成 (1)起点 (2)重点 (3)活动名称 (4)判断条件 (5)同步条 (6)接收信号 (7)发送信号 (8)泳道 (9)转移 3.活动图实例--订单处理 4 ...

  9. UML: 活动图

    摘自http://www.umlonline.org/school/thread-36-1-1.html 活动图和流程图很类似,我们看看一个流程图的例子: 活动图是用来描述流程的一种图,它与流程图的不 ...

随机推荐

  1. bufferevent 与 socket

    http://blog.sina.com.cn/s/blog_56dee71a0100qx4s.html 很多时候,除了响应事件之外,应用还希望做一定的数据缓冲.比如说,写入数据的时候,通常的运行模式 ...

  2. 【转】如何查看Oracle客户端版本及位数(Windows系统)

    一.方法一 查看oracle客户端版本:sqlplus -v 查看oracle客户端版本:sqlplus /nolog命令 Step 1:运行sqlplus /nolog命令,如果你服务器安装了多个客 ...

  3. 【转】TestNG中的并发(多线程)

    优势 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力 多线程方式拥有很大的优势: 1). 减少测试运行时间 如果测试集里包含了大量的用 ...

  4. 转载 Url编码

    http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 混乱的URI编码 JavaScript中编码有三种方法:escape.enco ...

  5. Linux __setup解析【转】

    本文转载自:http://blog.csdn.net/fdaopeng/article/details/7895037 __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Ker ...

  6. HDU2255 奔小康赚大钱 —— 二分图最大权匹配 KM算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    ...

  7. YTU 2896: J--Zipper

    2896: J--Zipper 时间限制: 1 Sec  内存限制: 128 MB 提交: 29  解决: 15 题目描述 Given three strings, you are to determ ...

  8. APP界面常用的五种颜色搭配

    众所周知,每一种颜色带给用户的视觉感受也是不同的.现在人们对手机的依赖程度,就能看到手机中APP的发展前景,那今天就跟大家聊聊如何通过颜色搭配的不同来进行移动端APP界面的布局和排版设计.移动端UI界 ...

  9. virtualbox安装完系统之后重新启动重新进入安装界面原因

    安装完成之后如果重新启动出现卡死的情况,直接关闭掉virtualbox,然后重新启动. 在这里记得完成安装后再改下设置,把Storage里的IDE控制器设为没有盘片,否则下次启动时又是安装界面.

  10. leetcode 戳气球

    有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[ ...