微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Enterprise Architect 中建模网络交互的正确方法

如何解决Enterprise Architect 中建模网络交互的正确方法

我有一个Actor,它的实例发送/接收网络消息。 (例如,该类的每个实例都是在不同物理机器上运行的不同进程的一部分。)网络消息是类 MessageAMessageB 的序列化实例,其属性通过网络发送。传入消息由我的 Actor 类的回调方法处理。通过调用我的 Actor 类的方法触发输出消息。 因此,我开始在这样的类图中对这种情况进行建模:

Class Diagram

  • 网络消息是 EA 术语中的“信号”,即具有特殊原型的类(为了简洁起见,省略了属性
  • 我的 Actor-class 是 EA 中的一个常用类,有四个对应的方法

现在,我想为一个典型的交互建模并开始绘制以下序列图:

Sequence Diagram

这些消息不是方法调用,而是异步的并且具有允许我为它们分配正确消息类型的“信号”。

但是,我想知道我是如何建模的

  1. 具有负载 MessageA 的消息由 onMessageAReceived 处理的事实

  2. 方法 sendMessageA 发出带有负载 MessageA 的消息

    (注意:就我的实现而言,sendMessageA 返回 void 是正确的,因为发送网络消息是异步的,会卸载到底层操作系统,并且该方法在发送消息后返回其被调用方。 )

在序列图中。

也许,我的整个方法是完全错误的,我正在尝试建模无法像那样建模的东西。在这种情况下,非常欢迎提供正确方法的一些提示

解决方法

当然,对此建模的方法不止一种(并且不依赖于工具 EA)。因此,您应该询问您正在与哪些受众交谈,分别是他们的域基本上是哪个。

技术

SD 非常适合显示物理传输。在这种情况下,您将专注于消息的发送方式。在这种情况下,物理操作将显示为消息。例如。使用套接字,它会是一些(a-)同步 send(message),它确保内容 message 从 A 传输到 B。这可以在从粗略到单个 CRC 发送的任何技术实现级别(或如何在内部构建操作以确保包不会丢失)。

逻辑

为了显示更合乎逻辑的方面,最好让组件(部署在多个硬件上)具有端口(实现某些接口),沿着这些端口有信息流(这是您将在 EA 中找到的连接器)可以传输某些东西(即您的消息类)。

概述

您可能希望在模型中描述这两个方面。但您可能会根据您的整体域将重点放在一个或其他部分。

没有单一的方法可以对某事物进行建模。模型总是抽象的,这就是我们创建模型的原因。它们将显示真实,但重量更轻。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。