溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步

發(fā)布時間:2021-12-20 14:12:50 來源:億速云 閱讀:293 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步”這篇文章吧。

首先還是回顧一下系統(tǒng)的構(gòu)成。還是請出對象圖。

EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步

這個系統(tǒng)的基本設(shè)計如下:

每個設(shè)備都擁有自己的狀態(tài)機,在獨立的線程中執(zhí)行,這些狀態(tài)機相互獨立,互不干擾。

交通信號系統(tǒng)引擎TrafficSystemEngine也擁有狀態(tài)機,也是運行在一個獨立的線程中。它的職責(zé)是控制系統(tǒng)的到全體動作。

狀態(tài)機之間的同步

在這個設(shè)計中,已經(jīng)盡量減少了設(shè)備之間的耦合性,只留下TrafficSystemEngine和各個設(shè)備之間的交互。既然是多線程,那么就需要處理同步問題,具體是:

  1. 系統(tǒng)啟動時,等所有的設(shè)備都準(zhǔn)備好了以后,TrafficSystemEngine開始執(zhí)行狀態(tài)切換。


  2. 系統(tǒng)正常執(zhí)行期間,狀態(tài)機之間通過信號/事件進行交互,這一部分已經(jīng)在前面的文章說明,本文省略。

  3. 系統(tǒng)停止時,所有設(shè)備的停止過程結(jié)束以后,整個系統(tǒng)停止。




說起來挺玄,畫成狀態(tài)圖就是下面這樣。

EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步

中間的的部分就是TrafficSystemEngine,不再說明。這里只說明其他兩個狀態(tài):Setup狀態(tài)用于等待所有設(shè)備初始化完成;Shutdown用于狀態(tài)等待所有設(shè)備的Shutdown結(jié)束處理結(jié)束。

兩個狀態(tài)有意用了兩種表達方式,在本例中表達的語義相同。

建模中的拆分和組裝

對一個系統(tǒng)建模,一般需要經(jīng)歷一個拆分和組裝的的過程。

拆分就是前面講到的庖丁解牛,只不過分解的對象是交通信號系統(tǒng)。我們將系統(tǒng)拆分成各個子系統(tǒng)或者說模塊,然后對它們分別建模。這樣既可以降低建模的難度,又可以得到可復(fù)用的模塊。

建?;顒又械慕M裝既是設(shè)計的一部分,也是檢驗設(shè)計的過程。在組裝過程中可以發(fā)現(xiàn)各模塊設(shè)計中的不足。否則的話這些問題恐怕就要等到結(jié)合測試時才能發(fā)現(xiàn)了。

以上是“EA畫UML狀態(tài)圖中如何實現(xiàn)狀態(tài)機之間的同步”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI