近期一直在學習GJB3206B-2022《技術狀態管理》,有了一些零星理解但不成系統,有朋友希望我寫寫GJB 5235-2004《軍用軟件配置管理》和GJB 5235A-2021《軍用軟件配置管理》( 敲黑板,本文嚴格區分GJB 5235和GJB5235A,請大家在閱讀時務必注意 )的區別,我就試著去讀了讀GJB 5235標準,卻發現單獨一個GJB 5235標準無法將配置管理說清楚,就順著又讀了一下GJB 5000、GJB 5880、GJB 5716等相關標準,就又有了一些體會,當然,這些體會更多是用GJB 3206的方式理解的,今天就斗膽來和各位朋友說一說。
01
概念及內涵
軟件配置(GJB 5235):在 軟件生存周期 各階段產生的各種形式和各種版本的文檔、程序、數據及環境的集合 。這個定義對應GJB3206B是“技術狀態”,但內涵差異較大,技術狀態的主體是“功能特性和物理特性”,而軟件配置的主體是“文檔、程序、數據及環境的集合”,這種差異導致GJB 5235A標準去掉了“軟件配置”術語定義。
軟件配置項 (GJB 5235):為了配置管理的目的而作為一個單位來看待的軟件成分,通常為軟件配置中的一個元素。計算機軟件配置項(GJB 5235A):能滿足最終使用功能,并被指定作為單個實體進行配置管理的軟件,簡稱“軟件配置項”。 這個定義對應GJB3206B是“技術狀態項”,兩個GJB 5235標準定義差異很大,但GJB 5235A的定義與GJB 3206B較為接近。GJB 5235中的配置項主體是“軟件排至中的一個元素”,包括“文檔、程序、數據及環境的集合”;GJB 5235A中的配置項主體是“軟件”,就是軟件產品,這也是標準把“配置項”與“配置文件”分開的原因;GJB3206B中的技術狀態主體是“產品及其組成部分”。
配置文件(GJB 5235A):規定配置項的功能特性和物理特性,或從這些內容發展而來的關于配置項驗證、使用、保障和報廢要求的技術文件 。這個定義對應GJB 3206B是“技術狀態文件”并且這個定義在GJB 5235中沒有,是在GJB 5235A版才出現的。
受控庫(GJB 5235):一個受控的軟件配置項集合,以便于軟件開發、運行及維護。配置管理庫(GJB 5235A):受控的計算機軟件配置項及其配置文件的集合,以便于軟件開發、運行及維護 。從GJB 5235的“受控庫”變成了GJB 5235A的“配置管理庫”,可以看出兩點變化: ① 從兩個定義的內容,GJB 5235的“軟件配置項集合”到GJB 5235A的“軟件配置項及其配置文件的集合”,說明GJB 5235開始區分配置項和配置文件兩個概念了; ② 從“受控庫”到“配置管理庫”,不只是名稱變了,內涵也從“受控庫”擴展到了“開發庫”、“受控庫”和“產品庫”。
02
軟件配置管理過程
依據GJB 5235A,軟件配置管理的過程包括標識、控制、記實、審核、發行管理和交付等活動,相對于GJB3206B,缺少了“策劃”和“驗證”環節,多了“發行管理和交付”內容,以下分別進行介紹。
2.1 配置標識
基于GJB 5235A,配置標識包括四部分:標識軟件配置項和配置文件、標識基線、建立配置管理庫、進展狀態四個部分,每個字都懂了,但什具體干什么工作還是不明白,翻譯如下:
1 )建立配置控制委員會,類似于GJB 3206B的技術狀態管理委員會,從分類分級角度出發,很多企業建立多層CCB,負責不同層級的配置管理工作;
2 )識別配置項、配置文件和基線,依據GJB 5235A的6.1b)條內容,選擇功能特性和物理特性能被單獨管理且有助于達到最終適用要求的產品或其組成部分作為配置項;確定每個配置項在不同階段的配置文件內容(如需求規格說明書);在軟件生產周期內容,應建立功能基線、 分配基線 和產品基線,它們由相應配置項的配置文件體現。
3 )標識配置項、配置文件和配置基線,明確配置項、配置文件和配置基線的標識規則,按規則進行配置項、配置文件和配置基線的標識, 敲黑板,相對于GJB 3206B,GJB 5235A多了一個配置基線的標識 ,這個“標識”的內涵包括明確基線的受控配置項/配置文件和記錄、納入/批準基線的規程、批準基線的授權、配置并建立完整基線的規程、標識符以及建立基線所需的工具等。
4 )制定配置管理計劃,相當于GJB 3206B中技術狀態策劃,包括編制、評審《軟件配置管理計劃》,將評審后的《軟件配置管理計劃》納入配置庫管理,并通知有關的利益相關方。
5 )建立配置管理庫,依據項目情況確定配置管理環境,定義配置庫結構(一般分為開發庫、受控庫、產品庫)并在相應庫中定義目錄結構,明確三類配置庫的訪問權限,并且定期備份配置庫內容。
2.2 配置控制
基于GJB 5235A,配置控制包括四部分:檢入和檢出控制、更改控制、版本控制、 存取控制 ,內容清晰但復雜,翻譯如下:
1 )檢入和檢出控制,參考GJB 5716-2006《軍用軟件開發庫、受控庫和產品庫通用要求》,軟件配置庫分為開發庫、受控庫、產品庫,軟件開發庫由項目組管理,軟件受控庫由研制管理部門(或質量管理部門)管理,軟件產品庫由企業的檔案管理部門管理。 ① 軟件開發庫,軟件開發庫由項目組自行管理,不再贅述。 ② 軟件受控庫 ,軟件受控庫入庫內容應是通過測試或評審的軟件配置項以及組織和顧客認可的其他內容 ;在配置項或其配置文件通過評審或確認后,提出受控庫入庫申請,經受控庫管理負責人審查后,執行入庫操作;項目基線在受控庫建立后,提出發布基線申請,經相應CCB審批后,基線正式發布。 ③ 軟件產品庫, 軟件產品庫入庫內容應是提供交付、生產、檢驗驗收、維護的軟件產品和其他軟件工作產品; 在軟件驗收結束前,提出產品庫入庫申請,經組織代表和顧客代表共同審查批準后( 注意,在最新發布的GJB 4072B-2023《軍用軟件質量監督要求》標準中,顧客代表在出入庫時需要簽字 ),執行入庫操作;產品基線在入產品庫經審查標識、版本并審批后,產品正式發布。
2 )更改控制。配置更改實施分類控制,分類的方式在GJB 5235A并沒有明確,要求參照GJB 3206,據此軟件配置更改也分為I類、II類、III類,具體的分類方式參見《學習 | GJB 3206B-2022系列之8 — 技術狀態更改》,此處不再贅述;首先提出配置更改申請,然后評價配置更改申請的影響,按更改類別不同進行審批( 敲黑板,按照最新發布的GJB 5709A-2023《裝備技術狀態管理監督要求》,對于I類技術狀態變更和狀態鑒定后的II類技術狀態更改申請,要求裝備承制單位報項目管理機構處理,軍事代表監督;對于III類技術狀態變更和狀態鑒定前的II類技術狀態更改申請,要求裝備承制單位審批,軍事代表監督并提出意見,都沒有軍事代表簽署的要求 )。審批后實施配置更改,注意實施過程中,需要先出庫、再更改、然后驗證、最后入庫;通報處理,要求在批準更改申請的情況下,應通報哪些使用受已批準配置更改影響的配置項及配置人員的有關人員。在未獲批準的情況下,也應通知有關人員( 敲黑板,這是GJB 3206B標準中沒有的內容,也是需要向配置管理學習的地方 );更改結束后,要編寫軟件配置更改報告,對納入已建立基線的配置項及其配置文件的配置更改,產生一個新的基線。
3 )版本控制,發生配置更改后,應更新版本號。
4 )存取控制,控制不同權限的人員訪問配置管理庫。
2.3 軟件配置狀態記實
基于GJB 5235A,配置狀態記實包括三部分:記錄標識、跟蹤配置更改、報告狀態記實,翻譯如下:
1 )記錄標識,包括記錄配置項及其配置文件的標識和狀態,并且原先版本可恢復;對配置項及配置文件的每次更改時版本和狀態進行維護;說明配置項、配置文件及其版本號,明確基線的最新版本。
2 )跟蹤配置更改,這是GJB3206B沒有的內容,也是需要向配置管理學習之處,包括跟蹤配置更改申請、跟蹤批準的配置更改落實情況,非常有必要,因為很多技術狀態混亂的根源就在于此。
3 )報告狀態記實,在配置庫的配置項及其配置文件狀態發生變化時,應對狀態進行統計,包括配置項、配置文件和基線的變更狀態、各個版本的記錄及差異等內容,形成配置狀態報告,并及時通知利益相關方。
2.4 軟件配置審核
在GJB 5235A中,只對配置審核進行了含糊的描述。在GJB 5000B-2021《軍用軟件能力成熟度模型》的CM2.6:配置審核的類型一般可包括功能配置審核、物理配置審核、配置管理審核(比GJB 3206B多了一個配置管理審核),其中,物理配置審核是為了評估基線的完整性,主要檢查組成基線的配置項及其配置文件是否完備、相應版本是否正確等;功能配置審核是為了審核配置管理系統中配置項的結構和完整性,主要檢查配置項的評審、測試記錄以及與軟件需求的追溯關系等;配置管理審核是為了確認配置管理活動與配置管理規程的一致性,可以由QA結合項目例行檢查開展。
2.5 軟件的發行管理和交付
軟件的發行管理和交付包括處理、存儲、復制、包裝、交付幾個部分,內容相對簡單,處理主要規定軟件產品的發行過程;存儲更多是保證所存儲配置項的完整性;復制是確保一致且完整地復制軟件產品;包裝明確了介質和標識的要求;交付強調按規程交付并且留存記錄。
03
GJB 5235與GJB5235A的差異
在GJB 5235A的前言中,明確了本次修訂主要變化內容,也是GJB 5235和GJB5235A的主要差異,包括以下內容:
1 )直接采用了GJB 3206《技術狀態管理》中的術語和定義,增加了“配置文件”術語和定義;將“受控庫”改為“配置管理庫”;
2 )將配置控制涉及的“更改”改為“配置更改”,將“配置評價”改為“配置審核”;
3 )修訂了“4 一般要求”的內容,增加了配置管理庫、配置項清單、非開發軟件配置項等方面的要求;
4 )細化了軟件配置項的選擇、標識軟件配置項等方面的內容;
5 )配置更改申請方面增加了配置更改的類別方面的要求;
6 )修改并細化了記錄標識、跟蹤配置更改、軟件配置審核等方面的要求;
7 )增加了附錄A《<軟件配置管理計劃>的正文格式》和附錄B《配置文件和基線》。
這些內容都只是明面上的變化,透過這些變化可以看出兩個觀點:
1 )GJB 5235A正在與GJB3206保持一致
在GJB 5235A中, ① 增加了“配置文件”的術語和定義,把GJB 5235的“配置項”細分為“配置項”和“配置文件”兩部分; ② 將“配置評價”改為“配置審核”; ③ 增加了配置項選擇的內容,配置更改申請增加了配置更改類別等,都表示GJB 5235A正在逐步與GJB3206保持一致。
2 )GJB 5235A關于基線的定義有點落伍
在GJB 5235A的附錄B.2 不同視角的基線中,產品的 功能基線 、分配基線和產品基線一般是面向產品的訂購方和總承制方,分承制方只對應產品的分配基線和產品基線。 當然,這是GJB 3206A的觀點,GJB 3206B已經進行了優化,增加了面向分承制方的基線分類方式,當然,這也可以理解,畢竟GJB 5235A是2021年發布的,而GJB 3206B是在2022年發布的。
04
最后的話
軟件配置管理是軟件產品質量管理的重要環節,包括配置標識、配置控制、配置狀態記實、配置審核、放行管理和交付等活動,GJB 5235A標準中正在增加越來越多的GJB 3206要素,軟硬件的技術狀態管理內容正在逐步趨向統一。本文也是從GJB 3206的方式理解軟件配置管理,很多都是個人理解,不對之處,敬請各位朋友批評指正。