📜  统一建模语言 (UML) |活动图

📅  最后修改于: 2021-09-10 02:42:39             🧑  作者: Mango

我们使用活动图来说明系统中的控制流,并参考执行用例所涉及的步骤。我们使用活动图对顺序和并发活动进行建模。因此,我们基本上使用活动图直观地描述工作流。活动图侧重于流程的条件及其发生的顺序。我们使用活动图来描述或描绘导致特定事件的原因。

UML 模型基本上分为三类图,即结构图、交互图和行为图。活动图是行为图,即它描绘了系统的行为。

活动图描绘了从起点到终点的控制流,显示了在执行活动时存在的各种决策路径。我们可以使用活动图来描述活动的顺序处理和并发处理。它们用于业务和流程建模,其主要用途是描述系统的动态方面。

活动图与流程图非常相似。因此,让我们了解活动图或流程图是否有任何不同:

活动图和流程图之间的区别 –

流程图通常比活动图更早被发明。非程序员使用流程图来建模工作流。例如: 制造商使用流程图来解释和说明特定产品的制造方式。我们可以将流程图称为活动图的原始版本。涉及决策制定的业务流程使用流程图表示。

因此,程序员使用活动图(流程图的高级版本)来描述工作流。开发人员使用活动图来理解高层次的程序流程。它还使他们能够找出导致特定事件的约束和条件。如果正在做出复杂的决策,流程图会收敛为活动图。

简洁是智慧的灵魂。我们需要清晰地传达大量信息,并确保它是简短的。所以活动图可以帮助双方的人,即商人和开发人员进行交互和理解系统。

出现一个问题:

我们是否需要同时使用图表和文本文档?
不同的人有不同的偏好,他们理解某事。例如:要理解一个概念,有些人可能更喜欢带有图像的书面教程,而其他人则更喜欢视频讲座。
所以我们一般同时使用图表和文本文档来使我们的系统描述尽可能清晰。我们还需要对我们有时迎合的观众的需求保持敏感。

用例图和活动图之间的区别

活动图用于对描述条件、约束、顺序和并发活动的工作流进行建模。另一方面,用例的目的只是描述功能,即系统做什么而不是如何完成。所以简单来说,活动图显示“如何”,而用例显示特定系统的“什么”。
两者的抽象级别也各不相同。活动图可用于说明业务流程(高级实现)到独立算法(底层实现)。但是,用例的抽象级别较低。它们仅用于显示高级别的实现。

UML-活动图
图 –基于情感的音乐播放器的活动图

上图描绘了基于情感的音乐播放器的活动图,该播放器也可用于更改壁纸。

图中使用的各种组件和标准符号解释如下。

