嵌入式最重視的概念: 狀態(State)
在嵌入式(Embedded)和即時(Real-time)系統裡,非常依賴「事件」和即時「反應」(Response)來思考如何 規劃整體系統之複雜行為。例如,童話『青蛙王子』的故事:
從前有一位美麗的公主,喜歡玩金球。有一天,不小心讓球滾進了井裡。她哭泣了,青蛙向她說:我可以幫妳撿起金球。 但是我希望跟你約會…。如果約會時,公主心情好又親吻青蛙的話,青蛙可能搖身一變成為一位英俊的王子。從此王子、 公主過著快樂的日子。
從上述一般文字敘述中,就已經很容易發現幾個核心的概念了,例如:青蛙、公主等是用以描述事實的概念,而王子 是用來描述未來可能成真的概念;還有約會、親吻等動作也都是顯而易見重要概念。就像這裡提到的青蛙、王子、公主等, 其本身就是活生生的即時系統。剛才,我們將青蛙和王子視為兩個不同的概念。然而在嵌入式或即時系統領域裡,卻常常 採取不同之觀點,也就是:將青蛙和王子視為「青蛙王子」的兩種狀態(State)。狀態變化之觀點,是嵌入式或即時系統領域 專家所採用。事件的發生常導致某些物件的狀態變化,例如公主親吻噁心的青蛙,青蛙王子就從「青蛙」狀態,轉變為 「王子」狀態:
Event: Princess kiss frog, 狀態變化(反應): Frog 變成 Prince
茲以SysML/UML狀態圖表達如下:
圖1、青蛙的「狀態」變化
這個狀態變化,引發了新的事件:英俊王子呈現於公主面前。此事件又讓公主從「噁心」狀態轉變為 「愉快」狀態:
Event: 出現英俊王子 狀態變化(反應): Princess 心情由噁心變成愉快
後來兩人結婚,又是一個重要事件,它導致誕生新物件:家庭。然後三個物件會繼續觸發更多型態的事件,引發形形色色 的狀態變化。新婚家庭最不可或缺的就是電冰箱了,電冰箱也有其狀態,例如「冰箱溫度監控系統」就是不斷地偵測電冰箱的 狀態變化,例如,其基本狀態為:
圖2、溫度監控系統之高階狀態圖
這是比較高階的系統的整體(Whole)狀態圖。可以將高階的狀態進行細分,例如將Monitoring狀態做更詳細的狀態設計, 如圖3所示。
軟硬體組件(或稱為物件)就像一個人,當某事件(如失戀)發生時,常導致狀態之改變﹔而不同狀態會觸發不同之活動。 事件(Event)、狀態(State)和活動(Activity)是設計軟體過程中,捕捉物件行為時,最關心之事項。所以在嵌入式和即時系統之 設計領域裡,處處可見到領域專家們都很熟悉「狀態」概念。像圖2和圖3的SysML/UML狀態圖就專門用來表達狀態概念的。 (完) |


