2

在 SysML 中,当对消息进行建模时,我无法理解应该使用什么元素类型来定义它、它的元素以及它流经的端口。

我假设它是:

  • 一个原始
  • 更专业的接口块

两者都可以键入代理端口(以前是flow port,如果我理解正确的话),或者在构建完整的消息接口或端口系统(直接端口或嵌套端口)时在其他块中键入大多数其他属性。如果基本消息定义是一个普通的,那么你什么时候创建一个由该块输入的流属性,以便某些东西实际上可以通过端口从一个任务流到另一个任务?

接口块应该在那里的某个地方出现,以便输入端口,对吧?这是否意味着我使用它直接定义消息,或者这取决于我的端口方案(即我是否嵌套端口以及嵌套到什么级别)?

我想这归结为当你定义一个东西(即一个类/块)以及当你定义这个东西是一个在你的模型中流动的数量时(某种流动 - 消息从一个任务传递)或硬件到另一个)。

PS 我使用 MagicDraw 作为 SysML 工具,但我认为这不会影响核心答案。

4

1 回答 1

1

由我的团队开发的答案:

  1. 为原始网络接口(物理层)使用完整端口。
  2. 使用键入网络接口,包括:
    • 表示流出端口的物理项目的流量属性,例如总电流(功率)。
    • 用于物理嵌套端口的嵌套完整端口元素,例如构成物理以太网端口的引脚。用另一个块键入。
    • 用于跨网络接口的逻辑/抽象数据流的嵌套 <> 元素,例如套接字/连接
  3. 使用接口块键入每个逻辑连接(嵌套代理端口),接口块包含以下内容:
    • 表示数据块(例如消息)的流属性,这些数据块作为一个组通过连接发送
    • 定义该连接特征的值属性,例如源和目标 IP 地址和端口号、通信丢失和重试信息等。请注意,其中一些可能更好地用作标记中的元数据,作为单独构造型的一部分。
  4. 使用ValueType键入连接的数据流属性,其属性是该数据块的各个数据元素(即消息元素)。
  5. 创建一个具有自定义名称(例如“数据元素”)的新原型,并为每个数据元素所需的任何元数据添加标签,例如长度(以位或字节为单位)、消息中的基础类型、任何单位或缩放因素,在消息中的位置等。

此时您甚至可以创建一个通用表,它将列出给定消息或所有消息中的每个数据元素,并将所有相关的数据元素标签添加为列,并将其用作每个消息和数据元素的当前规范每条消息,并允许直接在该表中更轻松地编辑所有信息。

为什么对流经代理端口的数据块使用ValueTypes?因为那样它们将显示为信息流项目,而不是跨内部框图 (IBD)上两个代理端口之间的连接器的项目流项目。即,当我发送一个由Block键入的物理项目时,它作为Item Flow发送,但是当我发送一个逻辑项目(例如数据)时,它由ValueType键入,并作为Information Flow发送。

这是一个起点 - 我们最初发现嵌套 valuetype 定义存在问题,因此选择了一个更扁平的消息定义,将消息的所有方面包含在单个ValueType中,而不是嵌套它们。我敢肯定有办法解决这个问题,但你想得到多复杂?

于 2018-12-06T05:26:33.250 回答