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

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

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

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

圖4 配置管理業(yè)務主流程設計

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