郝延剛
(海軍裝備部駐南京地區第二軍事代表室,南京 211153)
隨著現代軟件技術的發展,對軟件項目的需求日益復雜,變更頻繁發生。同時,軟件工程的發展也要求軟件開發從手工作坊上升到團隊化、規模化的開發模式。當開發團隊發展到一定規模時會越來越強調開發過程的規范化和成熟度。[1]
針對軟件技術發展的趨勢,2008 年頒布了《軍用軟件研制能力成熟度模型》(GJB 5000A-2008),規定了軍用軟件研制和維護活動中的重要管理過程和工程過程實踐,以提高軍工企業軟件研制能力,其中軟件配置管理更是在軟件項目開發過程中起著重要的作用。本文采用Spring、MyBatis以及Activiti技術,定義軟件配置業務流程,設計滿足 GJB 5000A 的軟件配置管理系統。
軟件配置管理是指在開發過程中各階段管理計算機程序演變的學科。作為軟件工程的關鍵元素,它己經成為軟件開發和維護的重要組成部分,提供了結構化的、有序化的、產品化的管理軟件工程的方法。它涵蓋了軟件生命周期的所有領域并影響所有數據和過程。[2-3]
依據GJB 5000A,軟件配置管理過程域主要包括3個專用目標:建立基線、跟蹤和控制更改以及保證完整性。
在軟件項目的初期階段,配置管理組開始策劃配置管理活動并建立配置管理系統,且隨著項目進展建立并發布相關基線。通過配置管理的配置控制、變更管理和配置審核等功能,對配置管理系統中的工作產品的發布和基線的變更實施系統性的控制和監督。
根據GJB 5000A-2008對配置管理的要求,配置管理系統應滿足如圖1所示功能需求。

圖1 配置管理功能需求
配置項是軟件配置管理指定的實體。配置項的管理可以按多個粒度級實施。一般來說,配置項包括需求、設計、文檔、測試數據和代碼等。但是,在最極端的情況下配置項可以是一行代碼或是一行文檔。
項目管理計劃應當涵蓋以下內容:
(1) 確定配置控制委員會(CCB)組長、成員以及組內分工;
(2) 標識配置項;
(3) 策劃各配置項的受控時機;
(4) 定義基線;
(5) 策劃項目產品入產品庫的時機;
(6) 策劃配置審核、配置狀態報告活動,明確時機或頻度。
依據配置管理庫目錄結構,可以使用配置管理工具或資源管理器建立項目的開發庫、受控庫、產品庫,并設置訪問權限。
對軟件配置管理庫的操作是軟件配置管理中的核心內容,主要涵蓋檢入、檢出、分支、合并、版本比較和版本標簽功能。[4]
基線是一組經過驗證或確認并作為后續工作開展依據的一個或一組工作產品。基線建立的條件是基線配置項均已納入受控庫受控,已通過相應審批。
項目在開發過程中需要建立的基線通常有功能基線、分配基線、設計基線、實現基線、產品基線等。軟件生命周期中每一條基線都應具有唯一的標識,并且基線的建立應該經過相應級別 CCB 批準后由配置管理人員建立。
變更管理是在軟件研制和維護過程中,對發現的軟件問題進行確認,分析產生問題的根源,確定受影響的應更改的受控軟件配置項,并實施軟件變更的過程。滿足 GJB 5000A 要求的軟件項目在開發及維護過程中任何一個基線配置項的更改都應在嚴格有效的變更控制下進行。
配置審核分為針對基線的基線審計和定期審核。對于配置審核中發現的問題應根據具體的問題處理規程進行處理。[5]
配置狀態發布是建立與維護配置項的記錄,可為相關人員提供準確的配置信息,通過記錄和報告變更請求的狀態為產品的質量、進度、趨勢等跟蹤提供數據。
隨著Internet技術的興起,瀏覽器已經統一了客戶端。將系統功能實現的核心部分集中到服務器上,可簡化系統的開發、維護和使用。因此,本文配置管理系統采用B/S架構進行設計。
運行時從界面到數據存儲經歷多個功能層次的交互,依次進行數據展現與輸入、數據傳輸與接入、服務請求派發、業務邏輯執行和數據持久化操作等多個階段,形成如圖2所示的分層結構。

