• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

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

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

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

      1 QPAF系統(tǒng)架構

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

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

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

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

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

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

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

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

      2.1 QPAF 插件

      2.1.1 插件構成

      在QPAF中,每個插件由兩部分組成——插件規(guī)范文件及插件庫文件。插件規(guī)范文件以XML格式存儲了插件加載所需的各種信息,包括插件名稱、版本、簡介、兼容性、依賴庫及版權信息等;插件庫則是具有統(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è)務對象的創(chuàng)建及初始化;extensionInitialized()在插件及其依賴插件庫全部初始化完成并且依賴庫的extensionInitialized()方法被執(zhí)行后進行調(diào)用,其功能是建立插件與其依賴插件之間的功能擴展及通信連接。

      2.1.2 插件擴展

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

      ProviderPlugin插件在初始化時創(chuàng)建了一個實現(xiàn)extensionFun()功能的業(yè)務對象Provider,并將其注冊到對象池中。UserPlugin插件中則提供了requestSomeFun()擴展點,通過該擴展點實現(xiàn)了對ProviderPlugin插件中擴展功能的調(diào)用。具體地,requestSomeFun()擴展點在對象池中查找業(yè)務對象Provider,當業(yè)務對象存在時,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)一管理,相關的類圖如圖3所示。

      圖3 QPAF插件管理

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

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

      2.3 框架運行機理

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

      圖4 QPAF運行序列圖

      2.4 主要插件

      2.4.1 核心插件corePlugin

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

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

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

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

      2.4.2 其它插件

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

      圖6 核心插件corePlugin

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

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

      3 應用實例

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

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

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

      4 結束語

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

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

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

      [3]王書滿,焦綱領,馬穎亮.信息優(yōu)勢在C4ISR系統(tǒ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]郭娜,黃永平,吳學義,等.基于插件的動態(tài)模塊框架研究[J].吉林大學學報(信息科學版),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插件機制及應用
      一種基于OpenStack的云應用開發(fā)框架
      敖汉旗| 忻州市| 宜黄县| 和政县| 塘沽区| 建阳市| 贺州市| 泸溪县| 剑河县| 平舆县| 海口市| 彭山县| 德江县| 丹寨县| 拜泉县| 集安市| 土默特左旗| 信丰县| 新乡市| 永嘉县| 青冈县| 萝北县| 德昌县| 衡山县| 扶余县| 通海县| 罗田县| 大同县| 灵武市| 工布江达县| 内江市| 姜堰市| 丘北县| 横峰县| 区。| 天镇县| 永康市| 泰州市| 岐山县| 昌江| 甘孜|