软件危机的发展
早期(<20世纪60年代) | 软件只能服务于1个应用 | ||
编写者也是使用者 | |||
只有程序清单,没有其他文档资料 | |||
中期(20世纪60年代—70年代) | 程序出现错误—> | 都必须修改程序 | 耗资源 不可维护 |
用户有新的需求——> | |||
硬件或操作系统更新——> |
什么是软件危机
软件危机是在计算机软件的开发和维护过程中所遇到的问题
软件危机的问题
- 如何开发软件
- 如何维护软件
软件危机的主要表现
- 预算不精确,实际开发过程中钱不够用,进度跟不上
- 不能满足客户需求,开发人员对客户要求不明确,客户对软件开发不了解,二者交流不存分导致结果不能使人满意、
- 软件质量不过关
- 不可维护。程序不能重复使用,对软件增加新的功能或者硬件火警更新,都必须修改程序
- 没有文档资料帮助开发人员交流,帮助维护人员了解程序
- 软件成本在计算机系统总成本中所占比重越来越大。微电子技术成熟硬件成本逐年降低,随着软件规模和数量软件成本不断提高
- 软件开发技术不成熟,生产效率低
产生原因
产生软件危机的原因主要有两个方面:
- 1.与软件本身的特性有关。
- 计算机硬件是物理实现,看得见摸得着,而软件开发是逻辑实现,只能靠开发人员的大脑风暴。软件样品是产品,试制过程也是生产过程。
- 软件不会因使用时间过长而“老化”或“磨损”;在编写程序代码并在计算机上运行之前,很难测量软件开发过程的进度和评估软件质量。因此,软件开发过程的管理和控制是非常困难的。
- 2.软件开发人员的的错误认识。
- 一句话就是:开发人员太过看重代码实现,忽视需求分析和软件维护。
- 软件开发和盖房子是一个道理,需求分析就是根基,软件维护是装修。
- 根基很重要,它决定软件的开发进度和质量。开发人员对客户从事领域不够了解,客户对软件开发也是一头雾水,所以这个任务还是需要二者多沟通交流,明确客户需求,在这一过程花费的时间越多,相对在开发阶段花费的时间就越少。
- 软件维护也同样重要,维护就是发现并改正在使用过程中潜伏的错误,以及环境改变时修改软件适应新环境,还要不断的改进和扩充原来的软件为了满足客户不断变化的需求。
解决途径
- 消除“软件就是程序”的错误认识,实际上,软件=程序+数据+相关文档
- 要认识到软件不是仅靠一个人就能完成的,应该是一群人有组织、有管理、协同配合共同完成的
- 总结并推广开发经验
- 开发和使用更好的开发工具