談軟件開發過程管理系統、版本控制系統及它們之間的集成

前言:本篇文章對於軟件管理系統與版本控制系統將作一定介紹,然後再介紹他們之間需要做的集成。

 

1.       先來談談版本控制系統

 

Version Control System,簡稱VCS,屬於軟件配置管理(SCM)的一個部分。這個系統可能對於剛畢業的大學生來說比較陌生,幾年前甚至對一些企業來說也比較陌生,簡單來說這個系統主要是爲了更好保存並調用文件(包括文本,代碼,圖像等)的各個版本。那爲什麼需要用這個系統來保存各個版本呢?

 

這個就需要追述到沒有版本控制系統之前的歷史了,那個時候也有程序員,也要寫代碼,一開始大家寫了代碼就直接保存,後來發現一個問題,有一天代碼改錯了,其實前一天的代碼是沒問題的,但是已經保存了,沒辦法恢復到前一天了。怎麼辦呢?大家想出一個辦法,你每次做了修改,就必須保存一個副本,以便以後需要。

 

就這樣,那個問題是解決了,但是後續問題又出來了,每天至少保存一個副本,副本是越來越多,但是一旦有一次我改錯了,想去找原來正確的代碼,我卻沒法一下子找到,因爲副本太多了,我怎麼知道那個副本里我是主要改了什麼東西呢?辦法又出來了,大家每次弄副本的時候,必須再用一個Excel文檔記錄那個副本改了什麼,而且每個副本的名字必須統一,是XXX-1,XXX-2這樣子,後綴是版本號。

 

這個問題又解決了,但是新的問題還是不斷出來,我發現之前代碼沒這個問題,但是現在代碼有這個問題,但是代碼好像沒改啥,我想最好能比較一下,但是一看代碼有幾千行,讓我怎麼去比較這2個版本之間的差別啊(後來經過千辛萬苦終於找到原因,原來是一個變量初值賦錯了,可能是當初的筆誤),好像很難解決啊!

 

問題繼續出來,同一個文件可能我在改,別人也在改,最後出了大問題,到底是誰改壞的呢,大家都不承認,因爲是同一個源文件,放在同一個地方,大家誰需要的時候就去改,最後就不了了之了,因爲根本查不出來的。

 

問題還在出來,我在改這個文件,剛改完覆蓋了服務器上的那個文件,孰不知有另外一個人也拿了這個文件改其他一個東西,我剛覆蓋完,他也傳上去把我的覆蓋了,最後出問題了說是我的責任,媽的,我明明傳上去了,誰叫他覆蓋了。

 

問題。。。問題還有很多,怎麼解決呢?解決方案就是咱們說的版本控制系統,它的功能主要也就是我上面需要解決的各個問題,當然遠遠不止這些功能啦,以後再慢慢詳說。

 

目前流行的版本控制管理工具有Subversion,Clearcase, Perforce, AccuRev, VSS等等,其中Subversion是免費的,Perforce在美國硅谷那塊用得比較多。

 

2.       再來說說軟件開發過程管理系統

 

所謂的軟件開發過程管理系統,從廣義上來說,需要包括整個軟件工程的所有部分,包括需求分析,概要設計,編碼,測試和部署與維護,不過今天我們說這個僅僅只包括開發與測試的階段,也其實就是代碼會一直改動的那段時間(做功能與修Bug)。

 

還是按照上面介紹版本控制管理系統的方法來介紹軟件開發管理系統。

 

在沒有這個系統之前,我們是怎樣管理咱們的開發過程(包括修Bug)的呢?一般情況下,領導發給Email給你說,某某某,今天你把這個功能做了,這就完了,然後出來的問題就是,你有沒有做完,他不來問他就不知道,即使你跟他說了,由於功能太多,他也忘記了。所以呢,大家就想出辦法,分配任務的時候,需要用Excel文檔來記錄,做什麼事情,負責人是誰,什麼時候做好的,代碼放在哪裏都得記上。

 

這個辦法的確是很好,大家都很興奮,以爲一切都控制之中了,但是漸漸地問題又來了,功能很多,Bug又很多,都記錄在Excel文檔上,今天發我一份,明天發我一份,我太忙了,都來不及去更新這些內容,但是每天還是有新的發過來,到最後,不知道哪一份Excel文檔是最新的,這個Feature有沒有做,這個Bug有沒有修,我自己都忘記了。

 

三個臭皮匠頂個諸葛亮,大家一合計,有了解決方法,不要這麼多Excel文檔了,就一個吧,所有的都記在一個上面,放在一個地方,大家自己上去更新,雖然辦法是好,但是有時候還是忘記去更新。不過經常有人提醒我去更新,基本上也沒落下啥。

 

