陳志剛 陳蘇杭
(1.91336部隊 秦皇島 066326)(2.92840部隊 青島 266000)
艦載指控系統是一種具有高可靠性和實時性的復雜系統,是整個艦艇作戰指揮過程的核心部分。在作戰仿真中,艦載指控系統仿真是整個艦載作戰仿真的“中樞神經”[1],是作戰信息處理中心和指揮員實施指揮的直接部位,承擔著信息接收與存儲、信息融合、威脅目標指示等功能[2]。目前,隨著我海軍艦艇裝備的不斷更新和發展,艦載指控設備仿真系統的開發和研制面臨著需求不確定、應用環境快速變化等諸多問題[3],系統的可移植性、可擴展性以及互操作性變得越來越重要[4~5]。
艦載指控系統在開發過程中存在許多結構性的重復代碼,這部分代碼可以由艦載指控系統數據模型轉換生成。通過在數據模型與結構性重復代碼之間建立映射關系,應用模型驅動思想指導該部分代碼的自動生成工作,可以很大程度地提高系統的開發效率。
艦載指控系統作為一種典型的軍事信息應用系統,其仿真軟件的開發和研制面臨著需求不確定、應用環境快速變化等諸多問題[6],需要探索新的軟件研發思路和方法。目前,靶場構建多套艦載指控系統模型,分別應用于不同的仿真實現平臺,如RT-Space平臺、DWK平臺等,出現資源浪費嚴重,增加許多重復性工作,導致這種現象的主要原因是由于系統不具備可移植性、可重用性。應用數據模型驅動開發技術,可以實現艦載指控系統的應用邏輯和底層變化的分離,加大應用邏輯甚至應用子系統的大粒度重用,從而增強軟件系統的適應能力和變化能力,實現一次建模可以應用到不同的技術環境中。
模型驅動思想是一種仿真系統開發的思想。模型驅動架構(MDA)則是一個實現了模型驅動思想,并被廣泛應用于仿真系統開發的設計方法[8]。艦載指控系統的需求主要分為界面層和功能服務層,本文采用MDA技術可將系統的功能從平臺中脫離出來,以領域知識為基礎,元模型采用基于XSD的數據模型產生PIM模型,存入模型庫中。在模型庫中提出的模型,都可以映射到不同的平臺上,包括RT-Space平臺、DWK平臺、HLA等具體平臺,并實現代碼自動生成,并依托組件技術,最終實現整個系統的開發,主要實現框架如圖1所示。

圖1 艦載指控系統仿真開發框圖
文獻[7]中介紹了作戰系統接口協議輔助設計工具,提出了將存儲的相關作戰系統接口協議單元數據轉換為XML模式文件(XSD),從而實現模型驅動方法。因此,實現在MDA環境下以數據模型為中心的仿真系統開發方法,構建艦載指控系統數據模型是一項十分重要的內容。
艦載指控系統是一個十分復雜的系統,而系統的數據模型在仿真開發中又起著至關重要的作用。采用基于模型驅動的方法開發系統過程中,數據模型的修改能自動反映到設計的各個階段,如更新系統對象屬性、更新系統接口協議、更新仿真模型、更新仿真系統的實現代碼等。
在艦載指控系統的開發過程中,即使有較好的頂層設計,但隨著用戶需求的不斷變化,系統的設計仍會調整,接口會不斷的發生變化,接口解析也需做出較大調整。采用XML模式定義(XML Sche?ma Definitions,XSD)建立數據模型,能夠解決在系統開發過程中適應這種接口的變化問題,以提高系統開發效率,降低開發成本,使接口具備較強的適應能力。
針對艦載指控系統接口協議中定義的信息單元和相關數據字段,采用XSD建立數據模型,主要對模型的基本信息、數據類型、模型的組件信息進行描述,描述信息元素之間的結構關系以及用來約束每個元素的詳細信息,例如,數據字段的名稱、類型、長度、最大值、最小值等。艦載指控系統數據模型的信息結構如圖2所示。

圖2 艦載指控系統數據模型的信息結構
3.1.1 模型基本信息
模型基本信息描述艦載指控系統仿真程序模型中英文名稱、模型的開發語言、模型開發平臺等管理類信息,其信息結構如圖3所示。

圖3 模型基本信息的信息結構
3.1.2 自定義數據類型
自定義數據類型描述整個艦載指控系統所使用的枚舉數據類型、復合結構數據類型、數組類型,以及可變長的string類型等,其信息結構如圖4所示。

