應用版本控制軟體管理軟體開發

myattitude發表於2008-07-09

摘要:本文詳細介紹了在大規模軟體開發中使用版本控制軟體來管理軟體開發的具體實施方法。

關鍵字:版本控制軟體 提取(Chink-out) 放入(Chink-in) 凍結(Freeze) 解凍(Unfreeze) 應用 登記(Register)

一. 引言:

隨著計算機應用範圍的日益廣泛深入,應用軟體的規模及複雜程度日趨大型化、複雜化,這就導致軟體開發的方式也從早期的單兵作戰式或手工作坊式漸漸轉變為集團化、工廠流水線式的團隊協作開發方式。在這種開發模式中會遇到一些非常棘手的問題:

1. 需要將整個軟體版本恢復到以前的某一時間的狀態。

2. 控制某一程式在同一時間只能一個開發人員修改。

3. 限制隨意修改程式。

4. 對每個開發人員編寫的程式質量進行評估...

如何解決上述問題,管理好專案的每一步運作,成為每一位專案主管亟待解決的課題。

二.在軟體開發過程中引入版本控制軟體

通過我們的實踐,發現在開發過程中採用版本控制軟體能較好的解決上述問題。目前,一些版本控制軟體能夠與各種流行的開發工具進行無縫的連線,它們有機地結合在一起,能夠完整地儲存開發中對應用程式每一個原始檔所有的修改記錄,因此充分地利用版本控制軟體能夠對軟體開發進行卓有成效的管理,其具體表現有以下幾個方面。

1. 隨時將程式回覆到以前某一時間點

版本控制軟體可以將某一程式恢復到以前的某一時間的狀態,甚至將整個軟體版本恢復到以前的某一時間的狀態。它能比較程式的不同版本,方便地識別出被修改、刪除或插入的具體行,可以將兩個不同版本的修改合併到一個新檔案中,如果一段重要的程式碼被刪除了,它可以迅速恢復這段程式碼。

2. 實現程式的互斥性修改

版本控制軟體能夠實現某一程式在同一時間只能一個開發人員修改。其具體實現方式是:需要修改程式的開發人員從原始檔存放處提出(Chink-out)一個程式,這時其他開發人員就不可以再Chink-out同一個程式了,只有當第一個開發人員修改測試完成後,將更新版本的程式碼做放入(Chink-in)操作,其他開發人員才能Chink-out同一個程式。

當然,如果有必要,現在有些版本控制軟體也可以配置成允許多人修改,即同時Chink-out同一個程式,最後可以將不同版本的修改合併到一個新程式中。

3. 對程式修改進行有效的管理

在版本控制軟體中可以將使用者分為管理員和程式設計師兩種角色,只有管理員可以將程式凍結(Freeze)和解凍(Unfreeze),被凍結的程式是不允許修改的。修改程式的流程為:

(1) 使用者提交需求書,程式設計師提交程式設計說明書,專案主管稽核通過後,管理員將程式解凍。

(2) 由程式設計師Chink-out程式。

(3) 程式設計師修改程式。

(4) 修改完成後程式設計師提交測試請求給測試小組,測試小組進行測試;如果測試不通過,轉向第(3)步。

(5) 測試通過以後程式設計師填寫本次修改解釋,然後Chink-in程式。

(6)管理員將程式凍結。

至此完成一次程式的修改。在軟體開發後期或者軟體正式投入使用時,這種方式對保證軟體的穩定執行能起到非常重要的作用。

4. 將開發環境與測試環境、執行環境進行有效的隔離

比較大型的軟體開發專案都有專門的測試小組。採用版本控制軟體後,開發人員有自己單獨的開發環境,測試人員有自己的測試環境,其具體實現方法見第三部分的說明。

專案進行到一定階段,可隨時用版本控制軟體生成一個新的版本,投入執行。生成執行版本時可以選擇丟棄以前所有的修改記錄。

5. 評估軟體開發人員編寫的程式質量,控制軟體開發的進度。

版本控制軟體完整地儲存開發中對應用程式每一個原始檔所有的修改記錄,這些記錄包括完成修改程式的開發人員,修改的時間,所進行的具體修改以及對本次修改的解釋。專案主管通過調閱這些記錄,對程式修改的次數,修改原因和修改情況進行統計,就能夠對每一個程式設計師編寫的程式質量進行綜合評估。這些記錄還能使專案主管對整個專案的進度,程式的編寫修改情況有一個整體的瞭解。

6. 管理文件

版本控制軟體不僅為各種開發軟體提供了存放物件的介面,還能存放任意型別的檔案,這樣我們可以在版本控制軟體中建立專門的資料夾,用來存放軟體開發過程中生成的各種文件,對於每個文件可以存放它的多個版本,供隨時查閱。

