作者:江南白衣 

2006JOLT大奖(http://www.sdmagazine.com)的得奖名单:

企业项目管理: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         客户端:小海龟(www.tortoisecvs.org)

l         差异比较工具:WinMerge

l         Web代码浏览工具:Fisheye

l         帐号管理工具:CVSTrac

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

    项目计划,任务分配,进度跟踪,需求变更管理,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图和顺序图是我最经常画的东西。

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


   另外,如果要画流程图。我喜欢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期,更详细的内容请购买杂志,哈哈--泰稳过午不食 说。