王永潔,陸銘華,史 揚
(海軍潛艇學(xué)院,山東 青島 266071)
基于組件技術(shù)的分布式潛艇作戰(zhàn)仿真系統(tǒng)
王永潔,陸銘華,史 揚
(海軍潛艇學(xué)院,山東 青島 266071)
提出采用JavaEE/EJB組件技術(shù)開發(fā)分布式潛艇作戰(zhàn)仿真系統(tǒng),根據(jù)潛艇作戰(zhàn)機理,建立了分布式潛艇作戰(zhàn)仿真模型體系結(jié)構(gòu),設(shè)計了分布式潛艇作戰(zhàn)仿真系統(tǒng)的軟件架構(gòu),分析了系統(tǒng)開發(fā)過程中采用的技術(shù)協(xié)議,并研究了基于組件技術(shù)的分布式潛艇作戰(zhàn)仿真系統(tǒng)實現(xiàn)方法。
組件,潛艇,作戰(zhàn)仿真,軟件架構(gòu)
面向?qū)ο蠹夹g(shù)和軟件構(gòu)件技術(shù)的興起,出現(xiàn)了以JavaEE/EJB、DNA/COM和CORBA為代表的分布式對象/構(gòu)件計算模型,使用上述技術(shù)的應(yīng)用服務(wù)器中間件涵蓋了傳統(tǒng)中間件的功能,完全支持三層/多層的軟件體系結(jié)構(gòu)發(fā)展和軟件復(fù)用,逐漸成為中間件產(chǎn)品的主流。隨著構(gòu)件技術(shù)進一步發(fā)展,JavaEE/EJB組件融合了CORBA等技術(shù)體系的優(yōu)點,目前成為構(gòu)建分布式計算平臺的主流框架。利用JavaEE/EJB組件技術(shù)開發(fā)分布式潛艇作戰(zhàn)系統(tǒng)可以有效解決仿真模型利用率低的問題。
當(dāng)前軟件技術(shù)的發(fā)展正朝著組件化方向發(fā)展,其目標(biāo)是在解決軟件生產(chǎn)率和軟件質(zhì)量問題的同時更加關(guān)注軟件的靈活性和可用性,采用軟件組件技術(shù)構(gòu)建分布式系統(tǒng)軟件結(jié)構(gòu)的優(yōu)勢如下:
(1)提高軟件重用性及共享性
同一個軟件功能只需要實現(xiàn)一次,之后可提供給不同設(shè)備調(diào)用,從而實現(xiàn)仿真模型軟件組件(代碼)的唯一,既解決了模型重復(fù)開發(fā)及重復(fù)部署問題,又解決了不同領(lǐng)域分布開發(fā)時功能不一致的現(xiàn)實問題。
(2)軟件易于擴展維護
采用分層開發(fā)的思想,將表現(xiàn)層(人機界面)、控制層(仿真應(yīng)用流程控制)與核心模型層分離,易于各自的升級維護。
基于JavaEE/EJB應(yīng)用服務(wù)器的分布式軟件體系如下頁圖1所示。
圖1 基于Java EE/EJB的軟件體系結(jié)構(gòu)
圖1中應(yīng)用服務(wù)器的核心是EJB容器,它部署并管理了各種應(yīng)用程序組件,接受各類客戶端(應(yīng)用層)的服務(wù)請求[1],并將服務(wù)結(jié)果返回客戶端,從而實現(xiàn)組件共享的服務(wù)。
在分析了影響潛艇作戰(zhàn)仿真模型體系組成的基礎(chǔ)上,按照功能和地位的不同,潛艇作戰(zhàn)仿真模型體系中所包括的各類模型可劃分為[2]:基礎(chǔ)類模型、裝備類模型、反潛裝備類模型、武器模型、平臺(兵力)模型、行為模型、底層的環(huán)境數(shù)據(jù)庫、裝備參數(shù)數(shù)據(jù)庫以及兵力參數(shù)數(shù)據(jù)庫等,具體的模型體系層次如圖2所示。對模型進行層次結(jié)構(gòu)劃分不僅可以有效降低系統(tǒng)分析和建模的復(fù)雜度[3],而且分解后的細粒度模型保證了模型針對特定問題進行研究的專業(yè)性,有利于提高模型的精度。
圖2 潛艇作戰(zhàn)仿真模型體系結(jié)構(gòu)圖
圖2中,各種類別模型組件的組成及所能完成功能如下:
(1)基礎(chǔ)類模型提供了其他模型正常運行所需的信息,如水聲傳播模型是聲納探測模型以及魚雷/水聲對抗武器模型的基礎(chǔ)模型。
(2)裝備類模型根據(jù)潛艇組成的系統(tǒng)/裝備建立了相對應(yīng)的系統(tǒng)/裝備模型,建模的依據(jù)是裝備的性能和工作原理,例如:傳感器的戰(zhàn)技指標(biāo),潛艇操縱運動規(guī)律等。針對各種主要系統(tǒng)/裝備建立模型,細化了潛艇作戰(zhàn)仿真過程的細節(jié),提高了潛艇作戰(zhàn)仿真的可信度。
(3)反潛裝備類模型主要由反潛兵力搭載的反潛器材模型組成,例如:由反潛飛機裝備的吊放聲納、反潛水面艦艇裝備的拖曳線列陣聲納等模型,這些模型是整個反潛兵力體系的基礎(chǔ),也是潛艇與其他兵力進行對抗的重要組成部分。
(4)武器模型主要包括潛艇和其他反潛兵力所裝備武器的相關(guān)模型,包括魚雷、導(dǎo)彈的彈道模型、各種武器進行對抗的過程模型,以及兵力之間進行水聲對抗和電子對抗的過程模型。
(5)平臺模型主要由潛艇兵力、水面艦艇兵力、反潛飛機、反潛直升機兵力模型、海底基陣模型和偵查衛(wèi)星模型組成。
(6)行為模型主要描述潛艇作戰(zhàn)仿真中仿真兵力需要根據(jù)當(dāng)前的態(tài)勢作出正確的行為動作。
(7)環(huán)境數(shù)據(jù)庫的主要作用是模擬潛艇作戰(zhàn)戰(zhàn)場環(huán)境,包括大氣環(huán)境中的氣溫、濕度、能見度和云層厚度等因素;海洋環(huán)境中的潮流、涌浪、鹽度、溫度以及聲速梯度等因素;地理環(huán)境中的海底地貌、地層高度等因素。
(8)裝備參數(shù)數(shù)據(jù)庫封裝了所有裝備的性能參數(shù)數(shù)據(jù),為模型層中的裝備類模型提供數(shù)據(jù)支撐。例如,魚雷武器裝備模型在生成實體對象時,需要調(diào)用裝備參數(shù)數(shù)據(jù)庫中的相關(guān)數(shù)據(jù),包括魚雷的導(dǎo)引方
式、自導(dǎo)開機距離、最大/小巡航速度、最大/小航行深度等。
(9)兵力參數(shù)數(shù)據(jù)庫封裝了所有兵力的性能參數(shù)數(shù)據(jù),為模型層中的兵力類模型提供數(shù)據(jù)支撐。例如:兵力類模型在生成實體對象時,需要調(diào)用兵力參數(shù)數(shù)據(jù)庫中的相關(guān)數(shù)據(jù),包括兵力類型、長/寬/高、排水量、吃水深度、最大/小巡航速度等。
上述模型體系中模型模塊具有以下特點:環(huán)境模型統(tǒng)一由底層環(huán)境數(shù)據(jù)庫支撐,將數(shù)據(jù)與模型實現(xiàn)了分離,兵力和裝備性能參數(shù)與具體模型實現(xiàn)了分離。在基于組件的建模思想下,可以最大程度地實現(xiàn)模型的重用和模型的可重配置。
3.1 作戰(zhàn)仿真系統(tǒng)軟件架構(gòu)
基于JavaEE/EJB組件技術(shù)可以構(gòu)建功能分布及服務(wù)分層的潛艇作戰(zhàn)軟件架構(gòu)如圖3所示。
圖3 潛艇作戰(zhàn)軟件層次關(guān)系圖
功能分布是指不同系統(tǒng)的功能臺軟件實現(xiàn)其獨有的功能。例如:指控功能臺的決策功能,武器功能臺的武器操作控制功能等。服務(wù)分層有兩層含義:一是指對于一些公共的功能通過組件技術(shù)實現(xiàn)形成可以在全系統(tǒng)共享的軟件模塊;二是指對于不同類型的軟件模塊通過劃分層次建立相互之間的調(diào)用結(jié)構(gòu)。這些都有利于提高開發(fā)效率,節(jié)省計算資源,提高系統(tǒng)可維護性。
圖3中,3層所扮演的角色各不相同:應(yīng)用層的應(yīng)用程序代表了各分系統(tǒng)操作設(shè)備(如指控系統(tǒng)功能臺、聲納功能臺、雷達功能臺等),它們是人機交互界面,負責(zé)接受用戶的輸入和操作、數(shù)據(jù)輸出顯示;服務(wù)層是由基于組件標(biāo)準(zhǔn)構(gòu)建起來的軟件功能實現(xiàn),組件按照低耦合高內(nèi)聚的原則劃分,根據(jù)其服務(wù)類型不同,組件形成了3個層次。高層需要底層組件提供服務(wù)[4],從而構(gòu)成了模塊化強,可重構(gòu)的服務(wù)層,數(shù)據(jù)層提供了公共數(shù)據(jù)存儲服務(wù)。
由于JavaEE/EJB支持多種客戶層編程開發(fā)模式,使得應(yīng)用層的客戶軟件可以是功能簡單的B/S型程序,也可以是功能復(fù)雜的C/S型程序。從而大大豐富了軟件開發(fā)模式,可滿足不同崗位,不同系統(tǒng)使用人員的需求。
3.2 作戰(zhàn)系統(tǒng)軟件有關(guān)技術(shù)協(xié)議
JavaEE軟件技術(shù)框架有一系列核心技術(shù)規(guī)范組成,例如 EJB、CORBA、RMI、JSP、Java Servlet、JavaBean、JDBC、XML、JMS等。其中與本系統(tǒng)相關(guān)的協(xié)議主要有:
(1)EJB(Enterprise JavaBeans)規(guī)范[5]
EJB不是一個具體的產(chǎn)品,而是一個Java服務(wù)器端組件開發(fā)的規(guī)范,軟件廠商根據(jù)它來實現(xiàn)EJB服務(wù)器。EJB規(guī)范在簡化分布式應(yīng)用程序開發(fā)復(fù)雜性方面做了大量的工作,所以EJB程序員不必太擔(dān)心事務(wù)處理、多線程、資源管理等方面的問題,可以專注于支持應(yīng)用所需的商業(yè)邏輯,而不用擔(dān)心周圍框架的實現(xiàn)問題。EJB的使用增強了整個系統(tǒng)程序的可靠性、可管理性和可移植性。
(2)Java RMI-IIOP
RMI(Remote Method Invocation遠程方法調(diào)用)是Java的網(wǎng)絡(luò)分布式應(yīng)用系統(tǒng)的核心解決方案之一。它可以被看作是RPC的Java版本。但是傳統(tǒng)RPC并不能很好地應(yīng)用于分布式對象系統(tǒng)。而Java RMI則支持存儲于不同地址空間的程序級對象之間彼此進行通信,實現(xiàn)遠程對象之間的無縫遠程調(diào)用。
RMI應(yīng)用程序通常包括兩個獨立的程序:服務(wù)器程序和客戶機程序。典型的服務(wù)器應(yīng)用程序?qū)?chuàng)建多個遠程對象,使這些遠程對象能夠被引用,然后等待客戶機調(diào)用這些遠程對象的方法。而典型的客戶機程序則從服務(wù)器中得到一個或多個遠程對象的引用,然后調(diào)用遠程對象的方法,RMI為服務(wù)器和客戶機進行通信和信息傳遞提供了一種機制。
(3)目錄服務(wù)和JNDI
目錄服務(wù)可以理解為名稱服務(wù)的一個擴展,它允許在服務(wù)中的各項擁有自己的屬性。目錄服務(wù)中的信息采用層次模型來表示。JNDI為多種目錄服務(wù)提供了一種標(biāo)準(zhǔn)API[6]。
3.3 組件功能分配與調(diào)用關(guān)系
編寫Java RMI分布式應(yīng)用程序的步驟主要包括以下幾步:
(1)將遠程類的功能定義為Java接口,在Java中,遠程對象是實現(xiàn)遠程接口的類的實例。在遠程接口中聲明每個要遠程調(diào)用的方法。除了所有應(yīng)用程序特定的異常之外,每個方法還必須拋出java. rmi.RemoteException(或者 RemoteExcepition的超類)異常。任何作為參數(shù)或返回值傳送的遠程對象的數(shù)據(jù)類型必須聲明為遠程接口類型,而不是實現(xiàn)
類[7]。
(2)編寫和實現(xiàn)服務(wù)器類。該類是實現(xiàn)(1)中定義的遠程接口。所以在該類中至少要聲明實現(xiàn)一個遠程接口,并且必須具有構(gòu)造方法。在該類中還要實現(xiàn)遠程接口中所聲明的各個遠程方法。
(3)編寫使用遠程服務(wù)的客戶機程序。在該類中使用java.rmi.Naming中的lookup()方法獲得對遠程對象的引用,依據(jù)需要調(diào)用該引用的遠程方法,其調(diào)用方式和對本地對象方法的調(diào)用相同。
(4)使用javac編譯遠程接口類,遠程接口實現(xiàn)類和客戶機程序。使用rmic編譯器生成實現(xiàn)類的stub和skeleton。
(5)啟動RMI注冊服務(wù)程序rmi-registry。
(6)啟動服務(wù)器端程序。
(7)啟動客戶機程序。
4.1 系統(tǒng)結(jié)構(gòu)配置
分布式潛艇作戰(zhàn)仿真系統(tǒng)軟件結(jié)構(gòu)如圖4所示。
圖4 系統(tǒng)軟件分層結(jié)構(gòu)示意圖
圖4中,由于3層所扮演的角色各不相同,其軟硬件配置各不相同:
(1)應(yīng)用層:硬件采用通用計算機,軟件采用操作系統(tǒng)WindowsXP、Java虛擬機JVM,應(yīng)用程序集成開發(fā)環(huán)境Netbeans。
(2)服務(wù)層:硬件采用應(yīng)用服務(wù)器(高性能通用計算機),軟件采用操作系統(tǒng)WindowsXP、Java虛擬機JVM,應(yīng)用服務(wù)器Glassfish。
(3)數(shù)據(jù)層:硬件采用數(shù)據(jù)庫服務(wù)器(通用計算機),軟件采用操作系統(tǒng)WindowsXP,數(shù)據(jù)庫系統(tǒng)軟件MySQL。
系統(tǒng)硬件環(huán)境如圖5所示。
圖5 仿真系統(tǒng)硬件組成
4.2 服務(wù)器端組件開發(fā)部署
根據(jù)功能設(shè)計服務(wù)器端的應(yīng)用程序,即設(shè)計各種可以被客戶端調(diào)用的功能組件。過程如下:
(1)在Netbeans開發(fā)環(huán)境下選擇“企業(yè)應(yīng)用程序”類型,生成EJB工程;
(2)在EJB工程下開發(fā)各種組件,包含前文介紹的潛艇作戰(zhàn)仿真模型體系構(gòu)成中的所有模型組件;
(3)將EJB工程部署到Glassfish應(yīng)用程序服務(wù)器。
4.3 數(shù)據(jù)庫設(shè)計
采用MySQL,該數(shù)據(jù)庫為開源軟件,由于得到了廣泛的使用和固定社區(qū)維護改進,具有較高性能和可靠性。數(shù)據(jù)庫分為兵力數(shù)據(jù)庫、武器裝備參數(shù)數(shù)據(jù)庫和水聲環(huán)境數(shù)據(jù)庫。
4.4 客戶端(應(yīng)用程序端)組件調(diào)用
客戶端應(yīng)用程序調(diào)用服務(wù)器端的EJB組件時,只需要了解組件的功能和調(diào)用接口,其實現(xiàn)細節(jié)被封裝。客戶端應(yīng)用程序通過統(tǒng)一規(guī)范的JNDI服務(wù)查找并使用組件,而服務(wù)器端EJB容器則負責(zé)組件的創(chuàng)建/刪除、鈍化/激活、服務(wù)的提供等生命周期的全過程管理。
客戶端應(yīng)用程序調(diào)用查找調(diào)用組件代碼片斷如下:
程序執(zhí)行過程中,客戶端應(yīng)用程序通過定時服務(wù)調(diào)用組件代碼片斷如下:
4.5 系統(tǒng)應(yīng)用
利用本系統(tǒng)可以進行多種樣式的潛艇作戰(zhàn)仿真,在仿真過程中,各功能組件供不同的仿真任務(wù)調(diào)用,也就是說,相同的功能模塊調(diào)用是同一個的功能組件,比如在進行潛艇魚雷攻擊作戰(zhàn)仿真中,所有實體(艦艇、潛艇、魚雷、誘餌等)運動調(diào)用的是同一個運動模型組件,所有的魚雷探測調(diào)用的也都是同一個魚雷探測組件,圖6是潛艇魚雷攻擊作戰(zhàn)仿真的界面截圖:
圖6 潛艇魚雷攻擊仿真界面截圖
為了適應(yīng)潛艇作戰(zhàn)不斷變化的情況,必須考慮模型的重用性和共享性,本文采用軟件工程領(lǐng)域最新研究成果,按照共享和重用的要求研究潛艇作戰(zhàn)模型的組件化實現(xiàn)技術(shù),以實現(xiàn)模型的重用性,有效提高了針對不同仿真任務(wù)的潛艇作戰(zhàn)仿真的靈活性。
[1]冷 寧,周 鍵.基于EJB的分布式系統(tǒng)的研究[J].合肥工業(yè)大學(xué)學(xué)報,2004,49(2):15-17.
[2]趙正業(yè).潛艇火控原理[M].北京:國防工業(yè)出版社,2003.
[3]陸銘華,王永潔.基于組件的反艦導(dǎo)彈作戰(zhàn)仿真系統(tǒng)研究[J].戰(zhàn)術(shù)導(dǎo)彈技術(shù),2012,23(1):27-31.
[4]郭傳福,夏惠誠.分布式作戰(zhàn)系統(tǒng)集成方案構(gòu)想[J].艦船電子工程,2001,21(1):81-85.
[5]王 偉,賈慧娟.基于MVC模式的分布式作戰(zhàn)指揮系統(tǒng)研究[J].微計算機信息,2007,4(23):10.
[6]盧志寧,宋瑾鈺.基于UML的面向?qū)ο笸ㄐ艆f(xié)議建模技術(shù)研究[J].現(xiàn)代電子技術(shù),2007,31(12):1.
[7]劉吉軍,李 剛,王宗亮.基于神經(jīng)網(wǎng)絡(luò)模型的潛射反航導(dǎo)彈作戰(zhàn)效能分析[J].四川兵工學(xué)報,2013,34(1):42-44.
Research of Distributed Submarine Warfare Simulation System Based on Component
WANG Yong-jie,LU Ming-hua,SHI Yang
(Navy Submarine College,Qingdao 266071,China)
This paper puts forward to develop distributed submarine warfare simulation system with Java EE/EJB component technology.Model component architecture is compartmentalized according to submarine warfare logic.The paper designs software structure of distributed submarine warfare simulation system,analyzes technology protocol of the system,and researches realization way of distributed submarine warfare simulation system.
component,submarine,warfare simulation,software structure
TP391.9
A
1002-0640(2014)09-0175-04
2013-06-05
2013-08-30
王永潔(1979- ),男,安徽人,博士后。研究方向:作戰(zhàn)仿真技術(shù)。