20世纪六七十年代,由于软件规模的扩大、功能的增强和复杂性的增加,使得在一定时间内仅依靠少数人开发一个软件变得越来越困难。在软件开发中经常会出现时间延迟、预算超支、质量得不到保证、移植性差等问题,甚至有的项目在耗费了大量人力、财力后,由于离目标相差甚远而宣布失败。这种情况使人们认识到“软件危机”的存在。
1.软件危机的突出表现
(1)软件生产率低。软件生产率提高的速度远远跟不上计算机应用迅速普及和深入的趋势。落后的生产方式与开发人员的匮乏,使得软件产品的供需差距不断扩大。由于缺乏系统有效的方法,现有的开发知识、经验和相关数据难以积累与复用。另外,低水平的重复开发过程浪费了大量的人力、物力、财力和时间。人们为不能充分发挥计算机硬件提供的巨大潜力而苦恼。
(2)软件产品常常与用户要求不一致。开发人员与用户之间的信息交流往往存在障碍,除了知识背景的差异,缺少合适的交流方法及需求描述工具也是一个重要原因。这使得获取的需求经常存在二义性、遗漏,甚至是错误。由于开发人员对用户需求的理解与用户的本意有所差异,以致造成开发中后期需求与现实之间的矛盾集中暴露。
(3)软件规模的增长,带来了复杂度的增加。由于缺乏有效的软件开发方法和工具的支持,过分依靠程序设计人员在软件开发过程中的技巧和创造性,所以,软件的可靠性往往随着软件规模的增长而下降,质量保障越来越困难。
(4)不可维护性突出。软件的局限性和欠灵活性,不仅使错误非常难改正,而且不能适应新的硬件环境,也很难根据需要增加一些新的功能。整个软件维护过程除了程序之外,没有适当的文档资料可供参考。
(5)软件文档不完整、不一致。软件文档是计算机软件的重要组成部分,在开发过程中,管理人员需要使用这些文档资料来管理软件项目;技术人员则需要利用文档资料进行信息交流;用户也需要通过文档来认识软件,对软件进行验收。但是,由于软件项目管理工作的不规范,软件文档往往不完整、不一致,这给软件的开发、交流、管理、维护等都带来了困难。(www.xing528.com)
2.产生软件危机的原因
软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题不仅局限于那些“不能正确完成功能”的软件,还包括那些与我们如何开发软件,如何维护大量已有软件,如何使软件开发速度与对软件需求增长相适应等问题。产生软件危机的原因主要有以下几点。
(1)软件独有的特点给开发和维护带来困难。由于软件的抽象性、复杂性与不可预见性,使得软件在运行之前,开发过程的进展情况较难衡量,软件的错误发现较晚,软件的质量也较难评价,因此,管理和控制软件开发过程相当困难。此外,软件错误具有隐蔽性,往往在很长时间里软件仍可能需要改错。这在客观上使得软件维护较为困难。
(2)软件人员的错误认识。相当多的软件专业人员对软件开发和维护还有不少的错误观念。例如,软件开发就是编写程序,忽视软件需求分析的重要性,轻视文档的作用,轻视软件维护等。这些错误认识加重了软件危机的影响。
(3)软件开发工具自动化程度低。尽管软件开发工具比30年前已经有了很大的进步,但直到今天,软件开发仍然离不开工程人员的个人创造与手工操作,软件生产仍不可能向硬件设备的生产那样,达到高度自动化。这样不仅浪费了大量的财力、物力和宝贵的人力资源,无法避免低水平的重复性劳动,而且软件的质量也难以保证。此外,软件生产工程化管理程度低,致使软件项目管理混乱,难以保障软件项目成本、开发进度按计划执行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。