没有银弹

      《没有银弹》是Fred Brooks在1987年所发表的一篇关于软件工程的经典论文。该论述中强调真正的银弹并不存在,而所谓的银弹则是指没有任何一项技术或方法可以能让软件工程的生产力在十年内提高十倍。Brooks最为人所知的是在1975年所出版的《人月神话》—被称为软件工程圣经。

      这篇经典论文的核心论述通常被解释为复杂的软件工程问题无法靠简单的答案来解决。

次要和必要复杂度

      在该论述当中,讨论到了次要和必要复杂度的差异。所谓次要复杂度是指由人们本身所产生的问题,而这类型的问题是可以被解决的。譬如说,撰写和最佳化组合语言的复杂度就是属于次要的,它可以借由高阶程序语言如Java来取代。必要复杂度则是从软件本身要解决的问题衍生而来,并无法被移除。如果软件需要提供三十个不同的功能,那麽这三十个功能都是必要的,这些功能都必须被实作出来。

      软件工程面临的问题在于我们已经清除了大部分的次要复杂度,而剩余的(主要复杂度)都无法改变。

      没有银弹所代表的是不存在一种软件开发过程中概念完整性的解决方法,似方法在其他的人类产品的生产中未必就存在。实际上大多数的人类发明的创新都以失败而告终,在我看来软件的失败率并不比别的行业更高。环顾我们的四周,到处都是被废弃的项目,到处都是被遗忘的产品。别的行业并没有因为这种开发能力的低下,而带来整个行业的困惑。作为一种智力密集型的产业,软件的复制成本的无疑是几乎不被考虑的。因此生产一个新的产品样式的成本几乎就是生产了其产品无数个体的成本。而由于传统的行业的产品复制也是一个巨大的问题,才使得概念完整性的问题不是唯一的、核心层面的困难。但是传统行业要面对许多的核心困难,依然以一种健康的速度发展,软件行业没有道理因为仅仅面对一个不能解决的困难而变得悲观失望。
 
      实际上没有银弹一样存在杀死人狼的英雄,这个就是我们的希望。

中程在线