<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用Rhapsody軟件框架和UML的實(shí)時(shí)系統開(kāi)發(fā)

使用Rhapsody軟件框架和UML的實(shí)時(shí)系統開(kāi)發(fā)

作者: 時(shí)間:2004-12-10 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:已成為復雜建模的工業(yè)標準,并可借助代碼自動(dòng)生成工具實(shí)現從分析到編碼的過(guò)程自動(dòng)化。而的行為特征可以很好地用的狀態(tài)機表示,從而成為自動(dòng)代碼生成、測試、分析和校驗的最佳選擇。Ilogix公司的是一個(gè)基于支持模型驅動(dòng)的CASE工具,它一套為量身打造的實(shí)現系統自動(dòng)化。

關(guān)鍵詞:實(shí)時(shí)系統 UML 狀態(tài)機

引言

面向對象的設計方法推崇抽象、可重用且易維護的設計模式。其中,一個(gè)普遍采用的做法是預定義的構建復雜的軟件系統。在面向對象領(lǐng)域中,是指為某一具體應用領(lǐng)域提供解決方案的類(lèi)集。程序員繼承、聚合等技術(shù)定制框架并將其用于具體的應用程序設計?;诳蚣艿能浖_(kāi)發(fā)具有如下優(yōu)點(diǎn):

*由于重用了框架提供的代碼,目標系統不必從頭寫(xiě)起;

*規范的框架結構能夠指導目標系統的設計;

*框架的設計是開(kāi)放的,因此可以通過(guò)子類(lèi)化等技術(shù)定制和擴展。

本文介紹的實(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)框架元素

事件管理器創(chuàng )建一個(gè)OXFTimeout對象并將其交由一個(gè)定時(shí)管理器管理。定時(shí)管理器可以管理多個(gè)定時(shí)事件,它運行于自己的獨立線(xiàn)程內且聚合了一個(gè)定時(shí)器對象。定時(shí)器對象每衛固定的時(shí)間片會(huì )向定時(shí)管理器發(fā)通知信號,這時(shí)定時(shí)管理器檢查它管理的定時(shí)事件集合中是否有定時(shí)事件到時(shí),并將到時(shí)的定時(shí)事件添加到事件管理器(活動(dòng)對象)的事件隊列中(通過(guò)調用queueEvent),之后事件管理器再將這些定時(shí)事件投遞給對應的響應對象。定時(shí)事件本身是被動(dòng)的,它不包含定時(shí)器。

(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)文章:霍爾傳感器原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>