摘要:集成開發環境是支持無線傳感器網絡應用系統開發的重要系統軟件,如何設計一個具備良好擴展性的開發環境, 對開發環境能靈活地可配置、可裁剪。針對傳統結構化的IDE系統不宜動態修改,運行時不可以動態配置以及集成性較差的不足,該文提出了一種基于軟總線的集成開發環境(TosIDE),并引入TosIDE構件集成機制及通信機制對傳統無線傳感器網絡IDE存在的擴展性弱、模塊間通信問題進行了有效地解決。
關鍵詞:集成開發環境;軟件總線;構件;無線傳感器網絡;TinyOS
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)11-20374-03
1 引言
TinyOS是由UCBerkeley分校的研究人員針對無線傳感器網絡資源有限,通信響應要求及時的特點而設計的一種嵌入式操作系統。由于TinyOS為非商業的操作系統,未提供開發環境。如何構造一集成開發環境,既滿足不同開發階段及不同領域開發者的需求,又兼顧未來新的開發方法的需要,一直是值得關心的問題。目前出現了許多基于TinyOS的開發平臺,但這些開發平臺存在的主要問題是:結構化的體系結構,運行時不可以動態配置模塊,擴展性及集成性不強。在認真研究當前的基于無線傳感器網絡開發平臺的優缺點后,本文提出了基于軟件總線的傳感器網絡集成開發環境TosIDE,該平臺采用“軟總線+軟構件”的體系結構,滿足特定功能模塊在開發環境中靈活安裝,卸載和替換,具備良好的擴展性。
2 傳統IDE結構及其存在的問題
目前無線傳感器網絡應用系統的IDE結構可以分為兩種[1,2]:
(1)單塊式(Monolithic)結構:該結構開發平臺一般由一個功能模塊集組成,一個模塊可能由多個過程組成,任一過程可以調用其它過程,這樣模塊間的交互關系是網狀關系,關系復雜,擴展這類開發平臺比較困難,修改一個過程或模塊可能會導致多個相關的過程或模塊發生錯誤(如圖1所示)。
(2)層次(layered)式結構:該結構將開發平臺劃分為若干模塊,然后將它們按層組織起來。每個模塊提供一組其他模塊可以調用的功能,并且任何一層的代碼只能調用較低層的的功能。層次化結構有助于組織開發平臺的開發過程,減少診斷和修改錯誤的工作。一個完整的層的功能實現可以整個被代替,而不會影響系統其他部分。層次化方法的不足是每一層都有明確的功能,對某一層的功能上的較大改變會對與其直接關聯的上下層產生很大的影響,因此難以實現對開發平臺的裁剪。針對以上傳統開發方式的不足,本集成開發環境采用基于構件的軟總線開發方法(如圖2所示)。
3 軟件總線定義及數學描述
從軟件體系結構的角度看,軟件總線作為一種連接件(Connector) ,為構件提供了通信、協作和便利的服務,實現了構件集成設施和構件邏輯處理功能的分離,將構件集成設施從以前的隱式方式改為顯式方式,是用于構件集成的結構性軟件部件[5]。
從一般性的角度出發,我們首先給出軟總線的數學描述,對于軟件總線的軟件體系架構,有如下數學描述[3]:
定義1:軟件總線架構TBA = {C,I,M,S,R},其中C是系統的構件集,I是軟件總線接口集,S是系統的狀態空間集,M是軟件總線方法集,軟件總線的方法是系統狀態改變的觸發源m = ( si →sj ) , R 是約束規則。
定義2:軟件構件C={(ti,ai,s)|s=ai→ti},其中t是工具構件,a 是構件適配器。
定義3:軟件總線接口I={m ∈M|Selector (m,Qi)} ,其中Selector(m,Qi) 是選擇函數,函數接收方法集中的方法,返回滿足條件為Qi 的接口I中的方法。
以上為軟件總線的基本數學描述定義。在此基礎上,人們進一步將軟件總線結構建立在軟件重用的思想上,形成一種“軟總線+軟構件”的體系結構。圖3為一種“軟總線+軟構件”結構示意圖,各個構件通過與軟總線相連組成一個實現某種功能的復合構件。
在此種結構中,構件之間不再直接連接,而是以軟總線作為連接件,集成為一個整體,各構件之間的交互通過總線間接連接,大大降低構件的耦合度,各構件在接口不變的情況下可獨立修改,有利于各構件的并行開發[4]。
4 基于軟總線的IDE體系結構
TosIDE的結構如圖4所示:
根據子系統、適配器及軟件總線在消息傳遞過程中所出的位置和功能,TosIDE的體系結構分為三層:最上一層為構件應用層,軟件總線為該層提供接口,欲加入總線的子系統需符合接口規范(軟件總線接口定義),才能加入集成開發環境中;應用層的構件由負責實現項目開發的各功能子系統組成,為開發直接使用的應用模塊。中間一層為總線適配層,負責應用層的構件與總線系統的連接,實時響應總線和構件的消息發送請求,并適配彼此之間傳遞的消息格式,使消息符合接收方的格式要求;最底層為通信層,該層負責構件的注冊、注銷以及構件之間的數據通信,并且屏蔽具體數據通信的細節,對外提供統一的數據通信接口。
這種體系結構具有以下幾個主要的特點:
(1)層次性,整個系統的體系結構邏輯上分為三層,層次清晰,結構簡單。
(2)可擴展性強,使用統一的接口規范,提高了系統的可擴展性及可配置性。
(3)開放式的結構,系統在提供不同功能的構件供用戶選擇的同時,也允許用戶或第三方開發構件,并可以比較方便地增加到系統當中。
從無線傳感器網絡軟件開發的不同階段及功能,把TosIDE分成功能相對獨立且結構簡單的多個軟件模塊――項目管理、組件管理、代碼編輯、版本控制、組件視圖連接、交叉編譯調試等,并封裝為構件,然后通過代理(Agent)連接到軟件總線上,形成一個功能完整,支持整個軟件開發階段的集成開發環境。代理的主要功能是負責將軟總線的服務請求轉發給構件,負責構件與總線間的消息格式轉換。
5 集成開發環境關鍵技術
軟件開發的目標就是將用戶的需求轉化為軟件產品,其中很重要的一個過程就是將用戶需求分解為一個個相互關聯的模塊(構件)[8] 。構件集成的開發環境有兩個很重要的問題需要解決: ①模塊之間的接口定義及其集成; ②模塊之間的通信。
5.1 構件集成機制
TosIDE集成開發環境支持用戶根據特定需要開發構件加入到系統中。由于用戶自行開發的構件類型千差萬別,存在不同的開發方法;具有不兼容性,因此必須引入完善的構件集成機制來協調這些工具高效地支持整個軟件開發過程。
對于構件的集成通常有四種方式:數據交換、公共工具訪問、公共數據管理和全集成方式[1,6]。綜合考慮以上四種集成方式各自的特點,TosIDE采用公共工具訪問方式,用戶在一致的界面下以相同的方式調用眾多不同的工具,各個構件之間的數據交換使用點到點的交換方式,通過翻譯程序(即總線代理)作中介進行數據格式轉換(如圖5所示)。由于傳感器網絡軟件的開發常常劃分為多個明確的開發階段,不同階段的功能模塊間往往是串行工作方式,一個功能模塊的輸出往往是另一個功能模塊的輸入,因此,使用基于點到點交換方式的公共工具訪問集成方式比較符合集成開發環境開發過程中的串行工作方式。
5.2 構件之間的通信機制
在該集成開發環境中,構件可動態配置且不同類型的構件可集成到系統中,構件之間通信的高效性成為一個不容忽視的問題。在TosIDE中,各功能模塊之間通過工具總線進行雙向的消息傳遞。消息是一個用于構件與軟總線之間信息交換的數據包,通常包含消息頭和消息體。消息頭中定義了一系列的約定屬性,比如同步/異步,控制/數據,校驗信息等等;消息體即為欲交換的數據。消息可以處理同步和異步系統調度。
整個系統消息傳遞機制可描述如下:
(1)構件發出消息,總線查詢對應的代理,若無代理則通知組件重發或者處理異常;
(2)如果消息有效,則消息進入總線消息隊列中,根據消息頭信息,總線可能需要將消息拆分,并根據訂閱信息將相關消息送往各個訂閱的構件代理,如果沒有構件訂閱該種消息,向發出消息的構件代理送回異常;
(3)代理在收到系統總線的服務調用后,判斷構件有效性,有效則向構件請求服務調用,否則向發出消息的構件代理送回異常;
(4)構件在收到代理發來的服務調用請求后,響應并直接和發送消息的構件通信;
(5)系統中各個代理,根據需要輪詢系統消息隊列,如果得到新的消息則將消息取出,過濾掉不需要的消息,轉換為組件能夠處理的消息,并根據時序重新組織消息提供給組件;
6 結束語
本文是基于無線傳感器網路操作系統TinyOS的集成開發環境的研究與設計。針對集成開發環境將各功能模塊集成為一個整體的特性,采用“軟總線+軟構件”的體系結構,這種體系結構具備可擴展性、可維護性、可復用性。
參考文獻:
[1] Kurt C. Wallnau.Peter H.Feiler.Tool Integration and environment Architecture.Technical report of SEI,Carnegie Melton University,1994.
[2] Paul F.Zarrella.CASE Tool Integration and Standardization.Technical report of SEI Carnegie Mellon University.l994.
[3] 蔡勇,桑楠,熊光澤.一種基于工具總線的CASE集成模型[J].計算機應用,2002.
[4] 楊芙清,梅宏,李克勤.軟件復用與軟件構件技術[J].電子學報,1999, 2(27):68-75.
[5] 郭兵,熊光澤,沈艷,等.工具總線模型研究[J].計算機應用,2003,23(5):1-3.
[6] Reiss S. Connecting tools using message passing in the field environment. IEEE Software,1990,7(4):57-66.
[7] David Gay,Phil Levis,David Culler.Software Design Patterns for TinyOS.LCTES'05,Chicago,Illinois,USA,June 15-17,2005.
[8] 羅昔軍,馬征.定制軟件開發平臺的研究與設計[J].計算技術與自動化,2006,25(2):108-110.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文