郝延剛
(海軍裝備部駐南京地區(qū)第二軍事代表室,南京 211153)
隨著現(xiàn)代軟件技術(shù)的發(fā)展,對軟件項目的需求日益復(fù)雜,變更頻繁發(fā)生。同時,軟件工程的發(fā)展也要求軟件開發(fā)從手工作坊上升到團隊化、規(guī)?;拈_發(fā)模式。當(dāng)開發(fā)團隊發(fā)展到一定規(guī)模時會越來越強調(diào)開發(fā)過程的規(guī)范化和成熟度。[1]
針對軟件技術(shù)發(fā)展的趨勢,2008 年頒布了《軍用軟件研制能力成熟度模型》(GJB 5000A-2008),規(guī)定了軍用軟件研制和維護活動中的重要管理過程和工程過程實踐,以提高軍工企業(yè)軟件研制能力,其中軟件配置管理更是在軟件項目開發(fā)過程中起著重要的作用。本文采用Spring、MyBatis以及Activiti技術(shù),定義軟件配置業(yè)務(wù)流程,設(shè)計滿足 GJB 5000A 的軟件配置管理系統(tǒng)。
軟件配置管理是指在開發(fā)過程中各階段管理計算機程序演變的學(xué)科。作為軟件工程的關(guān)鍵元素,它己經(jīng)成為軟件開發(fā)和維護的重要組成部分,提供了結(jié)構(gòu)化的、有序化的、產(chǎn)品化的管理軟件工程的方法。它涵蓋了軟件生命周期的所有領(lǐng)域并影響所有數(shù)據(jù)和過程。[2-3]
依據(jù)GJB 5000A,軟件配置管理過程域主要包括3個專用目標(biāo):建立基線、跟蹤和控制更改以及保證完整性。
在軟件項目的初期階段,配置管理組開始策劃配置管理活動并建立配置管理系統(tǒng),且隨著項目進展建立并發(fā)布相關(guān)基線。通過配置管理的配置控制、變更管理和配置審核等功能,對配置管理系統(tǒng)中的工作產(chǎn)品的發(fā)布和基線的變更實施系統(tǒng)性的控制和監(jiān)督。
根據(jù)GJB 5000A-2008對配置管理的要求,配置管理系統(tǒng)應(yīng)滿足如圖1所示功能需求。
圖1 配置管理功能需求
配置項是軟件配置管理指定的實體。配置項的管理可以按多個粒度級實施。一般來說,配置項包括需求、設(shè)計、文檔、測試數(shù)據(jù)和代碼等。但是,在最極端的情況下配置項可以是一行代碼或是一行文檔。
項目管理計劃應(yīng)當(dāng)涵蓋以下內(nèi)容:
(1) 確定配置控制委員會(CCB)組長、成員以及組內(nèi)分工;
(2) 標(biāo)識配置項;
(3) 策劃各配置項的受控時機;
(4) 定義基線;
(5) 策劃項目產(chǎn)品入產(chǎn)品庫的時機;
(6) 策劃配置審核、配置狀態(tài)報告活動,明確時機或頻度。
依據(jù)配置管理庫目錄結(jié)構(gòu),可以使用配置管理工具或資源管理器建立項目的開發(fā)庫、受控庫、產(chǎn)品庫,并設(shè)置訪問權(quán)限。
對軟件配置管理庫的操作是軟件配置管理中的核心內(nèi)容,主要涵蓋檢入、檢出、分支、合并、版本比較和版本標(biāo)簽功能。[4]
基線是一組經(jīng)過驗證或確認(rèn)并作為后續(xù)工作開展依據(jù)的一個或一組工作產(chǎn)品?;€建立的條件是基線配置項均已納入受控庫受控,已通過相應(yīng)審批。
項目在開發(fā)過程中需要建立的基線通常有功能基線、分配基線、設(shè)計基線、實現(xiàn)基線、產(chǎn)品基線等。軟件生命周期中每一條基線都應(yīng)具有唯一的標(biāo)識,并且基線的建立應(yīng)該經(jīng)過相應(yīng)級別 CCB 批準(zhǔn)后由配置管理人員建立。
變更管理是在軟件研制和維護過程中,對發(fā)現(xiàn)的軟件問題進行確認(rèn),分析產(chǎn)生問題的根源,確定受影響的應(yīng)更改的受控軟件配置項,并實施軟件變更的過程。滿足 GJB 5000A 要求的軟件項目在開發(fā)及維護過程中任何一個基線配置項的更改都應(yīng)在嚴(yán)格有效的變更控制下進行。
配置審核分為針對基線的基線審計和定期審核。對于配置審核中發(fā)現(xiàn)的問題應(yīng)根據(jù)具體的問題處理規(guī)程進行處理。[5]
配置狀態(tài)發(fā)布是建立與維護配置項的記錄,可為相關(guān)人員提供準(zhǔn)確的配置信息,通過記錄和報告變更請求的狀態(tài)為產(chǎn)品的質(zhì)量、進度、趨勢等跟蹤提供數(shù)據(jù)。
隨著Internet技術(shù)的興起,瀏覽器已經(jīng)統(tǒng)一了客戶端。將系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,可簡化系統(tǒng)的開發(fā)、維護和使用。因此,本文配置管理系統(tǒng)采用B/S架構(gòu)進行設(shè)計。
運行時從界面到數(shù)據(jù)存儲經(jīng)歷多個功能層次的交互,依次進行數(shù)據(jù)展現(xiàn)與輸入、數(shù)據(jù)傳輸與接入、服務(wù)請求派發(fā)、業(yè)務(wù)邏輯執(zhí)行和數(shù)據(jù)持久化操作等多個階段,形成如圖2所示的分層結(jié)構(gòu)。
圖2 配置管理系統(tǒng)分層架構(gòu)設(shè)計
(a) 展現(xiàn)層負(fù)責(zé)以文字、圖形、表格等可視化界面向用戶展示系統(tǒng)信息;
(b) 服務(wù)交互層提供用戶請求數(shù)據(jù)的格式化、傳輸、封包與解包、URL處理的派發(fā)等功能,系統(tǒng)內(nèi)部服務(wù)調(diào)用支持RESTful方式以JSON格式序列化,服務(wù)端采用Spring MVC中的DispatchServlet進行請求派發(fā);
(c) 業(yè)務(wù)邏輯層進行具體的系統(tǒng)功能實現(xiàn),系統(tǒng)邏輯組件包括Activiti框架組件,可實現(xiàn)工作流控制;
(d) 持久層采用MyBatis框架提供數(shù)據(jù)的持久化、數(shù)據(jù)訪問能力。
軟件配置管理系統(tǒng)實現(xiàn)4大功能:配置管理、配置審核管理、報告管理、系統(tǒng)管理。功能架構(gòu)設(shè)計如圖3所示。
圖3 配置管理系統(tǒng)功能架構(gòu)
配置管理功能模塊包含配置項標(biāo)識、配置管理計劃制定、建立和維護配置管理環(huán)境、三庫管理、建立并發(fā)布基線、變更控制等功能,是配置管理的核心功能。
項目配置管理是根據(jù)項目配置管理計劃,對項目的配置管理活動進行配置審核。配置審核功能包括功能審核和物理審核功能。功能審核的目的是驗證配置項功能特征是否已達(dá)到其基線文檔中所規(guī)定的需求,是否完備和正確。物理審核的目的是驗證已構(gòu)造的配置項是否完備,版本是否一致。
報告功能主要由配置狀態(tài)報告、配置審核報告、基線狀態(tài)報告組成。
根據(jù)配置規(guī)程及項目定義,系統(tǒng)定義多種角色:系統(tǒng)管理員、配置管理員、審批人員、開發(fā)人員。項目組成員根據(jù)自己的角色選擇相應(yīng)用戶進行登錄。登入系統(tǒng)后,根據(jù)角色的不同系統(tǒng)所授予的權(quán)限及功能不同。
系統(tǒng)基于Activiti框架定義工作流程。Activiti采用BPMN2.0標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)通過XML定義業(yè)務(wù)流程相關(guān)的節(jié)點。Activiti工作流程引擎配置如下所示:
在Activiti引擎支撐下,配置管理系統(tǒng)的流程控制可以基于數(shù)據(jù)庫實現(xiàn)流程節(jié)點的定義、修改與維護。
配置管理系統(tǒng)主流程涵蓋了配置過程的關(guān)鍵活動。主流程設(shè)計如圖4所示。
基于分層架構(gòu),采用Spring+MyBatis架構(gòu)設(shè)計系統(tǒng)主要業(yè)務(wù)類包圖,如圖5所示。
UI包為前臺,Controller、Service、Dao包為后臺,遵循MVC架構(gòu)設(shè)計。UI包主要負(fù)責(zé)前臺頁面的表示,通過RESTful接口與后臺Controller包進行交互。
Controller包負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制。在此包里面調(diào)用Service包對應(yīng)的接口來控制業(yè)務(wù)流程。此包中主要包含配置管理相關(guān)的控制入口,如基線控制接口、配置項管理接口、變更控制接口、三庫管理接口等。
圖4 配置管理業(yè)務(wù)主流程設(shè)計
圖5 配置管理系統(tǒng)業(yè)務(wù)包設(shè)計
Service包主要負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用流程實現(xiàn)。如果需要進行數(shù)據(jù)庫交互,則調(diào)用Dao包的接口。此包中主要包含配置管理相關(guān)的控制邏輯,如基線控制邏輯、配置項管理邏輯、變更控制邏輯、三庫管理邏輯等。
DAO層主要是做數(shù)據(jù)持久層的工作。本系統(tǒng)基于MyBatis架構(gòu)實現(xiàn)數(shù)據(jù)持久化。由MyBatis框架自動實現(xiàn)Dao包與對應(yīng)的Mapper.xml文件的關(guān)聯(lián),并執(zhí)行Mapper文件中的數(shù)據(jù)操作語句,實現(xiàn)數(shù)據(jù)持久化與讀取。
配置管理在軟件開發(fā)過程中占有重要的地位。本文基于GJB 5000A以及長期的工作實踐,采用Spring+MyBatis實現(xiàn)B/S架構(gòu)的軟件配置管理系統(tǒng)。按照本文所述,能有效滿足GJB 5000A-2008中配置管理過程域二級的要求。結(jié)合良好的軟件配置管理系統(tǒng),可以提高軟件產(chǎn)品的質(zhì)量,提高工作效率,降低開發(fā)成本,從而推動軟件研制過程的標(biāo)準(zhǔn)化發(fā)展。