本發(fā)明涉及一種基于插件技術(shù)的航天測發(fā)控軟件平臺,屬于航天地面測發(fā)控類軟件研制領(lǐng)域。
背景技術(shù):
當(dāng)前航天領(lǐng)域快速發(fā)展,型號產(chǎn)品種類繁多,存在巨大的測試工作量,對地面測發(fā)控類軟件需求量不斷增加。測發(fā)控類軟件可靠性要求高,各功能模塊相對獨(dú)立,不同測發(fā)控軟件之間功能點(diǎn)重疊較多,非常適合采用插件技術(shù)進(jìn)行軟件架構(gòu)設(shè)計(jì)與平臺開發(fā)。
從文獻(xiàn)中看,國內(nèi)外插件式軟件架構(gòu)研究廣泛,部分已實(shí)踐應(yīng)用的軟件項(xiàng)目只針對特定領(lǐng)域,無法適應(yīng)航天領(lǐng)域測發(fā)控類地面軟件的特殊需求。因此,開發(fā)一種采用插件技術(shù)的航天測發(fā)控平臺具有重要意義和實(shí)用價(jià)值。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供一種基于插件技術(shù)的航天測發(fā)控軟件平臺,實(shí)現(xiàn)了軟件功能的插件式開發(fā)與維護(hù),解決了測發(fā)控類軟件功能重疊帶來重復(fù)工作、需求變更致使軟件大幅修改等問題。該軟件架構(gòu)將平臺、通用功能、訂制功能分離,提供了一種基于插件的自由組合開發(fā)模式??纱蠓鶞p少軟件研制過程中的重復(fù)工作量,縮短測發(fā)控類軟件的研制周期,增加插件的可復(fù)用性,提升軟件研制的生產(chǎn)效率。
本發(fā)明的技術(shù)解決方案是:一種基于插件技術(shù)的航天測發(fā)控軟件平臺,包括:平臺內(nèi)核、配置管理模塊、插件管理模塊、插件庫;
平臺內(nèi)核:定義軟件的集成方式、通訊接口以及軟件主窗體與彈出窗體的布局風(fēng)格,用于控制配置管理模塊和插件管理模塊工作;
配置管理模塊:提供統(tǒng)一配置管理接口,在平臺內(nèi)核的控制下實(shí)現(xiàn)所有已加載功能插件的參數(shù)裝訂;
插件管理模塊:在平臺內(nèi)核的控制下實(shí)現(xiàn)插件庫中插件的加載、注冊、初始化以及卸載;
插件庫:包括實(shí)現(xiàn)測發(fā)控各種業(yè)務(wù)邏輯功能的插件,同時(shí)支持插件動態(tài)添加;所述插件包括專用插件和公共插件,專用插件為實(shí)現(xiàn)軟件特殊功能的模塊,僅允許程序開發(fā)者變更,專用插件集成于平臺內(nèi)部,與平臺內(nèi)核一起編譯運(yùn)行;公共插件為滿足測發(fā)控類軟件公共需求的組件,能夠打包發(fā)布,供系統(tǒng)平臺動態(tài)加載;專用插件與公共插件接口一致。
所述公共插件采用文件級管理方式,公共插件依據(jù)平臺內(nèi)核提出的接口要求進(jìn)行開發(fā)并編譯為庫文件,與xml配置文件一同打包發(fā)布,拷貝至公共插件安裝目錄中,實(shí)現(xiàn)公共插件的加載;如果不需要使用某個(gè)插件,在公共插件安裝目錄下刪除相應(yīng)文件即可實(shí)現(xiàn)公共插件的卸載。
所述插件管理模塊在平臺內(nèi)核的控制下實(shí)現(xiàn)插件加載、注冊和初始化的過程如下:
(1)系統(tǒng)啟動時(shí),平臺內(nèi)核通知插件管理模塊加載插件庫中所有專用插件;
(2)插件管理模塊搜索所有專用插件文件,獲取插件的版本和配置信息;
(3)插件管理模塊依照配置信息進(jìn)行所有專用插件的加載;
(4)加載完成后,插件管理模塊向平臺內(nèi)核發(fā)送專用插件加載成功的確認(rèn)信息;
(5)平臺內(nèi)核通知插件管理模塊加載所有公共插件;
(6)插件管理模塊加載公共插件安裝目錄;
(7)插件管理模塊在指定目錄下搜索所有用戶訂制的公共插件文件,獲取插件的版本和配置信息;
(8)如果不能獲取某個(gè)插件文件的正確版本或配置信息,則視為非法插件,予以過濾;
(9)插件管理模塊依照配置信息進(jìn)行所有合法公共插件的加載;
(10)插件管理模塊將所有成功加載的專用插件和公共插件添加到插件注冊表,實(shí)現(xiàn)統(tǒng)一管理;
(11)平臺內(nèi)核向插件管理模塊發(fā)出初始化插件指令;
(12)插件管理模塊將所有正常加載的插件初始化。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
(1)本發(fā)明軟件實(shí)現(xiàn)基于qt語言,支持windows,linux等操作系統(tǒng),具有跨平臺特性。
(2)采用平臺內(nèi)核、專用插件、公共插件的方式進(jìn)行功能需求的解耦合,拓寬了整個(gè)系統(tǒng)的適用性,為平臺與插件復(fù)用于其他型號軟件提供了可能;
(3)通過插件技術(shù)使軟件的功能模塊在劃分中的相互耦合性更少,功能模塊具有更大的獨(dú)立性,可以促進(jìn)軟件開發(fā)的并行性,在一定程度上縮短了軟件的研發(fā)周期,為型號軟件的快速開發(fā)提供技術(shù)支持;
(4)插件技術(shù)可以完成功能模塊在系統(tǒng)中的替換、增加及減少等操作,對軟件的升級和維護(hù)起到積極作用;
(5)軟件架構(gòu)在開發(fā)設(shè)計(jì)中具有一定的特殊性,在開發(fā)期間功能需求總是不斷地發(fā)生著變化?;诓寮夹g(shù)的平臺設(shè)計(jì)可以通多插件技術(shù)進(jìn)行動態(tài)的替換、增加或減少功能插件,來解決軟件結(jié)構(gòu)設(shè)計(jì)開發(fā)中需求不確定性問題;
附圖說明
圖1為本發(fā)明架構(gòu)圖;
圖2為插件加載、注冊和初始化的流程圖;
圖3為用戶根據(jù)使用場景及任務(wù)需求進(jìn)行加載卸載示意圖。
具體實(shí)施方式
插件技術(shù)是一門極具實(shí)用性的技術(shù),能夠提升軟件的擴(kuò)展性和適用性。插件(plug‐in)是根據(jù)應(yīng)用軟件主程序接口要求所編寫出來的程序。近年來,隨著計(jì)算機(jī)技術(shù)與網(wǎng)絡(luò)技術(shù)的發(fā)展,對應(yīng)用軟件的功能要求也越來越高、越來越細(xì)致。當(dāng)一個(gè)軟件發(fā)布以后,用戶往往希望軟件能為其特殊需要提供相應(yīng)的特殊功能。利用插件技術(shù)可以實(shí)現(xiàn)在程序主體不被修改的基礎(chǔ)之上,加強(qiáng)和拓展計(jì)算機(jī)軟件的作用。計(jì)算機(jī)軟件接口公開后,任何人都能夠進(jìn)行插件制作,并增加新的功能,隨之把操作上的不便之處解決,從而實(shí)現(xiàn)軟件開發(fā)的時(shí)效性。利用插件技術(shù)可設(shè)計(jì)出高度模塊化、可定制的軟件,同時(shí)使用插件技術(shù)能夠提升軟件并行開發(fā)效率、完成軟件的快速集成、提升整個(gè)系統(tǒng)的可維護(hù)性。
本發(fā)明采用分層及面向?qū)ο蟮脑O(shè)計(jì)思想,提出一種基于插件技術(shù)的航天測發(fā)控軟件平臺,如圖1所示,包括平臺內(nèi)核、配置管理模塊、插件管理模塊、插件庫。測發(fā)控軟件平臺的底層開發(fā)語言為qt模塊。
平臺內(nèi)核為本發(fā)明航天測發(fā)控軟件平臺的宿主程序,是平臺的核心。定義了軟件的集成方式、通訊接口以及軟件主窗體與彈出窗體的布局風(fēng)格。通訊接口是插件與宿主程序之間的通信基礎(chǔ)。用于控制配置管理模塊和插件管理模塊工作。
日志記錄功能在軟件系統(tǒng)的調(diào)試和運(yùn)行階段起著非常重要的作用。在軟件系統(tǒng)調(diào)試及排故中,日志可以幫助測試、排故人員定位和診斷錯(cuò)誤,特別是對于一些偶發(fā)性的程序錯(cuò)誤,利用日志往往可以快速有效地追蹤和排查。本發(fā)明平臺內(nèi)核集成有日志模塊組件,各插件共用此日志模塊組件,避免了重復(fù)開發(fā),實(shí)現(xiàn)了日志統(tǒng)一化管理。日志由低到高共分為debug、info、warn、error和off5個(gè)級別,日志的記錄級別可由用戶配置,選擇off級別則代表關(guān)閉日志輸出。日志模塊組件在設(shè)計(jì)時(shí)采用單例設(shè)計(jì)模式,以保證日志類僅有一個(gè)實(shí)例。
配置管理模塊提供統(tǒng)一配置管理接口,在平臺內(nèi)核的控制下實(shí)現(xiàn)所有已加載功能插件的參數(shù)裝訂。插件開發(fā)者可依據(jù)插件具體用途開放一定量的屬性配置項(xiàng),插件使用者可以在平臺中自行配置插件并將配置結(jié)果進(jìn)行保存以貼合使用場景及使用習(xí)慣的需求。
插件管理模塊在平臺內(nèi)核的控制下實(shí)現(xiàn)插件庫中插件的加載、注冊、初始化以及卸載。插件管理模塊使用單例模式,用以保證平臺運(yùn)行時(shí)整個(gè)系統(tǒng)內(nèi)只有一個(gè)插件管理器的實(shí)例。插件管理模塊與插件之間的通信采用觀察者模式。
插件庫包括實(shí)現(xiàn)測發(fā)控各種功能的插件。插件依照其實(shí)現(xiàn)方式可分為共享庫(sharedobject,so)和動態(tài)鏈接庫(dynamiclinklibrary,dll)兩種方案。so文件和dll文件分別針對unix平臺和windows平臺,都是具有一定功能的可執(zhí)行軟件模塊,是實(shí)現(xiàn)軟件組件重用的一種方法。庫文件本身不能獨(dú)立運(yùn)行,只能輸出變量、函數(shù)或類。
插件依照其功能趨向可分為專用插件和公共插件。專用插件與公共插件遵循平臺定義的同一標(biāo)準(zhǔn)接口,由平臺統(tǒng)一管理。插件通過xml格式的配置文件進(jìn)行標(biāo)識,配置文件包括插件的名稱、版本、作者、單位、描述和類名。如下所示:
專用插件為實(shí)現(xiàn)某類型號軟件特殊功能的模塊,專用程度高,可復(fù)用程度低。如數(shù)據(jù)中心插件實(shí)現(xiàn)所有外部測試數(shù)據(jù)的收集、存儲、處理和轉(zhuǎn)發(fā),不同型號系統(tǒng)方案不同,數(shù)據(jù)流不同,難以實(shí)現(xiàn)提煉和實(shí)現(xiàn)通用的數(shù)據(jù)處理邏輯。如需復(fù)用,往往需要代碼級的修改,不同型號需要定制開發(fā),因此將此類功能組件定義為專用插件,僅向程序開發(fā)者開放,向用戶封閉。專用插件集成于平臺內(nèi)部,與平臺內(nèi)核一起編譯運(yùn)行。專用插件可以通過配置文件由開發(fā)人員進(jìn)行裁剪。
公共插件為滿足測發(fā)控類軟件公共需求的組件,能夠跨型號、跨系統(tǒng)使用,如心跳監(jiān)測、時(shí)間同步、遠(yuǎn)程關(guān)機(jī)、起始電平打印等。此類插件不隨平臺一起編譯,單獨(dú)打包發(fā)布,供系統(tǒng)平臺動態(tài)加載。公共插件管理采用簡易方便的文件級管理方式。公共插件可依據(jù)平臺提出的接口要求進(jìn)行開發(fā)并編譯為庫文件,與xml配置文件一同拷貝至指定文件夾下即可實(shí)現(xiàn)公共插件的載入。如果不需要使用某個(gè)插件,在指定目錄下刪除相應(yīng)文件即可完成。插件庫集合中的插件數(shù)量將隨著業(yè)務(wù)需求的變化而不斷增加,插件功能的覆蓋也會不斷擴(kuò)充和完善,既保證了整體軟件可靠性,同時(shí)插件庫亦可以作為技術(shù)成果進(jìn)行累積。公共插件提供可視化的定制界面,由用戶根據(jù)使用場景及任務(wù)需求進(jìn)行加載、卸載,如圖3所示。
本發(fā)明無論是專用插件還是公共插件,在接口的設(shè)計(jì)上,僅規(guī)定最為基礎(chǔ)且通用的函數(shù)方法,即所有插件均需實(shí)現(xiàn)的接口函數(shù)有初始化函數(shù)initialize(),關(guān)閉函數(shù)close(),試驗(yàn)開始時(shí)的調(diào)用函數(shù)startexp(),試驗(yàn)結(jié)束時(shí)的調(diào)用函數(shù)stopexp()。
如圖2所示,本發(fā)明實(shí)現(xiàn)插件加載、注冊和初始化流程如下:
(1)系統(tǒng)啟動時(shí),平臺內(nèi)核通知插件管理模塊加載插件庫中所有專用插件;
(2)插件管理模塊搜索所有專用插件文件,獲取插件的版本和配置信息;
(3)插件管理模塊依照配置信息進(jìn)行專用插件的加載;
(4)加載完成后,插件管理模塊向平臺內(nèi)核發(fā)送專用插件加載成功的確認(rèn)信息;
(5)平臺內(nèi)核通知插件管理模塊加載所有公共插件;
(6)插件管理模塊加載公共插件安裝目錄;
(7)插件管理模塊在指定目錄下搜索所有用戶訂制的公共插件文件,獲取插件的版本和配置信息;如果不能獲取某個(gè)插件文件的正確版本或配置信息,則視為非法插件,予以過濾;
(8)插件管理模塊依照配置信息加載所有合法公共插件;
(9)加載完成后,插件管理模塊向平臺內(nèi)核發(fā)送公共插件加載成功的確認(rèn)信息;
(10)插件管理模塊將所有成功加載的專用插件和公共插件添加到插件注冊表,實(shí)現(xiàn)統(tǒng)一管理;
(11)平臺內(nèi)核向插件管理模塊發(fā)出初始化插件指令;
(12)插件管理模塊將所有正常加載的插件初始化。
本發(fā)明平臺采用插件技術(shù)實(shí)現(xiàn),各個(gè)插件面向獨(dú)立的測發(fā)控軟件業(yè)務(wù)邏輯功能,使得系統(tǒng)的耦合性更低,有效緩解結(jié)構(gòu)中資源的同步和互斥問題。提高了軟件開發(fā)并行性,在平臺搭建完善的基礎(chǔ)上以開發(fā)插件的形式進(jìn)行功能點(diǎn)的開發(fā)實(shí)現(xiàn)了多人并行的軟件開發(fā),縮短軟件研制周期的同時(shí)大幅降低了功能點(diǎn)之間的耦合性,降低了整個(gè)軟件的開發(fā)及調(diào)試難度。同時(shí)本發(fā)明實(shí)現(xiàn)了便捷的軟件升級和維護(hù),插件技術(shù)將軟件功能的升級轉(zhuǎn)變?yōu)檐浖寮纳墸沟谜麄€(gè)平臺更加靈活易擴(kuò)展。本發(fā)明提升了整個(gè)平臺的普遍適用性,提升了各個(gè)插件的復(fù)用性,對于不同任務(wù)趨向的測發(fā)控類軟件,僅進(jìn)行了插件的增刪或者少量插件的開發(fā)便已可實(shí)現(xiàn)所需功能。
本發(fā)明為測發(fā)控類軟件的運(yùn)行提供了一個(gè)穩(wěn)定的環(huán)境,為系統(tǒng)功能的集成、更新、管理提供一個(gè)有效的機(jī)制,為用戶使用系統(tǒng)提供友好的界面。可顯著提高航天型號測發(fā)控類軟件的研制效率,減少需求變更給軟件研發(fā)帶來的重復(fù)工作量。面向業(yè)務(wù)邏輯的功能均通過插件管理模塊加載插件的方式實(shí)現(xiàn)。這種設(shè)計(jì)方式不僅適應(yīng)于現(xiàn)階段測發(fā)控類軟件的需求,也為之后移植整個(gè)平臺用作其他功能提供了可能,為提高航天型號軟件產(chǎn)品化水平打下了基礎(chǔ)。
本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。