【问题标题】:Activity Diagram - confusion regarding fork/join and decision/merge in this scenario活动图 - 在这种情况下,关于分叉/加入和决策/合并的混淆
【发布时间】:2018-07-19 09:51:17
【问题描述】:

我正在创建一个活动图

  1. 管理员登录网络
  2. 如果经过验证,它将到达仪表板
  3. 通过仪表板可以管理帐户、管理产品和管理问题
  4. 执行上述选项之一后,可以返回仪表板或从系统注销。

我使用了 fork/join,它是正确的还是我应该使用决策/合并来代替 第二,是否正确定义了注销或执行仪表板中可用的其他选项的过程?

【问题讨论】:

    标签: uml activity-diagram


    【解决方案1】:

    您的活动存在多个问题。

    首先也是最严重的,它不会做任何事情,因为动作(而且大部分是那些 - 不是活动中的所有模型元素)对于传入的控制流具有“隐式和语义”。这意味着只有在对所有传入的控制流操作提供令牌时才执行操作,否则它会等待。因此,由于在执行并完成登录之前,来自验证的控制流无法提供令牌,因此您有一个锁定。并且没有执行任何操作。这同样适用于仪表板。要解决此问题,您需要对合并节点进行建模。

    第二点是您只想执行(根据您的描述)其中一个管理操作。 (顺便说一句。带有通用动词的名称,如“管理”、“维护”、“执行”、“执行”等,对于动作来说是非常糟糕的名称,请改用更具体的名称)。无论仪表板操作中的选择如何,您的模型都会同时执行所有操作。并发意味着以任意顺序并且不需要并行执行。因此,您应该将分叉替换为决策节点,其中输出流的条件基于仪表板中的选择。决策节点可以具有任意(但有限)数量的传出控制流。来自管理操作的所有传出控制流都使用合并节点而不是连接节点进行合并。因为加入节点将等待每个传入控制流的传入令牌。

    使用 UML/SysML 工具可以解决的一个小问题是,fork 和 join 节点是条形而不是矩形框架。

    【讨论】:

    • 抱歉,我没能得到第一点。如果可能的话,您能否根据活动图的标准绘制另一张图。我使用 Visio 2016 来绘制这个,fork/join 不是条形而是矩形框,如上图所示
    • 可能不太正式,一个动作只有在同时从任何传入边缘触发时才能执行。为了使您的第一个动作可以执行,初始化需要对其进行控制并验证需要对其进行控制。但是在执行登录之前验证不能给予控制。因此根本无法执行登录。
    【解决方案2】:

    您的广告有 2 个缺陷。首先,分叉/连接是实心粗线,但不是空心矩形。二是使用不当。这样,您可以并行运行所有 Manage 操作,并在它们全部完成后继续。根据您的描述,使用菱形来决定其中一项操作 之后也使用菱形合并流并继续Logout

    【讨论】:

    • @sim 好吧,那是吹毛求疵。只有当您依赖某些自动机生成“某物”时,您才需要详细遵守该语法。如果你把它放在黄金天平上,那么错误的条形图将具有同样的重要性:-/
    • 如果您可以决定要遵循什么,不遵循什么,那么标准有什么用?该标准有利于定义通用语言及其语义。当您现在决定以定义的其他方式解释有效语法时,那么正确的解释是什么?为什么我不应该进一步解释它?
    • 当然,违反语法也是一种错误,因为它甚至不构成该语言的有效单词。但是当使用 UML Tool 而不是绘画或绘图工具时,就不会发生这种错误。即使不是,它也可以被唯一地理解,因为该符号不能与其他已定义的符号混淆。
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多