ソフトウェア危機
ハードウェアのコスト低下はコンピュータの利用領域の増大を招き、それによってソフトウェアの需要は拡大を続ける。一方、コンピュータが様々な場面で情報処理に活用されるようになっていくと、それに伴って次々と複雑なソフトウェアが要求されるようになり、ソフトウェア開発コストは上昇の一途を辿る。このような傾向が続くと、ソフトウェア開発の生産性を根本的に向上させない限り、ソフトウェアの供給が増大する需要に追いつかず、十分な品質を満たすソフトウェアの提供が難しくなり、ついには求められる仕様を満たすソフトウェアの開発が困難になることが予測される。ソフトウェア危機という場合、通常はこのような事態を指す。
ソフトウェア危機が叫ばれ始めたのは1960年代末のころであった。"software crisis" という用語は、1968年にドイツのガルミッシュ=パルテンキルヒェンで開催された第1回NATOソフトウェア工学会議で参加者らが生み出した。1972年、エドガー・ダイクストラはチューリング賞講演で以下のように述べている。
ソフトウェア危機の原因は、ソフトウェア開発工程の全体としての複雑性と専門分野としてのソフトウェア工学の相対的な未熟さと密接に関連していた。ソフトウェア危機は以下のような形で実際の開発プロジェクトに現れた。
予算を超過してしまったプロジェクト
予定期間を超過してしまったプロジェクト
品質の低いソフトウェア
要求仕様を満たさないソフトウェア
管理不能状態のプロジェクトと、保守困難となったコード
相反する要求は常にソフトウェアの開発過程を妨げてきた。例えば、ユーザーは多大な機能を要求するが、顧客はソフトウェアに支払う対価と開発期間をなるべく最小にしたがることが多い。