活动图符号 –

  1. 初始状态——活动发生前的开始状态用初始状态描述。

    UML-状态图
    图 –初始状态或开始状态的符号

    除非我们描述嵌套活动,否则流程只能有一个初始状态。我们使用黑色实心圆圈来描绘系统的初始状态。对于对象,这是实例化它们时的状态。 UML 活动图中的初始状态标记了入口点和初始活动状态。

    例如——这里的初始状态是应用程序打开前系统的状态。

    UML-活动图
    图 – 使用的初始状态符号

  2. 操作或活动状态——活动表示对对象或由对象执行的操作。我们使用带圆角的矩形表示活动。基本上,发生的任何动作或事件都使用活动来表示。

    UML-活动图
    图 –活动状态的符号

    例如 – 考虑前面打开应用程序的示例,打开应用程序是活动图中的活动状态。

    UML-活动图
    图 – 使用的活动状态符号

  3. 动作流或控制流——动作流或控制流也称为路径和边。它们用于显示从一种活动状态到另一种活动状态的转换。

    UML-对象-图
    图 –控制流的符号

    一个活动状态可以有多个传入和传出的动作流。我们使用带箭头的线来描述控制流。如果在进行转换时有要遵守的约束,它会在箭头上注明。

    考虑这个例子——这里两个状态都使用动作流符号(即箭头)转换为一个最终状态。

    UML-活动图
    图 –使用动作流进行转换

  4. 决策节点和分支——当我们需要在决定控制流之前做出决定时,我们使用决策节点。

    UML-活动图
    图 –决策节点的符号

    决策节点的输出箭头可以用条件或保护表达式标记。它总是包含两个或多个输出箭头。

    UML-活动图
    图 –使用决策节点的活动图

  5. Guards – Guard 是指写在箭头上的决策节点旁边的语句,有时放在方括号内。

    UML-活动图
    图 –在决策节点旁边使用的守卫

    对于控制沿特定方向移动,该语句必须为真。 Guards 帮助我们了解决定流程流程的约束和条件。

  6. Fork – Fork 节点用于支持并发活动。

    UML-活动图
    图 –分叉符号

    当我们在两个活动同时执行时使用分叉节点时,即在将活动分成两部分之前没有做出任何决定。在 fork 语句的情况下,这两个部分都需要执行。
    我们使用圆角实心矩形条来表示 Fork 符号,其中传入箭头来自父活动状态,传出箭头指向新创建的活动。
    例如:在下面的示例中,制作咖啡的活动可以拆分为两个并发活动,因此我们使用分叉表示法。

    UML-活动图
    图 –使用 fork 的图表

  7. 加入 –加入节点用于支持合并为一个的并发活动。对于连接符号,我们有两个或多个传入边和一个传出边。

    UML-活动图
    图 –连接符号

    例如 – 当蒸牛奶和添加咖啡这两项活动完成后,我们将它们合并为一项最终活动。

    UML-活动图
    图 –使用连接符号的图表

  8. 合并或合并事件——当必须合并未同时执行的活动时,就会出现这种情况。我们在这种情况下使用合并表示法。如果控制继续进行下一个活动,而不管选择的路径如何,我们可以将两个或多个活动合并为一个。

    UML-活动图
    图 –合并符号

    例如——在下图中:我们不能让双方同时执行,但他们最终合并为一个。一个数不能同时是奇数和偶数。

    UML-活动图
    图 –使用合并符号的活动图

  9. 泳道——我们使用泳道将相关活动分组在一列中。泳道将相关活动分组为一列或一行。泳道可以是垂直的和水平的。泳道用于为活动图添加模块化。使用泳道不是强制性的。它们通常使活动图更加清晰。这类似于在程序中创建一个函数。这样做不是强制性的,但这是推荐的做法。

    UML-活动图
    图 –泳道符号
    我们使用矩形柱来表示泳道,如上图所示。

    例如 – 这里根据数字是奇数还是偶数来执行不同的活动集。这些活动被分组到一个泳道中。

    UML-活动图
    图 –使用泳道的活动图

  10. 时间事件——

    UML-活动图
    图 –时间事件符号

    我们可以有一个场景,其中一个事件需要一些时间才能完成。我们使用沙漏来表示时间事件。
    例如 – 让我们假设处理图像需要花费大量时间。那么它可以表示为如下所示。

    UML-活动图
    图 –使用时间事件的活动图

  11. 最终状态或结束状态——系统在特定流程或活动结束时达到的状态称为最终状态或结束状态。我们使用圆圈符号内的实心圆圈来表示状态机图中的最终状态。一个系统或一个过程可以有多个最终状态。

    UML-状态图
    图 –最终状态的符号

如何绘制活动图 –

  1. 确定初始状态和最终状态。
  2. 确定从初始状态达到最终状态所需的中间活动。
  3. 识别导致系统改变控制流的条件或约束。
  4. 用适当的符号绘制图表。

UML-活动图
图——活动图

上图如果是奇数则打印数字,否则从数字中减去一并显示它。

活动图的用途——

  • 系统或过程的动态建模。
  • 说明 UML 用例中涉及的各个步骤。
  • 建模软件元素,如方法、操作和功能。
  • 我们可以使用活动图轻松地描绘并发活动。
  • 显示算法背后的约束、条件和逻辑。

参考 –
活动图 – IBM
活动图 – sparxsystems