在20世纪60-70年代,出现了软件危机。所谓软件危机,是指在软件开发和维护过程中所遇到的一系列严重问题。随着计算机硬件技术的进步和用户需求愈来愈复杂,一些复杂的、大型的软件开发项目被提出来了,但软件开发技术的进步一直未能满足发展的要求。在软件开发中遇到的一些问题找不到解决的办法,问题积累起来便形成了尖锐的矛盾,失败的软件开发项目屡见不鲜,从而导致了软件危机.软件危机主要表现在以下几个方面:
(1)主观盲目地制订软件开发计划,对工作量估计不足,进度计划无法遵循,使得开发工作的完成时间一再拖延,经费预算经常超支。
(2)不重视软件测试工作,提交给用户的软件质散差,在运行中暴露出大量的问题.在应用领域工作的不可靠软件,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。
(3)开发过程没有统一的规范化方法和管理流程,设计和实现过程的文档资料不完整,开发人员各行其是,相互之间接口的统一问题常常被忽视,软件结构不清晰.这些都使得软件难以维护。