但是不久以後問題還是再次出現了,經理想看看某段時間,小張修了多少Bug,做了多少功能,算了好久愣是沒算出來,一看原來是,每個開發和測試記錄的時間方式都不一樣,有些人喜歡用年月日,有些人喜歡再加具體時間,有些人只用月日,縱是Excel有再強的功能也沒法找出來。

 

唉,看來還得強制大家用統一格式啊,好了,問題總算解決了,但是福無雙至,禍不單行啊,不久又出問題了,做的功能和發現的Bug越來越多,但是一個功能或者修一個Bug又不一定一天能搞定,經常弄完以後想去更新Excel,發現那個條目不知道在哪裏了,太多了,而且有時候運氣好很快找到,想一下子把做好的幾個狀態改掉也沒法去做,因爲不是連在一起的,得一個個找到,按住Ctrl,然後再去改,太麻煩了,實在受不了了!

 

呵呵,問題還不止這個了,有一個功能,有兩個再不同時間都做過,後來有一個人去改了狀態,但是最後發現這個功能有問題,他們兩個人誰也不承認是自己改的狀態。

。。。。。。

漸漸地,大夥兒經常忘記去更新了(唉,也沒個自動提醒功能),產品質量越來越差,人心越來越差了。。。

 

然後呢,大夥兒都知道了,軟件開發過程管理系統橫空出世了,全部解決以上的所有問題,當然也是遠遠不止這些功能啦,還包括了那個自動提醒功能了,呵呵。

 

目前流行的軟件開發過程管理系統主要有,DevSuiteClearQuestBugzilla等等,其中TechExcel 的 DevSuite 是覆蓋整個軟件生命週期的,Bugzilla是免費的,DevSuite對於中小團隊也是免費的

 

3.       兩者的集成使用

 

好了,終於介紹完了這兩個系統,比較簡單,大家如果想了解更多的話,可以到網上去找找。

現在開始來講他們的集成,這裏所謂的集成,大家其實一想就明白了,版本控制系統只能管理代碼的各個版本的,那麼它們的集成也必然是跟這個有關的,我們還是以問題的方式開始這個部分。

 

作爲開發,我們經常做功能和修Bug,但是有件事情不知道大家有沒有碰到過,你做完一個功能或者修了一個Bug後,很久以後,測試人員發現還有問題,需要你再去改,那個時候你已經忘記代碼是哪一塊了,所以你就吭哧吭哧去看代碼,找了好久才找到。

 

還有件事情,有一次你修了一個Bug,後來你再次碰到一個類似的Bug,雖然你找到了當初修的那個Bug描述,但是你卻還是不知道當初怎麼修的,所以呢,再次吭哧吭哧去翻代碼,浪費大量時間,也許你終於找到那塊代碼,但是卻發現這塊代碼後來被改過好幾次了,也就是有N多個版本了,你不知道哪一個版本是你改的那次,頭疼啊,還是再研究研究。。。。。。

 

在這個時候,我們就在想,現在已經有了開發管理系統,對每一個功能和Bug都有任務條進行管理的,那麼在我針對這個寫Code的時候,是否能把該部分Code的修改時的版本與這個任務條做關聯,使得以後我只要找到這個Bug(相對Code而言,有軟件開發系統,找到一個Bug是一件非常容易的事情,不管這個Bug多麼久遠了),就能知道當初我在哪裏寫的Code,而且知道是改的是那個Code文件的哪個版本。這樣子對我們的開發工作是幫助很大的。

 

既然有這個需求,各大系統提供商當然不會坐視不管,紛紛推出自己的產品,使得代碼可以跟任務相關聯,例如Perforce裏有Job可以跟代碼關聯,AccuRevTask可以跟代碼關聯,當然做的最好的還是TechExcelVersionLink工具,可以跟主流的大多數版本管理工具集成,也就是說如果你們公司用的是SubversionVersionLink就可以跟Subversion集成,使得Subversion裏的代碼與DevSuite裏的任務關聯,如果你們用的VSSVersionLink可以跟VSS集成,讓VSS裏的代碼與DevSuite裏的任務做關聯。

 

當今世界,開發相關工具是越來越多,但是獨立的工具越來越沒有市場地位,能夠集成在一起使用的工具纔是真正大家需要的,因爲軟件開發各個部分本來就應該是緊密結合在一起的,以前之所以有不同的產品,主要是行業還在摸索階段,現在到了成熟階段,要儘可能使流程流暢,所以當然是誰能有一整套的無縫集成的解決方案誰纔是王者了,所以呢,各個部分的集成就變得異常重要了。

 

 

 

 

 

 

發佈了76 篇原創文章 · 獲贊 264 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章