用UML表示/说明两个独立程序之间的通信?

时间:2015-02-03 13:04:16

标签: interface uml communication diagram

我们说我有一个Android应用程序通过蓝牙套接字与桌面程序通信。

Android上的伪代码:

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

在桌面上:

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

那么我如何用UML表示这些独立程序之间的关系呢?我可以使用组件图,还是仅用于说明单个程序的单独组件?

4 个答案:

答案 0 :(得分:2)

这取决于抽象的程度。您可以使用:

  • 复合结构图(如果要注意实际调用其他应用程序的不同服务的实例),
  • 也许正时图,
  • 序列图(如果您对相互呼叫的顺序感兴趣),
  • 交互概览图(隐藏消息和时间轴),
  • 活动图(用于分析业务规则),
  • 通信图(用于命名翻译的信息及其地址),
  • 甚至是州或用例图。

尝试从下面开始并继续到您将拥有一张A4尺寸图表的水平。

答案 1 :(得分:2)

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

如果您没有使用UML,我发现数据流图非常有助于演示从一个信息源/消费者流向另一个信息源/消费者的信息(通过中介流程 - 在您的情况下是中间流程可能是包含蓝牙逻辑的方法。

答案 2 :(得分:2)

正如@Gangnus指出的那样,有很多选择,没有一个是独一无二的。

例如,此websequencediagrams.com script描述了您的方案:

enter image description here

所需的详细程度(中间类,方法名称,参数列表......)取决于谁将阅读它以及原因。

例如,此websequencediagrams.com script还显示了其他内部工作者类:

enter image description here

另见:

答案 3 :(得分:1)

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

UML图不适用于任何特定的抽象级别或工作范围。如果你正在考虑你的系统"包含两个程序,然后是你应该在图表中显示的内容。