您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“EA畫UML狀態圖中如何實現狀態機之間的同步”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“EA畫UML狀態圖中如何實現狀態機之間的同步”這篇文章吧。
首先還是回顧一下系統的構成。還是請出對象圖。
這個系統的基本設計如下:
每個設備都擁有自己的狀態機,在獨立的線程中執行,這些狀態機相互獨立,互不干擾。
交通信號系統引擎TrafficSystemEngine也擁有狀態機,也是運行在一個獨立的線程中。它的職責是控制系統的到全體動作。
狀態機之間的同步
在這個設計中,已經盡量減少了設備之間的耦合性,只留下TrafficSystemEngine和各個設備之間的交互。既然是多線程,那么就需要處理同步問題,具體是:
系統啟動時,等所有的設備都準備好了以后,TrafficSystemEngine開始執行狀態切換。
系統正常執行期間,狀態機之間通過信號/事件進行交互,這一部分已經在前面的文章說明,本文省略。
系統停止時,所有設備的停止過程結束以后,整個系統停止。
說起來挺玄,畫成狀態圖就是下面這樣。
中間的的部分就是TrafficSystemEngine,不再說明。這里只說明其他兩個狀態:Setup狀態用于等待所有設備初始化完成;Shutdown用于狀態等待所有設備的Shutdown結束處理結束。
兩個狀態有意用了兩種表達方式,在本例中表達的語義相同。
建模中的拆分和組裝
對一個系統建模,一般需要經歷一個拆分和組裝的的過程。
拆分就是前面講到的庖丁解牛,只不過分解的對象是交通信號系統。我們將系統拆分成各個子系統或者說模塊,然后對它們分別建模。這樣既可以降低建模的難度,又可以得到可復用的模塊。
建模活動中的組裝既是設計的一部分,也是檢驗設計的過程。在組裝過程中可以發現各模塊設計中的不足。否則的話這些問題恐怕就要等到結合測試時才能發現了。
以上是“EA畫UML狀態圖中如何實現狀態機之間的同步”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。