UML是如何描述主/从状态机交互的

UML是如何描述主/从状态机交互的,uml,state-diagram,Uml,State Diagram,我的系统有两个状态机,一个主,一个从。主设备和从设备之间的状态不是一对一。可能的相互作用如下 如果主设备过渡到某个主设备状态,它将通知从设备过渡到某个从设备状态 从机可以请求主机进入某一主机状态;如果主机成功,主机将通知从机进入某个从机状态 从机可以向主机请求某些数据 描述这些交互的合适UML图是什么?状态图仅限于状态转换,不能描述从机的请求(状态转换或数据);交互图仅限于类/对象,不能应用于状态 您可以使用两个UML状态机图来描述这些交互,一个用于主系统,另一个用于从系统。例如,要指定从机

我的系统有两个状态机,一个主,一个从。主设备和从设备之间的状态不是一对一。可能的相互作用如下

  • 如果主设备过渡到某个主设备状态,它将通知从设备过渡到某个从设备状态

  • 从机可以请求主机进入某一主机状态;如果主机成功,主机将通知从机进入某个从机状态

  • 从机可以向主机请求某些数据


描述这些交互的合适UML图是什么?状态图仅限于状态转换,不能描述从机的请求(状态转换或数据);交互图仅限于类/对象,不能应用于状态

您可以使用两个UML状态机图来描述这些交互,一个用于主系统,另一个用于从系统。例如,要指定从机在接收到来自主机的信号
Req
时从空闲状态转换为繁忙状态,请在从机的状态机图中绘制从空闲状态转换为繁忙状态的转换标签
Req
。要指定主机在进入状态X时发送信号
Req
,请在主机状态机图中的状态符号X内写入
entry/Req

或者,您可以绘制用于发送和接收信号的元素(参见UML 2.5.1规范第14.2.4.8.2节至第14.2.4.8.5节):

例如,在收到带有参数id的信号Req时,从空闲变为忙碌:

您还描述了从属服务器向主服务器请求某些数据的情况。为此,您需要一个主界面提供的、从界面所需的第三个界面图(或文本规范),例如:

在从机的状态机图中,可以调用接口中定义的操作。例如,要在从机进入忙状态时调用
read
操作
master
,并将其存储在局部变量
x
中,请在状态符号x内写入
entry/x:=master.read()


有关UML状态机图的介绍,请参阅您描述的主设备和从设备之间的交互

对于这一点,没有单一的解决方案,而且很难在同一张图片上同时显示所有可能的状态和事务的逻辑(实际上我认为根本不可能)

这里要考虑的主要图表是:

  • 描述请求/更改状态过程的序列图(您可能没有几个显示更改的各种触发器,并使用alt/opt显示进一步的行为)
  • 描述如何处理状态更改过程的活动图
  • 交互概览图,状态变化显示在“活动”级别,“顺序”部分显示主设备和从设备之间的协商
  • 特别是最后一个是一个有趣的选择,因为它结合了活动和序列图的可能性。通常情况下,这是一种过度的杀伤力,但对于您的具体案例来说,这可能是最好的主意

    除此之外,您还可以使用状态机图(两个,一个用于主设备,一个用于从设备),但它们无法显示两个实体之间的交互。不过,解释什么是可用状态可能是有用的


    如果不清楚,请随意评论这个答案,询问更多细节。然后,我将尝试构建这些图的示例(www.admiralit.nl上的答案中已经有了活动图示例)。

    您的尝试在哪里?我的系统有两个状态机,您是否尝试只拥有一个状态机?@ThomasKilian描述主状态机和从状态机的状态转换,以及two@Bruno一个是不适用的。这种情况下,平板电脑应用程序与桌面应用程序协同工作,平板电脑/桌面有自己的状态机不是“什么”,而是“在哪里”。