1.表现:

(1)对软件开发成本和进度的估计常常很不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。

(2)用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。

(3)软件产品的质量往往靠不住。软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审、程序正确性证明和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。

(4)软件常常是不可维护的。很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软件。

(5)软件通常没有适当的文档资料。计算机软件不仅仅是程序,还应该有一整套文档资料。这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是必不可少的。缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。由于微电子学技术的进步和生产自动化程度的不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升。美国在1985年软件成本大约已占计算机系统总成本的90%。

(7)软件开发生产率提高的速度﹐远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。

2.原因:

(1)用户需求不明确

在软件开发过程中,用户需求不明确问题主要体现在四个方面:

a.在软件开发出来之前,用户自己也不清楚软件开发的具体需求;

b.用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;

c.在软件开发过程中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;

d.软件开发人员对用户需求的理解与用户本来愿望有差异。

(2)缺乏正确的理论指导

缺乏有力的方法学和工具方面的支持。由于软件开发不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件开发产品的个性化,也是发生软件开发危机的一个重要原因。

(3)软件开发规模越来越大

随着软件开发应用范围的增广,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件开发系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件开发项目开发人员不能有效地、独立自主地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。

(4)软件开发复杂度越来越高

软件开发不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件开发产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。

3.解决方法:

(1)软件工程诞生于60年代末期,它作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。

(2)在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。

(3)人工智能与软件工程的结合成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。在软件工程理论的指导下,发达国家已经建立起较为完备的软件工业化生产体系,形成了强大的软件生产能力 。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。

简述造成软件危机的原因相关推荐

  1. 什么是软件危机?产生原因?如何解决?

    软件危机 定义: 在计算机软件的开发和维护过程中所遇到的一系列严重问题 典型表现: 1.对软件开发成本和进度的估计常常很不准确 2.用户对"已完成的"软件系统不满意的现象经常发生 ...

  2. 软件危机的概念,原因及消除途径

    软件危机是指落后的软件产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象. 产生软件危机的原因主要有两个方面: 1.这与软件本身的特性有关. 与硬件不同,软件 ...

  3. 软件工程—绪论软件工程的生产(软件的特点、软件生产的发展、软件危机产生的原因。软件工程的概念)

    1.1软件工程的产生 1.1.1软件的特点    ※ "软件"定义为计算机程序及其说明程序的各种文档.    ※ "程序"是计算机的处理对象和处理规则的描述. ...

  4. 码农的自我修养之 软件危机和软件过程

    码农的自我修养之软件危机和软件过程 软件危机和软件过程 没有银弹 基于组件的软件工程方法 再论没有银弹 基于组件的软件供应链 软件危机的根本问题 软件危机的展望 软件过程模型 软件的生命周期概述 描述 ...

  5. 软件危机的定义?软件危机的7个典型表现和为什么会出现软件危机?

    软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题. 典型表现: 对软件开发成本和进度的估计常常很不准确. 用户对"已完成的"软件系统不满意的现象经常发生. ...

  6. 软件工程——软件危机

    软件危机 许多项目不能满足客户的要求 许多软件项目超出预算和时间安排 软件危机的表现 对软件开发成本和进度的估算常常很不正确 用户对"已完成的"软件系统不满意的现象经常发生 软件产 ...

  7. 软件工程导论---概述--软件危机

    软件危机 软件危机 计算机系统经历了四个不同的发展阶段: 软件危机表现 软件危机的含义 软件危机的表现 产生软件危机的原因 问题的根本所在 软件规模越来越大 消除软件危机的途径 软件危机 计算机系统经 ...

  8. 软件危机(含通俗理解帮助记忆)

    软件危机:计算机软件的开发和维护过程中遇到的一系列严重问题.(正常.不正常运行软件都具有这种问题) 软件危机的典型表现: 对软件开发成本和进度的估计常常很不准确 用户对完成的软件系统不满意的现象经常发 ...

  9. 软件工程——三次软件危机的表现及起因

    软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象. 第一次软件危机 (60年代~70年代) 20 世纪60年代以前,计算机刚刚投入实际 ...

最新文章

  1. 汇编语言 循环控制指令
  2. redis.conf 配置档详解
  3. 剑指Offer:合并两个排序的链表【25】
  4. Java黑皮书课后题第4章:*4.23(金融应用:酬金)编写一个程序,读取下面信息,然后输出一个酬金声明
  5. dns服务器在电脑上有什么作用,DNS服务器是什么 DNS服务器的作用有哪些【详解】...
  6. 《我和他的结婚录像和相册集》的快速传播
  7. RTP协议解析和H264码流提取
  8. Spring中父子容器的实现实例
  9. vfp中treeview右键菜单_用卓语言程序把Sublime Text 3添加到和删除出右键菜单
  10. Zendframework 模块加载事件触发顺序。
  11. 使用bootbox.js(二级务必提交书面和数字到数字中国)
  12. 对象行为型 - Observer观察者模式
  13. matlab实现最速下降法
  14. python 趋势跟踪算法_DualThrust区间突破策略Python版
  15. Jenkins File Matrix 对于label设置环境变量
  16. WORD中如何调整字间距
  17. DDR MC DFI PHY
  18. 如何调用WxJump的API接口实现微信网址链接转二维码
  19. pat乙级部分题目代码汇总
  20. 折腾黑苹果把win10的引导给弄没了 花了几小时找回

热门文章

  1. <3> JavaScript技术
  2. MSP430之BR0、BR1计算
  3. iframe跨端口报错 :Blocked a frame with origin
  4. 验证的计划篇之二: 计划的内容
  5. android:exported needs to be explicitly specified for <receiver>. 适配Android12之exported
  6. 在html中怎么插入动态图片,如何在gif中插入图片 动态图片某1帧插入图片并控制显示时间|动态图片中插入图片...
  7. vue 3.0 脚手架项目搭建(含javascpt和typescript两种)
  8. 让一个技术人员快速破产的9个方法!
  9. 对于obj文件转化成js
  10. 测试指令和位测试指令的用法-TEST