圖2 配置管理系統分層架構設計
(a) 展現層負責以文字、圖形、表格等可視化界面向用戶展示系統信息;
(b) 服務交互層提供用戶請求數據的格式化、傳輸、封包與解包、URL處理的派發等功能,系統內部服務調用支持RESTful方式以JSON格式序列化,服務端采用Spring MVC中的DispatchServlet進行請求派發;
(c) 業務邏輯層進行具體的系統功能實現,系統邏輯組件包括Activiti框架組件,可實現工作流控制;
(d) 持久層采用MyBatis框架提供數據的持久化、數據訪問能力。
軟件配置管理系統實現4大功能:配置管理、配置審核管理、報告管理、系統管理。功能架構設計如圖3所示。

圖3 配置管理系統功能架構
配置管理功能模塊包含配置項標識、配置管理計劃制定、建立和維護配置管理環境、三庫管理、建立并發布基線、變更控制等功能,是配置管理的核心功能。
項目配置管理是根據項目配置管理計劃,對項目的配置管理活動進行配置審核。配置審核功能包括功能審核和物理審核功能。功能審核的目的是驗證配置項功能特征是否已達到其基線文檔中所規定的需求,是否完備和正確。物理審核的目的是驗證已構造的配置項是否完備,版本是否一致。
報告功能主要由配置狀態報告、配置審核報告、基線狀態報告組成。
根據配置規程及項目定義,系統定義多種角色:系統管理員、配置管理員、審批人員、開發人員。項目組成員根據自己的角色選擇相應用戶進行登錄。登入系統后,根據角色的不同系統所授予的權限及功能不同。
系統基于Activiti框架定義工作流程。Activiti采用BPMN2.0標準。該標準通過XML定義業務流程相關的節點。Activiti工作流程引擎配置如下所示:
在Activiti引擎支撐下,配置管理系統的流程控制可以基于數據庫實現流程節點的定義、修改與維護。
配置管理系統主流程涵蓋了配置過程的關鍵活動。主流程設計如圖4所示。
基于分層架構,采用Spring+MyBatis架構設計系統主要業務類包圖,如圖5所示。
UI包為前臺,Controller、Service、Dao包為后臺,遵循MVC架構設計。UI包主要負責前臺頁面的表示,通過RESTful接口與后臺Controller包進行交互。
Controller包負責具體的業務模塊流程的控制。在此包里面調用Service包對應的接口來控制業務流程。此包中主要包含配置管理相關的控制入口,如基線控制接口、配置項管理接口、變更控制接口、三庫管理接口等。

圖4 配置管理業務主流程設計

圖5 配置管理系統業務包設計
Service包主要負責業務模塊的邏輯應用流程實現。如果需要進行數據庫交互,則調用Dao包的接口。此包中主要包含配置管理相關的控制邏輯,如基線控制邏輯、配置項管理邏輯、變更控制邏輯、三庫管理邏輯等。
DAO層主要是做數據持久層的工作。本系統基于MyBatis架構實現數據持久化。由MyBatis框架自動實現Dao包與對應的Mapper.xml文件的關聯,并執行Mapper文件中的數據操作語句,實現數據持久化與讀取。
配置管理在軟件開發過程中占有重要的地位。本文基于GJB 5000A以及長期的工作實踐,采用Spring+MyBatis實現B/S架構的軟件配置管理系統。按照本文所述,能有效滿足GJB 5000A-2008中配置管理過程域二級的要求。結合良好的軟件配置管理系統,可以提高軟件產品的質量,提高工作效率,降低開發成本,從而推動軟件研制過程的標準化發展。