作者: 晨光(Morning) 關(guān)鍵字: 版本控制 軟件開發(fā) 來源: 原作
【聲明】如需復(fù)制、傳播,請附上本聲明,謝謝。原文出處:http://morningspace.51.net/,moyingzz@etang.com
對于一個采用版本控制進(jìn)行軟件開發(fā)的多人開發(fā)團(tuán)隊而言,其一般的開發(fā)方式是:采用服務(wù)器/客戶端的形式,在上面分別安裝版本控制工具的服務(wù)器和客戶端版本,軟件放在服務(wù)器上為大家所共享,開發(fā)人員在客戶端從服務(wù)器上將軟件的相關(guān)部分下載到本地,進(jìn)行修改,改動結(jié)果最終提交到服務(wù)器上。
1 軟件版本控制的主要功能和主要特點
版本控制的功能:跟蹤記錄整個軟件的開發(fā)過程,包括軟件本身和相關(guān)文檔(所帶來的結(jié)果是:可標(biāo)識不同階段的軟件及相關(guān)文檔,進(jìn)行差別分析;對軟件進(jìn)行可撤消的修改;便于匯總不同人員所做的修改),輔助協(xié)調(diào)和管理軟件開發(fā)團(tuán)隊。
我認(rèn)為,對于軟件的版本控制而言,其主要特點包括如下:
1.1 空間上集中統(tǒng)一管理
由于采用服務(wù)器/客戶端方式,盡管開發(fā)人員可以在自己的本地留有備份,但最終唯一有效的只有服務(wù)器端的那個原始拷貝。一定程度可以解決一致性問題、冗余問題。[1]
1.2 時間上全程跟蹤記錄
工具將會自動記錄每個更改細(xì)節(jié),和不同時期的不同版本。一定程度可以解決冗余問題、事務(wù)性問題、并發(fā)性問題。[1]
1.3 操作權(quán)限控制
對于不同開發(fā)人員,對軟件的不同部分可以定義不同的訪問權(quán)限。一定程度可以解決安全性問題。[1]
1.4 自動或半自動
由于有工具輔助控制,可以減輕開發(fā)人員的負(fù)擔(dān),節(jié)省時間,同時降低人為錯誤。像軟件整合這樣的工作,其工作量可以相對減輕。[1]
2 軟件版本控制評價標(biāo)準(zhǔn)
我認(rèn)為,對軟件進(jìn)行版本控制,衡量其效果的標(biāo)準(zhǔn),歸根結(jié)底有兩點:效率和質(zhì)量。如果版本控制最終使軟件開發(fā)效率得到提高、使軟件質(zhì)量得到提升,那就是成功的,反之則是失敗的。效率的提高比較容易理解,質(zhì)量的提升則體現(xiàn)在:軟件的一致性、冗余程度等。需要指出的是,單就版本控制工具本身并不能保證這兩點。對工具不熟悉或錯誤的使用,以及開發(fā)人員的不良習(xí)慣等都將導(dǎo)致失敗。有時可能反而降低效率。
3 幾個重要觀點
3.1 版本控制包括代碼和文檔
我認(rèn)為,廣義的版本控制也應(yīng)該包括和代碼相關(guān)的其他內(nèi)容,主要指文檔。雖然文檔的一致性問題并不像代碼那么突出,多人同時修改一個文檔的情況一般較為少見,但將文檔只留一個服務(wù)器拷貝,會便于集中管理,減少冗余,加上工具的全程跟蹤記錄,可以隨時查看不同時期文檔的內(nèi)容,相互比對。
3.2 版本控制管理應(yīng)該包括工具軟件的使用和人為規(guī)范的遵循
在版本控制中,人的因素更為重要,規(guī)范的行為可以避免很多意想不到的后果,和錯誤使用工具所引起的問題。單純依賴工具,并不能取得良好效果。沒有版本控制的意識、對工具的使用不熟悉(一些功能不知道怎么用,一些功能使用錯誤)、人為的不良習(xí)慣,都可能導(dǎo)致錯誤。因此需要使用版本控制工具的開發(fā)人員具有自覺良好的意識和習(xí)慣,也需要一些相關(guān)的規(guī)范和制度的保證。
3.3 不能忽略版本控制管理員這一角色的重要性
可以不必單獨劃定一人來擔(dān)任這個角色,但如果沒有這一角色的存在,任何人都可以任意操作服務(wù)器上已納入版本控制的軟件以及版本控制工具的配置信息(比如用戶權(quán)限信息),或者說任何人都可以做管理員,則又會出現(xiàn)安全性問題。從某種程度上講,這和沒有版本控制下每臺機(jī)器上都有若干軟件版本的情況是等效的。
3.4 向版本控制過渡是一個循序漸進(jìn)的、持久的過程
對于一個團(tuán)隊而言,向版本控制過渡,需要有一個逐步轉(zhuǎn)變的過程。這包括:制訂一系列合理的循序漸進(jìn)的措施,使版本控制的意識逐步得到大家的認(rèn)可,使人員逐漸養(yǎng)成良好習(xí)慣(習(xí)慣于這種開發(fā)方式)。這是一個持久的過程,需要堅持。