現(xiàn)在大家都已經(jīng)認識到了有效的軟件配置管理工作對于提高團隊開發(fā)效率、保障軟件產(chǎn)品質(zhì)量的重要意義,很多朋友也開始了在配置管理實施方面的一些研究,市場上我們也可以看到一些軟件配置管理工具廠商針對具體配置管理工具提供的實施服務(wù);但是,實施軟件配置管理到底應(yīng)該做哪些東西?團隊的配置管理現(xiàn)狀怎么評估?在哪些方面還可以進行改進?我們相信,這些問題可能正困擾著大多數(shù)研發(fā)主管和項目經(jīng)理。國外軟件產(chǎn)業(yè)界在軟件配置管理這個專題上已經(jīng)進行了多年的理論和實踐上的研究。在多年經(jīng)驗積累的基礎(chǔ)上,產(chǎn)業(yè)界總結(jié)出來一系列“最佳實踐”(Best Practices),我們可以使用這些“最佳實踐”來作為評估一個組織軟件配置管理能力的標尺,也可以作為我們實施軟件配置管理的指南。這些“最佳實踐”包括: 1、標識需要進行存儲的工件(Artifact)并保障安全存儲; 下文將介紹前5條最佳實踐。 1、標識需要進行存儲的工件(Artifact)并保障安全存儲 在軟件開發(fā)過程中,我們會得到各種各樣的產(chǎn)出,比如各種文檔、模型、源代碼以及測試腳本等,我們把這些大家勞動的成果統(tǒng)稱為工件(Artifact)。對于一個軟件開發(fā)組織來說,這些工件就構(gòu)成了組織的核心資產(chǎn)。對于如現(xiàn)金、有價證券之類的資產(chǎn),我們都會準備一個保險箱,好好地保存;對于軟件資產(chǎn),我們也需要相似的措施。所以,軟件配置管理工作的第一步就是建立一個安全、可靠的存儲庫(Repository),用于保存組織的核心軟件資產(chǎn)。 這個庫對于開發(fā)團隊來說,就像是財務(wù)室里的保險箱。因此,容錯能力和高可靠性是這個庫最重要的屬性。除此之外,隨著組織的增長,置于庫中的數(shù)據(jù)會越來越多,為保證運行效率,庫的可擴展性也是非常重要的一個屬性。 對于存儲庫來說,良好規(guī)劃的備份和災(zāi)難恢復過程是必不可少的。令人驚訝的是,很多軟件組織在這方面都沒有給予必要的重視,因而也給組織的發(fā)展留下了嚴重的隱患,一旦災(zāi)難發(fā)生,后果不堪設(shè)想。 在建立好存儲庫以后,需要做的工作就是確定將哪些工件置于庫中。根據(jù)實際需要,組織可能會決定只將正式文檔、模型文件、源代碼、發(fā)布版本等文件放入庫中,而對于臨時文檔、編譯時產(chǎn)生的中間文件等,則不將它們放入庫中。我們把放入庫中的文件稱之為配置項(Configuration Item)。 2、控制并且審計(Audit)對于工件的修改 在標識相關(guān)的工件并將它們置于存儲庫中以后,我們需要建立對于這些工件的修改控制機制以及審計機制。 審計機制通常通過“檢出/檢入”(Check out/Check in)模式得到實現(xiàn)。在這種模式下,工件一旦入庫,讀寫權(quán)限就變成只讀(read only),如果要對該工件進行修改,則需要通過“檢出”這個步驟;在修改結(jié)束以后,如果希望將修改的成果入庫,則需要通過“檢入”這個步驟。在經(jīng)過一次“檢出/檢入”步驟以后,會形成該工件新的版本,因此也有人把上邊的過程稱之為“版本控制”(Version Control)。在版本控制過程中,如果利用一些配置管理工具(或者版本控制工具)的支持,則可以自動地記錄審計工作所需的四個“W”(Who、When、Why、What)。 3、設(shè)立并管理基線 通過審計機制我們可以保存一個工件完整的變更歷史;但是一個項目通常是由成百上千個工件構(gòu)成的,每個工件在變更過程中都會形成一系列的版本,如何確認系統(tǒng)在某個時刻分別由哪些工件的哪些版本構(gòu)成?這就需要引入一個概念:配置(Configuration)。對于軟件系統(tǒng)來說,在開發(fā)過程中某個時刻存儲庫中所有工件的一個“快照”(snapshot),就形成一個“配置”。對于一些重要時刻的系統(tǒng)配置,我們可以使用基線(Baseline)來進行標志。 IEEE對于基線的定義是:已經(jīng)通過正式復審和批準的某規(guī)約或產(chǎn)品,它因此可以作為進一步開發(fā)的基礎(chǔ),并且只能通過正式的變更控制過程進行改變.簡單地說,基線就是項目儲存庫中每個工件版本在特定時期的一個“快照”。它提供一個正式標準,隨后的工作基于這個標準進行,并且只有經(jīng)過授權(quán)后才能變更這個標準。建立一個初始基線后,以后每次對它進行的變更都將記錄為一個差值,直到建成下一個基線。 建立基線的主要原因是:重現(xiàn)能力、可追蹤性和報告能力。 重現(xiàn)能力是指返回并重新生成軟件系統(tǒng)給定發(fā)布版本的能力。可追蹤性建立項目各種類型工件(需求、設(shè)計、實現(xiàn)、測試等)之間的橫行依賴關(guān)系,其目的在于確保設(shè)計滿足需求、代碼實施設(shè)計以及使用正確代碼編譯生成可執(zhí)行文件。報告能力來源于一個基線內(nèi)容同另一個基線內(nèi)容的比較,基線比較有助于程序調(diào)試并生成發(fā)布說明(Release notes)。 建立基線有以下幾個好處: 4、記錄并跟蹤變更請求 著名的軟件大師Brooks曾經(jīng)談到導致軟件開發(fā)困難的一個原因就是軟件的可變性。大家都知道,各種要素,如市場的變化、技術(shù)的進步、客戶對于項目認識的深入等等,都可能導致軟件開發(fā)過程中的變更請求的提出,而且承認這種變更請求的合理性也已經(jīng)是工業(yè)界的共識。 變更請求管理的復雜程度與變更的具體類型有關(guān)。簡單地說,變更請求管理會涉及到變更請求的提交、變更請求的復審、變更任務(wù)分配、變更結(jié)果的驗證等一系列活動。通常,變更請求管理的流程是:由請求者提交變更請求,變更控制委員會(Change Control Board,CCB)召開CCB復審會議對變更請求進行復審,以確定該請求是否為有效請求。如果是,則基于項目團隊所確定的優(yōu)先級、時間表、資源、變更難度、風險、嚴重性以及其他相關(guān)標準,判定對該變更的修改程序,并分配實施變更任務(wù)的人力資源和時間資源;變更任務(wù)實施人員負責實施該變更;實施結(jié)束以后提交驗證人員,由驗證人員負責對變更結(jié)果進行驗證,如果變更成功則通知相關(guān)人員,否則由變更實施人員返工。 典型的變更請求管理如需求變更管理、缺陷追蹤等。實施有效的變更請求管理有以下好處: 5、維護穩(wěn)定、一致的工作空間 在我們把相關(guān)工件納入集中的存儲庫、大家也都遵照“檢出/檢入”的工作模式對工件進行修改以后,下一步的工作就是要為每位開發(fā)人員設(shè)定“私有”的工作區(qū),或者叫做工作空間。 工作空間通常以特定的基線為基礎(chǔ)創(chuàng)建,要求能夠做到為指定的任務(wù)方便地取出正確的工作版本建立私有工作空間;開發(fā)人員根據(jù)項目要求在自己的私有空間中對工件進行修改和測試活動,而與其他開發(fā)人員相對保持隔離,也就是說,自己的修改活動不會受到他人的影響,也不會影響到其他開發(fā)人員。但是,在保持隔離的同時,又應(yīng)該提供相應(yīng)的機制,當開發(fā)人員希望共享工作成果的時候,能夠很方便地實現(xiàn)共享。 開發(fā)人員日常的開發(fā)工作都是在工作空間里進行的,因此,穩(wěn)定性應(yīng)該是工作空間首要的特性,只有高度穩(wěn)定的工作空間才能保證開發(fā)人員的工作效率。 |
|