作者:
江南白衣 2006年JOLT大奖(http://www.sdmagazine.com)的得奖名单:
企业项目管理:WelcomRisk 2.6(Welcom)
缺陷跟踪、变更与配置管理:Perforce SCM 2005(Perforce)
设计与建模:Lattix LDM 2.0(Lattix)
项目质量管理:Rally 5.6(Rally Software Development)
测试工具: VMTN Subscription 2005(VMware)
不知道他们长什么样子吗?没所谓了,工具从来就乱花迷眼,但花哨的工具未必适合自己的团队。总要洗净铅华的总结出一些最必要的,能提供最大辅力加持的工具。
参见《死亡中旅》2nd 第x章--最小工具集.
1.版本管理工具
有没有版本管理,可以作为项目到底有没有推行软件工程管理的一条华丽的分隔线。
因为现在是2006年了,我们选的是Subversion。
客户端工具:小海龟(http://tortoisesvn.tigris.org/)。这个CVS版的姊妹工具以前就号称WinCVS杀手了,与Window Explorer右键的整合,摒弃了必须专门跑一个Client的传统。
文本比较与合并工具:小海龟里集成的TortoiseMerge。除了Update和Commit外,查看历史版本差异,合并版本冲突是大家最常做的事情了,所以工具也一定要用适合的。
Web浏览代码:Trac(http://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图和顺序图是我最经常画的东西。
有很多明星级的工具可以画这些图,但我某天发现,一个很小巧的工具Jude(http://jude.change-vision.com/jude-web/index.html)已经可以把这两种图画得很好。大家都可以在使用内存怪兽般的设计建模工具时,寻找属于自己的袖珍玲珑版工具。
另外,如果要画流程图。我喜欢SmartDraw多过Visio。因为SmartDraw有很多色彩鲜艳,配色好看的模板,现成又好看的东西才是第一选择。
4.开发环境
曾几何时,Visaul C++6.0是我认为最完美的开发环境,而随着IDEA和Eclipse的不断升级,我们的个人品味与懒惰程度也在共同提高。同时,Eclipse也依靠它无敌的Plugin编队,将自己的风格逐一推向Java、C++、PHP、Python和Ruby等领域,有一统江湖的趋势。
重构(二级)
即使团队用得最多的只是Rename、Move、Extract Method等几个基本动作,Java EE架构里牵一发动全身的事情也太多了,重构会帮你把所有事情做干净,所以我现在已形成依赖,如果不用重构,随便改一样东西,肯定造成一堆东西编译不过或者Web应用启动失败。IntelliJ IDEA作为第一个支持重构的工具,已经一路高歌把重构的概念深入到JSP、XML、JavaScript和CSS等,实在是相当聪明。
Flying Error提示和自动修正(二级)
Flying Error提示在Java IDE里已经逐渐成了标准配置,有错了马上提示就地更正,不需要积了一堆错误等到编译时才慢慢查看Error Message排错。又是IDEA,不但提示错误,还会提出几种可选的修正方案,你点一下就会帮你自动修正。比如一个函数会抛出必须进行处理的checked异常,你如果调用了这个函数,IDEA就会提示你“是在调用的地方进行Try Catch呢,还是在外层函数声明Throws这个Exception?”你选择之后就会帮你自动完成,感觉非常贴心。
Smart Complete(二级)
比如现在要输入myFirstBook.setPublishDate(publishDate)这句代码,上一代的IDE在输入myBook.后,会弹出下拉菜单显示Book类的所有函数让你选择。
而新一代的IDE,AI都高得吓人,总能通过变量类型与上下文的名字猜出你想输入的内容,比如“my+热键”就能生成myFirstBook,“(+热键”就能生成publishDate。如此Smart的结果,就是我编码的过程中热键不断,成了彻底的懒人。
Debug Java EE应用(二级)
Web开发者一般用System.out或者Log4j来显示调试信息,但对于曾经桌面编程的程序员来说,直接进入调试模式,单步跟踪程序执行路径,想看哪个变量就看哪个变量,才是天经地义的事情。慢慢的,这一代的IDE也已经觉醒,通过与Application Server的集成,可以在JSP,甚至第三方类库的源代码如Spring Framework的HibernateDAOTemplate里设置断点,然后单步执行,察看变量的变化。
如果左看右看,其他语言的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期,更详细的内容请购买杂志,哈哈--泰稳过午不食 说。