程文迪,劉德民
(1.中國電子科技集團公司 第二十八研究所,江蘇 南京 210007;2.信息系統工程重點實驗室,江蘇 南京 210007)
現階段,指揮信息系統的論證、設計、實現、集成等階段工作采用分階段完成,用戶在整個研制過程中參與和體驗程度低,指揮信息系統各階段工作成果的正確性驗證仍以分階段的專家評審和系統集成后的測試驗證為主,導致系統開發階段成果未能充分驗證,增加了系統研制風險。未來跨軍兵種的聯合作戰指揮信息系統和其他新型指揮系統開發難度大、需求確定難、設計驗證難的問題突出。因此,在新一代指揮信息系統建設和發展的道路上,亟需開展敏捷開發研究[1],通過綜合應用云計算、虛擬化、服務化等技術,構建一體化、敏捷的指揮信息系統開發平臺,提升系統研制的正確性、快速性和有效性。
在信息技術高速發展的當下,云計算[2-3]是目前研究的重要熱點技術,也是敏捷開發技術研究的關鍵問題之一。維基百科對云計算作了如下的描述:云計算是一種通過因特網以服務的方式提供動態可伸縮的虛擬化的資源的計算模式。虛擬化技術是指一種對計算元件在虛擬的基礎上進行簡化管理、優化資源的解決方案。虛擬化技術通過類似服務器集群的方式擴大硬件的容量,簡化軟件部署的配置過程,實現單個CPU模擬多個CPU并行,允許多個操作系統在同一平臺同時獨立運行,從而顯著提高計算機的工作效率。虛擬化技術通過把多臺服務器實體構成一個資源池,以共同計算、共享資源的方式為云計算平臺的資源管理和整合能力提供重要的支撐[4]。云計算基于虛擬化技術,物理計算機以及其他硬件組成共享計算資源池,按照用戶需求提供計算能力、存儲能力、網絡服務能力等[5]。Openstack作為目前最熱門的一種開源IaaS (infrastructure as a service)云計算平臺[6],將實際的服務器資源虛擬化,對用戶按需提供計算能力、存儲能力、網絡服務能力,以虛擬機的形式向用戶交付服務。
Openstack包含5個最主要的構成部分[7]:計算服務(Nova),對象存儲服務(Swift),鏡像管理服務(Glance),認證服務(Keystone)以及UI服務(Horizon)。如圖1所示。
Nova是Openstack中用于管理虛擬機實例的整個生命周期計算的控制器,負責虛擬機創建、銷毀、開機、關機、掛起、重啟等操作,同時配置CPU、內存等信息。
Swift是一種非結構化的對象存儲系統,它通過內置冗余及高容錯機制實現對象的存儲,允許進行存儲或者檢索文件。
Glance是一套虛擬機鏡像查找及檢索系統,支持多種虛擬機鏡像格式,有新建上傳鏡像、刪除鏡像、編輯鏡像等基本操作功能。
Keystone是Openstack為其他服務提供身份驗證、服務規則和服務令牌等功能的子項目。通過Keystone注冊到服務器中的服務,需要通過身份驗證來實現互相通信和調用。
Horizon是基于Web的管理門戶,用于簡化用戶對服務的操作,例如:啟動和銷毀實例、自動分配IP地址、配置訪問控制等。
隨著軟件產品復雜度的提升以及客戶需求和期望的提高,軟件功能與需求往往會頻繁變動[8]。因此軟件循序漸進式的迭代過程迫切地需要一整套與軟件開發過程實際結合緊密、操作性強、管理高效的軟件工程方法[9]。敏捷開發[10-11]作為一種輕量快捷式的開發方法也應運而生。它的主要特點是[12]:①重視迭代。②重視與客戶的交流。③重視測試驅動開發和軟件持續集成。

