软件开发中存在什么问题呢?

问题1:我们忽略了研究

    大多数项目的运行都好像证明这个图表不正确。几乎每一天,我都会听到某个项目或某个人的错误判断,然后不出所料地被这个铁律击倒。因为这些愚蠢的行为,每年都有几十亿美元的损失。这种情况自从我们开始编写计算机程序以来就一直这样。每个开发人员都亲身经历过,并且看不到尽头。

    比如,因为自身的压力(或屈服于外部压力),想通过偷工减料来加快项目进度,结果几乎可以肯定会增加缺陷率并减缓项目进度。尽管如此,这样的事情总是层出不穷!

    但问题远不止于此。管理者应该对最严重的项目灾难负责。然而我们有人在管理这些项目时,他们虽然用心良苦,但却对自己在做什么一无所知。他们的许多项目从一开始就走向了灾难(详见下文的“经典”软件错误部分)。当他们意识到他们的项目陷入困境时,通常开发人员得出相同的结论已经几个月了,这时候往往为时已晚,来不及采取任何补救措施了。

问题2:小项目的开发实践不适合大项目

    对于小项目来说相对有效的开发实践,往往无法扩展到大型的实际项目。小项目是大多数学生唯一从事过的项目。所以他们毕业时后给人一个错误的印象是他们知道如何开发软件。然而,当我们试图雇用他们来建造摩天大楼的时候,他们却一直在建造用来养花的花园棚屋。但是摩天大楼和一个大的花园棚屋没有可比性,它们是完全不同的东西。

    而且,由于很少有组织能够很好地进行软件开发,许多团队就用解决花园棚屋问题的方法来解决摩天大楼的问题。所以这些可怜的开发人员就认为混乱、困惑、错误、冲突的需求、无休止的测试周期、错过的最后期限、压力、成堆的返工和死亡行军类的项目都是软件开发的正常部分。

问题3:许多团队没有所需的技能

    要在实际项目中实现低缺陷率,你需要的不仅仅是原始的技术技能。而是要有一整套的组织、管理和技术层面的战略和策略来实现这一目标。几乎可以肯定,你将需要为组织中的几乎所有人提供额外的培训,而且还需要你接受不同的开发实践。

    为了实现95%的预发布缺陷移除率的目标,我们需要需要什么?

    对于大多数组织来说,要达到95%的预发布缺陷移除率需要相当大的调整。但好消息是,即使是在预发布缺陷移除率上的一点点改进,也会对项目的经济性产生积极影响。