使用Rhapsody軟件框架和UML的實(shí)時(shí)系統開(kāi)發(fā)
關(guān)鍵詞:實(shí)時(shí)系統 UML Rhapsody 狀態(tài)機
引言
面向對象的軟件設計方法推崇抽象、可重用且易維護的設計模式。其中,一個(gè)普遍采用的做法是使用預定義的框架構建復雜的軟件系統。在面向對象領(lǐng)域中,框架是指為某一具體應用領(lǐng)域提供解決方案的類(lèi)集。程序員使用繼承、聚合等技術(shù)定制框架并將其用于具體的應用程序設計?;诳蚣艿能浖_(kāi)發(fā)具有如下優(yōu)點(diǎn):
*由于重用了框架提供的代碼,目標系統不必從頭寫(xiě)起;
*規范的框架結構能夠指導目標系統的設計;
*框架的設計是開(kāi)放的,因此可以通過(guò)子類(lèi)化等技術(shù)定制和擴展。
本文介紹Rhapsody的實(shí)時(shí)代碼生成策略。Ilogix公司提供的Rhapsody是一個(gè)基于UML支持實(shí)時(shí)嵌入式系統全過(guò)程面向對象開(kāi)發(fā)的CASE工具。Rhapsody基于一個(gè)內置的實(shí)時(shí)系統軟件框架―OXF生成C/C++代碼。
1 Rhapsody的軟件框架
Rhapsody的OXF框架專(zhuān)為實(shí)時(shí)嵌入式系統而設計,它由一系列UML類(lèi)組成。這些類(lèi)相互協(xié)作,組成了一個(gè)結構嚴整、跨實(shí)時(shí)操作系統平臺的實(shí)時(shí)嵌入式軟件架構。
(1)活動(dòng)類(lèi)
活動(dòng)對象(Active Object)在UML中被定義為“擁有一個(gè)線(xiàn)程并能夠發(fā)起控制活動(dòng)的對象”。Rhapsody給這個(gè)一般定義賦予了具體含義,如圖1所示。
活動(dòng)類(lèi)(Active Classes)在框架中以OXFActive表示,它擁有一個(gè)執行線(xiàn)程和一個(gè)事件隊列,并提供事件調度功能。用戶(hù)活動(dòng)類(lèi)從OXFActive繼承。
該活動(dòng)類(lèi)包裝了實(shí)時(shí)系統中的事件調度器。Execute方法是一個(gè)無(wú)限循環(huán)。在循環(huán)中,事件被不斷地從隊列中提取出來(lái),發(fā)往對應的目標對象。QueueEvent和schedTimeout方法向隊列注入新的事件。
(2)響應類(lèi)
響應類(lèi)(Reactive Classes)是能夠對事件做出反應的框架類(lèi),即事件消費者。它在Rhapsody的框架中以OXFReactive表示,用戶(hù)響應類(lèi)從OXFReactive繼承,如圖2所示。
圖2 響應類(lèi)及相關(guān)框架元素
每個(gè)響應類(lèi)都和一個(gè)事件管理器關(guān)聯(lián)(通過(guò)調用setEventManager方法),事件管理器由活動(dòng)類(lèi)充當。一個(gè)事件管理器可以服務(wù)于多個(gè)響應類(lèi)。響應類(lèi)的gen方法向其事件管理器注入一個(gè)新的事件(通過(guò)調用活動(dòng)類(lèi)的queueEvent方法)。事件管理器在收到事件之后會(huì )調用相應的響應對象(由事件的屬性指出)的takeEvent方法。
用戶(hù)響應類(lèi)有主動(dòng)(active)、被動(dòng)(passive)和從屬(subordinate)響應類(lèi)之分:
*主動(dòng)用戶(hù)響應類(lèi)利用了多重繼承技術(shù),它集事件管理器和響應類(lèi)雙得功能于一身;
*被動(dòng)用戶(hù)響應類(lèi)由框架的缺省事件管理器―OXFDefaultEventManager管理,且所有被動(dòng)用戶(hù)響應類(lèi)都共享該缺省事件管理器;
*從屬用戶(hù)響應類(lèi)由用戶(hù)定義的活動(dòng)類(lèi)充當事件管理器。從屬響應類(lèi)以聚合方式存在于用戶(hù)活動(dòng)類(lèi)內,或者獨立于活動(dòng)類(lèi),而通過(guò)調用setEventManager方法與一個(gè)用戶(hù)活動(dòng)關(guān)聯(lián)。
(3)事件和操作
類(lèi)可以定義自己的事件和操作(Events and Operations)方法。事件代表一種突發(fā)的激勵信號,可以影響對象的行為及狀態(tài)。在Rhapsody中,活動(dòng)類(lèi)負責事件調度。事件既可以異步(活動(dòng)類(lèi)將事件投遞給目標對象之后立即返回,目標對象使用自己的線(xiàn)程完成對事件的響應),也可以是同步的(活動(dòng)類(lèi)投遞事件之后必須等待目標對象處理完成才能返回)。操作代表類(lèi)本身提供的服務(wù)和功能。操作調用總是同步的,即操作總是運行在調用者線(xiàn)程之內。Rhapsody的框架定義了兩種事件:
①信號事件。
信號事件(Signal Events)是最常用的事件,它代表對象之間傳遞的一種異步激勵信號。在Rhapsody的框架中,它以OXFEvent表示,所有的用戶(hù)事件類(lèi)都從OXFEvent繼承。
信號事件有自己的參數(以其屬性表示),并且和一個(gè)響應對象關(guān)聯(lián)。事件管理器依據事件的響應對象判斷事件的接收者。
②定時(shí)事件
定時(shí)事件(Timeout Events)在Rhapsody中以OXFTimeOut表示。它在OXF框架中的位置如圖3所示。
事件管理器(活動(dòng)對象)的schedTimeout方法負責定時(shí)事件的構造和調度。其執行過(guò)程如圖4所示。
圖3 定時(shí)事件及相關(guān)框架元素
(4)狀態(tài)機
Rhapsody支持UML狀態(tài)機(State Machines),包括層次狀態(tài)分解、帶參事件、定時(shí)事件、偽狀態(tài)、完成轉移、入口和出口動(dòng)作等功能。Rhapsody也包含了UML中定義的異步事件處理模型:帶有狀態(tài)圖的類(lèi)都是響應類(lèi),因此都與一個(gè)事件管理器(活動(dòng)類(lèi))關(guān)聯(lián)。事件管理器使用一個(gè)隊列緩沖收到的事件,然后將事件投遞給響應對象。響應對象按照狀態(tài)圖處理收到的事件。
OXF框架使用OXFEvent Consumer、OXFState、OXFLeafState等實(shí)現UML狀態(tài)機的語(yǔ)義。限于篇幅,本文對此不作介紹。
(5)并發(fā)控制
Rhapsody的OXF框架使用如下兩個(gè)類(lèi)實(shí)現對實(shí)時(shí)系統資源的并發(fā)控制(Concurrency Control)。
*OXFOSMutex:包裝了實(shí)時(shí)操作系統的互斥量對象,支持lock()和free()操作?;コ饬坑糜诠芾愍氄夹再Y源。
*OXFOSSemaphore:包裝了實(shí)時(shí)操作系統的信號量對象,支持wait()和signal()操作。信號量用于管理共享資源。
UML類(lèi)的方法可以聲明為guarded。這時(shí)類(lèi)被稱(chēng)為protected。protected類(lèi)用于對獨占性資源進(jìn)行建模,在任何時(shí)刻只可有一份guarded方法執行,OXF框架以OXFProtected定義UML protected類(lèi),它充當所有用戶(hù)protected類(lèi)的父類(lèi)。
(6)模型的調試及分析
Rhapsody允許用戶(hù)單步執行狀態(tài)圖和順序圖以驗證系統的功能和邏輯。系統執行過(guò)程中,對象的方法調用和狀態(tài)改變都可以在模型圖上以動(dòng)畫(huà)的形式表現出來(lái)。
除了功能和邏輯上的正確性之外,實(shí)時(shí)系統還對系統的響應時(shí)間有嚴格的要求。對實(shí)時(shí)系統響應時(shí)間的測試稱(chēng)為調度性分析,主要使用兩種方法。
①經(jīng)驗法:給系統注入實(shí)時(shí)測試數據,然后測量系統的相應性能。
②理論分析:為系統模塊設定足夠的時(shí)間信息,然后用數學(xué)方法計算系統的整體相應性能。此方法通常需借助專(zhuān)用的軟件工具完成。
圖4 定時(shí)事件的調度和投遞
Rhapsody支持基于經(jīng)驗的調度性分析。用戶(hù)需要為對象方法設定估計的執行時(shí)間,并編寫(xiě)一個(gè)驅動(dòng)腳本或狀態(tài)圖以模擬系統的觸發(fā)事件。驅動(dòng)腳本和狀態(tài)圖啟動(dòng)之后,Rhapsody會(huì )按照設定的時(shí)間參數和程序邏輯運行模型并輸出詳細的執行過(guò)程報表。用戶(hù)通過(guò)檢查執行報表判斷系統是否滿(mǎn)足要求的響應性能。Rhapsody也允許用戶(hù)在目標硬件系統運行驅動(dòng)腳本或狀態(tài)圖,以獲得最準確的執行時(shí)間報表。
結語(yǔ)
實(shí)時(shí)嵌入式系統應用的開(kāi)發(fā)越來(lái)越復雜,因此有必要對嵌入式項目實(shí)施嚴格的軟件工程管理。UML已成為復雜系統建模的工業(yè)標準,其狀態(tài)機模型與實(shí)時(shí)嵌入式系統極好地對應,且便于借助CASE工具實(shí)現代碼自動(dòng)生成,能夠極大地提高實(shí)時(shí)嵌入式軟件的開(kāi)發(fā)效率和項目可管理性。
Ilogix公司的Rhapsody工具便是一種支持實(shí)時(shí)UML標準的嵌入式系統軟件工具,它基于內置的OXF框架實(shí)現從系統的分析、設計到代碼自動(dòng)生成的開(kāi)發(fā)過(guò)程自動(dòng)化。OXF框架是面向對象和跨RTOS平臺的,它很好地將UML的概念移植到實(shí)時(shí)嵌入式系統中來(lái),為嵌入式系統的開(kāi)發(fā)提供了清晰的結構以及可復用的軟件模塊,能夠切實(shí)提高實(shí)時(shí)嵌入式軟件的開(kāi)發(fā)效率和可維護性。
霍爾傳感器相關(guān)文章:霍爾傳感器工作原理
電度表相關(guān)文章:電度表原理
霍爾傳感器相關(guān)文章:霍爾傳感器原理
評論