PBO技術(shù)及實時嵌入式軟件開發(fā)
摘要:介紹PB0技術(shù)及其特點,這種技術(shù)支持軟件重用和動態(tài)可重配置;分析其應(yīng)用于航空航天器等實時裝入式軟件開發(fā)過程中的優(yōu)勢與困難。
關(guān)鍵詞:軟件重用 動態(tài)可重配置 實時裝入式軟件
1 PBO技術(shù)[1]
PBO(Port-Based Object)技術(shù)[1]是一種可用于軟件工程的新技術(shù),特別適合于動態(tài)可重配置實時軟件(DRRTS)的開發(fā)。DRRTS可以在線配置,
無需重新編譯和連接,也就可以不必關(guān)閉和重新啟動系統(tǒng),從而滿足某些系統(tǒng)需要連續(xù)不停地運行和升級的要求。每一個PBO相當于一個組件,結(jié)構(gòu)如圖1所示。左右兩邊分別是變量輸入和輸出端口,上面是其配置常端口,下面是其與傳統(tǒng)器與機械臂通信的源端口。每一個PBO進程都有相同的有限狀態(tài)機,如圖2所示。它有 4種狀態(tài)(用橢圓表示):未建立、錯誤、OFF和ON。狀態(tài)之間可以互相轉(zhuǎn)化。這使得每一個PBO的代碼有著相同的結(jié)構(gòu),包含著同樣的方法,只是其中的方法處理過程不同。實際應(yīng)用中,可以建立一個PBO庫,庫中的每一個PBO組件都可以作為軟件重用的模塊,在需要的時候可以將它們動態(tài)地配置。圖3是一個 PBO相互連接組合的實例。PBO的參數(shù)用局部變量表和全局變量表兩級存儲,進程之間的通信通過共享全局變量存儲器來實現(xiàn)。圖4是PBO進行狀態(tài)變量兩級存儲結(jié)構(gòu)圖。每當進程開始執(zhí)行一個循環(huán)時,從全局變量表中讀入變量,執(zhí)行完畢中,再把變量寫入全局變量表。
2 PBO技術(shù)的特點
對于基于實時操作系統(tǒng)(RTOS)上的控制系統(tǒng)軟件,采用PBO技術(shù),可以從系統(tǒng)體系結(jié)構(gòu)到代碼實現(xiàn)的各階段加快軟件開發(fā)速度。PBO技術(shù)遵循高內(nèi)聚、低耦合的封裝設(shè)計思想,整個系統(tǒng)由多個可配置組件組成。按照這種框架,可以使用當今流行的面向?qū)ο笤O(shè)計模式,采用消息驅(qū)動;但實時嵌入式軟件是面向實時系統(tǒng)的,要求高速有效,消息驅(qū)動有時不能滿足這個要求。PBO設(shè)計方法中,數(shù)據(jù)的傳遞是通過共享存儲器實現(xiàn)的,這樣設(shè)計滿足了硬件的低負荷工作和數(shù)據(jù)的更新速度要求。每個組件與外界的聯(lián)系由四個端口(port)組成。內(nèi)部實現(xiàn)黑箱操作。采用兩級存儲保存數(shù)據(jù),力圖實現(xiàn)最大限度減少訪問沖突,減少組件間的依賴性。PBO技術(shù)結(jié)合了端口自動代數(shù)模型和對象的軟件抽象[1]。每一個PBO相當于一個控制系統(tǒng),可以用傳遞函數(shù)來表示,由此,可以采用精確的數(shù)學方法對子進行描述和驗證。每一個PBO也是一個標準化了的對象,
即所有的PBO有著同樣的結(jié)構(gòu)和同樣的有限狀態(tài)機,它和外界的接口也是標準經(jīng)的。PBO的執(zhí)行是互相獨立的,并行的,不需要同步,使得PBO之間的依賴降低到最低的限度,可以動態(tài)地加入或退出某個PBO。PBO相當于一個即插即用的軟件組件,可以通過重新配置以適合需求。所以,采用PBO技術(shù)開發(fā)的軟件具有開放性,易于修改和升級。
3 PBO技術(shù)中實時軟件的特點[2]
實時軟件要求極端的可靠性。許多系統(tǒng)一經(jīng)啟動,要連續(xù)不斷運行。采用PBO可實現(xiàn)動態(tài)重配置,重配置時間開銷對于系統(tǒng)運行幾乎不受影響,滿足這類實時系統(tǒng)修改和升級的要求。采用PBO技術(shù)設(shè)計的軟件,數(shù)據(jù)通過共享存儲器,能夠?qū)崿F(xiàn)高速運行,提高設(shè)備采樣率,也使得任何信息能夠隨時處理,滿足實時系統(tǒng)及時性要求,這樣也就保證系統(tǒng)產(chǎn)生的結(jié)果在時間上具有嚴格的正確性?;谄胀K設(shè)計的軟件,采用消息傳統(tǒng)機制,可能由于消息的阻塞而使事件處理的及時性得不到保證;而PBO技術(shù)通過共享變量表實現(xiàn)通信,鎖定CPU時傳輸?shù)淖兞亢苌?,等待資源的CPU能夠很快獲得所需的資源,保證實時系統(tǒng)能夠及時處理各種事情。由于許多PBO進程在多CPU上獨立并行,可同時處理數(shù)據(jù)的輸入或輸出,也滿足了實時系統(tǒng)同時性的要求。
4 關(guān)于軟件測試的問題[2,3]
由于實時系統(tǒng)具有很高的可靠性要求,因此,對其的測試不僅要針對系統(tǒng)的功能行為,還要針對系統(tǒng)的時序行為,
所以嵌入式實時系統(tǒng)的測試是軟件界公認難點。由于某些行為只在特定的系統(tǒng)狀態(tài)下和某些特定的事件序列到達時才會發(fā)生,為了避免軟件缺陷,需要精心設(shè)計測試用例并保證足夠的測試覆蓋率。在PBO技術(shù)中,進程的調(diào)度通過實時操作系統(tǒng)(RTOS)實現(xiàn),使得對共享存儲器訪問的時序列加隨機和不可預(yù)測,各種可能的情形也更多,相對測試的覆蓋面隨之減少。基于PBO軟件技術(shù)的架構(gòu)不同于其它傳統(tǒng)實時軟件技術(shù)構(gòu)架,隨之對測試環(huán)境的模擬也新的要求,各個PBO之間是獨立開發(fā)的,對應(yīng)的測試要求與之相應(yīng)。這增加了對測試環(huán)境要求的難度,而且各個PBO之間輸入輸出數(shù)據(jù)的測試也變得更為復雜。對于在非正常環(huán)境下,測試的結(jié)果也更難預(yù)料和把握。另外,一般嵌入式軟件測試時,模擬運行速度與其實際執(zhí)行速度不同,仍將此方法運用于基于PBO技術(shù)的軟件測試,會掩蓋軟件中許多錯誤。所以,采用PBO技術(shù),有可能增加軟件測試的難度。
5 軟件重用與動態(tài)可重配置[4]
每一個PBO是一個軟件重用的構(gòu)件,它有著標準的接口和開放的擴展性。這種軟件重用是一種二時進代碼級的重用,擺脫了編程語言的限制,能夠即插即用。采用一組PBO的組合,就形成了一種配置,這種配置可以實現(xiàn)一定的功能,滿足實時系統(tǒng)的需要。隨著時間的推移和技術(shù)的發(fā)展,需求會逐漸發(fā)生變化,因此,采用部分原PBO再加入一些新PBO,以構(gòu)造一種新的配置,滿足變化后的需求。通過軟件重用,可以降低開發(fā)成本,縮短開發(fā)時間,不斷滿足實時軟件變化的要求。
6 PBO技術(shù)應(yīng)用開實時嵌入式軟件開發(fā)
在航空航天器的軟件設(shè)計中,由于其造價非常高,因此希望它能夠具有更多的功能。但是這類軟件必須面臨存儲空間受限,
運算能力有限的硬件限制。我們不可能制作一個滿足各種功能的軟件,因為這樣的軟件必然相當龐大,修改和升級都非常困難。PBO技術(shù)適合于這類軟件的開發(fā),因此它能很好地支持軟件重用和動態(tài)重配置。我們可以將一些PBO進行組合,使其具有一定功能,當其完成某項任務(wù)后,就可以采用動態(tài)重配置,使其具有新的功能,完成新的任務(wù)。PBO技術(shù)基于精確的理論模型,可以在此基礎(chǔ)上進行嚴格的數(shù)學分析,完成規(guī)范的程序設(shè)計,保證軟件系統(tǒng)的可靠性。將來可以將其應(yīng)用于需求分析中[5],采用形式化的方法建立規(guī)格說明,從而實現(xiàn)從需求分析直到代碼實現(xiàn)的全過程形式化設(shè)計。
但是,PBO技術(shù)運用于這類軟件也可能面臨一些問題。PBO之間的信息交換非常有限,這對于大數(shù)據(jù)量處理必須另辟捷徑。在航空航天器中,經(jīng)常要處理拍攝的各種圖片和大量的傳感器數(shù)據(jù),還要將它們及時發(fā)回地面控制中心,這些都必須重新考慮。許多PBO進程運行于多處理器上,它們之間協(xié)同工作要進行的網(wǎng)絡(luò)計算也不容易。在PBO組件數(shù)目較多時,數(shù)據(jù)復制機制能否具有高可靠性和及時性也都是可能遇到的問題。