跳至正文
Read this post in: de_DEen_USes_ESfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW
Home » UML » 理解UML中的活动图:全面指南

理解UML中的活动图:全面指南

引言

统一建模语言(UML)是一种强大的工具,用于可视化和记录软件系统。在各种UML图中,活动图是用于建模和描述系统行为动态方面的多功能且必不可少的工具。无论您是软件开发人员、系统分析师还是项目经理,理解活动图都能显著提升您设计和沟通系统内复杂流程的能力。在本文中,我们将探讨活动图是什么、它们的组成部分,以及如何创建和解读它们。

什么是活动图?

活动图是UML中的一种行为图,用于建模系统的动态方面。它专注于展示系统或流程中活动、操作和决策的工作流程或顺序。这些图在建模业务流程、软件算法和工作流场景方面特别有用,因此是软件设计、系统分析和流程优化的宝贵工具。

活动图的优势

活动图在软件开发和系统建模过程中提供了多项优势:

  1. 清晰性: 它们提供了复杂流程的清晰且直观的视觉表示,使利益相关者更容易理解和讨论。
  2. 沟通: 活动图作为开发者、分析师和项目经理等不同利益相关者之间的有效沟通工具。
  3. 流程改进: 它们有助于识别瓶颈、低效环节以及流程改进的领域。
  4. 文档化: 活动图可作为系统文档的一部分,用来解释流程的工作方式。
  5. 验证: 它们可以在实施前对业务和系统流程进行验证。

活动图的组成部分

要有效使用活动图,必须了解其关键组成部分:

  1. 活动: 活动是活动图中的基本工作单元。它代表作为流程一部分执行的任务、操作或行为。活动通常以圆角矩形表示。
  2. 初始节点: 初始节点表示活动图的起点。它通常以一个小圆圈加向外的箭头表示,连接到第一个活动。
  3. 终止节点: 终止节点表示活动图的终点。它被描绘为一个带小点的圆圈或一个较大的圆圈,表示流程的结束。
  4. 控制流: 控制流箭头,通常称为控制边,连接活动并表示它们执行的顺序。这些箭头显示了执行顺序,有助于理解流程的流动。
  5. 决策节点: 决策节点以菱形表示,用于表示流程中出现决策或分支的点。根据条件或标准,流程可以走向不同的路径。
  6. 合并节点: 合并节点,也以菱形表示,用于在决策或分支点之后将多个流程合并回单一流程。它们确保多个路径汇聚。
  7. 分叉节点: 分叉节点表示一个流程分裂为多个并发流程的点,表明多个活动可以同时发生。
  8. 汇聚节点: 汇聚节点表示多个并发流程重新合并为单一流程的点,表明并行活动已完成。
  9. 泳道: 泳道用于划分活动图中的活动,通常用于表明每个任务由哪个实体或参与者负责。它们以垂直或水平容器表示。

创建活动图

要创建活动图,请按照以下步骤操作:

  1. 确定流程:清晰地定义您想要建模的流程。这可能包括了解涉及的参与者、执行的活动以及流程中的任何决策点。
  2. 识别活动:将流程分解为需要在图中表示的各个活动或任务。
  3. 添加初始节点和最终节点:将初始节点放在图的开始处,将最终节点放在图的末尾。
  4. 连接活动:使用控制流箭头按活动发生的顺序连接它们。
  5. 添加决策节点: 如果您的流程中有决策点,请添加决策节点(菱形)并用控制流箭头连接它们。
  6. 添加合并节点: 对每个决策节点,添加一个对应的合并节点,以显示分支路径重新汇合的位置。
  7. 使用分叉和汇聚节点: 如果您的流程中存在并行活动,请添加分叉和汇聚节点,以表示流程的分叉和合并。
  8. 使用泳道进行划分: 如有必要,使用泳道按负责的实体或参与者对活动进行划分。
  9. 标记活动: 为活动和决策节点添加标签,以清晰地描述每个节点所代表的内容。
  10. 指定条件: 如适用,请在控制流箭头上包含条件或守卫,以表示决策结果。

解读活动图

解读活动图需要理解活动的顺序、决策点以及控制流在图中的流动。以下是需要考虑的一些关键点:

  • 沿着控制流箭头从初始节点到最终节点,追踪活动的顺序。
  • 注意决策节点;根据所指定的条件,流程可能采取不同的路径。
  • 寻找分叉和汇合节点,以识别并行活动,并理解它们在何处分叉和汇聚。
  • 泳道有助于识别每个任务对应的实体或参与者。
  • 活动和决策节点上的标签应提供清晰的描述,说明每个节点所代表的内容。

活动图示例

下图展示了一个工作流程,详细说明了在剧院票务处处理订单所涉及的各种步骤。该过程包含一个分支决策,随后根据订单是订阅类还是单张票而进行合并。此外,还存在一个分叉机制,启动了在概念上同时发生的并发活动,尽管它们的实际执行可能重叠也可能不重叠。这种并发性随后由一个匹配的汇合点结束。

在仅由一个人参与该过程的情况下,并发活动可以按任意顺序执行,前提是它们无法同时进行(尽管模型允许同时执行,但在现实中可能不切实际)。例如,剧院票务人员可以先分配座位,再发放奖金,最后扣款;或者也可以先发放奖金,再分配座位,最后扣款。然而,必须注意的是,只有在座位分配完成后才能进行账户扣款。

在此过程中,从分叉点引出了一条条件性线程。该线程用于判断订阅者是否为会员,作为保护条件。只有当保护条件满足时才会启动。如果订阅者不是会员,则仅激活一条线程,负责座位分配和账户扣款,而无需在汇合点等待同步。

泳道活动图示例

下图展示了使用泳道将活动划分为三个不同分区,每个分区对应流程中不同的利益相关方。尽管UML并未要求这些分区必须与对象对齐,但在本例中,显然某些类与各分区对应得十分清晰。这些类通常负责执行最终模型中每个活动相关的操作。

此外,该图还包含对象流符号,用于描绘一个“订单”对象在穿越一系列活动时的不同状态。例如,“Order[placed]”符号表示在计算的这一阶段,订单已进入“请求服务”活动的“已提交”状态,但尚未被“接单”活动消耗。在“接单”活动结束后,订单进入“已录入”状态,这由“接单”活动之后的对象流符号所证明。本例中的所有对象流均代表同一对象在不同生命周期阶段的状态。由于它们代表的是同一对象,因此不能同时存在,且通过一条顺序控制路径连接,如图所示。

对象流用于表示作为动作输入或输出的对象。这些符号表示在计算的特定时刻,该对象作为输入适用或刚刚作为输出生成时的状态(通常,一个对象同时承担这两种角色)。一条虚线箭头将活动状态的输出转换连接到对象流,作为其输出之一。相反,另一条虚线箭头将对象流连接到活动状态的输入转换,表明该对象是其输入之一。通常,同一个对象既可以是某个活动的输出,也可以是后续一个或多个活动的输入。

结论

UML中的活动图是建模和可视化系统或过程动态方面的强大工具。通过理解活动图的组成部分和原则,您可以有效建模复杂的工作流程,改善利益相关者之间的沟通,并优化流程。无论您从事软件开发、业务流程分析还是系统设计,活动图都可以成为您工具箱中的宝贵补充,帮助您构建更高效且文档完善的系统。

发表回复