简介
本篇博客围绕“软件危机”这一核心概念展开,深入介绍了软件危机的起源、表现形式、成因及应对策略。文章通过两个关卡的形式,系统梳理了20世纪60年代以来软件行业所面临的挑战,包括开发成本上升、进度难控、质量低下与维护困难等问题,同时结合丹佛国际机场与美国银行系统开发的典型案例,形象展现了软件危机对实际项目的深远影响。在分析其成因时,文章指出用户需求不明确、理论与方法缺失、软件规模扩大及复杂性增加是主要诱因。为了克服软件危机,作者提出需从技术与管理两个层面入手,引入软件工程的系统化思想,使用科学的方法和高效的工具,并强化组织协作。这篇文章适合软件工程初学者及项目管理人员阅读,有助于建立对软件开发本质问题的深刻理解,提升对软件工程重要性的认识。
第1关:什么是软件危机?
任务描述
本关任务:通过学习软件危机的起源与表现,完成软件危机的相关题目。
相关知识
为了完成本关任务,你需要掌握:
1.什么是软件危机
2.软件危机的具体表现。
什么是软件危机
早期的软件主要指程序,程序的开发采用个体工作方式,开发工作主要依赖于开发人员的个人技能和程序设计技巧。当时的软件通常缺少与程序有关的文档,软件开发的实际成本和进度往往与预计的相差甚远,软件的质量得不到保证,开发出来的软件常常不能使用户满意。
随着计算机应用需求的不断增长,软件的规模也越来越大,然而软件开发的生产率远远跟不上计算机应用的迅速增长。此外,由于软件开发时缺少好的方法指导和工具辅助,同时又缺少相关文档,使得大量已有的软件难以维护。上述这些问题严重地阻碍了软件的发展,20世纪60年代中期,人们把上述软件开发和维护过程中所遇到的各种问题称为“软件危机”。
软件危机的表现
时至今日,“软件危机”虽然在软件行业已经家喻户晓,但很多工程师还是不能很好地理解软件危机究竟为何物,在实际的软件项目中,软件危机具体又表现在什么方面呢?
①软件成本日益增长:软件成本在整个计算机系统成本中所占的比例不断增长;
②开发进度难以控制:在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难;
③软件质量差:由于缺乏工程化思想的指导,程序员总会习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,种种因素导致,软件项目即使能按预定日期完成,结果却不尽如人意;
④软件维护困难:由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。
软件危机的实例
丹佛新国际机场事件
该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机,投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李。
支持该系统的是5000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划系统依旧无法准确地预测行李何时能达到,导致机场无法如期开放。
美国银行信托软件系统开发案
1982年,美国银行在进入信托商业领域后,准备规划开发一个信托软件系统。该项目原定预算2千万美元,项目预期的开发时程为9个月,然而,在项目开发过程中由于各种原因导致了项目的不断延期,直到1987年都未能完成系统的开发,期间却已投入6千万美元。美国银行最终因为系统的不稳定性等缺陷不得不选择放弃该项目,失去了6亿美元的信托生意商机。

