Posted on 2005-12-07 23:23
非魚 閱讀(4946)
評論(5) 編輯 收藏 所屬分類:
管理
我在最初開發軟件的時候,是根本沒有版本管理的概念的。直到2000年我在廣州某數一數二的軟件公司工作,該公司為了通過ISO9000認證,開始使用
VSS(Visual Source
Safe)進行版本管理,之前,他們也沒有進行版本管理。除了VSS,后來又用過PVCS、CCC-Harvest等版本管理軟件。現在看來,以前也只是
使用了版本管理軟件而已,沒有真正進行過“版本管理”。某項目經理說:“我們喜歡把VCS叫做SCM啊,更高級?!逼鋵嵔惺裁床恢匾匾氖恰肮芾怼保?
而不是“使用”VCS/SCM。
什么是版本管理?
簡單的說,一個文件(或任何其他人工制品)的一次修改稱為一個“修訂”;一批相關聯的文件(或任何其他人工制品)經過各自N次修訂,做為一個產品達到一個
穩定狀態,這些文件/人工制品在穩定狀態下的形成的產品就是一個版本。版本管理,就是對這個版本的管理;但更重要的是:版本管理是對產品的管理。
版本管理,意義何在?
首先,版本管理維護產品的穩定性。剛剛講到,產品達到一個穩定狀態后稱為一個版本,版本管理自然管理了產品的穩定性。其次,版本管理是產品改進的基石。在
產品達到一個穩定狀態后,我們把這個狀態做為版本固定下來,對于這個產品以后的改進就可以基于這個狀態進行了,一旦在改進的過程中發生錯誤,我們還可以從
這個穩定的狀態再次開始,避免了很多不必要的勞動。最后,基于產品版本可以進行并行操作,在改進產品的同時對現有產品進行維護,即滿足客戶產品改進的要
求,又滿足客戶對產品質量的要求。
特別是軟件迭代、增量開發的情況下,版本管理更是至關重要的。
版本管理,有哪些重要內容?
這里只說重要的。首先是產品版本的定義,就是在產品達到穩定狀態時,標記這個穩定狀態下的所有組成部分。這個標記,就是版本了。一般在達到穩定之前,會有諸如alpha
版、beta版之類的預定義,根據不同組織的政策而不同。其次是版本的生成,即取得定義好的版本的所有組成部分,并形成一個完整的可運行的產品以供測試、
發行。最后是版本的分支/合并,在穩定產品的版本上進行分支,可以同時進行產品下一版本的研發和當前版本的維護。一般在主分支上進行新版本開發,在維護分
支開發當前版本的補丁;當補丁測試通過后需要把維護分支上的修改內容合并到主分支,以避免在新版本中仍然含有已經修正的。
版本管理的缺點何在?
不能認為有了良好的版本管理就萬事大吉了,良好的版本管理也不是萬能的,很多事情是版本管理做不到的。首先版本管理不能保證產品中沒有缺陷,其實沒有什么
東西可以保證這一點,即使你有再充分的測試也不能保證;版本管理只是對產品狀態的管理,對于這個狀態下產品的內容無能為力。其次,版本管理無法保證工作人
員的行為,版本管理要求工作人員按照一定的規范行事,但除了制度沒有任何工具或監控/預測手段來保證人的行為附合規范,如果存在違反規范的行為,也只能通
過事后檢查來發現、糾正。最后,在版本合并操作上,工具自動處理可以減輕人的勞動,但也有很多時候不能自動處理,不能過于依賴于版本管理工具。
產品發行管理(on the way, please wait...)