UML活动图

1.1什么是活动图

活动图(aeivwtiy diaeram)是 UML 中一种重要的用于 表达系统动态特性的图。活动图的作用是描达一-系列具休动态过程的执行逻辑,展现活动和话动之问转移的控制流;并且它采用一种着重逻辑过程的方式来叙述。 读者在初看活动图的时候可能会认为这只是流程图的一种,但事实上活动图是在流相图的基础上添加了大量软件工程术语而形成的改进版。具体地说,活动图的表达能力包括了逻镇判断、分支甚至并发,所以活动图的表达能力要远高于流程图:流程图仅仅展示一个固定的过程,而活动图可以展示并发和控制分支,并且可以对活动与活动之间信息的流动进行建模。可以说,活动图在表达流程的基础上继承了一部分通信图的特点,即可以适当表达活活动之间的关系。

1.2活动图组成元素

活动图的主要组成元素包括动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等。

某银行ATM机中的取款活动图:

各元素说明:

动作:动作代表一个原子操作,操作可能是任何合法的行为。动作可以是并且不限于:创建或删除对象、发送消息、调用接口,甚至数学运算以及返回表达式的求值结果。

开始和终止:活动图中的开始和终止是两个标记符号。开始标记注明了业务流程的起始位置;终止标记注明了业务流程可能结束的位置。

控制流:是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。

判断节点:是活动图中进行逻辑判断、并创建分支的一种方式。判断节点的前一个动作应该是判断型动作(检查用户是否登录、检查服务器是否已满)。判断节点有且仅有一个指向它的箭头,有至少两个由它发指向其他动作或活动节点的箭头

泳道

活动图中的元素可以使用泳道来分组。泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。例如:在业务模型中,每一个泳道的负责对象可能是一个单位或一个部门;而系统中泳道的负责对象可以是系统或子系统。例如在一次考试的过程中:

可以发现每个过程的主语都是该动作的执行者,那么在这个简单的过程中,可以分为“老师”和“学生”两个泳道,把动作与负责执行它的对象用这种形如二维表的方式进行关联:

1.3活动图的高级组成元素

分叉节点与结合节点

分叉节点是从线性流程进入并发过程中的过渡节点,它拥有一个进入控制流和多个离开控制流。不同于判断节点,分叉节点的所有离开流程都是并发关系,即分叉节点使执行过程进入多个动作并发的状态。

对象流

对象也可以被包含在一个活动图相关的控制流中。在活动图中,对象流是一种连接两个节点的活动边,这两个节点通常是一个可执行节点和一个对象节点。对象流用来表示原活动生产了一个对象或目标活动消费了一个对象。

下图展示了某系统支付订单时的活动图。图中连接活动节点与对象节点的线均为对象流(例如“生成订单”活动创建了一个订单对象)或者使用或修改对象状态(例如“支付”活动将订单对象的状态修改为“已支付”);

扩展区域

同一个操作经常要在一组元素上执行。例如,若订单包含一组商品,那么订单处理程序就必须对每个商品都执行相同的操作:检查商品有效性、查询价格、检查库存等。在活动图中,可以使用扩展区来对这种模式建模。

下图给出一个使用扩展区域的例子:接受了一个订单,该订单由多个订单项。扩展区域处理每一个订单项,分别获取每个订单项中的商品,并获取商品的价格,最终输出商品数组和价格数组,分别用于运送商品以及 生成账单。

1.4活动图建模技术

活动图用于对系统的动态方面建模,这些动态方面可涉及系统体系结构的任意视图中 任何抽象类型的话动,这些抽象类型包括类组件等 当使用活动图对系统的某些动态方面建模时,事实上可以在任意建模元素的语境中这样做。但通常是在整个系统、子系统、操作或类的语境中使用活动图。还可以把活动图附在用例(对脚本建模)和协作(为对象群体的动态方面建模)上在使用活动图对一个系统的动态方面建模时,通常有两种使用活动图的方式:对工作流建模和对操作建模。 1.对工作流建模 没有任何一个系统是孤立存在的,系统总是存在于某种语境中,而这种语境总是包含与洪泰统进行交互的参与者。系统中的业务流程是一种工作流,因为它们代表了工作流以及其于业务之中的对象。通过使用活动图,可以对业务流程中的协作建立业务处理模型村工作流建模,需要遵循如下策略:

  1. 为工作流建立一个焦点。除非系统很小,否则不可能在一张图中显示所有感兴趣的工作流

  2. 近择对总休工作流中的各个部分具有高层职责的业务对象。为每个重要的业务对象建立一个泳道。

  3. 识别该工作流初始状态的前置条件和该工作流终止状态的后置条件。这对于帮助对工作流的边界建模是重要的

  4. 从该工作流的初始状态开始,说明随时间发生的动作,并在活动图中表示它们。

  5. 将复杂的动作或多次出现的动作集分解到一个单独活动图中来调用。

  6. 找出连接这些动作和活动节点的流。首先从工作流的顺序流开始,然后考虑分支,接着再考虑分叉和结合。

  7. 如果工作流中涉及重要的对象,则把它们也加人活动图中。如果对表达对象流的意图是必要的,则显示其变化的值和状态。

2.对操作建模

为了说明元素的行为,可以将活动图附加到任意建模元素之上,例如类、接口、组件、节 点、用例和协作等。其中,最常见的是向一个操作附加活动图。用于这种方式时,活动图只 是一个操作中的动作的流程图。活动图的主要优点是图中所有的元素在语义上都与一个丰 富的底层模型相联系。 对操作建模,要遵循如下策略:

  1. 收集这个操作所涉及的元素。包括操作的参数、返回类型、所属类的属性以及某些临近的类。

  2. 识别该操作的初始状态的前置条件和终止状态的后置条件,也要识别操作所属的类的在操作执行期间必须保持的不变式。

  3. 从该操作的初始状态开始,说明随着时间发生的活动和动作,并在活动图中将它们表示为活动状态或者动作状态。

  4. 如果需要,使用分支来说明条件路径和迭代。

  5. 使用分叉节点和结合节点来说明并行的控制流。

1.5绘制“机票预定系统”购买机票用例的活动图

  1. 确定泳道

    开始创建活动图时,需要首先确定参与的对象,即确定活动图有几个冰道。泳道说明了活动是由该对象执行的。在本节的例子中,我们将其粗粒度地分为用户和系统两个泳道。

  2. 按逻辑顺序完成活动图

    在添加完泳道后,需要梳理整个控制流的过程:用户首先选择购票的航班,此时如果该航班已无余票,则系统提示该航班已无票,用户重新选择航班;如果航班有余票,则系统请求用户确认购票信息,此时用户可以取消购票,也可以确认购票并支付,支付完成后系统修改机票状态并生成订票记录,然后结束整个流程

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱摸鱼的呆瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值