陳志剛 陳蘇杭
(1.91336部隊 秦皇島 066326)(2.92840部隊 青島 266000)
艦載指控系統(tǒng)是一種具有高可靠性和實時性的復雜系統(tǒng),是整個艦艇作戰(zhàn)指揮過程的核心部分。在作戰(zhàn)仿真中,艦載指控系統(tǒng)仿真是整個艦載作戰(zhàn)仿真的“中樞神經(jīng)”[1],是作戰(zhàn)信息處理中心和指揮員實施指揮的直接部位,承擔著信息接收與存儲、信息融合、威脅目標指示等功能[2]。目前,隨著我海軍艦艇裝備的不斷更新和發(fā)展,艦載指控設備仿真系統(tǒng)的開發(fā)和研制面臨著需求不確定、應用環(huán)境快速變化等諸多問題[3],系統(tǒng)的可移植性、可擴展性以及互操作性變得越來越重要[4~5]。
艦載指控系統(tǒng)在開發(fā)過程中存在許多結構性的重復代碼,這部分代碼可以由艦載指控系統(tǒng)數(shù)據(jù)模型轉(zhuǎn)換生成。通過在數(shù)據(jù)模型與結構性重復代碼之間建立映射關系,應用模型驅(qū)動思想指導該部分代碼的自動生成工作,可以很大程度地提高系統(tǒng)的開發(fā)效率。
艦載指控系統(tǒng)作為一種典型的軍事信息應用系統(tǒng),其仿真軟件的開發(fā)和研制面臨著需求不確定、應用環(huán)境快速變化等諸多問題[6],需要探索新的軟件研發(fā)思路和方法。目前,靶場構建多套艦載指控系統(tǒng)模型,分別應用于不同的仿真實現(xiàn)平臺,如RT-Space平臺、DWK平臺等,出現(xiàn)資源浪費嚴重,增加許多重復性工作,導致這種現(xiàn)象的主要原因是由于系統(tǒng)不具備可移植性、可重用性。應用數(shù)據(jù)模型驅(qū)動開發(fā)技術,可以實現(xiàn)艦載指控系統(tǒng)的應用邏輯和底層變化的分離,加大應用邏輯甚至應用子系統(tǒng)的大粒度重用,從而增強軟件系統(tǒng)的適應能力和變化能力,實現(xiàn)一次建模可以應用到不同的技術環(huán)境中。
模型驅(qū)動思想是一種仿真系統(tǒng)開發(fā)的思想。模型驅(qū)動架構(MDA)則是一個實現(xiàn)了模型驅(qū)動思想,并被廣泛應用于仿真系統(tǒng)開發(fā)的設計方法[8]。艦載指控系統(tǒng)的需求主要分為界面層和功能服務層,本文采用MDA技術可將系統(tǒng)的功能從平臺中脫離出來,以領域知識為基礎,元模型采用基于XSD的數(shù)據(jù)模型產(chǎn)生PIM模型,存入模型庫中。在模型庫中提出的模型,都可以映射到不同的平臺上,包括RT-Space平臺、DWK平臺、HLA等具體平臺,并實現(xiàn)代碼自動生成,并依托組件技術,最終實現(xiàn)整個系統(tǒng)的開發(fā),主要實現(xiàn)框架如圖1所示。
圖1 艦載指控系統(tǒng)仿真開發(fā)框圖
文獻[7]中介紹了作戰(zhàn)系統(tǒng)接口協(xié)議輔助設計工具,提出了將存儲的相關作戰(zhàn)系統(tǒng)接口協(xié)議單元數(shù)據(jù)轉(zhuǎn)換為XML模式文件(XSD),從而實現(xiàn)模型驅(qū)動方法。因此,實現(xiàn)在MDA環(huán)境下以數(shù)據(jù)模型為中心的仿真系統(tǒng)開發(fā)方法,構建艦載指控系統(tǒng)數(shù)據(jù)模型是一項十分重要的內(nèi)容。
艦載指控系統(tǒng)是一個十分復雜的系統(tǒng),而系統(tǒng)的數(shù)據(jù)模型在仿真開發(fā)中又起著至關重要的作用。采用基于模型驅(qū)動的方法開發(fā)系統(tǒng)過程中,數(shù)據(jù)模型的修改能自動反映到設計的各個階段,如更新系統(tǒng)對象屬性、更新系統(tǒng)接口協(xié)議、更新仿真模型、更新仿真系統(tǒng)的實現(xiàn)代碼等。
在艦載指控系統(tǒng)的開發(fā)過程中,即使有較好的頂層設計,但隨著用戶需求的不斷變化,系統(tǒng)的設計仍會調(diào)整,接口會不斷的發(fā)生變化,接口解析也需做出較大調(diào)整。采用XML模式定義(XML Sche?ma Definitions,XSD)建立數(shù)據(jù)模型,能夠解決在系統(tǒng)開發(fā)過程中適應這種接口的變化問題,以提高系統(tǒng)開發(fā)效率,降低開發(fā)成本,使接口具備較強的適應能力。
針對艦載指控系統(tǒng)接口協(xié)議中定義的信息單元和相關數(shù)據(jù)字段,采用XSD建立數(shù)據(jù)模型,主要對模型的基本信息、數(shù)據(jù)類型、模型的組件信息進行描述,描述信息元素之間的結構關系以及用來約束每個元素的詳細信息,例如,數(shù)據(jù)字段的名稱、類型、長度、最大值、最小值等。艦載指控系統(tǒng)數(shù)據(jù)模型的信息結構如圖2所示。
圖2 艦載指控系統(tǒng)數(shù)據(jù)模型的信息結構
3.1.1 模型基本信息
模型基本信息描述艦載指控系統(tǒng)仿真程序模型中英文名稱、模型的開發(fā)語言、模型開發(fā)平臺等管理類信息,其信息結構如圖3所示。
圖3 模型基本信息的信息結構
3.1.2 自定義數(shù)據(jù)類型
自定義數(shù)據(jù)類型描述整個艦載指控系統(tǒng)所使用的枚舉數(shù)據(jù)類型、復合結構數(shù)據(jù)類型、數(shù)組類型,以及可變長的string類型等,其信息結構如圖4所示。
圖4 數(shù)據(jù)類型信息結構
3.1.3 模型組件信息
模型組件信息描述艦載指控系統(tǒng)的模型組件描述信息、想定初始化參數(shù)、屬性類輸入信息、屬性類輸出信息、事件類輸入信息、事件類輸出信息等模型信息。其信息結構如圖5所示。
圖5 模型組件信息信息結構
其中,想定初始化信息用于描述仿真對象的固有屬性,如艦載指控系統(tǒng)目標航跡對象的航向、航速等。屬性類信息用于描述仿真對象之間交互的對象類信息,如雷達上報的目標航跡信息。事件類信息用于描述仿真對象之間的交互類信息,如硬武器目標指示消息、雷達狀態(tài)上報消息等。
結合SOA思想,引入了服務的概念。服務可以接受請求并發(fā)送響應結果,接收到的請求消息和反饋的響應消息的格式定義源自基于XSD的數(shù)據(jù)模型。實現(xiàn)具體的服務時,通過網(wǎng)絡對該服務進行發(fā)布的時候需要與一種特定的網(wǎng)絡通信協(xié)議相綁定。艦載指控系統(tǒng)數(shù)據(jù)模型主要描述了接口中消息的格式和內(nèi)容定義,需要增加對于服務接口信息的描述,即需要在數(shù)據(jù)模型中增加描述操作、端口以及協(xié)議綁定信息。
通常來說軟件代碼可以分為通用代碼,個性代碼和結構性重復代碼這三個部分。在艦載指控系統(tǒng)仿真軟件中,通用代碼是包含軟件基本框架在內(nèi)的,實現(xiàn)仿真系統(tǒng)的基礎代碼;個性代碼則是實現(xiàn)艦載指控系統(tǒng)特定功能的代碼;結構性重復代碼則主要包含了有關描述艦載指控系統(tǒng)信息報文具體格式,以及報文解析程序的代碼,通過進一步的研究發(fā)現(xiàn),該部分代碼是艦載指控系統(tǒng)開發(fā)中的主要內(nèi)容。
在前面章節(jié)中,艦載指控系統(tǒng)數(shù)據(jù)模型描述的內(nèi)容主要就是報文的相關信息,在開發(fā)過程中,艦載指控系統(tǒng)中將存在許多結構性重復代碼,這部分可由該系統(tǒng)數(shù)據(jù)模型轉(zhuǎn)換生成。通過在數(shù)據(jù)模型與結構性重復代碼之間建立映射關系,應用模型驅(qū)動思想指導該部分代碼的自動生成工作,很大程度的提高艦載指控系統(tǒng)的開發(fā)效率。
為了實現(xiàn)數(shù)據(jù)模型驅(qū)動的艦載指控系統(tǒng)代碼開發(fā),實際上就是實現(xiàn)了MDA思想中的PIM到實際代碼的轉(zhuǎn)換。
XML文件的定義方式采用了樹狀結構,這種定義方式的特點是結構化好,利于程序分析,可通過樹的遍歷及生成算法對其進行處理。為了提高接口代碼開發(fā)效率,基于如圖6所示的思路。在讀取XSD文件之后,首先分析XSD文件結構,根據(jù)文件結構生成解析代碼,代碼生成結束后,針對生成的代碼進行編譯鏈接,生成XML的解析組件并發(fā)布。
圖6 代碼生成解析方法
在設計平臺無關模型(PIM)時不用考慮最終實現(xiàn)的中間件平臺,也不用考慮最終代碼運行的平臺,它是描述系統(tǒng)功能和結構的模型,不包括任何平臺的技術。平臺相關模型(PSM)的設計與具體的平臺密切相關,它依賴于平臺所提供的功能和服務,涉及到系統(tǒng)在平臺上的實現(xiàn)細節(jié)。
平臺的例子包括HLA、CORBA等,而艦載指控系統(tǒng)仿真采用的DWK也是一種平臺。將PIM轉(zhuǎn)換到PSM,也就是從概念性的分析模型到計算機仿真模型的實現(xiàn),通過PSM自動轉(zhuǎn)換工具可以自動化地進行。
由艦載指控系統(tǒng)PIM轉(zhuǎn)換到滿足DWK平臺實現(xiàn)規(guī)約的PSM,要求PIM按照DWK規(guī)定的對象模型結構、仿真驅(qū)動方式、服務獲取方式,以及異常機制、參數(shù)類型等實現(xiàn)到PSM的轉(zhuǎn)換。
通過代碼自動生成工具編輯模型解析模板來實現(xiàn)PSM代碼的自動生成。用代碼自動生成工具生成代碼不僅能夠提高系統(tǒng)的開發(fā)效率,而且能夠保證系統(tǒng)的整體代碼風格一致,大大提高代碼的可讀性和可維護性。
采用通用仿真模型設計語言Python[9]進行PSM代碼的設計,Python是一種面向?qū)ο蟮摹⒅弊g式計算機程序設計語言,語法簡潔清晰,可以方便地轉(zhuǎn)換為各種高級編程語言,如:C++、C#、Java等。可將計算機程序代碼直接編譯形成可執(zhí)行代碼組件.pyc文件,或者根據(jù)運行環(huán)境的需要先將Python代碼轉(zhuǎn)換為其他高級編程語言格式,然后再編譯形成可執(zhí)行代碼組件,如.dll和.exe文件等。
本文針對系統(tǒng)通用性低、開發(fā)過程中結構性重復代碼多的問題,采用數(shù)據(jù)模型驅(qū)動的方法,建立基于XSD的艦載指控系統(tǒng)數(shù)據(jù)模型,借助模型驅(qū)動思想,通過代碼生成工具,實現(xiàn)PIM到PSM的實際代碼轉(zhuǎn)換,提高系統(tǒng)的開發(fā)效率,提高代碼的可讀性和可維護性。