作答要求
根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。
参考资料
【1】软件危机的起源 软件危机:定义、起因、历史、机遇-腾讯云开发者社区-腾讯云
【2】软件与软件危机 【软件工程】软件与软件危机_软件发展与软件危机有什么关联?-CSDN博客
开始你的任务吧,祝你成功!
题目
-
1、
开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做
A、软件工程
B、软件周期
C、软件危机
D、软件产生
-
2、
“软件危机”是指______。
A、计算机病毒的出现
B、利用计算机系统进行经济犯罪
C、人们过分迷恋计算机系统
D、软件开发和软件维护中出现的一系列问题
-
3、
下列不是软件危机的表现的是______
A、开发的软件可维护性差
B、经费预算经常被突破
C、软件极易被盗版
D、开发的软件不能满足用户需求
-
4、
软件危机是软件产业化过程中出现的一种现象,下述现象中( )是其主要表现。 Ⅰ.软件需求增长难以满足 Ⅱ.软件开发成本提高 Ⅲ.软件开发进度难以控制 Ⅳ.软件质量不易保证
A、Ⅰ和Ⅱ
B、Ⅰ和Ⅲ
C、Ⅱ和Ⅴ
D、全部
答案
BDCD
第2关:为什么会有软件危机?
任务描述
本关任务:理解软件危机的成因,完成相应的练习题。
相关知识
为了完成本关任务,你需要掌握:
1、导致软件危机的主要成因并理解它们的具体含义;
2、如何克服软件危机?
为什么会产生软件危机
从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因,总的来说,可以归结为四个方面:
①用户需求不明确
在软件开发过程中,需求多变是造成项目失败的最主要原因之一,具体来说,用户需求不明确问题主要体现在用户对软件需求的描述不精确,开发过程中用户又提出新需求等等;
②缺乏正确的理论指导
缺乏有力的方法学和工具方面的支持,过度依赖于程序员在开发过程中的技巧和创造性;
③软件的规模越来越大
随着软件应用范围的增大,软件规模越来越大。软件开发者不能自主有效地处理大型软件的全部关系和各个分支,从而容易产生疏漏和误解;
④软件复杂度越来越高
软件不仅是在规模上快速地发展壮大,而且其复杂性也急剧地增加。
如何克服软件危机
要解决软件危机问题,需要采取以下措施:
使用好的软件开发技术和方法;
使用好的软件开发工具,提高软件生产率;
有良好的组织、严密的管理,各方面人员相互配合共同完成任务。
为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
作答要求
根据相关知识,按照要求完成右侧选择题任务。作答完毕,通过点击“测评”,可以验证答案的正确性。
参考资料
【1】软件危机的起源 软件危机:定义、起因、历史、机遇-腾讯云开发者社区-腾讯云
【2】软件与软件危机 【软件工程】软件与软件危机_软件发展与软件危机有什么关联?-CSDN博客
开始你的任务吧,祝你成功!
题目
-
1、
为了克服软件危机,人们提出了用______的原理来设计软件,这就是软件工程诞生的基础。
A、数学
B、软件学
C、运筹学
D、工程学
-
2、
软件危机通常是指在计算机软件开发和维护时所产生的一系列严重的问题,这些问题中相对次要的因素是()。
A、软件功能
B、文档质量
C、开发效率
D、软件性能
-
3、
产生软件危机的原因一方面与软件本身的特点有关,另一方面也和( )的方法不正确有关。
A、软件的使用
B、软件的成本
C、软件的文档材料
D、软件的开发和维护
-
4、
在下列说法中,()是造成软件危机的主要原因。 ①用户使用不当 ②软件本身特点 ③硬件不可靠 ④对软件的错误认识 ⑤缺乏好的开发方法和手段 ⑥开发效率低
A、①③⑥
B、①②④
C、③⑤⑥
D、②⑤⑥
-
5、
软件危机中表现出来的软件质量差的问题,其原因是( )。
A、领导的决策对软件的改变
B、用户对软件要求的修改的随意性
C、开发人员的技术和素质不够高
D、没有软件质量标准
答案
DCDDD
总结
软件危机是指在软件开发和维护过程中出现的一系列严重问题,最早于20世纪60年代被提出。其主要表现包括开发成本持续上升、进度难以控制、软件质量低、维护困难等。随着软件规模和复杂度的迅速增加,这些问题日益突出,严重制约了软件行业的发展。
造成软件危机的原因主要有四方面:一是用户需求不明确,开发中常常变更需求;二是缺乏系统的理论指导和有效的开发方法,过度依赖开发人员的个人经验;三是软件规模庞大,超出开发者的认知能力;四是系统复杂度不断提高,带来更多设计和测试难题。
为应对软件危机,需要采取技术与管理双重措施。技术方面应采用先进的软件工程方法和开发工具;管理方面要加强组织协调,推动团队协作,提高开发效率和质量。软件工程正是为解决软件危机而诞生的一门学科,通过系统化、规范化的方式指导软件开发与维护,从而提高软件成功率和可维护性。