软件开发中的成本意识
·软件运行的性能和效率;
·软件开发过程的效率。
对于后面一点,它跟成本的关系是很明显的,开发过程效率不高,当然就会导致更多人力或者时间的投入,从而增加了软件的成本。就整个软件工程控制来说,要求有全局观比较好的人对开发过程进行高质量的管理。而在一个比较完美的软件开发流程中,编码所占的时间比率应该是仅仅占全部流程的比较小的一部分(一两成),但是编码的结果却又是软件成果的最终体现,所以如何提高效率显得尤为重要,就编码人员来说,充分利用现有的各种资源是一种高效的方法。
“现有资源”又有内部资源和外部资源之分:内部资源指的是开发人员所在公司或者程序员本身的积累:外部资源是指前面两种资源以外的一些资源,主要是网络上的各种资源。内部资源要充分利用,这应该是没有什么疑问的了,一个公司或者个人如果不能充分利用以前的积累,那就像竹篮打水,再努力也是一场空。对于外部资源,很多程序员有抵触的原因是有那么一种怀疑一切或者目空一切的潜意识,认为什么东西都要靠自己动手来实现才能体现自己的价值,而别人的思想或者代码都是不可靠的。这种想法在学习和研究的过程中应该还是值得提倡和赞赏的,在软件开发过程中却很要不得。在技术日新月异、竞争日益激烈的今天,有这种想法的人最终的结果只能是被淘汰。就拿Delphi开发来说,很多开发人员对第三方控件有抵触情绪,其实认真想想,有时候用不用第三方控件可能效率上会相差几十倍以上,这就是花一天时间来用控件和花几十天时间来开发控件的区别。如果有开发控件的能力,那也应该有用好控件和万一出问题时修改别人控件的能力(当然前提是使用有源文件的控件),那我们为什么不把时间节省下来把精力花到其他更重要的地方上去呢?科学上经常都有“站在巨人的肩膀上”的说法,软件开发也是同样的道理。
对于“软件运行的性能和效率”,看起来跟成本没有多大关系,但实际上也还是有关系的。经常看到有一些程序员写的东西根本就没有意识到效率或者稳定性问题,或者是有时候为了贪方便或赶工而牺牲程序的性能(有时候几行代码的区别就会导致几倍甚至几十倍的性能差别),等到用户真正用起来的时候,因为数据量或者使用频率大增,以前积累的问题就一个个暴露在用户面前,这时候就免不了要返工修改甚至全部推翻从头再来(不挑剔的用户我到现在基本上还没有遇到过)。真正做过开发的应该都有体会,返工修改的工作量绝对不会比正常开发的低(更不用说从头再来了),并且因为工作积极性(通常修改一个东西的积极性要大大的低于新开发一个东西的积极性)等问题,效率也会很低,其中的成本也就可想而知了。所以做一个软件,不仅仅要考虑功能实现,还要充分考虑性能和效率的提高。当然,这是作为一个严谨的程序员理应具有的态度和能力,这里就不再多说了。
·软件开发过程的效率。
对于后面一点,它跟成本的关系是很明显的,开发过程效率不高,当然就会导致更多人力或者时间的投入,从而增加了软件的成本。就整个软件工程控制来说,要求有全局观比较好的人对开发过程进行高质量的管理。而在一个比较完美的软件开发流程中,编码所占的时间比率应该是仅仅占全部流程的比较小的一部分(一两成),但是编码的结果却又是软件成果的最终体现,所以如何提高效率显得尤为重要,就编码人员来说,充分利用现有的各种资源是一种高效的方法。
“现有资源”又有内部资源和外部资源之分:内部资源指的是开发人员所在公司或者程序员本身的积累:外部资源是指前面两种资源以外的一些资源,主要是网络上的各种资源。内部资源要充分利用,这应该是没有什么疑问的了,一个公司或者个人如果不能充分利用以前的积累,那就像竹篮打水,再努力也是一场空。对于外部资源,很多程序员有抵触的原因是有那么一种怀疑一切或者目空一切的潜意识,认为什么东西都要靠自己动手来实现才能体现自己的价值,而别人的思想或者代码都是不可靠的。这种想法在学习和研究的过程中应该还是值得提倡和赞赏的,在软件开发过程中却很要不得。在技术日新月异、竞争日益激烈的今天,有这种想法的人最终的结果只能是被淘汰。就拿Delphi开发来说,很多开发人员对第三方控件有抵触情绪,其实认真想想,有时候用不用第三方控件可能效率上会相差几十倍以上,这就是花一天时间来用控件和花几十天时间来开发控件的区别。如果有开发控件的能力,那也应该有用好控件和万一出问题时修改别人控件的能力(当然前提是使用有源文件的控件),那我们为什么不把时间节省下来把精力花到其他更重要的地方上去呢?科学上经常都有“站在巨人的肩膀上”的说法,软件开发也是同样的道理。
对于“软件运行的性能和效率”,看起来跟成本没有多大关系,但实际上也还是有关系的。经常看到有一些程序员写的东西根本就没有意识到效率或者稳定性问题,或者是有时候为了贪方便或赶工而牺牲程序的性能(有时候几行代码的区别就会导致几倍甚至几十倍的性能差别),等到用户真正用起来的时候,因为数据量或者使用频率大增,以前积累的问题就一个个暴露在用户面前,这时候就免不了要返工修改甚至全部推翻从头再来(不挑剔的用户我到现在基本上还没有遇到过)。真正做过开发的应该都有体会,返工修改的工作量绝对不会比正常开发的低(更不用说从头再来了),并且因为工作积极性(通常修改一个东西的积极性要大大的低于新开发一个东西的积极性)等问题,效率也会很低,其中的成本也就可想而知了。所以做一个软件,不仅仅要考虑功能实现,还要充分考虑性能和效率的提高。当然,这是作为一个严谨的程序员理应具有的态度和能力,这里就不再多说了。