2013-03-24 36 views
3

鑑於此HSM示例模型 - http://www.embedded.com/design/system-integration/4008251/8/A-crash-course-in-UML-state-machines-Part-2 - 我想知道什麼應該是執行轉換操作的正確時刻。假設這臺機器處於初始狀態S211並且事件G被調度(S21 - > S1) - 讓我們假設這個事件有一些動作。如果順序是這樣的:何時應該在分層狀態機上執行轉換操作?

出口到最低共同祖先(S) - 過渡動作 - 進入目的地國家(S1) - 目標的初始化動作......

也許是這樣的:

退出到源狀態轉換(S21) - 轉換操作 - 退出到最小公共祖先(S) - 進入目標狀態(S1) - 目標的初始化操作

簡而言之 - 是與「過渡源」還是「最不共同的祖先」相關的過渡行爲?

在維基百科的描述示例太細微了,以至於不能提供這些細節...... UML規範似乎表明LCA答案是正確的,但我不確定。

提前(THX;

回答

1

自動機理論認爲,行動並不在源或目標發生,但同樣沒有自動機理論普遍認爲分層狀態,以便肯定的,LCA是一個很好的理論。假設爲任何轉換動作

但是,由Miro Samek(QHSM)設計的狀態機代碼實際上是在源狀態下執行轉換操作的,請理解,這不是一個問題或是一個缺陷

就任何特定的實現而言,所有這些無光澤rs是轉換操作以一致的方式發生。 Miro的代碼就是這種情況。

如果出於某種原因,您確實需要在LCA或目標狀態下發生轉換操作,則可以使用「擴展狀態」來實現結果。但在實踐中,它確實沒有必要。

+0

我知道Miro的實現在源代碼狀態下執行,但我只是想知道根據UML什麼是正確/正確的方法 - 標準的演講並沒有給我一個明確的答案...... – 2013-05-04 18:08:18

相關問題