软件危机是指在 计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题通常包括软件开发成本和进度估计不准确、用户对软件系统不满意、软件质量保证技术未持续应用、软件可维护性差、软件可靠性差等。软件危机的产生主要是由于落后的软件生产方式无法满足迅速增长的计算机软件需求,以及软件开发过程中管理困难、技术落后、生产方式落后等因素。
软件危机的表现包括:
对软件开发成本和进度的估计不准确:
导致软件开发组织信誉降低,且为了赶进度和节约成本采取权宜之计,损害软件产品质量,引发用户不满。
用户对“已完成的”软件系统不满意:
由于开发人员和用户之间信息交流不充分,导致最终产品不符合用户实际需要。
软件质量保证技术未持续应用:
审查、复审和测试等质量保证手段未贯穿软件开发全过程。
软件不可维护:
开发过程缺乏统一规范,程序错误难以改正,难以适应新硬件环境和功能需求,复用性低。
软件开发费用和进度失控:
费用超支、进度拖延,有时为了赶进度或压成本采取权宜之计,严重损害软件产品质量。
软件危机的原因包括:
软件规模越来越大:
功能多样性和运行环境多样性导致软件结构复杂。
软件开发管理困难:
涉及多方面因素,管理复杂度增加。
软件开发费用增加:
随着软件规模扩大,开发成本上升。
软件开发技术落后:
未能跟上硬件技术进步的步伐。
生产方式落后:
传统的开发方式无法满足现代软件需求。
开发工具落后:
生产率提高缓慢,影响软件开发和维护效率。
为了解决软件危机,软件从业人员、专家和学者进行了大量努力,逐步认识到软件危机实际上是一种状况,即软件中存在错误。现在的目标是避免错误产生和消除已有错误,使程序错误密度达到尽可能低的程度。同时,软件体系结构设计和选择成为软件工程领域的关键研究和应用方向。