ソフトウェア危機

ソフトウェア危機（ソフトウェアきき、Software Crisis）とは、高性能化するハードウェアのコストは低下する一方、複雑化するソフトウェア開発のコストは上昇する傾向が続くことにより、将来的にソフトウェアの供給が需要を満たせなくなるという考え方である。
この用語は、ソフトウェア工学がまだ十分に確立していなかった頃によく使われた。その根本には、正しく、可読性が高く、検証可能なコンピュータプログラムを書くことが困難であるという事情がある。
概要.
ハードウェアのコスト低下はコンピュータの利用領域の増大を招き、それによってソフトウェアの需要は拡大を続ける。一方、コンピュータが様々な場面で情報処理に活用されるようになっていくと、それに伴って次々と複雑なソフトウェアが要求されるようになり、ソフトウェア開発コストは上昇の一途を辿る。このような傾向が続くと、ソフトウェア開発の生産性を根本的に向上させない限り、ソフトウェアの供給が増大する需要に追いつかず、十分な品質を満たすソフトウェアの提供が難しくなり、ついには求められる仕様を満たすソフトウェアの開発が困難になることが予測される。ソフトウェア危機という場合、通常はこのような事態を指す。
ソフトウェア危機が叫ばれ始めたのは1960年代末のころであった。"software crisis" という用語は、1968年にドイツのガルミッシュ＝パルテンキルヒェンで開催された第1回NATOソフトウェア工学会議で参加者らが生み出した。1972年、エドガー・ダイクストラはチューリング賞講演で以下のように述べている。
ソフトウェア危機の原因は、ソフトウェア開発工程の全体としての複雑性と専門分野としてのソフトウェア工学の相対的な未熟さと密接に関連していた。ソフトウェア危機は以下のような形で実際の開発プロジェクトに現れた。
相反する要求は常にソフトウェアの開発過程を妨げてきた。例えば、ユーザーは多大な機能を要求するが、顧客はソフトウェアに支払う対価と開発期間をなるべく最小にしたがることが多い。
ソフトウェア危機の解決手法.
ソフトウェア危機は（少なくとも一部は）様々な手法や方法論の開発によって解決されてきつつある。
しかしフレデリック・ブルックスが『銀の弾などない』で記している通り、「本質的な複雑性」に対して生産性を向上させるような技法は存在しないと言われている。
組み込みシステムにおけるソフトウェア危機.
近年では、組み込みシステムにおけるソフトウェア関連に起因する事故やトラブルが増加し、社会的に大きな影響を与えることも増えており、こちらもソフトウェア危機と呼ばれる。原因としては次のような物が挙げられている。
対策として次のようなことが行われている。