楊艾軍,馬勝輝,劉桂彬,高小敏
(1.解放軍炮兵學(xué)院,安徽 合肥 230031;2.解放軍75230部隊(duì),廣東 韶關(guān) 312000)
未來的作戰(zhàn)大都是信息化條件下的聯(lián)合作戰(zhàn)[1]。聯(lián)合作戰(zhàn)具有參戰(zhàn)力量多元化、作戰(zhàn)空間多維化、作戰(zhàn)手段多樣化等特點(diǎn),導(dǎo)致聯(lián)合作戰(zhàn)仿真規(guī)模大,需要借助計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行分布式交互仿真,這就要求作戰(zhàn)模型具有良好的重用性和互操作性。
“軟件組件”(“組件”即“構(gòu)件”)以其良好的可重用性展示了一種嶄新的軟件設(shè)計(jì)思路,以組件對象為中心的設(shè)計(jì)方法把硬件以芯片為中心的設(shè)計(jì)思想恰如其分地融合于軟件的分析、設(shè)計(jì)與實(shí)現(xiàn)之中。本文采用COM組件技術(shù)進(jìn)行基于“公共平臺”的炮兵行動(dòng)模型構(gòu)件的開發(fā),為聯(lián)合作戰(zhàn)仿真提供可“即插即用”的炮兵各級各類行動(dòng)模型?;跇?gòu)件開發(fā)的行動(dòng)模型具有規(guī)范的軍事需求、基礎(chǔ)數(shù)據(jù)和建模方法的一體化等特點(diǎn),能夠?qū)崿F(xiàn)聯(lián)合作戰(zhàn)仿真諸系統(tǒng)間的“互聯(lián)、互通、互操作”;可解決模型的標(biāo)準(zhǔn)化、模型重用性、模型的維護(hù)和更新等多年來困擾建模人員的若干重要難題。
在聯(lián)合作戰(zhàn)中,炮兵部(分)隊(duì)承擔(dān)著各種各樣的任務(wù)行動(dòng),其任務(wù)由一定邏輯關(guān)系的子任務(wù)行動(dòng)構(gòu)成,而各子任務(wù)行動(dòng)又可具體化為炮兵基本行動(dòng)序列。炮兵作戰(zhàn)行動(dòng)種類繁多、層次各異,為便于分析各種炮兵作戰(zhàn)行動(dòng),可考慮對其實(shí)體行動(dòng)進(jìn)行分類描述。一般可分為兩個(gè)層面:一個(gè)是任務(wù)層面或作戰(zhàn)階段層面,從任務(wù)層面分有:進(jìn)攻戰(zhàn)斗、防御戰(zhàn)斗、特殊戰(zhàn)斗,從作戰(zhàn)階段分有:戰(zhàn)斗準(zhǔn)備階段、戰(zhàn)斗實(shí)施階段、戰(zhàn)斗結(jié)束階段。另一個(gè)是基本行動(dòng)層面(動(dòng)作層面),如機(jī)動(dòng)、通信、偵察、開進(jìn)/展開、占領(lǐng)發(fā)射陣地、占領(lǐng)觀察所、射擊、轉(zhuǎn)移、撤出陣地等[2]。如圖1所示為炮兵基本作戰(zhàn)行動(dòng)用例圖,該用例圖表明了一次基本的炮兵戰(zhàn)斗行動(dòng)包括開進(jìn)/機(jī)動(dòng)、通信、偵察、戰(zhàn)斗部署、射擊、轉(zhuǎn)移、撤出陣地等內(nèi)容,下面對相應(yīng)的類分別進(jìn)行描述。
作戰(zhàn)行動(dòng)模型是軍事仿真模型的核心和基礎(chǔ),在聯(lián)合作戰(zhàn)仿真中,炮兵行動(dòng)模型是其必不可少的組成部分??山M構(gòu)炮兵作戰(zhàn)行動(dòng)建模的基本思路是:首先抽取出炮兵實(shí)體的最基本的作戰(zhàn)行動(dòng),建立基本行動(dòng)類庫,而后通過調(diào)用庫中基本行動(dòng)類來完成所有炮兵作戰(zhàn)行動(dòng),可理解為各種作戰(zhàn)行動(dòng)都是由一定序列的基本行動(dòng)組成的。這樣就實(shí)現(xiàn)了炮兵作戰(zhàn)行動(dòng)描述的構(gòu)件化,可針對性地解決某類行動(dòng)的描述方法問題。
為了實(shí)現(xiàn)最底層模型的可組構(gòu)和復(fù)用,我們需要構(gòu)建可組構(gòu)的作戰(zhàn)行動(dòng)類庫。作戰(zhàn)行動(dòng)類庫是對作戰(zhàn)實(shí)體基本行動(dòng)層面上的描述,當(dāng)然,基本行動(dòng)只是個(gè)相對概念,它還可以包括緊密聯(lián)系的一組動(dòng)作的集合,可以將其封裝在類里面,便于繼承和調(diào)用。下面對炮兵基本行動(dòng)類進(jìn)行詳細(xì)分析和設(shè)計(jì)[3]。
圖1 炮兵基本作戰(zhàn)行動(dòng)用例圖
首先,在對典型的炮兵作戰(zhàn)行動(dòng)進(jìn)行分析的基礎(chǔ)上,抽象和歸納炮兵行動(dòng)中相同和相近的描述內(nèi)容;其次,利用統(tǒng)一建模語言(UML)進(jìn)行描述和分析,歸納和建立基本行動(dòng)類及描述內(nèi)容,最后,在此基礎(chǔ)上構(gòu)建炮兵基本行動(dòng)類庫。
作戰(zhàn)行動(dòng)類庫是行動(dòng)類的集合,涵蓋了各種作戰(zhàn)行動(dòng)的描述,同時(shí),各個(gè)行動(dòng)類之間還有繼承、聚集等關(guān)系,為此必須對類庫結(jié)構(gòu)進(jìn)行精心設(shè)計(jì),才能保證最大程度上實(shí)現(xiàn)對作戰(zhàn)行動(dòng)描述的方便性、重用性,便于實(shí)現(xiàn)基于類庫模型驅(qū)動(dòng)的實(shí)現(xiàn)。
類的設(shè)計(jì)應(yīng)該根據(jù)炮兵所擔(dān)負(fù)的主要作戰(zhàn)任務(wù)和主要作戰(zhàn)行動(dòng)樣式進(jìn)行分析,可采用UML類圖描述,抽象歸納出類的種類、數(shù)量和結(jié)構(gòu)關(guān)系,在此基礎(chǔ)上再進(jìn)一步設(shè)計(jì)和實(shí)現(xiàn)類的具體內(nèi)容,利用 StarUML(TM)5.0可自動(dòng)生成類框架文件。下面給出炮兵基本作戰(zhàn)行動(dòng)類圖,如圖2所示。
圖2 炮兵基本作戰(zhàn)行動(dòng)類圖
從圖2可看出,描述一個(gè)基本的炮兵戰(zhàn)斗行動(dòng)通常需要使用七個(gè)基本的類,即機(jī)動(dòng)類、通信類、偵察類、部署類、射擊類、轉(zhuǎn)移類、撤出陣地類。其中,部署類封裝了展開戰(zhàn)斗隊(duì)形、選擇占領(lǐng)炮陣地、選擇占領(lǐng)觀察所等內(nèi)容;射擊類包含火力運(yùn)用的相關(guān)內(nèi)容,如炮火打擊、炮火準(zhǔn)備、炮火支援、炮火掩護(hù)等使用時(shí)節(jié)。在其更為具體的作戰(zhàn)行動(dòng),如:對野戰(zhàn)陣地防御之?dāng)尺M(jìn)攻戰(zhàn)斗、對機(jī)動(dòng)防御之?dāng)车倪M(jìn)攻戰(zhàn)斗、防御戰(zhàn)斗等的描述過程中,也離不開這七個(gè)基本行動(dòng)類,這樣我們將其繼承到一個(gè)更為一般性描述的行動(dòng)基類,其它行動(dòng)描述直接在此基礎(chǔ)上繼承即可。
通過綜合對各作戰(zhàn)實(shí)體完成各類作戰(zhàn)任務(wù)的行動(dòng)用例分析,然后再對行動(dòng)類進(jìn)行分析綜合,可以得到總的類庫結(jié)構(gòu),圖3為炮兵作戰(zhàn)行動(dòng)類庫結(jié)構(gòu)示意圖。
圖3 炮兵作戰(zhàn)行動(dòng)類庫結(jié)構(gòu)示意圖
構(gòu)建作戰(zhàn)行動(dòng)模型服務(wù)構(gòu)件庫是為了實(shí)現(xiàn)作戰(zhàn)行動(dòng)模型在構(gòu)件層面上的可組構(gòu)。這里的服務(wù)構(gòu)件是特指某一類作戰(zhàn)實(shí)體封裝了作戰(zhàn)行動(dòng)類庫中特定的類,具備了對一定行動(dòng)過程描述的所有方法或者是封裝了比較獨(dú)立的特定行動(dòng)過程,并以標(biāo)準(zhǔn)服務(wù)接口進(jìn)行公布,在構(gòu)件的基礎(chǔ)上可以實(shí)現(xiàn)按作戰(zhàn)實(shí)體分類進(jìn)行作戰(zhàn)行動(dòng)描述的可組構(gòu)。炮兵作戰(zhàn)實(shí)體一般可分為炮兵群、炮兵營、炮兵連、單炮四級,對炮兵群、營、連、單炮作戰(zhàn)實(shí)體分別封裝上述的基本行動(dòng)類,形成封裝了基本作戰(zhàn)行動(dòng)的一類作戰(zhàn)實(shí)體的構(gòu)件。構(gòu)件的調(diào)用是通過其定義良好的接口來實(shí)現(xiàn),用戶并不需要考慮其實(shí)現(xiàn)的過程,因此在進(jìn)行作戰(zhàn)行動(dòng)模擬時(shí),只需要根據(jù)作戰(zhàn)實(shí)體和作戰(zhàn)行動(dòng)內(nèi)容動(dòng)態(tài)調(diào)用相應(yīng)的構(gòu)件就可以初步完成模型的組裝。
為了更好地實(shí)現(xiàn)重用,我們將作戰(zhàn)行動(dòng)類庫進(jìn)一步封裝,實(shí)現(xiàn)各種功能構(gòu)件,定義明確的接口和調(diào)用規(guī)范。比如不同作戰(zhàn)級別部隊(duì)機(jī)動(dòng),可使用相同的機(jī)動(dòng)模型構(gòu)件服務(wù),或通過重載函數(shù)的方式設(shè)置不同的參數(shù)來適應(yīng)不同的仿真需求。另外,還要構(gòu)建模型運(yùn)行的其他公共服務(wù)構(gòu)件,如數(shù)據(jù)庫訪問Agent組件、態(tài)勢顯示、標(biāo)圖、文電、地形等基礎(chǔ)功能構(gòu)件來提供支撐服務(wù)。
“公共平臺”是整個(gè)聯(lián)合作戰(zhàn)仿真系統(tǒng)的公共部分,既不是一個(gè)具體的功能系統(tǒng),也不提供實(shí)際的應(yīng)用操作功能,但它提供各個(gè)系統(tǒng)的基礎(chǔ)功能,提供形成具體應(yīng)用操作所需的基本函數(shù)。進(jìn)一步明確地講,“公共平臺”與具體應(yīng)用的關(guān)系是這樣的:平臺提供基礎(chǔ),“搭載”作為具體應(yīng)用的程序“組件”構(gòu)成具體的系統(tǒng)。作為“組件”的任何一個(gè)應(yīng)用程序均不能獨(dú)立運(yùn)行,平臺雖然可以獨(dú)立運(yùn)行,但不提供完整的具體應(yīng)用。在保證“組件”接口不變的情況下,組件的功能更新不需要平臺做任何改動(dòng),同樣平臺升級也是如此。它作為一個(gè)通用技術(shù)框架集成了“HLA/RTI”和“Socket”組件,又能解決了互聯(lián)所需的“通信”與“交互”問題[5]。
基于“公共平臺”的炮兵作戰(zhàn)行動(dòng)模型構(gòu)件可按上述思路進(jìn)行設(shè)計(jì),但是各炮兵行動(dòng)構(gòu)件必須彼此獨(dú)立運(yùn)行,確保其封裝性強(qiáng),構(gòu)件相當(dāng)于一個(gè)黑匣子,在平臺中以類的形式進(jìn)行封裝,用戶為該類定義一個(gè)對象實(shí)例即可調(diào)用該構(gòu)件的功能服務(wù)?!肮财脚_”提供了一些基礎(chǔ)功能構(gòu)件,我們在進(jìn)行行動(dòng)構(gòu)件設(shè)計(jì)時(shí),需明確調(diào)用的各種服務(wù),如炮兵營兵力機(jī)動(dòng)構(gòu)件設(shè)計(jì)需要用到平臺的很多服務(wù),其功能結(jié)構(gòu)如圖 4所示。
COM是一種先進(jìn)的軟件建模思想,COM技術(shù)的產(chǎn)品—ActiveX控件和OLE組件是搭建高層體系結(jié)構(gòu)HLA的基礎(chǔ)之一。
按COM標(biāo)準(zhǔn)建立的組件對象模型就是COM組件,它由可執(zhí)行代碼組成,以動(dòng)態(tài)鏈接庫的形式發(fā)布,遵循COM規(guī)范編寫的組件能滿足組件架構(gòu)的所有需要。
圖4 炮兵營兵力機(jī)動(dòng)構(gòu)件功能結(jié)構(gòu)圖
COM組件具有平臺和語言的無關(guān)性、接口和實(shí)現(xiàn)分離以及支持“即插即用”(Plug and Play)等特點(diǎn),是支持軟件復(fù)用的核心技術(shù)。COM組件程序的編寫采用類的多級繼承的方式來最終生成對象,因此,源代碼中關(guān)于類的描述代碼可以被程序員直接使用或較小地改動(dòng)而使用,實(shí)現(xiàn)代碼級重用。同時(shí)它還可實(shí)現(xiàn)接口級重用和產(chǎn)品級重用。
組件技術(shù)[4]是用裝配可重用軟件組件的方法來構(gòu)造應(yīng)用程序,是由面向?qū)ο蠹夹g(shù)發(fā)展而來的,它不僅具備對象的特性,而且還具有許多有益的擴(kuò)充。與傳統(tǒng)的模塊調(diào)用不同,組件調(diào)用采用消息機(jī)制將構(gòu)件對象動(dòng)態(tài)鏈接在一起,體現(xiàn)了組件之間的并行和分布式結(jié)構(gòu);它封裝隱藏了組件的內(nèi)部數(shù)據(jù)、操作細(xì)節(jié),組件之間通過確定的接口進(jìn)行通信,組件內(nèi)部實(shí)現(xiàn)的變動(dòng)不會影響到系統(tǒng)的其它部分。組件可以在跨越地址空間、網(wǎng)絡(luò)、語言、操作系統(tǒng)的異構(gòu)環(huán)境下被調(diào)用,或和其它組件協(xié)同工作,或組合構(gòu)造應(yīng)用,互操作性好。因此,仿真對象組件化不但解決了仿真對象的重用和難于維護(hù)的問題,還增強(qiáng)了仿真對象在異構(gòu)平臺上的生存能力。
任何仿真系統(tǒng)都可被分為公共部分和專用部分,對公共部分應(yīng)選擇已有的通用框架的方式來實(shí)現(xiàn),用于分析和解決仿真系統(tǒng)中的共同問題。對專用部分可依據(jù)現(xiàn)有的標(biāo)準(zhǔn)和模板,以功能部件(ActiveX控件和OLE組件)的方式來實(shí)現(xiàn),用于分析和解決仿真系統(tǒng)中的特殊問題,這有事半功倍的好處。
它的技術(shù)方法:“平臺”+“構(gòu)件”?!皹?gòu)件”,組件、控件、插件、動(dòng)態(tài)庫等需要搭載在其他程序上才能運(yùn)行的功能程序(COM、DLL);“平臺”,具備相應(yīng)基本功能,能夠搭載組件運(yùn)行,支持組件更新的框架性應(yīng)用程序(EXE)。
它的技術(shù)路線:“先互聯(lián),后系統(tǒng)”。首先利用“公共平臺”形成互聯(lián)的條件和基礎(chǔ),然后開發(fā)相應(yīng)的功能構(gòu)件搭載后形成系統(tǒng)。
其基本開發(fā)過程如圖5所示。
圖5 基于“公共平臺”的炮兵行動(dòng)模型構(gòu)件開發(fā)流程圖
通過“公共平臺”構(gòu)件向?qū)傻臉?gòu)件工程項(xiàng)目結(jié)構(gòu)與生成的MFC DLL工程項(xiàng)目結(jié)構(gòu)基本一致,但具有兩個(gè)方面的特性,一是即插即用特性,二是具有“公共平臺”Windows資源和消息的共享機(jī)制。其中,Windows資源和消息的共享機(jī)制是用戶基于“公共平臺”進(jìn)行二次開發(fā)的基礎(chǔ),構(gòu)件表現(xiàn)出來的即插即用特性也是通過Windows資源和消息共享機(jī)制來實(shí)現(xiàn)的。
構(gòu)件技術(shù)越來越廣泛地應(yīng)用于軍事仿真領(lǐng)域,文中可組構(gòu)行動(dòng)建模方法更是構(gòu)件技術(shù)思想的縮影,建立仿真構(gòu)件或組件是實(shí)現(xiàn)互操作和可重用的基本手段和途徑。而“構(gòu)件+平臺”的系統(tǒng)開發(fā)模式也成為了主流,當(dāng)前,很多作戰(zhàn)仿真模型都是在 “公共平臺”下進(jìn)行開發(fā)的,這樣各軍兵種模型都可以以構(gòu)件的形式加載到平臺上去運(yùn)行,實(shí)現(xiàn)真正的聯(lián)合作戰(zhàn)仿真。
[1]曾蘇南,李銀年. 一體化聯(lián)合作戰(zhàn)專題研究[M].北京:軍事科學(xué)出版社,2004.
[2]趙天翔,等. 炮兵戰(zhàn)術(shù)[M].北京:解放軍出版社,2001.06.
[3]曹占廣,馬亞平.組構(gòu)的作戰(zhàn)行動(dòng)建模研究[J],系統(tǒng)仿真學(xué)報(bào)[J].2007,19(7):1421-1423.
[4]謝衛(wèi)平,等. 基于構(gòu)件技術(shù)的 HLA 仿真,計(jì)算機(jī)工程與應(yīng)用[J],2002.03.115.
[5]馬亞平,李元. 一體化聯(lián)合作戰(zhàn)訓(xùn)練信息系統(tǒng)公共平臺系統(tǒng)開發(fā)手冊[R]. 2007.
[6]張野鵬. 軍用仿真模型控件技術(shù)[M].北京:解放軍出版社,2004.