用JIRA、CVS、XPlanner、WIKI來進行項目管理 06-07-18
作者:Zhang(daniel_zhy)
JIRA,一個非常出色的Issue跟蹤系統(tǒng),這里的Issue不單單是指BUG, 很多時候也可以是TASK, IMPROVEMENT, NEW FEATURE, 甚至是一個QUESTION。在多年前, 我曾經(jīng)嘗試使用過那個經(jīng)典的的Bugzilla,但是一個項目作下來,大家都反映那個東西的界面實在是太粗糙,簡直無法忍受而且報表功能也是在太弱。最后大家就討論自己作一個BUG的跟蹤系統(tǒng),就在大家已經(jīng)完成了設(shè)計文檔準備編碼的時候, 我們發(fā)現(xiàn)JIRA原來就是我們要找的東西,而且比我們要的更多。它內(nèi)置一個可以配置的工作流引擎(osworkflow),一個快捷的全文檢索功能(基予Apache Lucene).和一個可以配置的Dashboard(portlet),以及一個和CVS連接的引擎,通過這個連接,在一個Issue中直接可以看到修改的文件名稱,如果配置了viewcvs的話,還直接直接定位到行,根據(jù)一個問題可以跟蹤到代碼的行,這正式我們夢寐一求的功能。 也正是這種特性,才使我們能夠把一個個Issue當(dāng)作發(fā)布和版本管理的一個單元。 CVS,這個應(yīng)該大家都知道。在系統(tǒng)開發(fā)過程中,一切的源代碼和設(shè)計文檔都應(yīng)該進入版本管理系統(tǒng)來進行管理, 有的時候可能資源庫可能會膨脹的很大, 但這個代價是值得的。 XPlanner, 在整個管理體系中,進度管理一直是一個?比較薄弱的環(huán)節(jié),我也曾試過dotproject這樣的管理軟件,但由于dotproject管理的太過詳細,填報起來太復(fù)雜,大家漸漸都失去了填報的熱情。這個 XPlanner軟件可就簡單多了。指定了迭代,story,然后就可以填寫進度了。由于這個軟件也是OpenSource的,所以如果覺得不滿意,修改起來也很方便,現(xiàn)在老林就對這個系統(tǒng)作了些改進,可以直接和JIRA系統(tǒng)連接起來,JIRA中建立issue后,可以在XPlaner中反映出來,連填寫 story的時間都省去了, 然后在下班之前可以生成一個詳細的報告,列出每個人在這一天內(nèi)在自己負責(zé)的Issue在上的處理時間和進度。 WIKI,在項目管理中,我們一直把它當(dāng)作文檔管理和Portlet系統(tǒng)來使用,它現(xiàn)在已經(jīng)變成我們的小組的工作臺,在WIKI中我們制定了包括系統(tǒng)開發(fā)設(shè)計規(guī)范在內(nèi)的一切設(shè)計文檔,以及數(shù)十個經(jīng)常的HOWTO項目,例如如何配額一個標(biāo)準的開發(fā)環(huán)境,如何使用CVS客戶端,如何使用JIRA,以及自己的 JavaDoc, JSDoc等。 我們也可以通過Wiki來簡單的整合系統(tǒng),在Wiki中我們列出了所有開發(fā)環(huán)境和開發(fā)工具的入口,例如上面就放了進入JIRA,XPlanner以及我們各個Project的連接,甚至到 Apache中常用的Project的JavaDoc的連接,現(xiàn)在再也沒有人去記錄這些URL了,只要打開Wiki所有的資源都在面前了,并且由于wiki本身的開放性,所以每個團隊的成員都是一個維護者,同時也是這個系統(tǒng)的受益者。在很多的團隊中經(jīng)常出現(xiàn)的情況是一個小子對某個技術(shù)特別在行,大家遇到這方面的問題都問他,在小的團隊中, 面對面的交流通常是最快的交流方式,但是放到大的團隊中,這個就不大可行了,那個小子遲早有一天會被問的煩到吐血為至,特別是他自己的工作也無法按時完工的時候。還是抽一個小時寫出來,放到 wiki里面吧, 別問我, 自己去查Wiki。 基于ISSUE的發(fā)布管理。 從版本管理的角度來考慮,最理想的發(fā)布方法就是把CVS中的代碼拿下來, 打上一個tag, 編譯并且測試一直到發(fā)布。 這樣的管理方式的確是很簡單的,但事實上用戶可不買帳的, 用戶覺得在新的版本中某個新的功能他還不想要,這可能是他還沒有整理好業(yè)務(wù)初始數(shù)據(jù)或者在實際的業(yè)務(wù)流程上或人員上沒有做好準備, 上帝說了不要咱就不能把這個新功能發(fā)布。在這個情況下,基于Issue的發(fā)布管理是一個好的方案。 這里講的Issue就是前面JIRA系統(tǒng)中的一個issue。 通常每個Issue的完成都會伴隨這一些代碼的修改。 基于Issue的發(fā)布簡單的來說就是把一組Issue變更的文件用patch的形式發(fā)布到正式的系統(tǒng)中。 基于Issue發(fā)布的前提就是要在Issue和Source之間建立連接, 使發(fā)布人員清楚的知道每個Issue修改的源代碼是什么。我們實踐下來最簡單的辦法就是在提交source的時候必須加上JIRA編號, 沒有JIRA編號代碼是不能提交的。 這樣有以下好處。 1)防止一些沒有經(jīng)驗的程序員無意義的提交, 比如一個小子今天提交了一個java文件,明天發(fā)現(xiàn)這個變量命名有點不爽, 修改后就要提交,在這種情況下, 這個提交是沒有意義的,如果測試組已經(jīng)測試這個Issue, 是否測試組要重新測試? 為一個變量名稱化這樣的時間和冒險是可嫩的。小伙子還是在第一次提交的時候就把變量名想好了再提交。 2)程序員偷偷的修改代碼,一個小伙子發(fā)現(xiàn)自己的已經(jīng)Closed的Issue中有一個Bug, 便偷偷的修改代碼。 這個當(dāng)然也是不可能的,凡是提交到CVS中的代碼就不是自己的了,那是大家的, 沒有足夠的理由想改當(dāng)然沒有那么容易。 先自己建立建立個Issue, 向Team leader報告, 然后再去修改代碼。 |
|