亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        戰(zhàn)術(shù)指揮情報終端的插件式軟件框架設(shè)計*

        2012-09-02 06:24:32王宏強張航峰李繼進盛守照
        指揮控制與仿真 2012年6期
        關(guān)鍵詞:插件框架對象

        王宏強,張航峰,李繼進,盛守照

        (1.南京電子技術(shù)研究所,江蘇 南京 210039;2.南京航空航天大學(xué),江蘇 南京 210016)

        戰(zhàn)術(shù)指揮情報終端(Tactical Command&Intelligence Terminal,TCIT)是現(xiàn)代C4ISR指揮信息系統(tǒng)的重要組成部分[1-2],其主要任務(wù)是通過向作戰(zhàn)單元提供實時的戰(zhàn)場態(tài)勢感知、戰(zhàn)術(shù)情報保障及指揮命令交互服務(wù),使作戰(zhàn)單元、作戰(zhàn)要素之間協(xié)同互補,通過信息力、打擊力、機動力的高度聚合與精確釋放,確保作戰(zhàn)單元信息優(yōu)勢的全程獲取和作戰(zhàn)效能的充分發(fā)揮[3]。

        傳統(tǒng)的戰(zhàn)術(shù)指揮情報終端軟件通常針對特定兵種的特定軍事需求而設(shè)計,系統(tǒng)所有功能統(tǒng)一編譯于一個可執(zhí)行文件中,具有功能明確、封閉性強、集成度高等特點[1]。隨著現(xiàn)代戰(zhàn)爭由機械化向信息化、智能化轉(zhuǎn)變,C4ISR系統(tǒng)越來越龐大和復(fù)雜,作戰(zhàn)單元時刻處于空、天、地、海、網(wǎng)絡(luò)、電磁的全方位包圍之下,應(yīng)用類型亦愈來愈多[3]。為了能夠快速適應(yīng)多變、異構(gòu)的現(xiàn)代戰(zhàn)場環(huán)境,戰(zhàn)術(shù)指揮情報終端必須能夠針對不同的作戰(zhàn)類型、作戰(zhàn)目標(biāo)、網(wǎng)絡(luò)環(huán)境對功能進行快速定制與整合,以滿足特定的作戰(zhàn)應(yīng)用需求。

        近年來,基于插件框架的軟件設(shè)計技術(shù)已成為解決軟件可擴展性問題的有效方法,學(xué)界已開始深入研究。Sun等研究了基于.Net反射技術(shù)和數(shù)字驗證技術(shù)的插件框架設(shè)計方法,增強了.Net插件框架的安全特性[4];Zhu等在研究Eclipse軟件的插件架構(gòu)的基礎(chǔ)上,提出了基于插件架構(gòu)的軟件生產(chǎn)線集成框架模型并對有效性進行了驗證[5];郭娜等研究了Jabber客戶端Jeti的軟件結(jié)構(gòu)并與Eclipse進行了對比分析,提出了一種基于插件的動態(tài)模塊框架[6],提高了軟件的可維護性和擴展性。

        針對現(xiàn)代戰(zhàn)爭條件下的新軍事需求,本文以開源跨平臺開發(fā)庫Qt為基礎(chǔ)平臺[7],提出了一種基于插件技術(shù)[6-8]的戰(zhàn)術(shù)指揮情報終端軟件應(yīng)用框架(Qt Plug-in based Application Framework,QPAF)設(shè)計方法。QPAF以插件管理引擎作為微內(nèi)核,提供了框架運行所必須的插件接口契約、功能擴展機制、插件間通信機制及對象管理機制;系統(tǒng)中數(shù)據(jù)層、業(yè)務(wù)層及表示層的功能則被上移,以插件式服務(wù)的方式來實現(xiàn),保證了對軍事需求中變化性特征的抽象、封裝和隔離,兼顧了系統(tǒng)框架的穩(wěn)定性和功能配置的靈活性,使軟件具備了較強的柔性。

        1 QPAF系統(tǒng)架構(gòu)

        常規(guī)的插件式應(yīng)用框架將應(yīng)用程序劃分為宿主程序與插件對象兩個部分。宿主程序以可執(zhí)行文件的形式存在,負責(zé)插件對象的解析并在插件對象控制下生成可視化界面對象;插件對象則保存在插件程序集中,通過宿主程序的加載和調(diào)用來實現(xiàn)具體功能應(yīng)用,是插件式框架具體功能的承載者。與常規(guī)插件式應(yīng)用框架不同,QFAP采用輕量級的微內(nèi)核結(jié)構(gòu),其組成架構(gòu)如圖1所示。

        圖1 QPAF系統(tǒng)架構(gòu)

        在組織結(jié)構(gòu)上,QPAF框架由微內(nèi)核microkernel、插件集plugins、公共擴展庫utils及Qt支撐庫Qt-library四部分組成。微內(nèi)核與插件集構(gòu)成了應(yīng)用框架的主體,通過插件管理引擎對插件集的管理來實現(xiàn)框架的應(yīng)用擴展,而公共擴展庫及Qt支撐庫則為應(yīng)用軟件的開發(fā)、運行及運行時擴展提供了基礎(chǔ)環(huán)境。

        在QPAF框架下,微內(nèi)核僅封裝了程序入口及插件管理引擎,而負責(zé)可視化界面對象生成的部分(即表示層)則被提取出來成為核心插件corePlugin。表示層與微內(nèi)核的分離,使得微內(nèi)核有了更為廣泛的產(chǎn)品通用性,也有利于表示層的復(fù)用、替換與擴展。

        插件集由一系列插件組成,根據(jù)功能不同,可分為表示層插件、業(yè)務(wù)邏輯層插件及數(shù)據(jù)訪問層插件。其中,核心插件corePlugin為唯一的表示層插件,負責(zé)應(yīng)用軟件主窗口及界面元素的組織和管理,業(yè)務(wù)邏輯層插件可以通過對核心插件提供的擴展點進行擴展來建立業(yè)務(wù)相關(guān)的界面元素,實現(xiàn)與用戶的交互。

        業(yè)務(wù)邏輯層插件負責(zé)提供作戰(zhàn)相關(guān)的業(yè)務(wù)服務(wù),并可根據(jù)具體應(yīng)用需求對可提供的服務(wù)進行定制。典型的業(yè)務(wù)邏輯層插件有態(tài)勢信息插件siPlugin、警務(wù)處理插件disposePlugin和情報處理插件intelligencePlugin等,分別提供戰(zhàn)場態(tài)勢信息服務(wù)、警情處理服務(wù)及戰(zhàn)場情報處理服務(wù)。

        數(shù)據(jù)訪問層插件提供了對系統(tǒng)中業(yè)務(wù)信息數(shù)據(jù)的集中管理和對外數(shù)據(jù)交換服務(wù),包括數(shù)據(jù)管理與通信插件。數(shù)據(jù)訪問層插件處理的數(shù)據(jù)包括各種實時或非實時的業(yè)務(wù)數(shù)據(jù),如戰(zhàn)術(shù)任務(wù)報文、即時消息、動目標(biāo)指示信息、統(tǒng)計信息、狀態(tài)信息、本地化的地理信息數(shù)據(jù)及歷史數(shù)據(jù)等。數(shù)據(jù)訪問層插件可從外界獲取數(shù)據(jù),按需分發(fā)給業(yè)務(wù)邏輯層插件以激活相應(yīng)的業(yè)務(wù),同時接收來自業(yè)務(wù)邏輯層插件的數(shù)據(jù),并對外發(fā)送給指揮中心或其它作戰(zhàn)單元。

        2 QPAF的設(shè)計與實現(xiàn)

        2.1 QPAF 插件

        2.1.1 插件構(gòu)成

        在QPAF中,每個插件由兩部分組成——插件規(guī)范文件及插件庫文件。插件規(guī)范文件以XML格式存儲了插件加載所需的各種信息,包括插件名稱、版本、簡介、兼容性、依賴庫及版權(quán)信息等;插件庫則是具有統(tǒng)一的接口契約和擴展規(guī)范、對具體軟件功能的動態(tài)庫形式封裝。插件組成如圖2所示。

        圖2 QPAF插件組成

        插件規(guī)范文件的格式如下所示:

        QPAF中的所有插件都繼承自接口類 IPlugin。IPlugin類中聲明了initialize()和extensionInitialized()兩個純虛函數(shù),所有插件類必須實現(xiàn)這兩個函數(shù)。initialize()在插件庫被載入且插件實例被創(chuàng)建后調(diào)用,其功能是完成插件內(nèi)部業(yè)務(wù)對象的創(chuàng)建及初始化;extensionInitialized()在插件及其依賴插件庫全部初始化完成并且依賴庫的extensionInitialized()方法被執(zhí)行后進行調(diào)用,其功能是建立插件與其依賴插件之間的功能擴展及通信連接。

        2.1.2 插件擴展

        QPAF框架下,具體業(yè)務(wù)功能被封裝在繼承自QObject類的業(yè)務(wù)對象中,插件的實現(xiàn)類創(chuàng)建業(yè)務(wù)對象的實例,并通過IPlugin的addObject()方法將其注冊到插件管理引擎的對象池中,以共享插件的對象資源,實現(xiàn)插件功能的擴展和插件間通信。以下代碼展示了ProviderPlugin插件對UserPlugin插件的功能擴展。

        ProviderPlugin插件在初始化時創(chuàng)建了一個實現(xiàn)extensionFun()功能的業(yè)務(wù)對象Provider,并將其注冊到對象池中。UserPlugin插件中則提供了requestSomeFun()擴展點,通過該擴展點實現(xiàn)了對ProviderPlugin插件中擴展功能的調(diào)用。具體地,requestSomeFun()擴展點在對象池中查找業(yè)務(wù)對象Provider,當(dāng)業(yè)務(wù)對象存在時,Provider的extensionFun()函數(shù)被調(diào)用,從而實現(xiàn)了UserPlugin插件功能的擴展。采用類似方法并借助于Qt的信號/槽機制,也可在插件間進行消息通信。

        QPAF插件的擴展及擴展點機制實現(xiàn)了對插件功能的擴充,帶來的副作用是插件間的依賴性。根據(jù)依賴性的不同,被依賴的插件可分為必需、可選兩種,必需插件會影響對其有依賴性的插件的正常運行。QPAF的插件管理引擎在加載插件時,將根據(jù)插件規(guī)范文件中的依賴性信息對所有待加載的插件的依賴性進行解析和排序,優(yōu)先加載必需插件。

        2.2 插件管理

        QPAF通過位于微內(nèi)核中的插件管理類PluginEngine對插件及其生命周期以及插件所注冊的對象進行統(tǒng)一管理,相關(guān)的類圖如圖3所示。

        圖3 QPAF插件管理

        PluginEngine類采用單件模式實現(xiàn),在整個應(yīng)用程序級僅存在唯一的實例,該類提供了實例的全局訪問點PluginEngine::instance(),QPAF插件可通過此訪問點獲取PluginEngine實例,將創(chuàng)建的業(yè)務(wù)對象注冊到PluginEngine的對象池或從對象池中移除已注冊的對象。PluginEngine中維護著兩個重要的容器對象:pluginSpecs及 allObjects。pluginSpecs基于 Qt容器類QList實現(xiàn)了對插件規(guī)范類PluginSpec的鏈?zhǔn)酱鎯?,allObjects則是插件管理引擎中的對象池,存儲了所有的業(yè)務(wù)對象。

        PluginEngine在讀取和解析每個插件所對應(yīng)的插件規(guī)范文件時都將創(chuàng)建一個PluginSpec實例。Plugin-Spec類是插件管理任務(wù)的具體實施者,不僅存儲了插件的名稱、依賴庫等信息,還存儲了一個插件實例的指針,負責(zé)對插件運行狀態(tài)的維護。在PluginEngine的統(tǒng)一調(diào)度下,PluginSpec依次進行插件規(guī)范文件的讀取、依賴性解析、插件庫加載、初始化及擴展初始化,使插件進入運行態(tài);當(dāng)插件需要卸載時,也由PluginSpec停止插件并清理相關(guān)對象。

        2.3 框架運行機理

        QPAF的運行機理如圖4的運行序列圖及圖5的插件生命周期狀態(tài)圖所示。QPAF框架啟動時,插件管理引擎PluginEngine首先在預(yù)定目錄中搜索所有的插件規(guī)范文件,通過插件規(guī)范類PlugSpec對插件信息進行讀取,并對插件的合法性和依賴性進行檢查和解析,然后按照插件的依賴性由QPlugin-Loader類依次對插件庫進行載入。相應(yīng)地,插件生命周期分為解析、裝載、卸載三個階段:解析段完成插件規(guī)范信息的讀取及依賴性的解析;裝載段完成插件庫的載入、初始化及擴展初始化,插件進入正常工作狀態(tài);卸載段則完成插件的停止及刪除工作。

        圖4 QPAF運行序列圖

        2.4 主要插件

        2.4.1 核心插件corePlugin

        corePlugin是QPAF框架中的核心插件,其中封裝了應(yīng)用程序主界面窗口類,提供了針對主窗口關(guān)鍵窗口部件的擴展點,其它業(yè)務(wù)邏輯插件通過對這些擴展點進行調(diào)用來實現(xiàn)應(yīng)用程序具體的業(yè)務(wù)應(yīng)用及用戶交互。核心插件的類圖如圖6所示。

        圖5 插件生命周期狀態(tài)圖

        核心插件類CorePlugin繼承自插件接口類IPlugin,在CorePlugin類構(gòu)造時將創(chuàng)建應(yīng)用程序主窗口類MainWindow,并對外提供對主窗口的擴展點 ICore。ICore采用單件模式,其實現(xiàn)CoreImpl是核心插件的業(yè)務(wù)對象類,采用委托的方式向其它插件提供對主窗口中各部件管理類的訪問,包括PanelManager、WorkbenchManager、ActionManger及 StatusBarManager,業(yè)務(wù)邏輯插件可通過這些窗口部件管理類對主窗口進行功能擴展。

        對于戰(zhàn)術(shù)情報指揮終端軟件,主要窗口部件包括導(dǎo)航面板、工作區(qū)、菜單欄、工具欄及狀態(tài)欄。其中,導(dǎo)航面板由PanelManager類管理,其內(nèi)部封裝了QTool-Box類,可為業(yè)務(wù)邏輯插件在導(dǎo)航面板中創(chuàng)建一欄,并設(shè)置欄目的子功能窗口部件,對業(yè)務(wù)進行分類管理;工作區(qū)由WorkbenchManager類負責(zé)管理,其內(nèi)部封裝了QTabWidget標(biāo)簽頁容器類,可為每種作戰(zhàn)業(yè)務(wù)分配一個Tab頁面,點選導(dǎo)航面板中的一欄將在工作區(qū)打開對應(yīng)的Tab頁,供用戶進行具體業(yè)務(wù)操作;菜單欄、工具欄等用戶操作界面由ActionManger類實施創(chuàng)建與集中管理;狀態(tài)欄的管理則由StatusBarManager完成。

        2.4.2 其它插件

        在QPAF框架下,具體的作戰(zhàn)應(yīng)用由各種業(yè)務(wù)邏輯插件來實現(xiàn),如態(tài)勢信息顯示、指揮控制、現(xiàn)場辦公等;對外數(shù)據(jù)交換接口服務(wù)由數(shù)據(jù)訪問層插件提供。以態(tài)勢信息插件siPlugin為例。

        圖6 核心插件corePlugin

        siPlugin插件的基本功能是負責(zé)地理信息等靜態(tài)數(shù)據(jù)及系統(tǒng)接收到的動態(tài)目標(biāo)信息的顯示,并提供圖層及目標(biāo)的顯示控制。為此,siPlugin插件通過Panel-Manager創(chuàng)建了Situation導(dǎo)航面板并使用繼承自QTreeWidget的樹形部件SiPanelWidget對圖層及目標(biāo)進行顯控,對應(yīng)的工作區(qū)則為基于QGraphicsView機制實現(xiàn)的地圖部件SituationMap。以下代碼展示了siPlugin插件對其相應(yīng)的窗口部件的創(chuàng)建過程。

        siPlugin插件通過數(shù)據(jù)訪問層的commPlugin插件進行對動態(tài)目標(biāo)數(shù)據(jù)的接收。以AIS數(shù)據(jù)報文的接收為例。commPlugin插件中創(chuàng)建了數(shù)據(jù)分發(fā)對象AisDisperser,當(dāng)其接收到AIS數(shù)據(jù)時將發(fā)出aisReceived()信號。commPlugin初始化時,AisDisperser被注冊到對象池中。siPlugin插件擴展初始化時從數(shù)據(jù)池中查找該數(shù)據(jù)分發(fā)對象,并將其targetReceived()信號與自身的procAisReceived()槽函數(shù)相連接,在該槽函數(shù)中進行AIS報文的接收、解析及顯示。相應(yīng)的代碼如下所示。

        3 應(yīng)用實例

        圖7為采用QPAF框架開發(fā)的某邊境防務(wù)戰(zhàn)術(shù)指揮情報終端界面。系統(tǒng)基于微內(nèi)核架構(gòu),除插件管理之外的所有功能均采用插件實現(xiàn)。除表示層的核心插件外,業(yè)務(wù)層包括態(tài)勢顯示、警務(wù)處理、情報處理、系統(tǒng)設(shè)置四個插件,數(shù)據(jù)訪問層包括AIS報文接收、GPS報文接收、單雷達報文接收、融合航跡報接收、指控收發(fā)五個插件。

        當(dāng)系統(tǒng)的應(yīng)用需求發(fā)生變化時,無需對系統(tǒng)框架及核心插件進行修改,只需對業(yè)務(wù)層插件或數(shù)據(jù)訪問層的插件進行配置即可實現(xiàn)應(yīng)用功能的擴展或裁減。例如,在海防應(yīng)用時,態(tài)勢顯示采用基于海圖的插件,而在空防應(yīng)用時,只需要將態(tài)勢顯示部分替換為基于航圖的插件,無需對其它的業(yè)務(wù)插件及框架進行修改,使系統(tǒng)具有了很強的柔性。

        圖7 戰(zhàn)術(shù)情報指揮終端主界面

        4 結(jié)束語

        復(fù)雜多變的現(xiàn)代戰(zhàn)場環(huán)境對C4ISR指揮信息系統(tǒng)的建設(shè)提出了更高的軍事需求,要求指揮信息系統(tǒng)不僅要滿足基本作戰(zhàn)需求,還應(yīng)具備對各種業(yè)務(wù)功能的快速整合與定制的能力?;谶@種新的需求,本文提出了一種以開源跨平臺開發(fā)庫Qt為基礎(chǔ)平臺的、基于微內(nèi)核思想的QPAF插件式軟件框架設(shè)計方法,對QPAF的系統(tǒng)架構(gòu)、插件擴展及管理機制、框架運行機理進行了深入闡述,對主要插件的實現(xiàn)方法進行了詳細介紹。某邊境防務(wù)戰(zhàn)術(shù)指揮情報終端的應(yīng)用表明,基于QPAF方法設(shè)計的軟件同時兼顧了系統(tǒng)的穩(wěn)定性和靈活性,使軟件具備了很強的動態(tài)演化能力,具有較高的應(yīng)用價值。

        [1]張樂鋒,虞華,胡衛(wèi)東,等.信息化雷達顯控終端的設(shè)計與實現(xiàn)[J].現(xiàn)代雷達,2009,31(8):33-38.

        [2]周任飛.基于TD-SCDMA的雷達情報數(shù)據(jù)無線傳輸研究[J].信息系統(tǒng)工程,2009,22(9):70-73.

        [3]王書滿,焦綱領(lǐng),馬穎亮.信息優(yōu)勢在C4ISR系統(tǒng)需求論證中的應(yīng)用研究[J].指揮控制與仿真,2011,33(3):31-34.

        [4]Sun Y,Liang H,Kuo Z.A Study and Design of Plug-in Framework Based on.Net Component Technology[C].The 14th International Conference on Computer supported cooperative work in Design,Shanghai,China,Apr.14-16,2010:178-183.

        [5]Zhu J,Yin Q,Zhu R,et al.A Plug-in Based Software Production Line Integrated Framework[C].International Conference on Computer Science and Software Engineering,Wuhan,Dec.12-14,2008(2):562-565.

        [6]郭娜,黃永平,吳學(xué)義,等.基于插件的動態(tài)模塊框架研究[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2008,26(1):69-75.

        [7]Ezust A,Ezust P.An Introduction to Design Patterns in C++with Qt 4[M].MA,US:Pearson Education Inc.,2006.

        [8]Clayberg E,Rubel D.Eclipse Plug-ins,Third Edition[M].Boston,MA 02116:Addison-Wesley,2009.

        猜你喜歡
        插件框架對象
        神秘來電
        睿士(2023年2期)2023-03-02 02:01:09
        框架
        廣義框架的不相交性
        自編插件完善App Inventor與樂高機器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        攻略對象的心思好難猜
        意林(2018年3期)2018-03-02 15:17:24
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        基于熵的快速掃描法的FNEA初始對象的生成方法
        區(qū)間對象族的可鎮(zhèn)定性分析
        MapWindowGIS插件機制及應(yīng)用
        一種基于OpenStack的云應(yīng)用開發(fā)框架
        免费a级毛片18禁网站免费| 欧美久久中文字幕| 日本五十路熟女在线视频| 日韩av天堂一区二区三区在线| 美女福利视频网址导航| 白白发在线视频免费观看2| 国产边摸边吃奶叫床视频| 国产看黄网站又黄又爽又色| 在线无码精品秘 在线观看| 国产诱惑人的视频在线观看| 亚洲日韩精品无码av海量| 乱人伦视频中文字幕| 亚洲狼人社区av在线观看| 人妻有码中文字幕在线| 体验区试看120秒啪啪免费| 黄色视频在线免费观看| 波多野结衣一区二区三区免费视频| 日本午夜一区二区视频| 在线a亚洲视频播放在线播放| 亚洲一区二区三区影院| 婷婷成人基地| 免费在线日韩| 国产精品自产拍在线18禁| 国产成人综合亚洲看片| 国产精品久久国产精品99gif| 亚洲精品日本| 女同av一区二区三区| 国产免费爽爽视频在线观看| 国产精品久久久久久久成人午夜| 国产精品系列亚洲第一| 99蜜桃在线观看免费视频| 人妻洗澡被强公日日澡电影| 人妻在卧室被老板疯狂进入国产 | 蜜臀av人妻一区二区三区| 亚洲av一区二区三区色多多| 亚洲av福利无码无一区二区| 99热精品国产三级在线观看| 日本高清一区在线你懂得| 亚洲av中文无码乱人伦在线咪咕 | 亚洲春色视频在线观看| 丰满人妻久久中文字幕|