|
要不要用IDE工具?
据Standish Group一项调查表明,全美国仅有三分之一的软件项目在规定的时间和预算内完成了既定的功能和需求,更多的项目延期、超出预算或者部分完成既定功能和需求,1/7到1/6的项目彻底失败,看来美国软件开发也会误工。
为了减轻风险取得成功,您需要改进开发过程、提高代码质量、降低相关的项目成本和额外花销。开门见山地说,项目的成果取决于人和所使用的工具。作为软件开发人员,他们通常都会持截然相反的两种观点:
团队越专业(如团队成员对开发语言和业务的了解),开发效率越高,成功的几率越大。
|
这些图形看起来都非常直观,但是我们确很少这么做,究其原因是人们很少意识到将开发团队与工具相互结合起来才会产生更高的开发效率,为一个好的团队配备上专业级的开发工具,像IntelliJ IDEA,结果将会变得完全不一样。
|
|
让我们举个例子说明一下:某个项目里有两位开发者,其中一位有6年的Java开发经验,另一个有3年的开发经验。拥有6年开发经验的人很早就从事Java开发,拥有很强的Java语言基础,但由于早期没有很好的工具,他一直使用编辑软件(UltraEdit、EditPlus等)写程序,而且形成了习惯。拥有3年开发经验的人从学Java开始一直使用IDE工具,此时IDE工具已经很多,虽然他语言基础和经验欠缺了一些,但是他能熟练使用IDE工具。对比这两个开发人员,我们发现他们的开发效率相差不多。如果我们给这两个人都配备上专业化的IDE工具IDEA,他们的开发效率是不是会显著提高呢。!答案是肯定的。
有一点是要先明确的,复杂而庞大的工程若想提高开发效率,只是在开发语言本身和业务知识的层面上找寻解决办法,机会很少,空间不大,因为这方面有很多制约因素。而在开发工具方面进行考虑的话,其提升将是非常显著的。
回过头来看看实际情况,让一个使用了6年编辑软件编写程序的人放弃他以前的开发方式,对他而言是非常痛苦的。同样,说服一个从某种IDE工具开始使用和开发Java的人放弃他“心仪”的IDE成换用其它IDE,这也是非常困难的。“Mine is the best”,这是开发人员对自己已经熟练掌握的IDE工具的普通观点。但是我们需要看到,提升开发人员的效率必须从两方面入手:一,现在使用的IDE工具不能再对他有更多的帮助,必须换一个更专业的工具才能提高他在IDE使用方面的效率;二,提升他在编程语言方面的能力及代码构造的熟练程度。如果有一款工具能够帮助他在这两方面同时进步的话,将会对开发效率产生不可估量的提升。
提高软件开发效率不是件容易的事情,尽管你知道怎么去做,但是你得有决心去挑战对现有工具的使用惯性。一旦越过这道心理防线,你会发现前景远比你想象中的美妙。
|
|
为何选择IDEA?
讲到这里,大家可能要问,身边已经有了很多的IDE工具,而且看起来也都不错,那么我们为何要选择IDEA。那就让我们看看IDEA和其他工具的不同之处吧。
用两个词来概括IDEA的特性,那就是:舒适和高效。我们先抛开IDEA本身,来考虑如何去衡量舒适和高效?例如,你怎样说明这把椅子比那把椅子舒适?大家都是功能与特点相似、外形与材质相近的椅子,如果你在商场中总是不能做出决断的话,当然就买不到椅子了。在挑选椅子的过程中,有很多方面需要考虑,惹人喜欢的新功能,人性化的设计,精细的做工,流畅衔接的部件,公道的价格等等。从这些林林总总的方面,你会经过仔细权衡而最终选择一把你认为适合自己的椅子。
开发人员选择工具其实与挑选椅子实质上是一致的,但又有所区别。很少有开发人员会在一开始就专门请教一位资深人士如何去选择开发工具,一般都是受周围人员和宣传的影响而做出决定。他不是主动的,是被动的,这和去买椅子时的主动出击不一样。如果开发人员和一个我们上面讲到的6年经验的开发人员是同事的话,他就会使用Editor形式的工具;如果和第二位开发人员是同事的话,他就会选择流行的IDE工具,如JBuilder、Eclipse、JCreator、JDeveloper等,当然也可能是IDEA。一旦你选择了某款工具,你就不会轻易更改了,不管它是否随着时间与环境的推移而不再适合于你的需求,究其原因,便是人对习惯的依赖和对变更的惰性。
不过IDEA的舒适和高效的确可以通过经验来大致衡量,而且可以马上体现出来。首先它以简单的方式做事情,不会强行要求你做某件事情,更重要的一点是,它给你的提示都是智能的,不会出现你不想看到的东西,而这是其他工具很难做到的,这点与挑选椅子是一样,功能同样你要看重。
|
|
为什么智能如此重要?
IDEA的每一项功能都是以舒适和高效为己任。IDEA的优点无处不在,这使IDEA成为最好的IDE工具。它为你节省你每一步操作的时间。例如:IDEA的代码提示功能、Intention Action、实时且强大的代码分析和其他编辑方面的强大功能,IDEA另一项强大的功能体现在整体,各个部分被细致地整合,这样才能让开发人员在开发过程中体会这种整合带来的默契。
|
|
最后一点,这种特性带来什么样的好处?首先舒适和高效提高了开发人员的效率,同时开发人员也乐意这样去做,这样也达到了降低了项目开发成本的目的。毫无疑问,拥有最高效的团队是项目成功的关键。
|
|
更高的投资回报率
除了舒适,还可以度量的就是你的投资,让我们看看IDEA在软件开发过程中的作用:
|
|
软件开发的主要成本是什么?是人。一台好的电脑可以让一个开发人员使用两年,但机器的价值大概只相当于一个开发人员的月薪。因此缩短周期对于项目开发来说就变得非常关键。为了追求项目费用最低,你当然可以去选择一些免费的开发工具。不过IDE工具有其特殊性,它是在你的开发过程中节省时间,而非瞬间就能节省你的时间,如果使用的是一款开发效率不高的免费工具,就会时时刻刻浪费开发人员的时间,延长你的项目周期,你将会为此付出更高的代价。“拣了芝麻,丢了西瓜”的事情时常在我们身边发生,大家在事后也只都说同样的话:“早知道一开始就花点钱好了”。这样的事情实在是需要引以为戒,杜绝重演的。
下面让我们看看软件企业由于看重短期利益却在未来带来巨大代价的例子。
最近的一项调查表明“软件企业项目的80%费用花费在对既有代码的修改上(修改缺陷和bug)”,这是很可怕的,虽然错误是不可避免的,但人们却把越来越多的费用花费在本可以避免的错误上。
- 2004年CHAOS报告,全美在软件项目上浪费了$550亿(超支),而2004年全部项目的花费为$2550亿。
- 美国商业局调查表明,为了确保软件质量而进行的额外测试,花费达$59.5亿。
|
|
这些表明什么,我们浪费了$2550亿中的$1145亿,接近一半,如果你在前期多做些措施,那么浪费没有这么大啦。
引用Barry Boehm的一句话:修改软件中的缺陷所产生的费用会随着开发的过程呈几何级数的增加。一个缺陷在单元测试中发现,只需1个小时去修复,而在下一步过程中将要花费10个小时,在接下来的工程中将花费100小时,在产品发布以后将会花费1000个小时!不可思议的增长,而资金便在这种几何增长中销耗殆尽。幸运的是软件工程已经创造出一些方法来解决这个问题。在IDEA已经包含了许多策略来解决这种问题,IDEA的设计者意识到了这些问题,并且在IDEA中实现了解决办法,这也让IDEA成为业界领先的工具。
|
|
静态分析:有效的补救方法
静态分析(代码审计)是一项分析源码和软件设计的技术,它不需要将软件运行起来输出结果然后进行分析。通过审计可以发现源码中存在的缺陷,其有效率可以达到50%左右,通过修复这些被审计出的缺陷,你可以及时修复它,你的修复缺陷的效率便随之提高。以下是IDEA中的审计机制:
|
|
IDEA包含了400多种智能的代码审计方案,也是目前最为全面的,它在发现缺陷后能够给出修改方案,这样的机制与IDEA紧密联系,而同类的IDE工具中几乎没有这个功能。
与此同时,IDEA还提供了实时代码审计机制,在你编写代码的过程中,代码分析就已经在运行,如果代码被告知没有错误,那么编译就没有必要运行了。这对大型项目开发是非常重要的。高质量的代码是项目成功的关键,在后续的开发中你会更加体会到这一点。
|
|
重构:减小代码为何成本
当前IT市场调查表明:定制、个性化、整合遗留系统、整合其他项目等将花费预算的一半以上,远超过开发费用。平均的维护成本也高于开发成本,这些都是为了适应客户对系统的需求,但这些事情却花费了数倍于开发的费用。
Robert M. Leitch调查表明,重构可以显著地降低维护的成本。
重构现在已经不再是一门深奥的学科,它不再是专业学者讨论的话题,而已经成为开发人员日常的一项工作。重构可以让代码更加容易维护和理解,这也正是重构的目的。这些可维护易理解的代码也是重用的基础,它在无形中保护了你的投资,使得开发进入良性循环。重构同时可以提高你架构的柔性,将重构和设计模式进行整合,其威力是巨大的。这样的系统架构更容易理解,免去了不必要的复杂性,也更容易修改。
|
|
IDEA的重构功能已经成为每一位开发人员每天必不可少的工作,重构帮助他们节省了更多的时间,节约了项目成本。在重构领域,IDEA提供了各式各样的重构方案,超过35项不同功能可以让复杂的重构流程更加轻松。这也让IDEA成为这个行业的专家,可以这样说,在重构领域,IDEA是行家。
|
|
与此同时,在各种操作时保证代码的安全也是非常重要的,不然你就会产生不兼容的代码,给你提出许多不必要的错误提示。IDEA提供的智能Undo机制、本地历史记录让你无后顾之忧,你可以很快恢复到前一个版本,包括项目中其他被更改的文件。IDEA就像一台安全系数极高同时又加足马力前进的机器,卓越的性能、完美的善后,你无需担心太多。
|
|
总结
讲到这里,你有什么样的感受?一方面,IDEA可以节约你项目的开销和维持成本,另一方面,你可以更好地调整服务水平和产品价格。产品拥有高质量的代码,投资回报率当然也会相应增长。使用IDEA后你唯一要丢弃的就是那些落后的、影响你全速前进的IDE工具。
|
|
较高的开发效率从何而来?提高工作的舒适度,提高开发人员的热情,做到这些就可以。一款好的工具会给开发人员带来更多乐趣,宝剑赠壮士,好的工具会让开发人员发挥出他的能力,激发他的潜力;反过来,差的工具会打击开发人员的热情,降低他们的开发效率。IDEA令高质量的代码构成的产品及时进入市场,而其后期维护将变得简便。这也正是世界500强企业中有100个以上的用户选择IDEA的原因。
现在就开始吧,卸下传统的束缚,放飞自己的思想,体验IDEA的独到特性,体验由此带来的编程乐趣!
|
|
参考
- Oliver Steele, “The IDE Divide”, http://osteele.com/archives/2004/11/ides
- Khaled El Emam : “Return on Investment Models for Static Analysis Tools”,
Klocwork., 2003
- Khaled El Emam : “The ROI from Software Quality: An Executive Briefing,”
K Sharp Technology Inc., 2003.
- RTI, "The Economic Impacts of Inadequate Infrastructure for Software
Testing," Technical Report, National Institute of Standards and Technology
2002.
- B. Boehm and K.J. Sullivan, invited paper, "Software Economics: A Roadmap,"
22nd International Conference on Software Engineering, June, 2000.
- Shull, F., Basili, V. R., Zelkowitz, M. V., Boehm, B., Brown, A. W., Costa, P, Lindvall, M., Port, D., Rus, I.,and Tesoriero, R. “What We Have Learned
About Fighting Defects”. International Software Metrics Symposium, Ottawa
Canada. 2002.
- Annual CHAOS Report, The Standish Group International, Inc., 2004
- CHAOS Chronicles, The Standish Group International, Inc., 2004
- “How IT spending is changing”, McKinsey Quarterly, 2004
- Morgan Stanley CIO Survey, 2003
- Ian Sommerville, Lutz Prechelt, “Software Evolution”, Ian Sommerville 2004, Software Engineering, 7th edition
- Robert M. Leitch, “Assessing the Maintainability Benefits of Design Restructuring using Dependency Analysis”, University of Alberta, 2002
- Eleni Stroulia, Rob Leitch, “Understanding the Economics of Refactoring”,
MacDonald, Dettwiler and Associates, Ltd., 2003
- C. Jones, “Software Assessments, Benchmarks, and Best Practices: Addison-
Wesley”, 2000.
|
|