ソフトウェア危機とは、
ハードウェアの性能向上とコスト削減が進む中で、
ソフトウェア開発が同様に進歩せず、結果として将来的に需要に対して供給が追いつかなくなる状況を指します。特に、複雑化する
ソフトウェア開発に伴いコストが増加しているため、この問題はますます深刻化しています。
この現象は
1960年代末から顕在化し、特に1968年に開催された第1回NATO
ソフトウェア工学会議で「software crisis」という用語が初めて使用されました。
エドガー・ダイクストラは1972年の講演で、当時の
ソフトウェア開発の課題を述べ、特に正確で
可読性が高く、検証可能なプログラムを作成することの難しさに言及しました。
ソフトウェアの需要増加と開発コストの悪化
ハードウェアのコストが低下することで、
コンピュータの利用範囲は広がります。これにより、
ソフトウェアの需要が高まっている一方で、複雑な
ソフトウェアが求められるようになり、その結果、開発コストが増加。需要に応じた供給ができなくなる事態が懸念されています。そのため、十分な品質を満たす
ソフトウェアの提供が難しくなると予測されています。
開発プロジェクトにおける影響
ソフトウェア危機は具体的には、以下のような問題として現れます。
- - 予算超過
- - 予定期間の遅延
- - 品質の低下
- - 要求仕様を満たさないプロダクト
- - 管理が難しいプロジェクトやメンテナンスが困難なコード
ユーザーの多様な要求と、顧客によるコストと開発時間の圧縮要求が相反するため、これが開発過程を困難にしています。
解決策と手法
ソフトウェア危機の克服には、いくつかのアプローチが試みられています。
しかし、
フレデリック・ブルックスは『銀の弾などない』の中で述べているように、
ソフトウェア開発の本質的な複雑性に対しては根本的な解決策は見つかっていないとされています。
近年、
組み込みシステムに関連する事故やトラブルが増加しており、これもまた
ソフトウェア危機の一環と考えられています。
組み込みシステムは高度な技術や理解を要し、厳しい労働条件から熟練者が不足しています。さらに、開発サイクルの短期化や理系離れも問題です。
このような背景から、Microsoft Windows CEやリアルタイム性を備えた
Linuxの導入、
ファームウェアの共有や共同開発、さらにエンジニア育成コースの設置が進められています。
まとめ
ソフトウェア危機は、単なる過去の問題ではなく、
21世紀においても依然として重要な論点です。今後、開発手法の進化とともに、この課題を克服するための努力が必須です。各種解決策が模索されていますが、根本的な改善に向けたアプローチが引き続き求められるでしょう。