杨艾军,马胜辉,刘桂彬,高小敏
(1.解放军炮兵学院,安徽 合肥 230031;2.解放军75230部队,广东 韶关 312000)
未来的作战大都是信息化条件下的联合作战[1]。联合作战具有参战力量多元化、作战空间多维化、作战手段多样化等特点,导致联合作战仿真规模大,需要借助计算机网络进行分布式交互仿真,这就要求作战模型具有良好的重用性和互操作性。
“软件组件”(“组件”即“构件”)以其良好的可重用性展示了一种崭新的软件设计思路,以组件对象为中心的设计方法把硬件以芯片为中心的设计思想恰如其分地融合于软件的分析、设计与实现之中。本文采用COM组件技术进行基于“公共平台”的炮兵行动模型构件的开发,为联合作战仿真提供可“即插即用”的炮兵各级各类行动模型。基于构件开发的行动模型具有规范的军事需求、基础数据和建模方法的一体化等特点,能够实现联合作战仿真诸系统间的“互联、互通、互操作”;可解决模型的标准化、模型重用性、模型的维护和更新等多年来困扰建模人员的若干重要难题。
在联合作战中,炮兵部(分)队承担着各种各样的任务行动,其任务由一定逻辑关系的子任务行动构成,而各子任务行动又可具体化为炮兵基本行动序列。炮兵作战行动种类繁多、层次各异,为便于分析各种炮兵作战行动,可考虑对其实体行动进行分类描述。一般可分为两个层面:一个是任务层面或作战阶段层面,从任务层面分有:进攻战斗、防御战斗、特殊战斗,从作战阶段分有:战斗准备阶段、战斗实施阶段、战斗结束阶段。另一个是基本行动层面(动作层面),如机动、通信、侦察、开进/展开、占领发射阵地、占领观察所、射击、转移、撤出阵地等[2]。如图1所示为炮兵基本作战行动用例图,该用例图表明了一次基本的炮兵战斗行动包括开进/机动、通信、侦察、战斗部署、射击、转移、撤出阵地等内容,下面对相应的类分别进行描述。
作战行动模型是军事仿真模型的核心和基础,在联合作战仿真中,炮兵行动模型是其必不可少的组成部分。可组构炮兵作战行动建模的基本思路是:首先抽取出炮兵实体的最基本的作战行动,建立基本行动类库,而后通过调用库中基本行动类来完成所有炮兵作战行动,可理解为各种作战行动都是由一定序列的基本行动组成的。这样就实现了炮兵作战行动描述的构件化,可针对性地解决某类行动的描述方法问题。
为了实现最底层模型的可组构和复用,我们需要构建可组构的作战行动类库。作战行动类库是对作战实体基本行动层面上的描述,当然,基本行动只是个相对概念,它还可以包括紧密联系的一组动作的集合,可以将其封装在类里面,便于继承和调用。下面对炮兵基本行动类进行详细分析和设计[3]。
图1 炮兵基本作战行动用例图
首先,在对典型的炮兵作战行动进行分析的基础上,抽象和归纳炮兵行动中相同和相近的描述内容;其次,利用统一建模语言(UML)进行描述和分析,归纳和建立基本行动类及描述内容,最后,在此基础上构建炮兵基本行动类库。
作战行动类库是行动类的集合,涵盖了各种作战行动的描述,同时,各个行动类之间还有继承、聚集等关系,为此必须对类库结构进行精心设计,才能保证最大程度上实现对作战行动描述的方便性、重用性,便于实现基于类库模型驱动的实现。
类的设计应该根据炮兵所担负的主要作战任务和主要作战行动样式进行分析,可采用UML类图描述,抽象归纳出类的种类、数量和结构关系,在此基础上再进一步设计和实现类的具体内容,利用 StarUML(TM)5.0可自动生成类框架文件。下面给出炮兵基本作战行动类图,如图2所示。
图2 炮兵基本作战行动类图
从图2可看出,描述一个基本的炮兵战斗行动通常需要使用七个基本的类,即机动类、通信类、侦察类、部署类、射击类、转移类、撤出阵地类。其中,部署类封装了展开战斗队形、选择占领炮阵地、选择占领观察所等内容;射击类包含火力运用的相关内容,如炮火打击、炮火准备、炮火支援、炮火掩护等使用时节。在其更为具体的作战行动,如:对野战阵地防御之敌进攻战斗、对机动防御之敌的进攻战斗、防御战斗等的描述过程中,也离不开这七个基本行动类,这样我们将其继承到一个更为一般性描述的行动基类,其它行动描述直接在此基础上继承即可。
通过综合对各作战实体完成各类作战任务的行动用例分析,然后再对行动类进行分析综合,可以得到总的类库结构,图3为炮兵作战行动类库结构示意图。
图3 炮兵作战行动类库结构示意图
构建作战行动模型服务构件库是为了实现作战行动模型在构件层面上的可组构。这里的服务构件是特指某一类作战实体封装了作战行动类库中特定的类,具备了对一定行动过程描述的所有方法或者是封装了比较独立的特定行动过程,并以标准服务接口进行公布,在构件的基础上可以实现按作战实体分类进行作战行动描述的可组构。炮兵作战实体一般可分为炮兵群、炮兵营、炮兵连、单炮四级,对炮兵群、营、连、单炮作战实体分别封装上述的基本行动类,形成封装了基本作战行动的一类作战实体的构件。构件的调用是通过其定义良好的接口来实现,用户并不需要考虑其实现的过程,因此在进行作战行动模拟时,只需要根据作战实体和作战行动内容动态调用相应的构件就可以初步完成模型的组装。
为了更好地实现重用,我们将作战行动类库进一步封装,实现各种功能构件,定义明确的接口和调用规范。比如不同作战级别部队机动,可使用相同的机动模型构件服务,或通过重载函数的方式设置不同的参数来适应不同的仿真需求。另外,还要构建模型运行的其他公共服务构件,如数据库访问Agent组件、态势显示、标图、文电、地形等基础功能构件来提供支撑服务。
“公共平台”是整个联合作战仿真系统的公共部分,既不是一个具体的功能系统,也不提供实际的应用操作功能,但它提供各个系统的基础功能,提供形成具体应用操作所需的基本函数。进一步明确地讲,“公共平台”与具体应用的关系是这样的:平台提供基础,“搭载”作为具体应用的程序“组件”构成具体的系统。作为“组件”的任何一个应用程序均不能独立运行,平台虽然可以独立运行,但不提供完整的具体应用。在保证“组件”接口不变的情况下,组件的功能更新不需要平台做任何改动,同样平台升级也是如此。它作为一个通用技术框架集成了“HLA/RTI”和“Socket”组件,又能解决了互联所需的“通信”与“交互”问题[5]。
基于“公共平台”的炮兵作战行动模型构件可按上述思路进行设计,但是各炮兵行动构件必须彼此独立运行,确保其封装性强,构件相当于一个黑匣子,在平台中以类的形式进行封装,用户为该类定义一个对象实例即可调用该构件的功能服务。“公共平台”提供了一些基础功能构件,我们在进行行动构件设计时,需明确调用的各种服务,如炮兵营兵力机动构件设计需要用到平台的很多服务,其功能结构如图 4所示。
COM是一种先进的软件建模思想,COM技术的产品—ActiveX控件和OLE组件是搭建高层体系结构HLA的基础之一。
按COM标准建立的组件对象模型就是COM组件,它由可执行代码组成,以动态链接库的形式发布,遵循COM规范编写的组件能满足组件架构的所有需要。
图4 炮兵营兵力机动构件功能结构图
COM组件具有平台和语言的无关性、接口和实现分离以及支持“即插即用”(Plug and Play)等特点,是支持软件复用的核心技术。COM组件程序的编写采用类的多级继承的方式来最终生成对象,因此,源代码中关于类的描述代码可以被程序员直接使用或较小地改动而使用,实现代码级重用。同时它还可实现接口级重用和产品级重用。
组件技术[4]是用装配可重用软件组件的方法来构造应用程序,是由面向对象技术发展而来的,它不仅具备对象的特性,而且还具有许多有益的扩充。与传统的模块调用不同,组件调用采用消息机制将构件对象动态链接在一起,体现了组件之间的并行和分布式结构;它封装隐藏了组件的内部数据、操作细节,组件之间通过确定的接口进行通信,组件内部实现的变动不会影响到系统的其它部分。组件可以在跨越地址空间、网络、语言、操作系统的异构环境下被调用,或和其它组件协同工作,或组合构造应用,互操作性好。因此,仿真对象组件化不但解决了仿真对象的重用和难于维护的问题,还增强了仿真对象在异构平台上的生存能力。
任何仿真系统都可被分为公共部分和专用部分,对公共部分应选择已有的通用框架的方式来实现,用于分析和解决仿真系统中的共同问题。对专用部分可依据现有的标准和模板,以功能部件(ActiveX控件和OLE组件)的方式来实现,用于分析和解决仿真系统中的特殊问题,这有事半功倍的好处。
它的技术方法:“平台”+“构件”。“构件”,组件、控件、插件、动态库等需要搭载在其他程序上才能运行的功能程序(COM、DLL);“平台”,具备相应基本功能,能够搭载组件运行,支持组件更新的框架性应用程序(EXE)。
它的技术路线:“先互联,后系统”。首先利用“公共平台”形成互联的条件和基础,然后开发相应的功能构件搭载后形成系统。
其基本开发过程如图5所示。
图5 基于“公共平台”的炮兵行动模型构件开发流程图
通过“公共平台”构件向导生成的构件工程项目结构与生成的MFC DLL工程项目结构基本一致,但具有两个方面的特性,一是即插即用特性,二是具有“公共平台”Windows资源和消息的共享机制。其中,Windows资源和消息的共享机制是用户基于“公共平台”进行二次开发的基础,构件表现出来的即插即用特性也是通过Windows资源和消息共享机制来实现的。
构件技术越来越广泛地应用于军事仿真领域,文中可组构行动建模方法更是构件技术思想的缩影,建立仿真构件或组件是实现互操作和可重用的基本手段和途径。而“构件+平台”的系统开发模式也成为了主流,当前,很多作战仿真模型都是在 “公共平台”下进行开发的,这样各军兵种模型都可以以构件的形式加载到平台上去运行,实现真正的联合作战仿真。
[1]曾苏南,李银年. 一体化联合作战专题研究[M].北京:军事科学出版社,2004.
[2]赵天翔,等. 炮兵战术[M].北京:解放军出版社,2001.06.
[3]曹占广,马亚平.组构的作战行动建模研究[J],系统仿真学报[J].2007,19(7):1421-1423.
[4]谢卫平,等. 基于构件技术的 HLA 仿真,计算机工程与应用[J],2002.03.115.
[5]马亚平,李元. 一体化联合作战训练信息系统公共平台系统开发手册[R]. 2007.
[6]张野鹏. 军用仿真模型控件技术[M].北京:解放军出版社,2004.