uml图中的各种箭头_软件工程专题:UML活动图

ce2cdc28200785931a1327be3c5435f4.png

关注BeTester,学习更多知识

让碎片成体系,让测试更专业

f9aaa64c2a8e4fa54eb1622d5e2bc25b.png

1、概述

活动图(Activity Diagram),描述了活动的顺序,展现从一个活动到另一个活动的控制流,即活动图是一种流程图。活动图描述了业务实现用例的工作流程。活动图主要由活动和动作构成,也可以支持分支、迭代、并行。

在UML中,活动图主要用于计算性和组织性过程(即工作流)建模。

实际上,在活动图引入到UML之初,是存在巨大争议的,因为活动图实际上描述的是业务流程,是一种过程化的分析方法,这让人担心面向过程的活动图对面向对象的类产生混乱。
但是,UML引入活动图是必须的,活动图的引入解决了业务目标过程化的描述。
活动最终可以细分成多个动作,动作是不可再分的步骤。

2、活动图元素

活动图有五部分:活动(Activity)、动作流(Action Flow)、分支(Branch)与合并(Merge)、分叉(Fork)和汇合(Join)、泳道(Swimlane)。

2.1 活动

活动表示某流程中的任务的执行,它可以表示算法过程中语句的执行。

2.2 动作流

所有动作状态之间的转换称之为动作流。

2.3 分支与合并

分支一般用于表示对象类所具有的条件行为。条件行为用分支和合并表达。

2.4 分叉与汇合

分叉可以用来描述并发线程。汇合代表两个或多个并发控制流同步发生,当所有的控制流都达到汇合点后,控制才能继续往下进行。

2.5 泳道

泳道将活动图中的活动分成了若干小组,并把每一组制定给负责这种活动的业务组织,通常为对象。泳道区分了负责活动的对象,明确地表示哪些活动是由哪些对象触发的。

每个活动只能明确地属于一个泳道,并且泳道要负责泳道内的全部活动。

泳道没有顺序,不同泳道中的活动既可以顺序进行,也可以并发进行,动作流和对象流都可以穿越分割线。

3、UML语法

PlantUML中有新版和旧版活动图语法,本文以新版语法为准进行说明。

3.1 活动

活动以 冒号(:)开始,以分号(;)结束,中间可以是一行或多行文本内容。

@startuml
: Hello UML Activity(单行);
-> 箭头上的文本;
: Hello UML Activity Again(多行)
1. 多行文本内容。
2. 多行文本内容;
@enduml

4b92d8a384991741d2fa12a016a50693.png

3.2 开始/结束

在活动图中,使用start关键字表示开始,使用end关键字表示结束。

@startuml
start
: Hello UML Activity(单行);
: Hello UML Activity Again(多行)
1. 多行文本内容。
2. 多行文本内容;
end
@enduml

aa596b24aad456a297f8a338a1cc3b1d.png

3.3 条件判断

UML中使用 if/then/elseif/else 来对判断进行设置,并且判断文案放到括号中。

3.3.1 单条件判断

直接使用if 、then 、else 来进行单条件判断,并且在UML图中展示时,会汇合成另一个条件判定(可忽略)。

@startuml
start
if (测试用例是否评审?) then (yes)
    : 入库存档;
else (no)
    : 进行测试用例评审;
endif
stop
@enduml

505d7cbe6cd6226a3c3ff8b19a190e02.png

3.3.2 多条件判断

@startuml
title VIP等级判断
start
if (充值金额 > 5000) then (yes)
    : 高级VIP逻辑处理活动;
    stop
elseif (充值金额 > 500) then (yes)
    : 普通VIP逻辑处理活动;
elseif (充值金额 > 50) then (yes)
    : 穷逼VIP逻辑处理活动;
else (没有任何充值)
    : 屌丝逻辑处理活动;
endif
stop
@enduml

842c684da1aeeb938b04e257ca723064.png

3.4 循环

UML中有repeat和while循环,其关系与do/while 和 while 是一样的,repeat会先进入循环体,执行一次结束后再做判断,而while则会先进行判断是否满足进入循环体的条件。

3.4.1 repeat 循环

@startuml
title 测试设计流程
start
repeat
    :第n个需求澄清;
    :第n个需求分析;
    :第n个需求进行测试设计;
repeat while (还有需求要做测试设计吗?)
stop
@enduml

ab18a643d754cfad3a1f9acd969b7aea.png

3.4.2 while 循环

@startuml
title 测试设计流程
start
while (有需求要做测试设计吗?)
    :第n个需求澄清;
    :第n个需求分析;
    :第n个需求进行测试设计;
endwhile
stop
@enduml

3df26eb8d3981f59de654f23ec293f85.png

3.4 并行处理

使用 fork/fork again 进行并发处理

@startuml
title 开展性能测试
start
if (是否需要开展性能测试?) then (yes)
    fork
        : 功能测试;
    fork again
        : 回归测试;
    fork again
        : 探索性测试;
    fork again
        : 性能摸底测试;
    end fork
else (不开展性能测试)
    :回归测试;
    :探索性测试;
endif
stop
@enduml

2cd0e426aa7c3620a374c206eb6e61ae.png

3.5 泳道

通过 |泳道名称| 来设置泳道,在需要对该泳道进行表述时,可以 |泳道名称| 进行泳道的切换。

一个活动只能在一条泳道上,如果需要多个泳道同时处理,那么就需要使用并发。
@startuml
title 测试用例评审流程
|测试工程师|
start
: 测试用例评审邀请;
|#AntiqueWhite|开发工程师|
: 了解测试设计思路;
: 分析测试设计中的缺陷;

|测试工程师|
: 组织评审会议;

fork
    |测试工程师|
        : 概要阐述测试设计思路;
        : 答疑;
fork again
    |开发工程师|
        : 提出会议前准备的问题;
end fork

|测试工程师|
: 根据评审意见进行用例修改;

stop
@enduml

f7ad220cc32e3901884b9db2a8ff661a.png

4、小结

活动图是描述用例场景最为常见的图,与顺序图一样,都可以完成用例场景描述的工作,并且都能方便地进行角色职责的描述。

通常,我们都会使用活动图完成以下工作:

  1. 对系统工作流程建模
  2. 对工程组织过程建模
  3. 对算法流程建模

在后续遇到涉及到流程相关的设计分析时,不妨试试活动图!

—— 更多文章 ——

  • 软件工程专题:UML通信图
  • 软件工程专题:UML顺序图
  • 软件工程专题:UML用例图
  • 软件工程专题:UML类图
  • 软件工程专题:Plant UML实践
  • 软件工程专题:UML简介
  • 软件工程专题:看板
  • 软件工程专题:Scrum框架
  • 软件工程专题:极限编程
  • 软件工程专题:敏捷开发流程
  • 软件工程专题:软件工程概述

4b4789f71a8bcf5661c0beb1583cccc8.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值