请考虑以下状态机关系图:

如果我们有以下事件序列:
Close door --> Start --> Open door --> Reset 我们需要知道从初始状态开始的相应的响应序列
(~Closed, ~Heat, ~Error)我的答覆如下:
(Closed, ~Heat, ~Error) --> (Closed, Heat, ~Error) --> (~Closed, ~Heat, ~Error)我认为我的答案是不正确的,因为我没有考虑到事件重置,事件打开后系统的状态是初始状态(如我的书面序列所示),根据状态图,由于事件重置,系统没有从这个初始状态过渡到任何状态,那么我的回答是正确的系统响应还是错误的?
最后,如果我们需要编辑这个图表,使系统能够控制加热过程,其中它将在一分钟后停止加热,并产生一个警报5秒。我的建议是创建一个与开始烤箱事件相关联的操作,在这个操作中,这个动作将创建一个名为timer的变量,并将其设置为零,并且在加热过程的循环(状态(Closed, Heat , ~Error) )中,我们将增加计时器变量作为一个动作,然后我们将执行一个名为alarm的新状态,该状态从状态(Closed, Heat , ~Error)过渡到这个具有保护条件timer> 60的警报stateEdit。此外,要完成此修改,此状态定时器应该有一个转换,使其离开状态,并在状态(Closed ~ Heat Error)结束。那么,这一修改是否将实施这一加热控制过程?还是我漏掉了什么?
发布于 2019-12-27 18:56:20
对不起,这张图太乱了。让我们把它清理干净。

我给各州起了个很好的名字,让他们更容易谈论。我在你所说的“最初状态”上加上了A。
我已经删除了B到B的无标记循环转换,因为如果要这样做,那么每个状态都应该有一个,因为这里没有任何状态对每个输入都有状态变化转换。因此,最好坚持只显示状态变化的转换的惯例。如果输入没有带你去其他地方,你就不会去其他地方。
此外,还增加了对称性,使之更加明显的是,误差在左边,烤箱在底部关闭。
最后,我消除了分心的噪音,评论什么是对称应该显示。
初始状态(~关闭,~热,~误差)。
这是我命名的A。
事件顺序:关闭门->开始->打开门->重置
带我们从A到B到C再到A再到A,因为A没有重置转换。
我的回答如下:(封闭~热~误差)->(闭合热~误差)->(闭合~热~误差)。
这意味着..。B至C至A
就像我说的一样。
编辑此图表,使系统能够控制加热过程,其中它将停止加热在一分钟后,并产生一个警报5秒。
在我看来是一个新的状态。但你说:
我的建议是创建一个与开始烤箱事件相关的操作,其中此操作将创建一个名为timer的变量并将其设置为零,并且在加热过程的循环过程中(状态(关闭、热、~错误))我们将增加定时器变量作为一个动作,然后我们将执行一个名为stateEdit的新状态,它将从状态(关闭的、热的、~错误的)过渡到这个警报状态( timer> 60 )。此外,为了完成这一修改,这个状态定时器应该有一个转换,离开它并在状态终止(关闭~热错误)。那么,这一修改是否将实施这一加热控制过程?
乌格。
还是我漏掉了什么?
是的,状态机没有变量。它们有状态和跃迁。

我不会费心用~ Alarm更新旧的状态。我更想把所有带有~的东西去掉。但不管怎样,这应该能做你想做的事。
https://softwareengineering.stackexchange.com/questions/402937
复制相似问题