影响软件开发效率的 12 大杀手
sina 2008 年 09 月 18 日 14:47 IT168
技术文章】 【IT168 技术文章】 软件开发过程中, 我们经常遭遇各种各样的问题, 而本文就是要讲解这些问题中最棘手 的 12 个。读完本文后,相信读者会对它们影响开发效率的原委有个初步的认识。 我们发现,有很多的文章、书籍都在阐述软件的开发方法,为什么呢?个人以为那是因 为提高团队的开发效率是一场永无止境的战争。软件的开发技术日新月异,开发 团队只能 不停地适应这种革新(如果这个团队不是此项技术的领头羊),否则只能消亡。而适应很大 的程度表现在效率和时间上, 因为客户对软件质量的要求是越来越高, 同时却不希望延长开 发周期。 我们知道,随着软件外包的到来,同一个团队的开发人员可能来自不同的国家,他们处 在不同的时区,有着不同的文化背景。和其它行业的人一样,开发人员往往喜欢把精力用在 他们感兴趣的任务上面,却经常忽略了更重要的事情——开发效率。 在
软件开发这个繁杂的世界里,作为一个项目经理,也作为一个开发人员,我碰到过各 种各样的有趣的问题。这篇文章就罗列出了这些问题中最棘手的 12 个,并提供一些处理问 题的参考意见。 1.维护的开销是效率最大的敌人 软件的维护需要很大的开销, 它很自然地把开发团队带向低效。 维护的开销往往和代码 行数成比例, 尤其当代码没有经过很好的测试的时候, 这个情况尤为明显。 开发团队会发现: 随着代码行数的增加,bug 的数目也会随之增长,当然,bug 产生的原因包括内部因素和外 部因素。内部因素的的确确是我们的代码的问题,而外部因素实际上并不是程序的 bug,但 是无论如何必须修正。 说得更详细点,外部因素可能是你调用的代码改变了,或者是运行环境改变了。例如, 一段 Java 代码在 JRE1.4 下面工作得很好,客户要求它升级到 JRE 1.5 下也能运行。这个时 候,如果不能运行,你可能会声明原因不在程序上。但是客户可不管那么多,站在他的角度 上,这就是你的程序的 bug。 实际上,完美的程序是不存在的,在做项目计划的时候必须考虑周全。因此,在开始编 码之前,你就应该把维护的开销算到软件开发周期里去。甚至在思考怎样编码之 前就应该 思考怎样去测试。 而且, 你还得考虑怎样让服务器自动测试你的代码——如果一个测试不能 做到完全自动化,那么它只能算作半个测试。只有让测试做到完 全自动化,团队才能在新 的环境里毫不费劲的测试自己的代码,也可以迅速高效地对测试进行扩展。
刚刚提到的, 你必须找到
一种可行的方法能够保证你的代码能够被自动地测试, 的确如 此,但这也是在单元测试中存在的一个问题,因为单元测试不可能面面俱到。事实上,如果 对测试进行分层,测试的效率可能会大大提高(关于分层测试,将在后面作具体的阐述)。 2.开发人员讨厌测试,他们不按照测试的规范去做 代码在某个环境中能正常工作, 就假想它在其它环境中也能正常工作, 这是软件开发人 员的通病。在现实生活中,这根本就是不可能的,可开发人员却生活在虚拟的完美世界中, 他们认为这个世界里万事万物都是完美的,不可能遭遇任何的问题。例如,一个 J2EE 程序 在 JBoss 下工作正常, 开发人员往往理所当然地认为在 WebSphere 下也能正常工作, 事实却 未必。 所以, 开发人员有必要在所有的目标平台上测试代码。 否则,
程序就有可能无法通过。 我相信,你一定需要一个框架,使你的程序能够在任何平台下
工作,而且能够把测试结 果保存到数据库中。概括地讲一下过程:你写好各种语言的测试代码,它就可以 在各种平 台下自动测试, 保存测试结果。 之后, 你就可以查阅测试结果了。 这个结果包括各个平台下、 各个版本的代码的测试的历史。 据我所知,某些工