软件危机

软件危机（英语：Software Crisis）是早期计算机科学的一个术语，是指在软件开发及维护的过程中所遇到的一系列严重问题，这些问题皆可能导致软件产品的寿命缩短、甚至夭折。软件开发是一项高难度、高风险的活动，由于它的高失败率，故有所谓“软件危机”之说。软件危机的本源是复杂、期望和改变。这个术语用来描述正急遽增加之计算机的力量带来的冲击和可能要处理的问题的复杂性。从本质上来说，它谈到了写出正确、可理解、可验证的计算机程序的困难。

历史

1968年，北大西洋公约组织（NATO）在联邦德国的国际学术会议创造软件危机（Software crisis）一词。而1960年代中期开始爆发众所周知的软件危机，为了解决问题，在1968、1969年连续召开两次著名的NATO会议，并同时提出软件工程的概念。
1972年，艾兹赫尔·戴克斯特拉于计算机协会图灵奖的演讲：
软件危机的主要原因，把它很不客气地说：在没有机器的时候，编程根本不是问题；当我们有了计算机，编程开始变成问题；而现在我们有巨大的计算机，编程就成为了一个同样巨大的问题。
 — 艾兹赫尔·戴克斯特拉，谦逊的程序员，《Communications of the ACM》
软件危机使人们认识到中大型软件系统与小型软件有着本质性差异：大型软件系统开发周期长、费用昂贵、软件质量难以保证、生产率低，它们的复杂性已远超出人脑能直接控制的程度，大型软件系统不能沿袭工作室的开发方式，就像制造小木船的方法不能生产航空母舰一样。它的存在已经有数十年的历史了，一直到了1980年代的面向对象技术才解决了一部分在软件危机上的窘境。

实际案例

1995年，Standish Group研究机构以美国境内8000个软件项目作为调查样本，调查结果显示，有84％软件计划无法于既定时间、经费中完成，超过30％的项目于运行中被取消，项目预算平均超出189％。

IBM OS/360

OS/360操作系统被认为是一个典型的案例。到现在为止，它仍然被使用在360系列主机中。这个经历了数十年，极度复杂的软件项目甚至产生了一套不包括在原始设计方案之中的工作系统。OS/360是第一个超大型的软件项目，它使用了1000人左右的程序员。佛瑞德·布鲁克斯在随后他的大作《人月神话》中曾经承认，在他管理这个项目的时候，他犯了一个价值数百万美元的错误。

美国银行信托软件系统开发案

美国银行1982年进入信托商业领域，并规划发展信托软件系统。项目原订预算2千万美元，开发时程9个月，预计于1984年12月31日以前完成，后来至1987年3月都未能完成该系统，期间已投入6千万美元。美国银行最终因为此系统不稳定而不得不放弃，并将340亿美元的信托账户转移出去，并失去了6亿美元的信托生意商机。