Represent/illustrate UML 中两个独立程序之间的通信?

Represent/illustrate communication between two separate programs in UML?

假设我有一个 Android 应用程序,它通过蓝牙套接字与桌面程序通信。

Android 上的伪代码:

class sendToDesktop{
    sendMsg(String msg){
        socket.send(uuid, msg)
    }
}

在桌面上:

class Read{
    getMsg(){
        return socket.read(uuid, msg)
    }
}

那么我如何在 UML 中表示这些独立程序之间的关系呢?我可以使用组件图,还是它们只是为了说明单个程序的单独组件?

这取决于抽象级别。您可以使用:

  • 复合结构图(如果要注意具体是什么实例调用了其他应用的不同服务),
  • 也许是时序图,
  • 时序图(如果你对相互调用的时序感兴趣),
  • 交互概览图(隐藏消息和时间线),
  • Activity图(用于分析业务规则),
  • 通信图(用于命名翻译信息及其地址),
  • 甚至是状态图或用例图。

尝试从下面开始,一直到您将获得一张 A4 尺寸图表的级别。

如果必须使用 UML,那么您可能需要考虑使用如图 here 所示的通信图。虽然通信图非常适合单个应用程序的元素,但您可以调整该图以显示从一个应用程序到另一个应用程序的通信。

如果您不受 UML 的束缚,我发现数据流图非常有助于展示从一种信息 source/consumer 流向另一种信息的信息(通过中间过程——在您的如果中间过程可能是您包含蓝牙逻辑的方法)。

正如@Gangnus 指出的那样,有很多选择,none 是唯一的选择。

例如,这个 websequencediagrams.com script 描述了您的场景:

所需的详细程度(中级 类、方法名称、参数列表...)取决于阅读它的人和原因。

例如,此 websequencediagrams.com script 还显示了额外的内部工作人员 类:

另请参阅:

回答原始问题:不,组件图不限于单个程序的各个部分,所以是的,您可以使用它们。

UML 图不适合任何特定的抽象级别或工作范围。如果您的 "system under consideration" 包含两个程序,那么这就是您应该在图表中显示的内容。