圖1 Openstack組成結構Fig.1 Composition structure of Openstack
當前,指揮信息系統朝著功能多樣化、規模龐大化、交互關系復雜化的趨勢發展。指揮信息系統與SOA(service-oriented architecture,面向服務的架構)及云計算技術的深入結合促進了系統技術體制的轉變,對指揮信息系統的開發提出了更高的要求。不同的指揮信息系統需求確定難、設計驗證難的問題仍然突出,造成開發反復和效率低下,主要有以下幾點原因:
(1) 用戶本身對軍事需求把握不準
在新的作戰模式下的很多軍事需求本身很難獲取。軍事作戰人員與系統開發人員專業領域的差別,也使得軍事需求在系統研制過程中失真很大。
(2) 需求分析與設計過程中用戶體驗程度低
指揮信息系統研制過程中用戶參與度低,基于文檔方案的討論過于抽象,原型系統又偏向于功能性需求的獲取,很多系統設計無法盡早獲得用戶確認。
(3) 模型驅動的系統開發過程缺乏有效測試方法和工具支撐
基于SOA架構的指揮新信息系統的構建是圍繞業務流程模型開展的,系統具有的分布程度高、并發性強、服務之間的交互關系復雜等特征,使得傳統的手工測試方法難以開展。
(4) 新的建設模式下的大量資源和成果不能很好地重用
目前開發過程中有大量資源和成果不能很好地重用,從代碼模塊重用、系統設計重用,甚至需求分析模型都存在重用。
綜上所述,指揮信息系統需要一種敏捷、高效、一體化的開發方法,能夠針對系統論證、分析、設計、集成、驗證的全生命周期進行協同開發和同步驗證。構建基于云的統一開發平臺將指揮信息系統開發過程中的可重用資源有效整合、按需使用,靈活適應不同的開發需求和開發過程,快速構建開發環境、驗證環境和測試環境,通過增強用戶體驗加速需求、設計和開發迭代過程。
總體研究思路如圖2體系結構圖所示。
(1) 在指揮信息系統敏捷開發過程模型的基礎上,構建基于云的基礎設施環境,包括存儲、計算、網絡和數據庫,支撐指揮信息系統開發過程中資源存儲、服務部署和網絡互聯。
(2) 構建指揮信息系統開發資源庫,包括工具模型、通用服務、數據資源和仿真支撐平臺。為了實現系統開發資源統一、集中、高效的管理和使用,根據開發資源類型,建立各類資源的分類體系和描述模型,研究資源虛擬化和服務化方法,實現開發資源的統一建模、注冊和管理,形成面向系統開發的資源云;最終建立系統開發資源云池,為系統敏捷開發提供各類服務。

圖2 體系結構圖Fig.2 Architecture diagram
(3) 設計開發各類資源在開發過程中按需使用服務,包含搜索、推薦、下載、部署和集成。
(4) 開發統一開發門戶[13]網站,實現各類資源的統一管理訪問和開發過程的管理。
(5) 選取典型指揮信息系統進行模擬開發,充實資源庫和平臺服務,對敏捷開發過程模型進行驗證。
通過對指揮信息系統需求、設計、開發和集成各階段引入用戶體驗和測試驗證,促進階段內的迭代反饋,使得設計開發中的問題盡早發現解決,實現指揮信息系統開發過程敏捷開發化。
仿真驗證環境是指基于實驗任務的內容和實驗目的,搭建一組包含實驗控制導調、仿真模擬軟件、實驗數據訂閱分發、數據采集、仿真引擎驅動等各功能組件的實驗系統環境。
敏捷開發平臺采用虛擬化和服務化技術,依托軟件配套工具,利用試驗資源的共享與協同機制,提供分布式協同開發和驗證應用模式,支持一體化的系統設計、開發、驗證和測試過程[14]。
利用開發試驗平臺進行系統設計開發的基本流程如圖3所示。各類系統設計開發用戶在設計開發門戶的支持下,利用開發試驗平臺提供的各類工具,依據相應的規范要求完成相應的設計開發任務[15]。
(1) 首先進行試驗任務需求分析,對系統功能、用途、適用范圍初步形成需求文檔,進一步形成系統概要設計和詳細設計,初步制定實驗配置文件,涉及系統規模、基本功能、席位、網絡配置等信息,并將配置文件入庫。
(2) 與此同時,通過用戶名和密碼登錄門戶網站,查詢設計開發環境中提供的設計開發支撐工具以及設計開發資源。
(3) 初步確定試驗需求之后,創建試驗代號,開始進行試驗。
(4) 將當前試驗代號與配置文件庫中的試驗配置文件進行關聯。
(5) 根據試驗配置文件中的系統總設計規劃,按照圖4創建虛擬機時序圖所示的步驟創建并啟動相應數量的云主機,并分配好IP。
(6) 根據試驗配置文件中的席位設計,從數據庫下載各類資源并進行軟件部署安裝。
(7) 啟動仿真流程,通過仿真初始化、仿真開始、暫停、仿真結束等命令控制仿真進程。
(8) 通過仿真試驗形成仿真結果。
(9) 根據仿真結果進行需求驗證,是否滿足用戶要求,或者評估結果是否滿足預期。如果不完善或者不符合預期,重新反饋到需求分析階段,更新系統需求設計。

