典型表现
1.对软件开发成本和进度的估计不够准确。
2.用户对“已完成的”软件系统不满意的现象经常出现。
3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。(不可重用)
5.软件没有适当的文档说明。
6.软件成本在计算机系统总成本中占比越来越高。
7.软件开发生产率提升的速度远远跟不上计算机应用迅速普及和深入的趋势。(供不应求)
原因:
1.软件不同于硬件,是一种逻辑组织形式,进度很难被衡量,管理和控制软件开发很困难。
2.软件运行出错时,是开发过程中没有检测出来的bug,想要修正和维护难度相当大。
3.软件不同于一般的程序,它的规模庞大,而且复杂性随着程序的规模的增加而呈指数上升。
4.对于用户的需求没有完全准确的认识便开始编程也是软件工程失败的一个主要原因。(已完成时再引入需求是要付出很大
的代价的。)
5.轻视维护是一个最大的错误。
消除软件危机的途径:
1.首先要对计算机软件有一个正确的认识。(1983年IEEE对软件的定义:计算机程序、方法、规则、相关的文档资料以及计
算机上运行程序所必需的数据,其中方法和规则通常在文档中说明并在程序中实现。)
2.必须充分认识到软件开发不是某种个体劳动的神秘技巧,更应该是组织良好,管理严密、各类人员协同配合、共同完成的工程项目。
3.应该推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。
4.应该开发和使用更好的开发工具。