三. 具體實施

介紹完版本控制軟體的功能後,下面將詳細描述版本控制軟體的具體實施方法。目前常用的版本控制軟體主要有:

  • Sybase ObjectCycle
  • Microsoft Visual SourceSafe

常用的開發工具有:

  • Microsoft Visual Basic
  • Microsoft Developer Studio (C++, J++,Interdev etc.)
  • Sybase PowerBuilder
  • Sybase Optima ++ (WATCOM C++)
  • Insprise Dephi

為敘述方便,我們假定開發的基本環境是採用ObjectCycle 2.0作為版本控制工具,PowerBuilder 6.0作為軟體開發工具,如果採用別的軟體,方法大同小異。

在開始之前,我們想對PowerBuilder的開發做一個簡要說明。PowerBuilder的程式是放在庫中,庫以pbl作為檔案的字尾名;PowerBuilder的入口程式稱為“應用”(Application);要執行程式,需要首先在“應用”的“庫搜尋路徑”(Library Search Path)中新增所有系統需要用到的庫;如果一個物件在兩個以上的庫中存在,系統將引用“庫搜尋路徑”中在前面的庫中的物件。

1. 建立使用者

首先在ObjectCycle中建立使用者,並將使用者分為管理員和程式設計師兩種角色,管理員可以對其他使用者進行管理,可以凍結和解凍程式。一般為每一位開發人員在ObjectCycle建立一個相應的使用者。

如果軟體開發人員比較多,可以在版本控制軟體中建立多個資料夾(Folder),將一個開發人員所編寫的所有程式全部放到對應的資料夾,這樣便於查詢程式的編寫者。如果專案模組比較多,還可以分模組建立資料夾。

2. 建立開發環境

(1) 首先建立一個區域網,將其中一臺電腦作為版本控制伺服器,安裝版本控制軟體伺服器部分的程式,所有的源程式也安裝在伺服器上,並將存放源程式的目錄共享出來。

(2) 開發人員的電腦只需安裝版本控制軟體的客戶端部分和PowerBuilder。安裝好程式以後,每位開發人員執行PowerBuilder,將伺服器上共享目錄中的庫檔案新增到應用的“庫搜尋路徑”中。

(3) 在PowerBuilder中建立自己的工作庫,將工作庫放在“應用”的“庫搜尋路徑”中的最前面。這樣做的原因是:每位開發人員只是將自己工作庫放在在“應用”的“庫搜尋路徑”的最前面,測試人員的“庫搜尋路徑”包括與他配對的開發人員相應的工作庫,這樣就實現了每位開發人員都有自己獨立的開發環境,未修改好的程式不做Chink in就不會影響其他人員使用已測試過的系統,測試人員也就有了一個獨立的基本穩定的測試環境。

3. 將程式登記入庫

每位開發人員執行PowerBuilder,在庫管理功能中選擇版本控制軟體為ObjectCycle;用管理員提供的使用者名稱及口令連線ObjectCycle Server;定義使用者可用的資料夾;將自己編寫的程式登記(Register)到ObjectCycle中。

所有程式登記完成後,由管理員將所有程式凍結。

4. 修改程式

如果要修改程式,必須由使用者提交需求書,程式設計師提交程式設計說明書,管理員才將程式解凍。程式設計師將程式Chink-out到自己的工作庫,修改程式,測試正確後,提交測試請求。測試人員進行測試,如果測試不符合要求,提交程式設計師繼續修改;如果測試成功,程式設計師填寫修改解釋,然後Chink-in程式,管理員將程式重新凍結,完成程式的修改。讓測試人員測試無誤後才Chink-in程式,可避免錯誤的程式影響其他人員使用和測試應用系統。

在PowerBuilder中,Chink-out為互斥的,如果一個開發人員Chink-out一個檔案,那麼只有到該程式被Chink-in時,其他開發人員才可以Chink-out該檔案,保證了程式的一致性。

在PowerBuilder中,開發人員可以方便地檢視以前修改程式所填寫的解釋,可以根據需要將程式恢復到以前的某個版本,放棄當前版本。

5. 新版本的生成

專案進行到一定階段,可以在PowerBuilder中建立一個新的版本,新版本的目錄名程式名都可以選擇新的名字,可以保留或放棄以前的修改記錄。

四.結束語

總之,在一個專案小組開發環境中,版本控制軟體的採用是非常必要的,它就好象建立了一部軟體開發的編年史,不僅僅對軟體的版本進行了控制,還能夠協調多個開發人員的工作,對整個軟體的開發過程進行有效的管理,大大提高了軟體開發的效率,收到事半功倍的效果。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780914/viewspace-374764/,如需轉載,請註明出處,否則將追究法律責任。

相關文章