邊 晶,杜 威
(長春大學 計算機科學技術學院,長春 130022)
隨著軟件科學的不斷發展,新的應用系統變得越來越復雜,這就對應用軟件的重用提出了更高的要求,虛擬操作訓練系統也存在相似的問題。在過去的系統建模和電子仿真中,每個仿真系統或數模都是獨立的,這就使各構件不能在開發新仿真應用時被重用。但是隨著國防現代化的迅速發展,仿真系統變得越來越復雜,如果每個仿真系統都從頭開發,效率會很低,并且要浪費大量的資金和原材料,開發出來的產品也不容易實現不同虛擬設備之間的聯合使用[1]。因此,有必要研究和開發虛擬操作訓練領域的構架以統一系統的建模方法,從而實現軟件構架和構件的重用。
這里所說的領域指的是一組涵蓋相似軟件需求應用系統的功能領域。領域工程是建立基礎能力和基本原則的相似系統應用工程,涵蓋了建立重用軟件構件的所有活動[3]。虛擬操作訓練系統是一種領域應用系統,包含虛擬設備訓練、維護訓練等特定領域。針對虛擬操作訓練系統的建模問題,本文介紹了如何用領域建模思想和COM構件技術設計一種虛擬操作訓練領域應用構架,使用戶更容易快速制造出基于該構架的實用仿真模型。本文按如下幾個部分進行介紹:第1部分介紹基于UML的虛擬操作訓練領域仿真系統構架設計;第2部分介紹仿真系統的靜態和動態結構;第3部分介紹系統仿真引擎的設計;第4部分進行總結。
設計該系統構架是為了使用構件技術解決虛擬操作訓練領域的系統仿真問題,包括統一建模標準、建立模型與模型驅動之間的連接等,從實際執行的角度來講,屬于軟件體系結構范疇。
隨著系統規模和復雜度的加大,總體系統結構的設計變得比所用算法和數據結構更加重要。現在仍然沒有統一的軟件體系結構的定義,一般來講,軟件體系結構是整個軟件系統的總體結構,其關鍵要素在于哪種構件能被用來建立系統,以及構件之間如何相互連接和相互作用,所有這些方面的選擇決定了軟件體系結構的不同風格。虛擬操作訓練領域仿真系統采用面向對象的設計思想,因此可以使用面向對象的體系結構。
虛擬操作訓練領域仿真系統設計的目的在于建立一個統一的軟件體系結構和相應發展規范,以促進不同類型虛擬操作訓練系統的發展。另外,很多操作設備構件的形狀和可見行為都是相似的,因此我們可以開發一個構件庫來促進軟件的重用以節省開發時間和資源。基于以上考慮,虛擬操作訓練領域仿真系統采用“構件-構架-對象總線”的體系結構。
1)構件。構件是具有一定功能并能在軟件開發和應用過程中被組裝和維護的基本單元。從概念上來講,構件也是對象,可以由一個簡單對象或多個組合對象組成以實現一個特定對象。
2)構架。構件技術中的構架是針對該問題應用程序的部分解決方案,可以作為一種運行和整合各構件的構架。在分布式系統中,有很多本地和遠程應用程序,構架僅能描述一個應用程序的整體結構,因此,對構架的描述只能解決一部分問題。但作為相似問題的統一解決辦法,構架可以作為在這些應用中提供相同控制結構的構件,在不同應用中被再次使用,因此能夠實現更高程度的代碼重用。
3)對象總線。它是與中心程序相關的分布式系統的附屬部分。對象總線實際上是分布式互聯設備的運行支持系統,被稱為分布式系統的中間件,有時為分布式系統提供基礎支持,是一個特殊裝置。它使應用程序中的各構件和構架能夠調用分布式環境中其它構件和構架的服務和功能,因此構件和對象的能力可被擴展到一個開放網絡中。
總之,在“構件-構架-對象總線”體系結構中,構件提供軟件模塊,構架負責將這些單元組合成一個有機的整體應用,而對象總線完成不同構架和構件間服務的透明調用,因此可以實現網絡中各節點的分布式應用。基于這種構件設計思想,分布式應用系統具有如下特征:
1)各構件之間通過事件服務和構架互相調用,也就是說構件被構架調用,而不是在構件之間直接調用。
2)構件和構架共同組成了分布式系統單元的應用。分布在不同系統單元中的各構件是通過對象總線和構架實現相互作用的。
3)通過構件和構架實現最大程度的代碼重用。
4)分布式系統軟件通過對象總線連接各對象,用構架控制軟件結構,通過各構件修改軟件功能。
基于上述“構件-構架-對象總線”體系結構,使用高級體系結構HLA中的RTI作為總線[4,5],用COM構件技術和面向對象的方法,虛擬操作訓練領域仿真系統的構架設計如圖1所示。

