作者:江南白衣?

2006JOLT大獎(jiǎng)(http://www.sdmagazine.com)的得獎(jiǎng)名單:

企業(yè)項(xiàng)目管理:WelcomRisk 2.6Welcom

缺陷跟蹤、變更與配置管理:Perforce SCM 2005Perforce

設(shè)計(jì)與建模:Lattix LDM 2.0Lattix

項(xiàng)目質(zhì)量管理:Rally 5.6Rally Software Development

測(cè)試工具: VMTN Subscription 2005VMware

?

不知道他們長(zhǎng)什么樣子嗎?沒(méi)所謂了,工具從來(lái)就亂花迷眼,但花哨的工具未必適合自己的團(tuán)隊(duì)。總要洗凈鉛華的總結(jié)出一些最必要的,能提供最大輔力加持的工具。
參見(jiàn)《死亡中旅》2nd 第x章--最小工具集.

1.版本管理工具

??? 有沒(méi)有版本管理,可以作為項(xiàng)目到底有沒(méi)有推行軟件工程管理的一條華麗的分隔線。
? ?因?yàn)楝F(xiàn)在是2006年了,我們選的是Subversion

? 客戶端工具:小海龜(http://tortoisesvn.tigris.org/)。這個(gè)CVS版的姊妹工具以前就號(hào)稱WinCVS殺手了,與Window Explorer右鍵的整合,摒棄了必須專門跑一個(gè)Client的傳統(tǒng)。

? 文本比較與合并工具:小海龜里集成的TortoiseMerge。除了UpdateCommit外,查看歷史版本差異,合并版本沖突是大家最常做的事情了,所以工具也一定要用適合的。

? Web瀏覽代碼:Trachttp://www.edgewall.com/trac/),完全合乎讓人Pleasure標(biāo)準(zhǔn)的Web版代碼展示工具。能夠方便的查看,Search代碼,觀察倉(cāng)庫(kù)的提交日志。

如果團(tuán)隊(duì)里依然用CVS的話,相對(duì)應(yīng)的推薦套件就是:

l???????? 客戶端:小海龜(www.tortoisecvs.org)

l???????? 差異比較工具:WinMerge

l???????? Web代碼瀏覽工具:Fisheye

l???????? 帳號(hào)管理工具:CVSTrac

2.項(xiàng)目計(jì)劃,任務(wù)分配,需求變更管理,Bug管理工具
??? 偶然的,我發(fā)現(xiàn)自己把這些都交給了JIRA完成。

????項(xiàng)目計(jì)劃,任務(wù)分配,進(jìn)度跟蹤,需求變更管理,Bug管理幾乎就是PM的全部工作了。
??? 以前總有很多軟件分開來(lái)管理這些問(wèn)題,同一問(wèn)題經(jīng)常要Copy Paste好幾個(gè)軟件。
????但如果你的團(tuán)隊(duì)的項(xiàng)目計(jì)劃是XP plan風(fēng)格 而不是MS Project。
????那恭喜了,個(gè)JIRA就可以完成所有任務(wù)。?
????但MS Project實(shí)在深得各位老板厚愛(ài),所以我們會(huì)做一個(gè)粒度很粗的Project來(lái)應(yīng)付老板、開會(huì)和監(jiān)理,讓他們大概了解項(xiàng)目的計(jì)劃和進(jìn)度。而采用敏捷編程的計(jì)劃風(fēng)格,靈活的向團(tuán)員分配具體任務(wù)。
?
??? Jolt的獎(jiǎng)項(xiàng)設(shè)置,也可以看到這種把N種項(xiàng)目管理工具組合歸并的趨勢(shì),去年的“Change and Configuration Management Tools”和“Test-Defect Tracking Tool”,已經(jīng)合并成“Defect Tracking, Change and Configuration Management


3. 設(shè)計(jì)建模工具

?? 雖然程序員都不太喜歡代碼以外的任何東西,當(dāng)然也包括UML圖。但實(shí)踐證明敏捷編程也不能完全拋棄設(shè)計(jì),如果將UML圖用于純粹的交流工具而不是MDA一類宏偉愿望的話還是挺有用的,比如靜態(tài)Class圖和順序圖是我最經(jīng)常畫的東西。

??? 有很多明星級(jí)的工具可以畫這些圖,但我某天發(fā)現(xiàn),一個(gè)很小巧的工具Judehttp://jude.change-vision.com/jude-web/index.html)已經(jīng)可以把這兩種圖畫得很好。大家都可以在使用內(nèi)存怪獸般的設(shè)計(jì)建模工具時(shí),尋找屬于自己的袖珍玲瓏版工具。


?? 另外,如果要畫流程圖。我喜歡SmartDraw多過(guò)Visio。因?yàn)?/span>SmartDraw有很多色彩鮮艷,配色好看的模板,現(xiàn)成又好看的東西才是第一選擇。

4.開發(fā)環(huán)境
曾幾何時(shí),Visaul C++6.0是我認(rèn)為最完美的開發(fā)環(huán)境,而隨著IDEAEclipse的不斷升級(jí),我們的個(gè)人品味與懶惰程度也在共同提高。同時(shí),Eclipse也依靠它無(wú)敵的Plugin編隊(duì),將自己的風(fēng)格逐一推向JavaC++PHPPythonRuby等領(lǐng)域,有一統(tǒng)江湖的趨勢(shì)。

