在 SysML 中,在对消息进行建模时,我很难理解应该使用哪种元素类型来定义它、它的元素以及它流经的端口。
我假设它是:
- 原始块
- 更专业的接口块
两者都可以键入代理端口(如果我理解正确的话,以前称为流端口(,或者在构建完整消息接口或端口系统(直端口或嵌套端口(时在其他块中键入大多数其他属性。如果基本消息定义是普通块,那么何时创建由该块键入的流属性,以便某些内容实际上可以通过端口从一个任务流向另一个任务?
接口块 应该出现在那里的某个地方,以便键入端口,对吧? 这是否意味着我使用它来直接定义消息,或者这取决于我的端口方案(即我是否嵌套端口以及嵌套到什么级别(?
我想这归结为当你定义一个东西(即一个类/块(和当你定义这个东西是在你的模型中流动的数量(某种流 - 消息从一个任务或硬件传递到另一个(。
附言我正在使用MagicDraw作为SysML工具,但我认为这不会影响核心答案。
答案,由我的团队开发:
- 对原始网络接口(物理层(使用完整端口。
- 使用块键入网络接口,包括:
- 表示流出端口的物理项的流属性,例如总电流(功率(。 物理嵌套端口
- 的嵌套完整端口元素,例如组成物理以太网端口的引脚。使用另一个块键入。
- 用于跨网络接口的逻辑/抽象数据流的嵌套<>元素,例如套接字/连接
使用接口块 - 键入每个逻辑连接(嵌套代理端口(,其中包含以下内容的接口块:
- 表示数据块(如消息(的流属性,这些数据块作为组通过连接发送
- 定义该连接特征的值属性,例如源和目标 IP 地址和端口号、通信丢失和重试信息等。请注意,其中一些可能更好地用作标记中的元数据,作为单独构造型的一部分。
- 使用ValueType键入连接的数据流属性,ValueType 的属性是该数据块的各个数据元素(即消息元素(。
- 使用自定义名称(如"Data Element"(创建新的构造型,并为每个数据元素所需的任何元数据添加标记,例如长度(以位或字节为单位(、消息中的基础类型、任何单位或缩放因子、消息中的位置等。
此时,您甚至可以创建一个通用表,该表将列出给定消息或所有消息中的每个数据元素,并将所有相关的数据元素标记添加为列,并将其用作每条消息的每条消息和数据元素的当前规范,并允许直接在该表中更轻松地编辑所有信息。
为什么对跨代理端口流动的数据块使用ValueType?因为这样它们将显示为信息流项目,而不是通过内部框图 (IBD(上两个代理端口之间的连接器显示的项目流项目。 即,当我发送由块键入的物理项目时,它作为项目流发送,但是当我发送逻辑项目(例如数据(时,它由ValueType键入,并作为信息流发送。
这是一个起点 - 我们最初发现了嵌套 valuetype 定义的问题,因此选择了更扁平的消息定义,该定义在单个ValueType中包含消息的所有方面,而不是嵌套它们。 我相信有办法解决这个问题,但你想变得多么复杂?