, ,,
(空間物理重點實驗室,北京 100076)
組件化數(shù)據(jù)監(jiān)顯軟件設(shè)計與實現(xiàn)
王毅,趙俊翔,封慧英,薛凱
(空間物理重點實驗室,北京100076)
為滿足網(wǎng)絡(luò)數(shù)據(jù)在開發(fā)平臺上動態(tài)顯示,并允許在分布、異構(gòu)的計算環(huán)境下穩(wěn)定且靈活的運行等功能;本系統(tǒng)應(yīng)用數(shù)據(jù)分發(fā)服務(wù)、組件化數(shù)據(jù)監(jiān)顯技術(shù),針對用戶不同的需求,完成界面顯示的設(shè)計;為用戶提供分層及微內(nèi)核的軟件框架,使界面顯示與業(yè)務(wù)邏輯分開,降低系統(tǒng)耦合性;提高代碼重用性以及可維護(hù)性;在控件功能設(shè)計中采用工廠和反射設(shè)計模式,使系統(tǒng)有良好的擴(kuò)展性,減少數(shù)據(jù)監(jiān)視軟件的開發(fā)周期;本系統(tǒng)引入組件化程序設(shè)計思想,將復(fù)雜的工程分割成若干子模塊,實現(xiàn)了用戶在客戶端上進(jìn)行信息顯示方式的配置;充分驗證了組件化框架在監(jiān)顯系統(tǒng)中的優(yōu)勢;提高系統(tǒng)的重用性、開放性、以及高可靠性。
數(shù)據(jù)分發(fā)服務(wù);組件化;用戶定制;界面設(shè)計器;控件
隨著航天飛行器快速發(fā)展,作為飛行器系統(tǒng)關(guān)鍵部分的軟件被寄予更多希望。然而,隨著航天型號任務(wù)增多,研發(fā)軟件規(guī)模越來越大,軟件開發(fā)過程也更為復(fù)雜,因此傳統(tǒng)軟件架構(gòu)方法和設(shè)計模式已經(jīng)不能滿足航天軟件在質(zhì)量和進(jìn)度上的高要求。
為解決面臨的問題,從傳統(tǒng)的組件化設(shè)計,到基于開發(fā)框架+組件的開發(fā)模式,再到最后引入中間件技術(shù)采用基于數(shù)據(jù)分發(fā)服務(wù)的組件化程序設(shè)計方法。
數(shù)據(jù)監(jiān)顯軟件在引入中間件和組件化程序設(shè)計方法以后,應(yīng)分布、異構(gòu)的硬件環(huán)境變化要求,可允許兩個軟件組件進(jìn)行跨進(jìn)程、跨操作系統(tǒng)的通信,提升了分布式環(huán)境下數(shù)據(jù)監(jiān)顯軟件的可擴(kuò)展性、可重用性,從而提高整個飛行器軟件系統(tǒng)的研制效率和可靠性。
組件化數(shù)據(jù)監(jiān)顯系統(tǒng)面向典型的網(wǎng)絡(luò)化測控環(huán)境,采用中間件+組件化框架,通過與本地服務(wù)器數(shù)據(jù)屬性庫的自動映射提供數(shù)據(jù)解析服務(wù),為用戶提供個性化動態(tài)定制的試驗數(shù)據(jù)狀態(tài)查看功能,并方便用戶根據(jù)業(yè)務(wù)需求動態(tài)擴(kuò)展。同時實現(xiàn)用戶在客戶端上進(jìn)行信息顯示方式的配置,并且形成各客戶端的配置文件,以.XML文件形式進(jìn)行保存。
組件化數(shù)據(jù)監(jiān)顯系統(tǒng)利用分層架構(gòu)模式,把各組件分成若干平行層次,每一層都代表特定功能(如展示邏輯或者業(yè)務(wù)邏輯),典型的分層架構(gòu)模式包括展示層、邏輯業(yè)務(wù)層、持久層和數(shù)據(jù)層。分層架構(gòu)模式關(guān)系與功能的關(guān)系與功能如圖1所示。
圖1 分層架構(gòu)模式的關(guān)系與功能
采用此種分層架構(gòu)的特點是為了使組件間功能邏輯的分離。一個層中的組件只會處理本層的邏輯。然而,每一層又都是封閉的。每一層的輸入request必須一層一層的傳遞。從展示層傳遞來的請求首先會傳遞到業(yè)務(wù)層,然后傳遞到持久層,最后才傳遞到數(shù)據(jù)層。
分層架構(gòu)模式滿足開發(fā)-封閉的設(shè)計原則,利用分層架構(gòu)模式可以在組件化的開發(fā)過程中,僅關(guān)注本層組件的邏輯,同時利用數(shù)據(jù)分發(fā)中間件技術(shù)實現(xiàn)組件間的交互,從而提升應(yīng)用程序架構(gòu)可重用性和可擴(kuò)展性。
在組件化數(shù)據(jù)監(jiān)顯系統(tǒng)中,系統(tǒng)為用戶提供個性化動態(tài)定制的試驗數(shù)據(jù)狀態(tài)查看功能,所以將數(shù)據(jù)傳輸分為服務(wù)端、客戶端以及通信接口3個部分。其中服務(wù)端安裝數(shù)據(jù)庫,保存測試數(shù)據(jù)的屬性信息以及客戶端數(shù)據(jù)監(jiān)視軟件的用戶、人員權(quán)限及個性化配置??蛻舳擞糜跀?shù)據(jù)監(jiān)視客戶端在數(shù)據(jù)監(jiān)視軟件中用于接受和顯示數(shù)據(jù)中心發(fā)布的試驗信息、測試數(shù)據(jù)。組件化數(shù)據(jù)監(jiān)顯軟件主要由控件庫模塊、控件管理模塊、用戶管理模塊3個部分組成,總體設(shè)計如圖2所示。
圖2 系統(tǒng)模塊圖
利用DDS數(shù)據(jù)分發(fā)服務(wù)器中間件技術(shù),實現(xiàn)組件與組件的數(shù)據(jù)交互。在組件化數(shù)據(jù)監(jiān)顯軟件中內(nèi)部僅關(guān)注需要發(fā)布和訂閱的數(shù)據(jù),而不關(guān)注數(shù)據(jù)的來源和去向。所有的數(shù)據(jù)集中在DCPS層的數(shù)據(jù)域中,并由通信中間件進(jìn)行分發(fā)。在這種結(jié)構(gòu)方式中,數(shù)據(jù)的流向以發(fā)布/訂閱關(guān)系而不是通信地址為標(biāo)識,實現(xiàn)了底層網(wǎng)絡(luò)、組件之間的脫耦。通信地址的改變不會引起組件的任何變動,使得這種改變能夠在流程中實時進(jìn)行。在組件間交互設(shè)計過程中,組件數(shù)目的減少將不會引起現(xiàn)有平臺的任何改變,組件數(shù)目的增加則只會引起需要對所增加組件發(fā)布的數(shù)據(jù)進(jìn)行處理的服務(wù)和任務(wù)的更改。這種特性極大地提高了軟件系統(tǒng)的靈活性和可靠性。如下圖3組件間邏輯結(jié)構(gòu)設(shè)計所示。
圖3 組件間的邏輯結(jié)構(gòu)設(shè)計圖
組件化數(shù)據(jù)監(jiān)顯軟件架構(gòu)是一種基于DCPS的軟件系統(tǒng)架構(gòu)。其由域、域參與者、數(shù)據(jù)寫者、數(shù)據(jù)讀者、發(fā)布者、訂閱者、主題幾種實體構(gòu)成。軟件系統(tǒng)架構(gòu)如下圖4所示。
圖4 基于DDS的軟件架構(gòu)
在基于DDS的軟件架構(gòu)中,數(shù)據(jù)在域內(nèi)發(fā)送和接收,發(fā)布者和訂閱者分別用來管理單個或多重數(shù)據(jù)寫入和數(shù)據(jù)讀取。一對數(shù)據(jù)讀取者和數(shù)據(jù)寫入者必須擁有相同的主題,數(shù)據(jù)寫入者發(fā)布的數(shù)據(jù)才能被訂閱數(shù)據(jù)讀取者接收。
本文通過發(fā)布-訂閱機(jī)制,數(shù)據(jù)監(jiān)顯軟件實現(xiàn)了應(yīng)用程序與網(wǎng)絡(luò)拓?fù)浣怦睢?yīng)用程序中的數(shù)據(jù)產(chǎn)生者向DCPS注冊聲明為數(shù)據(jù)發(fā)布者,并聲明其生產(chǎn)的數(shù)據(jù)類型和主題號,把生產(chǎn)出的數(shù)據(jù)推送給通信中間件。數(shù)據(jù)接收方則聲明為訂閱者,描述其需要的數(shù)據(jù)類型與主題號。通信中間件之間根據(jù)雙方的數(shù)據(jù)類型與主題號來進(jìn)行關(guān)聯(lián),若匹配,則建立數(shù)據(jù)鏈路。通過這種發(fā)布-訂閱機(jī)制,通信中間件正確地把數(shù)據(jù)分發(fā)給所有的訂閱者。一個典型的數(shù)據(jù)傳輸過程有以下幾個步驟:
1)數(shù)據(jù)生產(chǎn)者注冊聲明為發(fā)布者,并聲明其生產(chǎn)的數(shù)據(jù)類型、主題和其所要求的服務(wù)策略;
2)數(shù)據(jù)接收方聲明為訂閱者,并聲明其需要的數(shù)據(jù)類型、主題和服務(wù)策略;
3)DCPS層根據(jù)雙方的數(shù)據(jù)類型、主題、服務(wù)策略進(jìn)行關(guān)聯(lián),若匹配,則建立數(shù)據(jù)鏈路;
4)數(shù)據(jù)生產(chǎn)者向中間件發(fā)布數(shù)據(jù),通信中間件根據(jù)其服務(wù)策略向相應(yīng)數(shù)據(jù)鏈路發(fā)送信息,訂閱者的通信中間件收到信息,并向數(shù)據(jù)接收方推送信息。
通過以上流程,數(shù)據(jù)監(jiān)顯軟件架構(gòu)實現(xiàn)了各個組件之間數(shù)據(jù)的正確、高效分發(fā)。
控件庫模塊是整個數(shù)據(jù)監(jiān)顯軟件用戶定制系統(tǒng)的核心部分,其利用基于DDS的分布式測控中間件獲取和解析信息,進(jìn)行數(shù)據(jù)的顯示和按需定制,主要實現(xiàn)方式為控件動態(tài)顯示。此模塊包含兩類功能實現(xiàn)。其一控件產(chǎn)生類型模塊使用了一種“工廠模式”的設(shè)計方法來實現(xiàn)依據(jù)用戶需求產(chǎn)生對應(yīng)類型的控件這一操作。工廠模式設(shè)計方法的意義是定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類當(dāng)中。核心工廠類將不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實現(xiàn)的接口。其在產(chǎn)生控件類型中引入工廠方法模式,涉及到抽象工廠角色、具體工廠角色、抽象產(chǎn)品角色以及具體產(chǎn)品角色等,其圖示例如圖5。
圖5 工廠方法模式類圖
控件管理模塊是整個基于用戶定制界面設(shè)計器工程的管理部分,其中控件管理模塊功能設(shè)計如圖6所示。
圖6 控件管理模塊功能圖
基本管理子模塊提供了對用戶所使用的控件進(jìn)行基本管理的功能,包括了對顯示窗口中添加新的控件,刪除顯示窗口中用戶所不需要的控件,復(fù)制、剪切并粘貼新的控件等。除此之外,用戶可以通過對顯示界面中功能控件進(jìn)行鼠標(biāo)右擊,在彈出的菜單中選擇屬性參數(shù)查詢與屬性參數(shù)配置修改實現(xiàn)對控件進(jìn)行屬性參數(shù)配置查詢及修改的操作。
擴(kuò)展管理模塊可以根據(jù)業(yè)務(wù)需要對圖元控件庫進(jìn)行動態(tài)擴(kuò)展,并提供標(biāo)準(zhǔn)接口和圖元擴(kuò)展范例。用戶可以通過預(yù)留好的產(chǎn)生控件接口根據(jù)自身需求添加相應(yīng)控件,同時刪除不需要的控件。擴(kuò)展管理模塊還可以在多文檔視圖中,實現(xiàn)對不同文檔頁中的控件進(jìn)行不同管理操作。對某一個文檔頁中用戶使用的控件進(jìn)行相關(guān)管理操作時,并不會影響到其他文檔頁中所設(shè)計好的界面及相關(guān)信息內(nèi)容的顯示。從而實現(xiàn)基于多文檔視圖顯示的界面定制設(shè)計的功能需求。
為實現(xiàn)用戶對整個軟件系統(tǒng)的管理功能,用戶管理的功能設(shè)計包括數(shù)據(jù)庫關(guān)聯(lián)子模塊和系統(tǒng)管理子模塊。用戶管理模塊的相關(guān)功能設(shè)計如圖7所示。
圖7 用戶管理模塊功能圖
數(shù)據(jù)庫關(guān)聯(lián)子模塊主要功能是每個用戶有自己相應(yīng)的權(quán)限,對應(yīng)生成的文件會保存在對應(yīng)的數(shù)據(jù)庫當(dāng)中。各用戶之間相互獨立,互不相干,數(shù)據(jù)之間也互不影響。從而保證各用戶的數(shù)據(jù)獨立性。當(dāng)用戶根據(jù)需求拖拽不同控件完成界面設(shè)計后,可以將界面配置文件以XML格式進(jìn)行保存,保存的界面配置文件將存儲到數(shù)據(jù)庫中。同時,用戶可以直接從數(shù)據(jù)庫對已保存的XML配置文件進(jìn)行讀取打開。從而實現(xiàn)了用戶操作與數(shù)據(jù)庫相關(guān)數(shù)據(jù)的關(guān)聯(lián)。
系統(tǒng)管理子模塊實現(xiàn)了用戶管理員可以給不同的用戶動態(tài)的設(shè)置和修改不同的權(quán)限的功能,可以保證不同的用戶只能瀏覽自己相關(guān)的數(shù)據(jù),包括管理數(shù)據(jù)庫,分配數(shù)據(jù)瀏覽終端的鏈接端口和顯示方式等。同時還可以進(jìn)行客戶端配置文件管理以及集中定制。
為了滿足動態(tài)數(shù)據(jù)顯示平臺用戶可定制的需求,將系統(tǒng)的實現(xiàn)分為3個狀態(tài):定制態(tài)、配置態(tài)、運行態(tài)。定制態(tài)完成用戶按需定制控件以及設(shè)計顯示界面;配置態(tài)是系統(tǒng)進(jìn)行數(shù)據(jù)源配置以及屬性配置時的狀態(tài)顯示,此狀態(tài)完成數(shù)據(jù)顯示前的一系列配置操作;而運行態(tài)則是系統(tǒng)進(jìn)行動態(tài)顯示數(shù)據(jù)測控結(jié)果的狀態(tài),在通過停止操作便可回到定制態(tài)和配置態(tài)。系統(tǒng)根據(jù)用戶需求在3個狀態(tài)下相互轉(zhuǎn)換,實現(xiàn)對數(shù)據(jù)的監(jiān)視和測控。
本文所設(shè)計的圖元控件庫涵蓋了一系列的圖形樣式,包括單行/多行文本、表盤、LED進(jìn)度條、指示燈、表格、曲線、分組框、標(biāo)簽頁等。每一類型的控件都有其各自具體的設(shè)計,用來實現(xiàn)對應(yīng)的功能,并通過這些豐富的圖形樣式控件來很好的滿足用戶按照不同的需求瀏覽相關(guān)信息的要求??丶邮饺鐖D8所示。
圖8 控件樣式圖
在Windows和Linux環(huán)境下,用Qt開發(fā)出一個基于組件化的數(shù)據(jù)監(jiān)顯系統(tǒng),系統(tǒng)以界面顯示器的方式供用戶自定義設(shè)計界面,以控件的形式動態(tài)顯示數(shù)據(jù)。系統(tǒng)為用戶提供個性化動態(tài)定制試驗數(shù)據(jù)查看功能,操作靈活方便,運行穩(wěn)定可靠,在數(shù)據(jù)顯示與監(jiān)控試驗中有著較為廣泛的應(yīng)用。組件化數(shù)據(jù)監(jiān)顯軟件實現(xiàn)過程如下:
數(shù)據(jù)發(fā)布端發(fā)送以火箭發(fā)射記錄數(shù)據(jù)為主題的數(shù)據(jù),完成測控系統(tǒng)中各分布式節(jié)點高效的數(shù)據(jù)交互功能。數(shù)據(jù)訂閱與顯示端(人機(jī)界面設(shè)計器)接收發(fā)布端發(fā)送的數(shù)據(jù),經(jīng)過分布式測控系統(tǒng)的數(shù)據(jù)解析后,界面設(shè)計器動態(tài)顯示出的火箭發(fā)射記錄數(shù)據(jù)。
數(shù)據(jù)訂閱與顯示端動態(tài)顯示經(jīng)過解析后的數(shù)據(jù),不同控件識別不同數(shù)據(jù)類型。在飛行器壓力狀態(tài)組合中,飛行器壓力由于其特定的數(shù)據(jù)結(jié)構(gòu),只能由指示燈控件識別與顯示;火箭發(fā)射過程超差數(shù)要求以數(shù)值形式呈現(xiàn),以更加直觀表現(xiàn)出超差數(shù)值大小,LCD控件符合其數(shù)據(jù)結(jié)構(gòu)用于顯示;曲線直觀對比出各組數(shù)據(jù)變化以及幾種測試之間參數(shù)要求。如圖9,界面設(shè)計器連接數(shù)據(jù)庫后,接收發(fā)布者發(fā)送的主題,解析各類型數(shù)據(jù),以不同種類控件顯示不同類型信息,為火箭發(fā)射試驗提供依據(jù)。
圖9 系統(tǒng)運行界面圖
組件化數(shù)據(jù)監(jiān)顯軟件是基于Qt creator可視化編程平臺,滿足用戶不同的需求下的數(shù)據(jù)顯示與監(jiān)控功能。使用基于數(shù)據(jù)分發(fā)服務(wù)的組件化程序設(shè)計思想提升了分布式環(huán)境下數(shù)據(jù)監(jiān)顯軟件的可擴(kuò)充性、可重用性,提高了系統(tǒng)的穩(wěn)定性和可靠性,使系統(tǒng)模塊之間獨立性提高,減少開發(fā)周期。
[1] 陳春甫. 基于DDS的數(shù)據(jù)分發(fā)系統(tǒng)的設(shè)計與實現(xiàn)[D]. 上海:復(fù)旦大學(xué), 2008.
[2] 巴海濤, 許銳鋒. 基于DDS規(guī)范的戰(zhàn)場態(tài)勢信息分發(fā)框架[J]. 指揮信息系統(tǒng)與技術(shù), 2012(1):45-48.
[3] 周 淳. 實時發(fā)布/訂閱中間件中的QoS管理機(jī)制和策略研究[D]. 南寧:東南大學(xué), 2012.
[4] 謝 蓓,劉 毅,曹力華,等.實時系統(tǒng)數(shù)據(jù)分布服務(wù)DDS技術(shù)綜述[J].艦船電子工程,2006, 26(2):16-19, 122.
[5] OMG Available Specification formal. Data Distribution Service for Real-time Systems Version 1.2 [S]. 07-01-01.
[6] 謝陽杰,吳家鑄.數(shù)據(jù)分發(fā)服務(wù)DDS的研究[A].全國第19屆計算機(jī)技術(shù)與應(yīng)用學(xué)術(shù)會議[C].合肥,2008,38-43.
DesignandImplementationofComponentDataMonitoringSoftware
Wang Yi,Zhao Junxiang,F(xiàn)eng Huiying,Xue Kai
(Science and technology on space physics laboratory,Beijing 100076, China)
In order to meet the dynamic display of network data on the development platform, and to allow stable and flexible operation in distributed and heterogeneous computing environment, etc.. This system uses the modular data monitoring technology, and aims at the user's different requirements, and completes the design of the interface display. Provide users with the MVC framework to separate views from functionality, reduce coupling, and improve code reusability and maintainability. The factory model design is adopted in the design of control function, so that the system has good scalability and reduces the development cycle of data monitoring software. The system introduces the idea of component programming, divides complex engineering into several sub modules, and realizes the configuration of information display mode on the client. The advantages of component-based framework in monitoring system are fully verified. Improve system reusability, openness, and high reliability.
component; user customization; interface designer; controls
2017-08-31;
2017-10-11。
王 毅(1984-),男,遼寧人,工學(xué)碩士,工程師,主要從事軟件系統(tǒng)設(shè)計、數(shù)據(jù)挖掘技術(shù)等方向的研究。
1671-4598(2017)11-0103-04
10.16526/j.cnki.11-4762/tp.2017.11.027
TH873.7
A