proc corr data 图_软件工程专题:UML活动图

760f95495235889f71c91e848675dbbb.png

关注BeTester,学习更多知识

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

3d451120eeb431d4fd6ed3662b7d086c.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

a1944e79c169d377a1952f2244556d7e.png

3.2 开始/结束

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

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

bf5eb48755c4203c5b72ff4f5492ad3c.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

0978f09f5be5b59253d84543f5cf52fc.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

7215c0c9960428a52b9030a4134656c4.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

483a26bb738ad9b2faa497b404fd0754.png

3.4.2 while 循环

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

657af9d783102671998824236365edb4.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

de3590b8da443cdf12680f19331299a2.png

3.5 泳道

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

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

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

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

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

stop
@enduml

f91968078fd30a8a56f549e9fb0b67fb.png

4、小结

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

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

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

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

—— 更多文章 ——

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

61897204c3f807858f65a730a7c8d459.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值