系統的參與者只有用戶1個,通過對系統需求的分析,可以識別3個主要用例:開機、機器設置和繞線控制。通過對用例的進一步分解,得出系統的用例圖,如圖2所示。
1.2 設計過程
完成需求分析之后,進入設計階段。這個階段中,以需求分析結果為基礎,找出系統所需要的類和對象以及其相互關系。針對嵌入式系統的特點,面向對象的一些高級特性不能使用,動態創建對象、派生和多態這樣的特性會大大降低系統速度并增大代碼空間和數據空間,對瑞薩H8/3062,這款單片機只有128KB的ROM和4KB的RAM,節省每一個字節都顯得非常重要。
通過對用例和系統結構分析,識別出來的類和關系如圖3所示。
出于可移植性的考慮,所有類被分成3個層次:
最頂層是功能邏輯類的抽象,MachineStting為機器設置類;Keys為按鍵類,Displayr為顯示類,MotorController為電機控制器類。這些邏輯上的類與硬件無關,便于以后硬件修改,同時使得開發繞線機的不同版本變得非常容易,如從平繞機到開發環行機,從二軸繞線機到開發三軸繞線機。
中間層是外圍硬件類的抽象,Flash為Flash存儲類,用于存儲設置的參數;Speaker為揚聲器類;Panel為面板類;DCMoto/為直流電機類;StepMotor為步進電機類。
最底層是單片機及其內部功能模塊類的抽象,H8/3062為單片機類,用于封裝輸入/輸出口;Timer_KeyShake為按鍵防抖定時器;Timer_DCMotor為直流電機PWM脈沖產生定時器;Timer_DCCapture為直流電機圈數捕獲定時器;Timer_StepMotor為步進電機PWM脈沖產生定時器。分這一層可以使得變換單片機類型非常容易,瑞薩H8/300H系列單片機在國內應用非常罕見,之所以選用這款是為了與國外產品的競爭,這樣可以更快、更好地打開國際銷路,但在選擇這款單片機的同時已經做好了移植到ARM內核單片機的準備。
為了理解系統的動態行為,還應該用順序圖、協作圖、狀態圖和活動圖對系統動態行為進行描述。狀態圖對嵌入式系統的設計尤其重要,這里用其對MotorController的狀態轉換進行描述,如圖4所示。
可以用時序圖等對用例進行進一步的分析,“啟動”按鍵按下后處理的時序圖如圖5所示。
建模過程不是一個直線過程。它往往是一個演化、迭代的過程,不斷地分析、評價、修改、再分析,才可能得到一個高質量的模型,為高質量的軟件打下基礎。
1.3 編碼過程
Rose具有自動生成C++框架代碼的功能。在Rose菜單中選擇Tools→ANSI C++→Generate Code,可以生成C++的框架代碼。
文章來源于領測軟件測試網 http://www.kjueaiud.com/