圖4 數據類型信息結構
3.1.3 模型組件信息
模型組件信息描述艦載指控系統的模型組件描述信息、想定初始化參數、屬性類輸入信息、屬性類輸出信息、事件類輸入信息、事件類輸出信息等模型信息。其信息結構如圖5所示。

圖5 模型組件信息信息結構
其中,想定初始化信息用于描述仿真對象的固有屬性,如艦載指控系統目標航跡對象的航向、航速等。屬性類信息用于描述仿真對象之間交互的對象類信息,如雷達上報的目標航跡信息。事件類信息用于描述仿真對象之間的交互類信息,如硬武器目標指示消息、雷達狀態上報消息等。
結合SOA思想,引入了服務的概念。服務可以接受請求并發送響應結果,接收到的請求消息和反饋的響應消息的格式定義源自基于XSD的數據模型。實現具體的服務時,通過網絡對該服務進行發布的時候需要與一種特定的網絡通信協議相綁定。艦載指控系統數據模型主要描述了接口中消息的格式和內容定義,需要增加對于服務接口信息的描述,即需要在數據模型中增加描述操作、端口以及協議綁定信息。
通常來說軟件代碼可以分為通用代碼,個性代碼和結構性重復代碼這三個部分。在艦載指控系統仿真軟件中,通用代碼是包含軟件基本框架在內的,實現仿真系統的基礎代碼;個性代碼則是實現艦載指控系統特定功能的代碼;結構性重復代碼則主要包含了有關描述艦載指控系統信息報文具體格式,以及報文解析程序的代碼,通過進一步的研究發現,該部分代碼是艦載指控系統開發中的主要內容。
在前面章節中,艦載指控系統數據模型描述的內容主要就是報文的相關信息,在開發過程中,艦載指控系統中將存在許多結構性重復代碼,這部分可由該系統數據模型轉換生成。通過在數據模型與結構性重復代碼之間建立映射關系,應用模型驅動思想指導該部分代碼的自動生成工作,很大程度的提高艦載指控系統的開發效率。
為了實現數據模型驅動的艦載指控系統代碼開發,實際上就是實現了MDA思想中的PIM到實際代碼的轉換。
XML文件的定義方式采用了樹狀結構,這種定義方式的特點是結構化好,利于程序分析,可通過樹的遍歷及生成算法對其進行處理。為了提高接口代碼開發效率,基于如圖6所示的思路。在讀取XSD文件之后,首先分析XSD文件結構,根據文件結構生成解析代碼,代碼生成結束后,針對生成的代碼進行編譯鏈接,生成XML的解析組件并發布。

圖6 代碼生成解析方法
在設計平臺無關模型(PIM)時不用考慮最終實現的中間件平臺,也不用考慮最終代碼運行的平臺,它是描述系統功能和結構的模型,不包括任何平臺的技術。平臺相關模型(PSM)的設計與具體的平臺密切相關,它依賴于平臺所提供的功能和服務,涉及到系統在平臺上的實現細節。
平臺的例子包括HLA、CORBA等,而艦載指控系統仿真采用的DWK也是一種平臺。將PIM轉換到PSM,也就是從概念性的分析模型到計算機仿真模型的實現,通過PSM自動轉換工具可以自動化地進行。
由艦載指控系統PIM轉換到滿足DWK平臺實現規約的PSM,要求PIM按照DWK規定的對象模型結構、仿真驅動方式、服務獲取方式,以及異常機制、參數類型等實現到PSM的轉換。
通過代碼自動生成工具編輯模型解析模板來實現PSM代碼的自動生成。用代碼自動生成工具生成代碼不僅能夠提高系統的開發效率,而且能夠保證系統的整體代碼風格一致,大大提高代碼的可讀性和可維護性。
采用通用仿真模型設計語言Python[9]進行PSM代碼的設計,Python是一種面向對象的、直譯式計算機程序設計語言,語法簡潔清晰,可以方便地轉換為各種高級編程語言,如:C++、C#、Java等。可將計算機程序代碼直接編譯形成可執行代碼組件.pyc文件,或者根據運行環境的需要先將Python代碼轉換為其他高級編程語言格式,然后再編譯形成可執行代碼組件,如.dll和.exe文件等。
本文針對系統通用性低、開發過程中結構性重復代碼多的問題,采用數據模型驅動的方法,建立基于XSD的艦載指控系統數據模型,借助模型驅動思想,通過代碼生成工具,實現PIM到PSM的實際代碼轉換,提高系統的開發效率,提高代碼的可讀性和可維護性。