孫 婧,劉 瑩,孟景濤,李 偉
(1.中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;
2.空軍北京航空裝備訓(xùn)練基地,北京 100076;
3.河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北 石家莊 050200)
?
基于XML的軟件通用程序框架
孫婧1,劉瑩2,孟景濤3,李偉1
(1.中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;
2.空軍北京航空裝備訓(xùn)練基地,北京 100076;
3.河北遠(yuǎn)東通信系統(tǒng)工程有限公司,河北 石家莊 050200)
摘要航天測控設(shè)備管理存在分機(jī)多、分機(jī)之間的數(shù)據(jù)交互格式復(fù)雜、內(nèi)容多變等特點(diǎn),測控軟件開發(fā)較為困難。針對這一難題,介紹了XML配置文件的格式,分析了測控設(shè)備軟件接口的特點(diǎn),提出了一種基于XML的可配置、易更新的通用測控程序框架,應(yīng)用于測控設(shè)備軟件開發(fā),對軟件的開發(fā)流程在效率和正確率方面有明顯提高。
關(guān)鍵詞XML;航天測控;設(shè)備管理;程序框架
0引言
在航天測控工程中,系統(tǒng)軟件需要通過串口、PCI總線、網(wǎng)絡(luò)等多種接口與各分系統(tǒng)或設(shè)備分機(jī)進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)對測控設(shè)備的管理。因此在測控軟件的開發(fā)過程中,需要花費(fèi)大量人力、時間去進(jìn)行接口與通訊的設(shè)計、編碼、調(diào)試和測試,而且接口在發(fā)生變動時(經(jīng)常發(fā)生),維護(hù)和修改也會耗費(fèi)大量時間。接口、通訊代碼是整個測控軟件的基礎(chǔ),而由不同人員編寫的代碼質(zhì)量不盡相同,造成整個軟件可靠性降低。
為了解決以上問題,本著統(tǒng)一化設(shè)計的思想,提出并實(shí)現(xiàn)了一種基于可擴(kuò)展標(biāo)記語言[1](Extensible Markup Language,XML)配置文件的測控軟件通用程序框架。使用該通用軟件框架時,只需要按照規(guī)定好的格式將接口文件寫出,便可以自動生成所有接口部分的代碼;配置好通訊類型和參數(shù),便可自動實(shí)現(xiàn)數(shù)據(jù)通訊;同時還可以根據(jù)接口文件自動生成參數(shù)顯示界面、命令發(fā)送界面以及提供日志記錄、源碼顯示等軟件基本功能。在實(shí)現(xiàn)軟件快速開發(fā)的同時,還可以提高軟件的可靠性。同時也使測控軟件代碼的通用性、可維護(hù)性大大增強(qiáng)。
1XML配置文件
為了將分機(jī)間的接口通訊數(shù)據(jù)進(jìn)行規(guī)范化描述,使用了XML配置文件的形式。XML是萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C)發(fā)布的一種標(biāo)準(zhǔn),是標(biāo)準(zhǔn)通用標(biāo)記語言(Standard Generalized Markup Language,SGML)的一個簡化子集。XML遵循嚴(yán)格語法規(guī)范,實(shí)現(xiàn)了數(shù)據(jù)存儲格式結(jié)構(gòu)化,具有擴(kuò)展性好、數(shù)據(jù)共享與重用簡單和網(wǎng)絡(luò)傳輸方便等優(yōu)點(diǎn),已成為一種通用的數(shù)據(jù)交換標(biāo)準(zhǔn)[2]。
為了實(shí)現(xiàn)接口設(shè)計的通用性,以設(shè)備分機(jī)為單位,使用XML配置文件對分機(jī)接口數(shù)據(jù)及其數(shù)據(jù)關(guān)系進(jìn)行描述。對分機(jī)的接口進(jìn)行整理之后,制定的主要規(guī)則包括:① 對分機(jī)外部接口數(shù)據(jù)元素進(jìn)行描述;② 對分機(jī)接口命令幀格式進(jìn)行描述;③ 對分機(jī)內(nèi)部數(shù)據(jù)元素進(jìn)行定義,并描述內(nèi)部數(shù)據(jù)元素與外部接口數(shù)據(jù)元素之間的轉(zhuǎn)換關(guān)系。
接口的規(guī)則化描述如圖1所示。圖1(a)為接口數(shù)據(jù)的規(guī)則化描述,將一個分機(jī)的所有數(shù)據(jù)元素表描述為3個必備要素(設(shè)備標(biāo)識、設(shè)備名稱、數(shù)據(jù)元素項(xiàng));圖1(b)為接口命令的規(guī)則化描述,將分機(jī)的外部接口命令描述為3個必備要素(命令名稱、命令標(biāo)識、數(shù)據(jù)長度)和一個可選要素(命令內(nèi)容);圖1(c)為內(nèi)外接口數(shù)據(jù)轉(zhuǎn)換的規(guī)則化描述,其以內(nèi)部數(shù)據(jù)元素為索引,將與之對應(yīng)的外部數(shù)據(jù)的序號、名稱以及外內(nèi)數(shù)據(jù)轉(zhuǎn)換方法描述出來。
圖1 接口的規(guī)則化描述
2代碼自動生成
按照制定好的規(guī)則將系統(tǒng)接口文件轉(zhuǎn)換為規(guī)范化描述的XML配置文件之后,便可以調(diào)用編寫好的代碼自動生成類庫進(jìn)行代碼生成,將XML文件生成為程序代碼[3,4]。代碼自動生成類庫目前主要實(shí)現(xiàn)了3部分的代碼生成:數(shù)據(jù)結(jié)構(gòu)代碼、顯示參數(shù)和發(fā)送命令的窗體界面、分機(jī)設(shè)備管理基類。
利用XML配置文件中描述的接口數(shù)據(jù)信息生成相應(yīng)的數(shù)據(jù)結(jié)構(gòu)類代碼。生成數(shù)據(jù)結(jié)構(gòu)類代碼的過程由BBEMaker類完成,BBEMaker類視圖如圖2所示,接口類視圖如圖3所示。
圖2 BBEMaker類視圖
圖3 接口類視圖
BBEMaker類實(shí)現(xiàn)的主要函數(shù)包括:
① Coder_BBECommandClass:根據(jù)外部接口命令關(guān)系表簡歷各個命令對應(yīng)的類;
② Code_BBEElementsClass:為每個分機(jī)生成一個數(shù)據(jù)結(jié)構(gòu);
③ CoderBBEExToInnerConvertFunction:生成外部接口數(shù)據(jù)與內(nèi)部數(shù)據(jù)元素轉(zhuǎn)換函數(shù)。
由BBEMaker類生成的數(shù)據(jù)結(jié)構(gòu)類代碼實(shí)現(xiàn)了以下接口[5,6](Interface):IBBEData、IBBEDataCollect和IFrameHead。其中圖3(a)為IBBEData接口的類視圖,其定義了數(shù)據(jù)元素應(yīng)該實(shí)現(xiàn)的方法,圖3(b)為IBBEDataCollect接口的類視圖,其定義了所有數(shù)據(jù)元素的結(jié)構(gòu)應(yīng)該實(shí)現(xiàn)的方法。在實(shí)現(xiàn)了這3個接口之后,生成的數(shù)據(jù)結(jié)構(gòu)類就可以在外部調(diào)用時方便的進(jìn)行命令數(shù)據(jù)打包、拆分、索引和賦值等操作。
生成窗體界面代碼的過程由BBEViewMaker類完成,BBEViewMaker類視圖如圖4所示。
圖4 BBEViewMaker類視圖
BBEViewMaker類實(shí)現(xiàn)的主要函數(shù)包括:
① Coder_Form_cs:生成*.cs文件,這是C#語言下的窗體界面組成文件;
② Coder_Form_ParaDisplayFunction:生成界面狀態(tài)顯示函數(shù);
③ Coder_Form_TimeEventFunction:生成定時器響應(yīng)函數(shù),用于刷新界面狀態(tài)。
由BBEViewMaker類生成的界面包含了XML配置文件中的所有數(shù)據(jù)元素,可以按照所描述的格式實(shí)時顯示數(shù)據(jù)的狀態(tài),同時此界面還對外提供命令發(fā)送委托[7,8](delegate)handleOfBBECmdSend。此委托傳遞2部分內(nèi)容:設(shè)備ID和基于IBBEData的數(shù)據(jù)結(jié)構(gòu)。調(diào)用此界面時傳入該委托即可實(shí)現(xiàn)操作命令從界面到設(shè)備的發(fā)送[9]。
生成一個分機(jī)設(shè)備管理基類BBEDevice,實(shí)現(xiàn)的主要函數(shù)包括:
① Setup:初始化函數(shù),用于調(diào)用該類時完成內(nèi)存、通訊等資源的分配及初始化;
② ReceiveDataEventHandler:提供接收數(shù)據(jù)的委托處理函數(shù),使用者可自定義處理過程;
③ BBESourceInHandler:提供通訊輸入源碼數(shù)據(jù)的委托處理函數(shù);
④ BBESourceOutHandler:提供通訊輸出源碼數(shù)據(jù)的委托處理函數(shù);
⑤ BBEExceptionInfoHandler:提供捕獲的系統(tǒng)異常信息的委托處理函數(shù)。
3配置通訊類型
為了適應(yīng)各分系統(tǒng)或設(shè)備分機(jī)不同的通訊方式(串口、PCI/PCIE、網(wǎng)絡(luò)等),采用XML文件作配置文件,不同通訊配置的參數(shù)不同,但是所有的通訊配置都基于IConfig接口,如圖5所示。
圖5 接口IConfig視圖
定義一個處理所有通訊功能的接口ICommunicate,并使處理串口通訊、PCI通訊和網(wǎng)絡(luò)通訊[10]的數(shù)據(jù)類全部實(shí)現(xiàn)該接口,其UML設(shè)計圖如圖6所示。
圖6 通訊處理UML圖
這樣當(dāng)主程序框架讀取配置文件后,根據(jù)配置文件所實(shí)現(xiàn)的IConfig接口的屬性,自動調(diào)用實(shí)現(xiàn)了ICommunicate接口的串口通訊類、PCI通訊類或網(wǎng)絡(luò)通訊類來獲取通訊資源,從而實(shí)現(xiàn)設(shè)分系統(tǒng)或備分機(jī)的通信功能,完成數(shù)據(jù)的收發(fā)工作。
在通訊配置發(fā)生變動時,只需要更改配置文件中的某一項(xiàng)變動的通訊參數(shù)即可,不需要再編譯程序。
目前該配置方法已經(jīng)在多個航天測控工程項(xiàng)目中進(jìn)行了應(yīng)用,由于使用了自動生成的代碼,使得軟件的可靠性得到了提高[11]。根據(jù)初步的統(tǒng)計,使用配置文件的代碼生成節(jié)約了編程人員40%左右的工作量,使軟件開發(fā)效率得到了較明顯的提高。
4結(jié)束語
通過配置文件的方式對測控軟件與各外部接口之間的接口信息進(jìn)行配置,設(shè)計靈活,便于更改和后期維護(hù)。同時使用XML接口文件自動生成程序代碼的方式,可以將軟件人員從繁雜的接口編程中解脫出來,提升開發(fā)效率的同時還提高了軟件的可靠性。統(tǒng)一處理所有接口設(shè)備通信的處理操作,便于調(diào)試,同時減少了分別編碼的出錯概率,消除了各個設(shè)備的接口差異性,為測控管理和自動化運(yùn)行統(tǒng)一化設(shè)計打下基礎(chǔ)。
參考文獻(xiàn)
[1]MEIXNER G,SEISSLER M,BREINER K.Model-Driven Useware Engineering[J].Model-Driven Development of Advanced User Interfaces,2011,340:1-26.
[2]王慶.XML約束在XML數(shù)據(jù)存儲、發(fā)布和轉(zhuǎn)換中的應(yīng)用[D].上海:復(fù)旦大學(xué)博士學(xué)位論文,2004:15-17.
[3]GREEN M,JACOB R.Software Architectures and Metaphors for Non-WIMP User Interfaces[J].Computer Graphics,1991,25(3):229-235.
[4]CALVARY G.,COUTAZ J.,THEVENIRI D,et al.A Unifying Reference Framework for multitarget user interfacesf[J].Interacting with Computers,2003,15(3):289-308.
[5]KASIK D J.A User Interface Management System[J].ACM SIGGRAPH Computer Graphics,1982,16(3):99-106.
[6]王靜,陳立水,王俊芳,等.基于Sub Web Service 服務(wù)組合方法[J].無線電工程,2013,43(2):10-12.
[7]張德靜.observer模式研究及實(shí)現(xiàn)[D].成都:電子科技大學(xué)碩士學(xué)位論文,2005:20-22.
[8]崔琳,許滿武,楊群.一種Delegate機(jī)制的設(shè)計與分析[J].計算機(jī)科學(xué),2004,31(5):82-85.
[9]王明,劉立新,張核銘,等.基于.NET平臺的生產(chǎn)管理系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].無線電工程,2008,38(5):10-12.
[10]狄彩云,張英,狄衛(wèi)國,等.航天測控通信中指定源組播的技術(shù)研究[J].無線電工程,2014,44(9):5- 7.
[11]孫偉杰,張曉欣,畢嘉鴻,等.C程序代碼結(jié)構(gòu)審查算法的研究與實(shí)現(xiàn)[J].無線電工程,2013,39(3):89-92.
孫婧女,(1988—),助理工程師。主要研究方向:航天測控應(yīng)用軟件及自動化測試技術(shù)。
孟景濤男,(1985—),助理工程師。主要研究方向:航天測控應(yīng)用軟件及嵌入式軟件。
The Generic Framework of Software Based on XML
SUN Jing1,LIU Ying2,MENG Jing-tao3,LI Wei1
(1.The54thResearchInstituteofCETC,ShijiazhuangHebei050081,China;
2.AeronauticEquipmentTrainingBaseoftheAirForceinBeijing,Beijing10076,China;
3.HebeiFar-EastCommunicationSystemEngineeringCo.,Ltd,ShijiazhuangHebei050200,China)
AbstractThere are great varieties of devices in aerospace TT&C system,the data interaction protocol between devices are different,complex and frequently changed,which introduces great difficulties in software management,this paper provides a solution to realize the general framework of TT&C software.The format of XML files is introduced,the interface characteristic of aerospace TT&C software is analyzed,and a configurable,interface changeable TT&C application framework which is based on XML files is put forward.This framework has already been applied to the TT&C system,and significantly improves the efficiency and the accuracy of the software development process.
Key wordsXML;TT&C;device management;software framework
作者簡介
收稿日期:2015-03-22
中圖分類號TP311
文獻(xiàn)標(biāo)識碼A
文章編號1003-3106(2015)06-0025-03
doi:10.3969/j.issn.1003-3106.2015.06.07
引用格式:孫婧,劉瑩,孟景濤,等.基于XML的軟件通用程序框架[J].無線電工程,2015,45(6):25-27,31.