軟件配置管理是關於軟件資產的管理。源代碼、設計文檔等文檔、可運行的程序、自動測試腳本、編譯器等工具和環境……所有在軟件研發過程中使用或產生的,有價值的值得保存的東西,都是軟件資產。軟件配置管理就是對這些內容的管理。
1、配置管理包括6個主要活動:
(1)制定配置管理計划。定義如何做好配置管理。
(2)配置標識。識別出需要把哪些東西作為配置項來管理。
(3)配置控制。配置項有一些變更,需要做好配置變更的控制。
(4)配置狀態報告。需要執行配置項的狀態是什么樣。
(5)配置審計。對配置效果進行審計,經驗和教訓總結。
(6)發布管理和交付。對正式發布的版本進行控制,妥善保存好代碼和文檔的母拷貝。
2、典型的配置項包括項目計划書、需求文檔、設計文檔、源代碼、可執行代碼、測試用例、運行軟件所需的各種數據,他們經評審和檢查通過后進入配置管理。配置項是可以修改的。有些文檔生成后是不可修改的(如測量報告、會議紀要、工作報告),所以不能被當作配置項。配置管理參考的國標:GB/T11457-2006
3、配置項分為基線配置項(有版本號)和非基線配置項。基線配置包括所有設計文檔和源程序等開發過程的配置項;非基線配置項包括項目的各類計划和報告等管理過程的配置項。
4、所有配置項的操作權限應由CMO(配置管理員)嚴格管理。基本原則是:基線配置項向開發人員開放讀取的權限,非基線配置項向PM、CCB及相關人員開放。
5、配置項版本號和狀態(版本增量由用戶自己把握,但基本遵循以下命名規范):
0.YZ -> 草稿。配置項剛建立時的狀態。1.0版之前的,均為草稿,例如0.1、0.5、0.99。
X.Y -> 正式。配置項經過評審的狀態。1.0版及以后的主+次版本,均為正式。如1.2、2.3。
X.YZ -> 修改。配置項修改時的狀態。兩個正式版中間的版本,均為修改。如1.21。
6、配置項的版本管理作用於多個配置管理活動之中,如配置標識、配置控制和配置審計、發布和交付等。在項目開發過程中,絕大多數配置項都要經過多次的修改才能最終確定下來。對配置項的任何修改都將產生新的版本。由於我們不能保證新版本一定比舊版本好,所以不能拋棄舊版本。版本管理的目的是按照一定的規則保存配置項的所有版本,避免發生版本丟失或混淆等現象,並且可以快速准確地查找到配置項的任何版本。
7、配置基線由一組配置項組成,這些配置項構成一個相對穩定的邏輯實體。基線中的配置項不能再被任何人隨意修改,對基線的變更必須遵循正式的變更控制程序。一組擁有唯一標識號的需求、設計、源代碼和相應的可執行代碼、構造文卷和用戶文檔構成一個基線。產品的一個測試版本就是一個基線。基線通常對應於開發過程中的里程碑,一個產品可以有多個基線,也可能只有一個基線。交付給外部顧客的基線一般稱為發行基線(Release);內部開發使用的基線一般稱為構造基線(Build)。
對於每一個基線,要定義下列內容:建立基線的事件條件、受控的配置項、建立和變更基線的程序、批准變更基線所需的權限。
8、配置庫類型:
(1)開發庫(動態庫,程序員庫,工作庫):開發人員正在開發的配置實體,可以任意頻繁修改。
(2)受控庫(主庫):將某個階段結束時的開發庫提交到受控庫。當前的基線加上對基線的變更。存放階段性產物,可以修改,但要走變更流程。
(3)產品庫(靜態庫,發行庫,軟件倉庫):將受控庫中測試沒問題的版本提交發行,即為產品庫。已發布使用的各種基線的存檔。存放最終產品,一般不再修改,真的要修改需要走變更流程。
9、配置庫的建庫模式:
(1)按配置項的類型分類建庫,通常用於通用軟件的開發組織。
(2)按開發任務建立相應的配置庫,適用於專業軟件的開發組織。
10、配置管理員為每個項目成員分配對配置庫的操作權限:
Read:讀取,但不可變更
Check:對文件內容進行變更
Add:追加,重命名,刪除等
Destroy:不可逆毀壞,清除,rollback等
針對開發庫、受控庫和產品庫,會對每個成員設置不同的權限。
11、CCB:配置控制委員會(也叫變更控制委員會):負責對變更作出評價,審批以及監督已批准變更的實施。
(1)其成員可以包括項目經理、用戶代表、產品經理、開發工程師、測試工程師、質量控制人員、配置管理員等。
(2)CCB不是常設機構,小的項目CCB可以只有一人,甚至只是兼職人員。
(3)CCB還負責:配置管理計划審批、基線設立審批、產品發布審批等。CCB是決策機構,不是執行機構。
12、軟件配置管理是在貫穿整個軟件生命周期中建立和維護項目產品的完整性。配置管理員(CMO)負責在整個項目生命周期中進行配置管理活動。這些活動主要有:
(1)編寫配置管理計划,並提交配置管理委員會審批
(2)建立和維護配置管理系統
(3)建立和維護配置庫
(4)配置項識別
(5)建立和管理基線
(6)版本管理和配置控制
(7)配置狀態報告
(8)配置審計
(9)發布管理和交付
(10)對項目成員進行配置管理培訓
13、配置管理計划的主要內容有:
(1)配置管理活動,覆蓋的主要活動包括配置標識、配置控制、配置狀態報告、配置審計、發布管理和交付。
(2)實施這些活動的規范和流程。
(3)實施這些活動的進度安排。
(4)負責實施這些活動的人員或組織,以及他們和其他組織的關系。
14、配置標識是配置管理員的職能,基本步驟如下:
(1)識別需要受控的配置項
(2)為每個配置項指定唯一性的標識號
(3)定義每個配置項的重要特征
(4)確定每個配置項的所有者及其責任
(5)確定配置項進入配置管理的時間和條件
(6)建立和控制基線
(7)維護文檔和組件的修訂與產品版本之間的關系
15、配置控制即配置項和基線的變更控制,包括這些任務:標識和記錄變更申請;分析和評價變更;批准或否決申請;實現、驗證和發布已修改的配置項。配置變更流程如下:
(1)變更申請
(2)變更評估(CCB)
(3)通告評估結果(變更工作量估計是否合理)
(4)變更實施
(5)變更驗證與確認
(6)變更的發布
(7)基於配置庫的變更控制,流程如下:
以下是各角色在配置管理活動中的權限總結:
16、配置狀態報告應着重反映當前基線配置項的狀態,供相關人員了解。報告的內容包括:
(1)每個受控配置項的標識和狀態
(2)每個變更申請的狀態和已批准修改的實施狀態
(3)每個基線的當前和過去版本狀態
(4)其他配置管理活動的記錄
17、配置審計也稱為配置審核或配置評價,配置審計分功能配置審計和物理配置審計,前者審計配置項的一致性(功效和需求是否一致),后者審計配置項的完整性(物理存在是否與預期一致)。配置審計的作用是為了確保項目配置管理的有效性,體現了配置管理的最根本要求——不允許出現任何混亂現象,如:
(1)防止向用戶提交不適合的產品
(2)發現不完善的實現
(3)找出各配置項間不匹配或不相容的現象
(4)確認配置項已在所要求的質量控制審核之后納入基線並入庫保存
(5)確認記錄和文檔保持着可追溯性
18、發布管理和交付活動的主要任務是:有效控制軟件產品和文檔的發行和交付,在軟件產品的生存期內妥善保存代碼和文檔的母拷貝。
(1)存儲:確保存儲的配置項的完整性
(2)復制:用拷貝的方式制造軟件
(3)打包:確保按批准的規程制備交付的介質
(4)交付:按合同中的規定交付產品或服務
(5)重建:應能重建軟件環境
19、三種常用的配置管理工具對比:
(1)SVN:集中式版本控制之王,簡單,功能強,體積小,必須聯網使用
(2)ClearCase(CC):集中式版本控制,功能強大,過於龐大,運行慢,世界500強使用
(3)GIT:開源的分布式版本控制工具,速度快,支持本地版本控制,分支功能強
軟件配置管理關心的是,文件的各個歷史版本是否記錄了下來,以便今后翻閱;各次修改的修改者、修改的原因是否記錄了下來,以便將來可以理解當時的情形,理解為什么做出這樣的改動。