1.第一次软件危机
20世纪60年代以前,计算机刚刚投入实际使用,这个时期主要的软件开发方式是使用机器语言或者汇编语言在特定的机器上进行软件的设计与编写。此时软件规模较小,文档资料通常也不存在,也不需要使用系统化的软件开发方法,基本上是个人设计编码、个人操作使用的私人化的软件生产模式。这个时代的程序一个典型的特征就是依赖特定的机器,程序员必须根据所使用的计算机的硬件特性编写特定的程序。
随着60年代中期大容量、高速度计算机问世,使计算机的应用范围迅速扩大。软件系统的规模越来越大,复杂程度越来越高,程序设计的复杂度也随之增长,软件开发量急剧增长,软件可靠性问题也越来越突出。原来的个人设计、个人开发的方式不再能满足要求,迫切需要改变软件的生产方式,提高软件的生产率,第一次软件危机开始爆发。
第一次软件危机的现象主要表现在以下几个方面:
1)软件开发费用和进度失控
费用超支、进度拖延的情况屡屡发生。有时为了赶进度或者压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。
2)软件的可靠性差
尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。
3)生产出来的软件难以维护。
很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。
1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出了“软件工程”一词,从此一门为研究和克服软件危机的新兴的工程学科一软件工程学应运而生, “软件危机”的概念也是在那次会议上由F.L.Bauer提出的。