圖3 典型試驗流程Fig.3 Typical test flow
根據試驗任務環境配置信息,系統需要將模型庫中參試的各類模型、軟件、仿真構件等功能模塊,按需動態生成仿真試驗驗證環境,實現對集成后的新一代系統進行仿真試驗、測試和評估。
本文依托敏捷開發技術中云計算和虛擬化的概念,借助Openstack操作管理虛擬機的全生命周期,可以實現仿真實驗云環境的快速生成。圖4創建虛擬機時序圖所示是Openstack創建虛擬機的流程。
(1) Openstack調度控制器從任務列表中讀取創建虛擬機的任務,發送創建命令給Nova計算服務控制器。
(2) Nova計算服務控制器通過用戶名與密碼進行身份驗證,然后驗證鏡像ID是否正確合法,并通過API(application programming interface,應用程序編程接口)獲取模板使用的flavor(即虛擬機的的硬件資源配置,如CPU個數、內存大小、硬盤大小等)。
(3) Nova計算服務控制器再向網絡管理模塊Neutron獲取指定可用的網絡,為虛擬機綁定網卡(如果指定多個網段,就綁定多網卡);同時綁定一個可用的IP。
(4) Nova計算服務控制器通過Openstack API創建虛擬機,獲得虛擬機的ID。
(5) 將新建的虛擬機信息存入數據庫。
創建好仿真試驗驗證環境以后,根據試驗任務關聯的配置文件中的各類模型從數據庫下載各類資源,將試驗任務的總體規劃包括試驗任務中涉及的軟件模型類型、模型的屬性參數、平臺配置參數、主機名信息、IP信息寫入軟件配置信息腳本,進行軟件部署安裝。
系統設計開發的迭代流程如圖5所示。首先系統設計開發人員接收系統設計開發任務,根據任務需求建立測試目標,以及描述測試需求的任務場景和部署模型,形成相關的設計文檔。其次,登錄系統設計開發的門戶界面,查詢發現所需的設計開發工具、搜索可用的系統設計開發資源,也可以通過門戶來構建相應的仿真試驗系統對自己開發的系統資源。依據相應的規范要求完成相應的設計開發任務,經過模型轉換,將上述模型轉化為執行引擎可識別的仿真腳本。由于仿真執行引擎還要依賴由模擬程序庫所提供的服務模擬器和環境模擬器支持,因此需要進行模擬程序的半自動/自動輔助構建。然后,再將仿真腳本置于仿真引擎中進行測試執行。最后,進行測試結果的整理和分析。
利用開發試驗平臺進行系統設計開發的基本流程如圖5所示。各類系統設計開發用戶在設計開發門戶的支持下,利用開發試驗平臺提供的各類工具,依據相應的規范要求完成相應的設計開發任務。通過開發門戶對需求論證階段得到的需求模型進行檢驗,敏捷開發平臺通過對開發資源云池的資源查找,向開發門戶推薦相應需求驗證工具和資源,構建需求驗證原型及需求測試用例。對需求模型進行檢驗,當用戶對檢驗結果確認無誤后,輸出需求模型。

圖4 創建虛擬機時序圖Fig.4 Sequence diagram of creating a virtual host

圖5 系統設計開發迭代流程Fig.5 Iterative process of system design and development
在系統的設計開發過程中,各類角色的工作都是通過系統設計開發門戶進行的,系統設計開發門戶提供了發現和使用開發試驗平臺中各種設計開發服務的能力。各類設計開發角色通過門戶登錄平臺,查詢和發現所需的設計開發工具,搜索可用的系統設計開發資源。也可以通過門戶來構建相應的仿真試驗系統,對自己開發的系統資源、系統單元和集成后的新一代系統進行仿真試驗、測試和評估,并給出反饋建議。
門戶網站是各類服務和資源的用戶訪問接口,根據開發任務的不同,可以分為幾大服務:基礎設施管理、資源庫管理、服務管理、項目管理和人員管理。
基礎設施管理:負責對云資源的訪問和管理。
資源庫管理:負責對資源庫的訪問和管理。
服務管理:負責通過將資源庫的用于開發或驗證環境的資源部署在云資源環境上供開發人員使用。
項目管理:負責按項目管理開發任務。
人員管理:負責人員的注冊和權限管理。
根據開發角色的不同,可以分為系統管理員、項目管理員、開發人員和試驗人員。
系統管理員:可以對所有資源進行配置,可以對項目管理員權限授權。
項目管理員:可以對項目內所有資源進行配置,可以對開發人員和試驗人員進行權限授權。
開發人員:可以對開發資源進行配置。
試驗人員:可以對試驗資源進行配置。
圖6門戶網站所示為基于敏捷開發框架的基礎上開發的門戶網站,包含系統研制的需求階段、設計階段、開發階段、集成階段、驗證與測試等部分。敏捷開發平臺通過對資源云池的資源查找,向開發門戶推薦相應驗證工具和資源,構建驗證原型及測試用例。構建原型系統后對系統模型、功能進行集成驗證或測試評估,同時將結果驗證分析的結果反饋給用戶,用戶根據反饋結果提出修改意見,再次進行系統改進,直到用戶確認結果后,進行系統交付。
采用這種可重用的資源有效整合、按需使用,靈活適應不同的開發需求和開發過程,快速構建開發環境、驗證環境和測試環境,通過用戶體驗加速需求、設計和開發迭代過程。
本文針對任務驅動的仿真能力生成問題,實現基于云架構的仿真試驗系統動態構建技術,提出了基于Openstack云主機的敏捷開發平臺,通過云計算、服務化技術,任意定制系統開發或測試環境,將可重用的資源快速按需重構,用戶參與設計驗證,基于持續集成,快速響應系統修改變化進行迭代。