重構(gòu)(二級(jí))

即使團(tuán)隊(duì)用得最多的只是RenameMoveExtract Method等幾個(gè)基本動(dòng)作,Java EE架構(gòu)里牽一發(fā)動(dòng)全身的事情也太多了,重構(gòu)會(huì)幫你把所有事情做干凈,所以我現(xiàn)在已形成依賴,如果不用重構(gòu),隨便改一樣?xùn)|西,肯定造成一堆東西編譯不過(guò)或者Web應(yīng)用啟動(dòng)失敗。IntelliJ IDEA作為第一個(gè)支持重構(gòu)的工具,已經(jīng)一路高歌把重構(gòu)的概念深入到JSPXMLJavaScriptCSS等,實(shí)在是相當(dāng)聰明。

?

Flying Error提示和自動(dòng)修正(二級(jí))

Flying Error提示在Java IDE里已經(jīng)逐漸成了標(biāo)準(zhǔn)配置,有錯(cuò)了馬上提示就地更正,不需要積了一堆錯(cuò)誤等到編譯時(shí)才慢慢查看Error Message排錯(cuò)。又是IDEA,不但提示錯(cuò)誤,還會(huì)提出幾種可選的修正方案,你點(diǎn)一下就會(huì)幫你自動(dòng)修正。比如一個(gè)函數(shù)會(huì)拋出必須進(jìn)行處理的checked異常,你如果調(diào)用了這個(gè)函數(shù),IDEA就會(huì)提示你“是在調(diào)用的地方進(jìn)行Try Catch呢,還是在外層函數(shù)聲明Throws這個(gè)Exception?”你選擇之后就會(huì)幫你自動(dòng)完成,感覺(jué)非常貼心。

?

Smart Complete(二級(jí))

比如現(xiàn)在要輸入myFirstBook.setPublishDatepublishDate)這句代碼,上一代的IDE在輸入myBook.后,會(huì)彈出下拉菜單顯示Book類的所有函數(shù)讓你選擇。

而新一代的IDEAI都高得嚇人,總能通過(guò)變量類型與上下文的名字猜出你想輸入的內(nèi)容,比如“my+熱鍵”就能生成myFirstBook,“(+熱鍵”就能生成publishDate。如此Smart的結(jié)果,就是我編碼的過(guò)程中熱鍵不斷,成了徹底的懶人。

?

Debug Java EE應(yīng)用(二級(jí))

Web開發(fā)者一般用System.out或者Log4j來(lái)顯示調(diào)試信息,但對(duì)于曾經(jīng)桌面編程的程序員來(lái)說(shuō),直接進(jìn)入調(diào)試模式,單步跟蹤程序執(zhí)行路徑,想看哪個(gè)變量就看哪個(gè)變量,才是天經(jīng)地義的事情。慢慢的,這一代的IDE也已經(jīng)覺(jué)醒,通過(guò)與Application Server的集成,可以在JSP,甚至第三方類庫(kù)的源代碼如Spring FrameworkHibernateDAOTemplate里設(shè)置斷點(diǎn),然后單步執(zhí)行,察看變量的變化。

?

如果左看右看,其他語(yǔ)言的IDE都很難符合上面的要求,不妨等待Eclipse的強(qiáng)大平臺(tái),一個(gè)個(gè)插件的慢慢統(tǒng)一。

?5.團(tuán)隊(duì)IM工具和共享文件夾

?? 關(guān)于交流工具,從前是言必稱Email的。而隨著社會(huì)的進(jìn)步,現(xiàn)在更提倡交流的即時(shí)性,因此,“Face to Face”的交流被作為首選,早上15分鐘的短會(huì), IM工具被作為與Email同等重要的手段。

?? 說(shuō)起IM工具,很多公司都會(huì)選擇嚴(yán)肅的MSN而不喜歡QQ。但我還是喜歡QQ的群功能,而且雖然提倡交流的即時(shí),但避免打擾對(duì)于開發(fā)者也很重要,QQ 新版的“來(lái)消息時(shí)只顯示消息條數(shù)”能起到同樣的免干擾作用。

?? 最后是知識(shí)庫(kù),Wiki有一個(gè)曾經(jīng)是優(yōu)點(diǎn)的缺點(diǎn)——Wiki語(yǔ)法。它的簡(jiǎn)單只是對(duì)于那種用寫字板寫網(wǎng)頁(yè)的高手來(lái)說(shuō)的,大部分人寫文檔的時(shí)候還是喜歡所見(jiàn)即所得的編輯。而且,Wiki語(yǔ)法與html不兼容,造成了知識(shí)庫(kù)與互聯(lián)網(wǎng)世界的鴻溝。不過(guò)好在Cofluence 2.0終于有了所見(jiàn)所得的編輯器,也可以棄用Wiki語(yǔ)法而直接使用html編輯了。

其他項(xiàng)目工具包括紙,筆,足夠大的白板,隨時(shí)可用的會(huì)議室。還缺了什么? 代碼自動(dòng)生成工具中也沒(méi)有最趁手的。

注:本文的全文已經(jīng)發(fā)表在《程序員》雜志2006年第5期,更詳細(xì)的內(nèi)容請(qǐng)購(gòu)買雜志,哈哈--泰穩(wěn)過(guò)午不食 說(shuō)。