圖1 虛擬操作訓練領域仿真系統的構架
首先,在運行時,當虛擬設備構件管理模塊需要一些構件時,會將構件裝入運行空間并識別、注冊以及管理其接口,并通過構件及其接口之間的相互作用建立聯系圖。當需要從節點的運行空間移出一些構件時,應卸載并更新相關管理和處置信息。接下來操作系統將為虛擬構件提供信息,從而決定操作指令并將其發送到系統的仿真引擎,然后系統引擎將分析該操作指令并調用虛擬構件接口進行響應。
虛擬操作訓練領域仿真系統的所有應用系統都能表示為靜態結構和動態結構兩個方面。本文用UML來描述系統的結構和行為,其中,靜態結構主要由類圖表示,而動態結構主要用狀態圖描述。類圖是一種用類和類間關系進行系統描述的插圖,是從靜態方面表示的系統。類圖是構成其它示意圖的基礎,如果沒有類圖,就不會有狀態圖或其它示意圖。狀態圖用來描述生命周期中對象處于哪種狀態、每種狀態的行為以及哪種事件可以導致對象狀態的變化。
對于系統的設計,最關鍵的問題就是將類定義在什么樣的粒度。如果定義的粒度太小,系統構架需要管理的構件過多,將不利于系統構架的設計和促進系統的執行;另一方面,如果定義的粒度太大,軟件重用的最終目標就不容易實現了。針對不同類型的虛擬操作訓練系統,可以定義不同粒度的類,例如對于虛擬維護訓練系統,可以將類定義在聯合體類或模塊類等這種大的粒度中。本文以虛擬維護訓練系統為例定義構件類和單元類。其中,構件類將每個實際設備的聯合體定義為一個類,系統將管理該類并傳送相關信息;單元類將一個實際設備單元定義為一個類,與其相關的構件由構件聯合體管理。從定義可以看出,我們可以用單元類實現系統構件的重用目的。對于虛擬維護訓練系統,一個典型的構件類類圖如圖2所示。

圖2 一個典型類圖
狀態圖主要用來描述對象、子系統和系統的生存周期。通過狀態圖可以知道對象能夠達到的所有狀態以及系統能夠響應的所有事件。只要其狀態和復雜操作已被標記,所有的類都應該有狀態圖。在虛擬操作訓練領域仿真系統中,因為元素的行為都是相對獨立的,因此可以動態地模擬構件行為。在使用仿真系統完成各種不同訓練任務的情況下,每種狀態中構件的狀態轉換都是不同的,因此,如果有必要,每個訓練環境中的構件聯合體都應該有一個狀態圖。一些設備及其構件的開/關狀態圖如圖3所示。

圖3 狀態圖插圖
虛擬操作訓練領域仿真系統采用面向對象的設計方法,系統操作是完全建立在消息驅動的機制之上的,因此其仿真引擎的主體功能是完成消息的傳送和仿真過程的控制。
在圖1中,我們也能看見該仿真系統仿真引擎的功能結構。當仿真引擎接到本地用戶的操作指令或網絡中的遠程操作指令,它會根據系統的狀態圖進行指令的分析,并生成反饋信息發送給虛擬構件作為響應,然后,仿真引擎將調用虛擬管理構件以便在反饋信息中獲得目標構件的界面。通過構件的界面,反饋信息將被傳送到虛擬構件并引起響應。如果發送的是本地的操作指令,仿真引擎還需要將該指令上傳至網絡作為遠程操作指令節點。
如果這種“構件-構架-對象總線”體系結構用于軟件開發,一些必要的構件設計完成后,對于組合電路中數字電路系統的設計來講,軟件開發的過程實際上是一個組裝過程。第一步是根據構架尋找可重用構件,然后根據具體要求組裝所有構件,最后,每一個構件可以利用事件和消息裝置構成綜合的應用程序,這樣,軟件的構件結構就能夠實現代碼重用甚至是構件的組裝,以實現不同的訓練功能,因此這種體系結構的應用能夠解決現存設備仿真器中不規則結構和單一功能問題。
[1] 桑大勇,王瑛.基于構架的軟件重用技術綜述[J].空軍工程大學學報(自然科學版),2000, 1(5): 84-86.
[2] 莫世峰, 何賢江, 王秉中.一種總線型軟件體系結構的設計與應用[J].計算機應用,2004, 24(5): 98-101.
[3] 王興武, 宋雨.基于構件/構架復用技術的仿真系統軟件研究[J].華北電力大學學報,2003, 30(6): 63-66.
[4] 謝衛平, 鄧蘇, 沙基昌, 劉忠.基于構件技術的HLA仿真[J].計算機工程與應用, 2002,38(3): 114-116.