2.3.3 狀態圖分析
UML編程過程是在狀態圖中定義的,由于狀態圖的表達性和可伸縮性都很好,UML用它們作為正式的FSM(有限狀態機)表示。有限狀態機是由已存在的條件(稱為“狀態”)的有限集定義的機器,同樣也是狀態間因事物觸發的狀態轉移有限集。本案例的行為是通過各個類的狀態和轉換關系進行定義的,為了使狀態圖不趨于復雜化,并方便以后的更精確化,我們將各個類分配狀態圖。在這里,我們將主要類———ProtectSpeed(防護速度類)進行討論(見圖4),包括CompareSpeed(防護區段內列車速度控制在允許速度之下)、GetdownActualSpeed(保證列車在區段出口時速度降低到目標速度)、RefreshActualSpeed(不斷得到列車實際運行速度)。

比如,在RefreshActualSpeed(刷新實際速度)中需要獲得處理好的數字速度,在該狀態中加入Actual-Speed=SignalConditionerIn->GetActualSpeed(),這樣就可以從SignalConditionIn(信號輸入)中得到最大列車實際運行速度。
在CompareSpeed(速度比較)中對得到的實際速度和最大允許速度比較,若超出規則進入制動狀態,狀態圖進入BrakeController(制動控制)的狀態圖中。
2.4 代碼生成及系統級調試
當以上設計完成時,我們能夠產生代碼并測試系統模型。我們需要用Component組件來告訴Rhapsody產生什么樣的環境。通常我們使用的是Microsoft環境(Windows操作系統和VisualC++編譯器),這樣Rhapsody可以產生VisualC++6.0和基于VxWorks的C++程序。
Rhapsody通過動態化狀態圖和順序圖促進了建模級的調試。用戶可以在一個“面向對象”尺度上(操作調用,單個事件處理,整個事件隊列)單步調試應用,并可以觀察狀態圖的影響(如活動圖的變化)。Rhapsody提供了3種不同層次的動畫控制指令(在conf iguration中進行設置添加)。第1種是none,即要生成的是可發布的代碼;第2種是tracing,它能夠隨著執行過程在主機的標準輸出設備上顯示文本的執行跟蹤信息,第3個層次是anmiation(圖形動畫),以動畫形式進行演示。
Rhapsody代碼在目標機上運行的同時,運行情況動態反饋到設計模型中來,例如基于狀態圖的斷點設置、在順序圖上捕捉不同對象之間的消息映射等。在進行設計級調試的同時,與代碼級調試工具聯合調試。Rhapsody通過模型級/代碼級聯合調試、驗證,能夠直觀地盡早發現系統的設計錯誤或缺陷,從而較早地確定或降低項目風險。
另外,Rhapsody可以生成高質量的中文文檔,可以生成軟件應用所需的框架結構、運行庫、編譯文件、通訊方式、實施策略等。而且模型和代碼的一致性更保證了文檔和代碼的一致性,為我們順利地完成開發、后期經驗的累積提供了很好的平臺?梢酝ㄟ^定制模板,生成適合具體工作要求的文檔。
3 結論
通過對北京地鐵1號線的UML建模,可以縮短車載設備軟件的開發周期。本文針對北京地鐵1號線的LCF-100DT型車載設備進行UML建模,利用了Rhapsody這個基于UML語言的開發環境,UML的狀態機模型與車載設備極好地對應,且便于借助CASE工具實現代碼自動生成,能夠極大地提高車載設備軟件的開發效率和項目可管理性。Rhapsody采用基于模型的開發方式,為系統的開發提供了清晰的結構以及可復用的軟件模塊,能夠切實提高實時軟件的開發效率和可維護性,并可在系統級進行調試,從而提高系統的可靠性和實時性。Rhapsody提供了一個完整的用于復雜實時嵌入式的應用軟件,是從分析、設計一直到代碼實現和軟件測試的開發環境。