摘要:软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。为克服软件危机而提出了软件工程概念,并在实践中不断地探索它的原理,技术和方法。
关键字:软件危机、开发和维护、克服、软件工程、探索
软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎所有的软件都不同程度地存在这些问题。概括地说,主要包含两方面的问题:一是如何开发软件,怎样满足对软件日益增长的需求;二是如何维护数量不断膨胀的已有软件。
一、软件危机的出现
20 世纪 60 年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。60年代中期以后,计算机硬件技术日益进步,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。最为突出的例子是美国IBM公司于1963年~1966年开发的IBM360系列机的操作系统。该软件系统花了大约5000人一年的工作量,最多时有 1000人投入开发工作,写出了近100万行的源程序。尽管投入了这么多的人力和物力,得到的结果却极其糟糕。据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。可想而知,这样的软件质量糟到了什么地步。直到1968 年北大西洋公约 组织 的计算机 科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。
二、软件危机的现象
早期出现的软件危机主要表现在:
1、软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。
2、软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。
3、生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。