任何人都可以告訴我,如果下面的兩個模型(取自UML上層結構規範的第一個模型)在語義上是相同的嗎? 分叉和UML狀態機加入的語義
我正在尋找添加叉狀態和加入僞狀態類型到我的狀態機庫,這似乎是一個有用的方式來實現。
任何人都可以告訴我,如果下面的兩個模型(取自UML上層結構規範的第一個模型)在語義上是相同的嗎? 分叉和UML狀態機加入的語義
我正在尋找添加叉狀態和加入僞狀態類型到我的狀態機庫,這似乎是一個有用的方式來實現。
下圖中的初始狀態和最終狀態不存在於上面。它們意味着在A1/B1狀態之前和A2/B2狀態表示上圖沒有之前的附加行爲,所以不是,它們不是等值圖。上面的圖表示SETUP狀態或轉換事件負責fork和創建2個進程A和B.底部圖表示PROCESS負責創建2個進程。
這兩個圖不等價。
用兩個首字母替換叉是沒有問題的:在上層狀態機中,A1和B1同時有效,下層也是這樣。
但是,將連接替換爲兩個最終狀態是有問題的。在大寫中,(Process,A2,B2)是Cleanup激活前的最後一個狀態配置。在每次運行中,Cleanup處於活動狀態之前,Process,A2和B2處於活動狀態。在小寫中,它是(過程,最終,最終)必須是活動的。
換句話說,(Process,A2,B2)和(Cleanup)是大寫的「鄰居」狀態配置,但它們不是小寫。有(過程,最後,最後)介於兩者之間。
「語義等價」取決於您定義的語義相關。對我而言,清理是下一步(流程,A2,B2)還是下一步。
此外
在上殼體A2和B2必須是同時活動,是留給過程之前。在小寫字母中,沒有這種需要。跟蹤可能是...(Process,final,B1),(Process,final B2),(Process,final,final),然後處理已經完成。
我覺得從你的實現角度來看,它們是一樣的。這裏的其他答案只是爭論語義,但這是你在問題中提出的問題。就產量而言,它們是相同的。初始假狀態不能有觸發器或警衛,最終狀態不能有傳出轉換。除非兩個區域都已完成,否則Process組合不能退出。所以,你的Process組合基本上接管了Fork和Join僞條件的角色。
既然僞狀態或最終狀態都不能進入或退出行爲,那麼'額外行爲'將來自何處? – Mesmo
好問題。對我而言,它們意味着創造和刪除。 – Bruce