唐滔 譚鳳
摘要:版本控制是軟件配置管理的重要功能,負(fù)責(zé)為配置庫中的所有元素自動分配版本標(biāo)識,并保證版本命名的惟一性。本文運(yùn)用軟件工程的原理并結(jié)合版本控制的實(shí)踐,指出為了有效地進(jìn)行版本拉制而引入基線管理,并通過最常用的軟件項目基線;包括檢入、檢出控制、分支和合并、歷史記錄。結(jié)果表明,在配置管理教學(xué)過程中通過基線進(jìn)行版本拉制,是保護(hù)代碼資源、提高開發(fā)效率、加強(qiáng)軟件項目管理的有效途徑。
關(guān)鍵詞:塞線;版本拉制;檢入;檢出控制
前言
軟件配置管理是規(guī)范、高效的軟件開發(fā)基礎(chǔ)結(jié)構(gòu),是在項目開發(fā)過程中,標(biāo)識、控制和管理軟件變更的一種管理活動。有效的配置管理,這使得用戶期望軟件系統(tǒng)能夠很好地適應(yīng)外界要求的變化,使日后的維護(hù)和升級得到保證[2]版本控制是軟件配置管理的重要活動,因?yàn)檐浖兏3碥浖姹镜母淖兣c新版本的發(fā)布,必須進(jìn)行有效的控制。版本控制的對象包括文檔、源代碼、規(guī)范、可執(zhí)行文件等,目的在于對軟件開發(fā)過程中的這些對象提供有效的跟蹤手段,便于對版本進(jìn)行檢索和跟蹤,避免文件的丟失和覆蓋[3]。在教學(xué)過程中,配置管理的版本管理和基線是非常重要。
1 基線
基線是軟件開發(fā)過程中的關(guān)鍵里程碑,當(dāng)某一個軟件配置項納入基線管理后,就是后續(xù)工作的標(biāo)準(zhǔn),只有經(jīng)過管理人員授權(quán)后才能改變這個標(biāo)準(zhǔn)?;€又可細(xì)分為如下三類:
(1)功能基線。是最初批準(zhǔn)的功能配置標(biāo)識,可以是甲乙雙方簽訂的有關(guān)軟件實(shí)現(xiàn)功能的協(xié)議書,也可以是需要分析結(jié)束后確定軟件系統(tǒng)功能,或者是上級主管部門下達(dá)的軟件規(guī)格說明。功能基線確定軟件需要實(shí)現(xiàn)的功能。
(2)指派基線。是最初批準(zhǔn)的指派配置標(biāo)識,通常是需求分析階段工作結(jié)束時,經(jīng)過正式評審和批準(zhǔn)后的軟件需求規(guī)格說明。通過指派基線,可以將工作分派給相關(guān)的組織或個人。
(3)產(chǎn)品基線。是最初批準(zhǔn)的產(chǎn)品配置標(biāo)識。通常是系統(tǒng)組裝完成并經(jīng)過系統(tǒng)測試,軟件能與系統(tǒng)其他部件正確連接,達(dá)到規(guī)定的功能和性能,通過正式評審,可以將產(chǎn)品投入使用?;€作為檢查點(diǎn),正式發(fā)行的產(chǎn)品必須是經(jīng)過控制的基線產(chǎn)品。
2 版本管理
版本管理是軟件配置管理的基礎(chǔ),通過版本管理保護(hù)開發(fā)的軟件資源。軟件系統(tǒng)版本隨著軟件開發(fā)工作的進(jìn)展而演變,從而構(gòu)成復(fù)雜的版本空間。版本和基線的關(guān)系可以描述為:配置管理保存已完成的版本、創(chuàng)建新版本、合并多個版本,并提供一種策略來選擇版本創(chuàng)建基線。系統(tǒng)新版本可能有不同的功能、性能,可能修改了系統(tǒng)錯誤。有些版本可能在功能上沒有什么不同,只是為不同的硬件或軟件配置而設(shè)計的。每個系統(tǒng)發(fā)布版本都應(yīng)該包含新的功能或是針對不同的硬件平臺。一個系統(tǒng)的版本要比發(fā)布版本多得多,因?yàn)闄C(jī)構(gòu)的內(nèi)部版本是為內(nèi)部開發(fā)或測試而創(chuàng)建的,有些根本不會發(fā)布到客戶手中。軟件配置管理版本控制之所以在基線的控制之下,是因?yàn)樘幱诨€控制的軟件配置項版本,表明已完成了一定的階段性工作,版本處于被鎖定的狀態(tài);而非基線控制的版本,軟件開發(fā)人員可以隨意修改而不必經(jīng)過審批流程。被鎖定的版本如果需要修改。
現(xiàn)在的版本控制通常由SVN\GIT等工具來支持。工具用于管理對每個系統(tǒng)版本的存儲,并控制對系統(tǒng)組件的訪問。這些組件必須能夠從系統(tǒng)中抽取出來進(jìn)行編輯,當(dāng)將其重新放入系統(tǒng)的時候,就構(gòu)成了一個新的系統(tǒng)版本,由版本管理系統(tǒng)給它一個新的名字。版本控制包括:檢入檢出控制(Checkin/ Checkout)、分支和合并(Branch/ Merge),歷史記錄(History record)。
3.1 檢入、檢出控制
建立基線之后,配置項被保存在配置數(shù)據(jù)庫中。這些配置項不能隨意進(jìn)行修改,但在很多時候仍然需要修改,修改后仍需要保存在配置數(shù)據(jù)庫中,這就需要檢入、檢出控制?!皺z入”就是將軟件配置項從開發(fā)人員的工作空間存儲到配置數(shù)據(jù)庫的過程,“檢出”就是將軟件配置項從配置數(shù)據(jù)庫取出并存儲到開發(fā)人員工作空間的過程。檢入,檢出控制保證了軟件工程師對訪問對象的權(quán)分支和合并版本分支的人工方法是從主版本拷貝一份并做上標(biāo)記,版本合并的人工方法是將一個版本的內(nèi)容拷貝到另一個版本上形成新版本或?qū)蓚€版本的內(nèi)容合并為一個新版本。對文件來說,分支與合并的結(jié)果就是形成具有圖形結(jié)構(gòu)的版本歷史。
3.3 歷史記錄
版本控制的歷史記錄,跟蹤并記錄了整個軟件的開發(fā)過程,便于對在軟件開發(fā)過程不同階段新生的成果(包括源代碼、文檔資料等)進(jìn)行對比分析,對已修改的軟件配置項恢復(fù)到未修改新的狀態(tài),對不同人員所做的修改進(jìn)行監(jiān)視、監(jiān)督和匯總,提高軟件項目的管理水平的控制能力,同時歷史記錄記載了版本的修改時間、修改人員、修改描述等信息,便于分清責(zé)任并進(jìn)行績效考核管理。
4 結(jié)束語
版本控制逐漸成為軟件配置管理中重要的控制過程,是軟件項目管理領(lǐng)域重要的研究方向。配置管理的版本控制可以解決很多問題,包括根據(jù)不同用戶的需求,配置不同的軟件系統(tǒng);保存系統(tǒng)老版本,為撤銷修改或追溯問題提供支持;支持多個軟件開發(fā)人員共同開發(fā)一個項目,或同時修改一個軟件配置項;存儲軟件的多個版本,清晰地表明軟件版本的演進(jìn)過程。基于基線的版本控制,能確保軟件配置項在軟件生命周期中始終處于受控狀態(tài),并恢復(fù)到任一個歷史狀態(tài),方便地進(jìn)行軟件項目的開發(fā)和管理。
參考文獻(xiàn)
[1]郭寧,周曉化.軟件項目管理[M].北京:清華大學(xué)出版社,2007.
[2]李玉龍,李長云.軟件動態(tài)演化技術(shù)[J].計算機(jī)技術(shù)與發(fā)展,2008,18(9):83-86.