gpt4 book ai didi

uml - 究竟什么时候应该在分层状态机上执行转换 Action ?

转载 作者:行者123 更新时间:2023-12-04 21:47:09 26 4
gpt4 key购买 nike

鉴于此 HSM 示例模型 - http://www.embedded.com/design/system-integration/4008251/8/A-crash-course-in-UML-state-machines-Part-2 - 我想知道执行过渡 Action 的正确时刻应该是什么时候。假设这台机器处于其初始状态 S211 并且事件 G 被分派(dispatch) (S21 -> S1) - 假设此事件有一些操作。顺序应该是这样的:

退出到最不常见的祖先(S) - 转换 Action - 进入目标状态(S1) - 目标的初始 Action ......

或者像这样:

退出到转换的源状态(S21)-转换 Action -退出到最小公共(public)祖先(S)-进入目标状态(S1)-目标的初始化 Action

?

简而言之 - 转换 Action 是与“转换源”还是“最不常见的祖先”相关联?

维基百科上带有描述的示例太简单了,无法提供这些细节......UML 规范似乎表明 LCA 答案是正确的,但我不确定。

提前致谢(;

最佳答案

自动机理论表明, Action 不会发生在源或目标中。但自动机理论通常也不考虑等级状态。所以,是的,LCA 是一个与任何过渡行动一样好的理论假设。

但是,Miro Samek (QHSM) 设计的状态机代码实际上在源状态中执行转换操作。请理解,这既不是问题也不是缺陷。

对于任何特定的实现而言,重要的是转换操作以一致的方式发生。 Miro 的代码就是这种情况。

如果出于某种原因您确实需要在 LCA 或目标状态中发生转换 Action ,您可以使用“扩展状态”来实现结果。但在实践中,它真的没有必要。

关于uml - 究竟什么时候应该在分层状态机上执行转换 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com