作者: 

2006jolt大奖()的得奖名单:

企业项目管理:welcomrisk 2.6welcom

缺陷跟踪、变更与配置管理:perforce scm 2005perforce

设计与建模:lattix ldm 2.0lattix

项目质量管理:rally 5.6rally software development

测试工具: vmtn subscription 2005vmware

 

不知道他们长什么样子吗?没所谓了,工具从来就乱花迷眼,但花哨的工具未必适合自己的团队。总要洗净铅华的总结出一些最必要的,能提供最大辅力加持的工具。
参见《死亡中旅》2nd 第x章--最小工具集.

1.版本管理工具

    有没有版本管理,可以作为项目到底有没有推行软件工程管理的一条华丽的分隔线。
   因为现在是2006年了,我们选的是subversion

  客户端工具:小海龟(http://tortoisesvn.tigris.org/)。这个cvs版的姊妹工具以前就号称wincvs杀手了,与window explorer右键的整合,摒弃了必须专门跑一个client的传统。

  文本比较与合并工具:小海龟里集成的tortoisemerge。除了updatecommit外,查看历史版本差异,合并版本冲突是大家最常做的事情了,所以工具也一定要用适合的。

  web浏览代码:trachttp://www.edgewall.com/trac/),完全合乎让人pleasure标准的web版代码展示工具。能够方便的查看,search代码,观察仓库的提交日志。

如果团队里依然用cvs的话,相对应的推荐套件就是:

l         客户端:小海龟()

l         差异比较工具:winmerge

l         web代码浏览工具:fisheye

l         帐号管理工具:cvstrac

2.项目计划,任务分配,需求变更管理,bug管理工具
    偶然的,我发现自己把这些都交给了完成。

    项目计划,任务分配,进度跟踪,需求变更管理,bug管理几乎就是pm的全部工作了。
    以前总有很多软件分开来管理这些问题,同一问题经常要copy paste好几个软件。
    但如果你的团队的项目计划是xp plan风格 而不是ms project。
    那恭喜了,个jira就可以完成所有任务。 
    但ms project实在深得各位老板厚爱,所以我们会做一个粒度很粗的project来应付老板、开会和监理,让他们大概了解项目的计划和进度。而采用敏捷编程的计划风格,灵活的向团员分配具体任务。
 
    jolt的奖项设置,也可以看到这种把n种项目管理工具组合归并的趋势,去年的“change and configuration management tools”和“test-defect tracking tool”,已经合并成“defect tracking, change and configuration management


3. 设计建模工具

   虽然程序员都不太喜欢代码以外的任何东西,当然也包括uml图。但实践证明敏捷编程也不能完全抛弃设计,如果将uml图用于纯粹的交流工具而不是mda一类宏伟愿望的话还是挺有用的,比如静态class图和顺序图是我最经常画的东西。

    有很多明星级的工具可以画这些图,但我某天发现,一个很小巧的工具jude)已经可以把这两种图画得很好。大家都可以在使用内存怪兽般的设计建模工具时,寻找属于自己的袖珍玲珑版工具。


   另外,如果要画流程图。我喜欢smartdraw多过visio。因为smartdraw有很多色彩鲜艳,配色好看的模板,现成又好看的东西才是第一选择。

4.开发环境
曾几何时,visaul c 6.0是我认为最完美的开发环境,而随着ideaeclipse的不断升级,我们的个人品味与懒惰程度也在共同提高。同时,eclipse也依靠它无敌的plugin编队,将自己的风格逐一推向javac phppythonruby等领域,有一统江湖的趋势。

重构(二级)

即使团队用得最多的只是renamemoveextract method等几个基本动作,java ee架构里牵一发动全身的事情也太多了,重构会帮你把所有事情做干净,所以我现在已形成依赖,如果不用重构,随便改一样东西,肯定造成一堆东西编译不过或者web应用启动失败。intellij idea作为第一个支持重构的工具,已经一路高歌把重构的概念深入到jspxmljavascriptcss等,实在是相当聪明。

 

flying error提示和自动修正(二级)

flying error提示在java ide里已经逐渐成了标准配置,有错了马上提示就地更正,不需要积了一堆错误等到编译时才慢慢查看error message排错。又是idea,不但提示错误,还会提出几种可选的修正方案,你点一下就会帮你自动修正。比如一个函数会抛出必须进行处理的checked异常,你如果调用了这个函数,idea就会提示你“是在调用的地方进行try catch呢,还是在外层函数声明throws这个exception?”你选择之后就会帮你自动完成,感觉非常贴心。

 

smart complete(二级)

比如现在要输入myfirstbook.setpublishdatepublishdate)这句代码,上一代的ide在输入mybook.后,会弹出下拉菜单显示book类的所有函数让你选择。

而新一代的ideai都高得吓人,总能通过变量类型与上下文的名字猜出你想输入的内容,比如“my+热键”就能生成myfirstbook,“(+热键”就能生成publishdate。如此smart的结果,就是我编码的过程中热键不断,成了彻底的懒人。

 

debug java ee应用(二级)

web开发者一般用system.out或者log4j来显示调试信息,但对于曾经桌面编程的程序员来说,直接进入调试模式,单步跟踪程序执行路径,想看哪个变量就看哪个变量,才是天经地义的事情。慢慢的,这一代的ide也已经觉醒,通过与application server的集成,可以在jsp,甚至第三方类库的源代码如spring frameworkhibernatedaotemplate里设置断点,然后单步执行,察看变量的变化。

 

如果左看右看,其他语言的ide都很难符合上面的要求,不妨等待eclipse的强大平台,一个个插件的慢慢统一。

 5.团队im工具和共享文件夹

   关于交流工具,从前是言必称email的。而随着社会的进步,现在更提倡交流的即时性,因此,“face to face”的交流被作为首选,早上15分钟的短会, im工具被作为与email同等重要的手段。

   说起im工具,很多公司都会选择严肃的msn而不喜欢qq。但我还是喜欢qq的群功能,而且虽然提倡交流的即时,但避免打扰对于开发者也很重要,qq 新版的“来消息时只显示消息条数”能起到同样的免干扰作用。

   最后是知识库,wiki有一个曾经是优点的缺点——wiki语法。它的简单只是对于那种用写字板写网页的高手来说的,大部分人写文档的时候还是喜欢所见即所得的编辑。而且,wiki语法与html不兼容,造成了知识库与互联网世界的鸿沟。不过好在cofluence 2.0终于有了所见所得的编辑器,也可以弃用wiki语法而直接使用html编辑了。

其他项目工具包括纸,笔,足够大的白板,随时可用的会议室。还缺了什么? 代码自动生成工具中也没有最趁手的。

注:本文的全文已经发表在《程序员》杂志2006年第5期,更详细的内容请购买杂志,哈哈--泰稳过午不食 说。