【问题标题】:How to represent feedback from sensor in UML Sequence Diagram如何在 UML 序列图中表示来自传感器的反馈
【发布时间】:2019-08-14 01:50:30
【问题描述】:

我对使用 UML 序列图为我的系统建模有疑问(是的,我知道状态机图更容易做到这一点,但我需要一个序列图)。

考虑一个简单的火车门系统,其中 (A) 自动控制器向 (B) 机械开启器(致动器)发出命令以打开或关闭车门。该系统有一些 (C) 传感器 - 发送反馈通知列车是否停止;列车是否在站台对齐;是否有紧急情况;如果门打开、关闭或部分打开/关闭,以及;如果门口有人或物体 - 以及(D)门本身。

控制器根据传感器的反馈发出打开和关闭门的命令(例如,如果列车停止,在站台对齐并且门已关闭,则可以安全打开门)。因此,我需要在发送命令之前收到反馈。如何在 UML 序列图中表示传感器及其信息?将每个传感器视为参与者?将反馈视为找到的消息? 我无法使用“纯 UML”来表示这一点,需要为实时系统使用一些扩展?

谢谢


解决方案:我将每个传感器表示为生命线。他们在一个循环中向控制器发送反馈,并根据反馈我能够发出命令。 我不确定这是否正确。

【问题讨论】:

  • 请尽量创建图表。这将使我们更容易指出它应该是什么。我认为每个传感器都有一条生命线是件好事。控制器读取每个传感器的状态。您可以通过从控制器到传感器的“读取”消息对其进行建模。
  • 您的解决方案听起来很合理。许多传感器在轮询模式下运行,因此控制器发送消息并等待答案(可能超时)。其他传感器只是将未经请求的消息发送到控制器读取它们的总线。所以这取决于传感器的协议。

标签: uml sequence diagram sequence-diagram


【解决方案1】:

传感器与任何其他物体一样是生命线。它可以像任何对象一样发送消息。这些很可能是异步消息。但是根据协议,这也可以是同步的。如果需要,您可以在消息中添加时间限制:https://www.uml-diagrams.org/sequence-diagrams.html

【讨论】:

    【解决方案2】:

    我认为您可能正在寻找这样的东西:

    它是由ZenUML 生成的。只需将以下代码放入编辑器即可生成上图:

    @Starter(AutomaticController)
    MechanicalOpener.tryOpen(door) {
      stoped = Sensor1.isTrainStopped()
      aligned = Sensor2.alignedAtPlatform()
      closed = Sensor3.isDoorClosed()
    
      if (stopped_and_aligned_and_closed) {
        open(door)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多