王永洁,陆铭华,史 扬
(海军潜艇学院,山东 青岛 266071)
基于组件技术的分布式潜艇作战仿真系统
王永洁,陆铭华,史 扬
(海军潜艇学院,山东 青岛 266071)
提出采用JavaEE/EJB组件技术开发分布式潜艇作战仿真系统,根据潜艇作战机理,建立了分布式潜艇作战仿真模型体系结构,设计了分布式潜艇作战仿真系统的软件架构,分析了系统开发过程中采用的技术协议,并研究了基于组件技术的分布式潜艇作战仿真系统实现方法。
组件,潜艇,作战仿真,软件架构
面向对象技术和软件构件技术的兴起,出现了以JavaEE/EJB、DNA/COM和CORBA为代表的分布式对象/构件计算模型,使用上述技术的应用服务器中间件涵盖了传统中间件的功能,完全支持三层/多层的软件体系结构发展和软件复用,逐渐成为中间件产品的主流。随着构件技术进一步发展,JavaEE/EJB组件融合了CORBA等技术体系的优点,目前成为构建分布式计算平台的主流框架。利用JavaEE/EJB组件技术开发分布式潜艇作战系统可以有效解决仿真模型利用率低的问题。
当前软件技术的发展正朝着组件化方向发展,其目标是在解决软件生产率和软件质量问题的同时更加关注软件的灵活性和可用性,采用软件组件技术构建分布式系统软件结构的优势如下:
(1)提高软件重用性及共享性
同一个软件功能只需要实现一次,之后可提供给不同设备调用,从而实现仿真模型软件组件(代码)的唯一,既解决了模型重复开发及重复部署问题,又解决了不同领域分布开发时功能不一致的现实问题。
(2)软件易于扩展维护
采用分层开发的思想,将表现层(人机界面)、控制层(仿真应用流程控制)与核心模型层分离,易于各自的升级维护。
基于JavaEE/EJB应用服务器的分布式软件体系如下页图1所示。
图1 基于Java EE/EJB的软件体系结构
图1中应用服务器的核心是EJB容器,它部署并管理了各种应用程序组件,接受各类客户端(应用层)的服务请求[1],并将服务结果返回客户端,从而实现组件共享的服务。
在分析了影响潜艇作战仿真模型体系组成的基础上,按照功能和地位的不同,潜艇作战仿真模型体系中所包括的各类模型可划分为[2]:基础类模型、装备类模型、反潜装备类模型、武器模型、平台(兵力)模型、行为模型、底层的环境数据库、装备参数数据库以及兵力参数数据库等,具体的模型体系层次如图2所示。对模型进行层次结构划分不仅可以有效降低系统分析和建模的复杂度[3],而且分解后的细粒度模型保证了模型针对特定问题进行研究的专业性,有利于提高模型的精度。
图2 潜艇作战仿真模型体系结构图
图2中,各种类别模型组件的组成及所能完成功能如下:
(1)基础类模型提供了其他模型正常运行所需的信息,如水声传播模型是声纳探测模型以及鱼雷/水声对抗武器模型的基础模型。
(2)装备类模型根据潜艇组成的系统/装备建立了相对应的系统/装备模型,建模的依据是装备的性能和工作原理,例如:传感器的战技指标,潜艇操纵运动规律等。针对各种主要系统/装备建立模型,细化了潜艇作战仿真过程的细节,提高了潜艇作战仿真的可信度。
(3)反潜装备类模型主要由反潜兵力搭载的反潜器材模型组成,例如:由反潜飞机装备的吊放声纳、反潜水面舰艇装备的拖曳线列阵声纳等模型,这些模型是整个反潜兵力体系的基础,也是潜艇与其他兵力进行对抗的重要组成部分。
(4)武器模型主要包括潜艇和其他反潜兵力所装备武器的相关模型,包括鱼雷、导弹的弹道模型、各种武器进行对抗的过程模型,以及兵力之间进行水声对抗和电子对抗的过程模型。
(5)平台模型主要由潜艇兵力、水面舰艇兵力、反潜飞机、反潜直升机兵力模型、海底基阵模型和侦查卫星模型组成。
(6)行为模型主要描述潜艇作战仿真中仿真兵力需要根据当前的态势作出正确的行为动作。
(7)环境数据库的主要作用是模拟潜艇作战战场环境,包括大气环境中的气温、湿度、能见度和云层厚度等因素;海洋环境中的潮流、涌浪、盐度、温度以及声速梯度等因素;地理环境中的海底地貌、地层高度等因素。
(8)装备参数数据库封装了所有装备的性能参数数据,为模型层中的装备类模型提供数据支撑。例如,鱼雷武器装备模型在生成实体对象时,需要调用装备参数数据库中的相关数据,包括鱼雷的导引方
式、自导开机距离、最大/小巡航速度、最大/小航行深度等。
(9)兵力参数数据库封装了所有兵力的性能参数数据,为模型层中的兵力类模型提供数据支撑。例如:兵力类模型在生成实体对象时,需要调用兵力参数数据库中的相关数据,包括兵力类型、长/宽/高、排水量、吃水深度、最大/小巡航速度等。
上述模型体系中模型模块具有以下特点:环境模型统一由底层环境数据库支撑,将数据与模型实现了分离,兵力和装备性能参数与具体模型实现了分离。在基于组件的建模思想下,可以最大程度地实现模型的重用和模型的可重配置。
3.1 作战仿真系统软件架构
基于JavaEE/EJB组件技术可以构建功能分布及服务分层的潜艇作战软件架构如图3所示。
图3 潜艇作战软件层次关系图
功能分布是指不同系统的功能台软件实现其独有的功能。例如:指控功能台的决策功能,武器功能台的武器操作控制功能等。服务分层有两层含义:一是指对于一些公共的功能通过组件技术实现形成可以在全系统共享的软件模块;二是指对于不同类型的软件模块通过划分层次建立相互之间的调用结构。这些都有利于提高开发效率,节省计算资源,提高系统可维护性。
图3中,3层所扮演的角色各不相同:应用层的应用程序代表了各分系统操作设备(如指控系统功能台、声纳功能台、雷达功能台等),它们是人机交互界面,负责接受用户的输入和操作、数据输出显示;服务层是由基于组件标准构建起来的软件功能实现,组件按照低耦合高内聚的原则划分,根据其服务类型不同,组件形成了3个层次。高层需要底层组件提供服务[4],从而构成了模块化强,可重构的服务层,数据层提供了公共数据存储服务。
由于JavaEE/EJB支持多种客户层编程开发模式,使得应用层的客户软件可以是功能简单的B/S型程序,也可以是功能复杂的C/S型程序。从而大大丰富了软件开发模式,可满足不同岗位,不同系统使用人员的需求。
3.2 作战系统软件有关技术协议
JavaEE软件技术框架有一系列核心技术规范组成,例如 EJB、CORBA、RMI、JSP、Java Servlet、JavaBean、JDBC、XML、JMS等。其中与本系统相关的协议主要有:
(1)EJB(Enterprise JavaBeans)规范[5]
EJB不是一个具体的产品,而是一个Java服务器端组件开发的规范,软件厂商根据它来实现EJB服务器。EJB规范在简化分布式应用程序开发复杂性方面做了大量的工作,所以EJB程序员不必太担心事务处理、多线程、资源管理等方面的问题,可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。EJB的使用增强了整个系统程序的可靠性、可管理性和可移植性。
(2)Java RMI-IIOP
RMI(Remote Method Invocation远程方法调用)是Java的网络分布式应用系统的核心解决方案之一。它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。
RMI应用程序通常包括两个独立的程序:服务器程序和客户机程序。典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。而典型的客户机程序则从服务器中得到一个或多个远程对象的引用,然后调用远程对象的方法,RMI为服务器和客户机进行通信和信息传递提供了一种机制。
(3)目录服务和JNDI
目录服务可以理解为名称服务的一个扩展,它允许在服务中的各项拥有自己的属性。目录服务中的信息采用层次模型来表示。JNDI为多种目录服务提供了一种标准API[6]。
3.3 组件功能分配与调用关系
编写Java RMI分布式应用程序的步骤主要包括以下几步:
(1)将远程类的功能定义为Java接口,在Java中,远程对象是实现远程接口的类的实例。在远程接口中声明每个要远程调用的方法。除了所有应用程序特定的异常之外,每个方法还必须抛出java. rmi.RemoteException(或者 RemoteExcepition的超类)异常。任何作为参数或返回值传送的远程对象的数据类型必须声明为远程接口类型,而不是实现
类[7]。
(2)编写和实现服务器类。该类是实现(1)中定义的远程接口。所以在该类中至少要声明实现一个远程接口,并且必须具有构造方法。在该类中还要实现远程接口中所声明的各个远程方法。
(3)编写使用远程服务的客户机程序。在该类中使用java.rmi.Naming中的lookup()方法获得对远程对象的引用,依据需要调用该引用的远程方法,其调用方式和对本地对象方法的调用相同。
(4)使用javac编译远程接口类,远程接口实现类和客户机程序。使用rmic编译器生成实现类的stub和skeleton。
(5)启动RMI注册服务程序rmi-registry。
(6)启动服务器端程序。
(7)启动客户机程序。
4.1 系统结构配置
分布式潜艇作战仿真系统软件结构如图4所示。
图4 系统软件分层结构示意图
图4中,由于3层所扮演的角色各不相同,其软硬件配置各不相同:
(1)应用层:硬件采用通用计算机,软件采用操作系统WindowsXP、Java虚拟机JVM,应用程序集成开发环境Netbeans。
(2)服务层:硬件采用应用服务器(高性能通用计算机),软件采用操作系统WindowsXP、Java虚拟机JVM,应用服务器Glassfish。
(3)数据层:硬件采用数据库服务器(通用计算机),软件采用操作系统WindowsXP,数据库系统软件MySQL。
系统硬件环境如图5所示。
图5 仿真系统硬件组成
4.2 服务器端组件开发部署
根据功能设计服务器端的应用程序,即设计各种可以被客户端调用的功能组件。过程如下:
(1)在Netbeans开发环境下选择“企业应用程序”类型,生成EJB工程;
(2)在EJB工程下开发各种组件,包含前文介绍的潜艇作战仿真模型体系构成中的所有模型组件;
(3)将EJB工程部署到Glassfish应用程序服务器。
4.3 数据库设计
采用MySQL,该数据库为开源软件,由于得到了广泛的使用和固定社区维护改进,具有较高性能和可靠性。数据库分为兵力数据库、武器装备参数数据库和水声环境数据库。
4.4 客户端(应用程序端)组件调用
客户端应用程序调用服务器端的EJB组件时,只需要了解组件的功能和调用接口,其实现细节被封装。客户端应用程序通过统一规范的JNDI服务查找并使用组件,而服务器端EJB容器则负责组件的创建/删除、钝化/激活、服务的提供等生命周期的全过程管理。
客户端应用程序调用查找调用组件代码片断如下:
程序执行过程中,客户端应用程序通过定时服务调用组件代码片断如下:
4.5 系统应用
利用本系统可以进行多种样式的潜艇作战仿真,在仿真过程中,各功能组件供不同的仿真任务调用,也就是说,相同的功能模块调用是同一个的功能组件,比如在进行潜艇鱼雷攻击作战仿真中,所有实体(舰艇、潜艇、鱼雷、诱饵等)运动调用的是同一个运动模型组件,所有的鱼雷探测调用的也都是同一个鱼雷探测组件,图6是潜艇鱼雷攻击作战仿真的界面截图:
图6 潜艇鱼雷攻击仿真界面截图
为了适应潜艇作战不断变化的情况,必须考虑模型的重用性和共享性,本文采用软件工程领域最新研究成果,按照共享和重用的要求研究潜艇作战模型的组件化实现技术,以实现模型的重用性,有效提高了针对不同仿真任务的潜艇作战仿真的灵活性。
[1]冷 宁,周 键.基于EJB的分布式系统的研究[J].合肥工业大学学报,2004,49(2):15-17.
[2]赵正业.潜艇火控原理[M].北京:国防工业出版社,2003.
[3]陆铭华,王永洁.基于组件的反舰导弹作战仿真系统研究[J].战术导弹技术,2012,23(1):27-31.
[4]郭传福,夏惠诚.分布式作战系统集成方案构想[J].舰船电子工程,2001,21(1):81-85.
[5]王 伟,贾慧娟.基于MVC模式的分布式作战指挥系统研究[J].微计算机信息,2007,4(23):10.
[6]卢志宁,宋瑾钰.基于UML的面向对象通信协议建模技术研究[J].现代电子技术,2007,31(12):1.
[7]刘吉军,李 刚,王宗亮.基于神经网络模型的潜射反航导弹作战效能分析[J].四川兵工学报,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- ),男,安徽人,博士后。研究方向:作战仿真技术。