软件危机 优质课件

合集下载

软件危机

软件危机

软件危机一.软件危机简介软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。

概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机的原因与软件流程的整体复杂度以及软件工程这领域的不成熟有关。

这些危机可用许多方式列出:专案的进行超出预算。

专案的进行超出时间。

软件的品质低落。

软件常常不符合需求。

专案往往不能操纵和程式码难以维护。

软件危机至少有一部分可借由各式各样的流程和方法的实作来解决。

二.软件危机的危害“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法。

早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。

现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充。

程序设计语言虽然为计算机的应用开拓了无比广阔的前景,但游荡在软件世界的幽灵——“软件危机”依然存在。

因为软件的开发不仅受到程序设计的方法、结构的制约,而且受到开发周期以及软件开发成本的限制,更重要的是软件质量的保障与其程序设计的正确性关系极大。

如果所开发的软件其可靠性得不到保障,在运行中将会产生不堪设想的严重后果。

最为突出的例子是美国IBM公司于1963年~1966年开发的IBM360系列机的操作系统。

该软件系统花了大约5 000人一年的工作量,最多时,有 1000人投入开发工作,写出近100万行的源程序。

尽管投入了这么多的人力和物力,得到的结果却极其糟糕。

据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。

可想而知,这样的软件质量糟到了什么地步。

难怪该项目的负责人F·D·希罗克斯在总结该项目时无比沉痛地说:“……正像一只逃亡的野兽落到泥潭中作垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难,……程序设计工作正像这样一个泥潭……一批批程序员被迫在泥潭中拼命挣扎,……,谁也没有料到问题竟会陷入这样的困境……。

第一讲-软件工程概述(软件危机)

第一讲-软件工程概述(软件危机)
硬件 软件
结论
总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
课堂讨论
请针对一下几种观点发表自己的意见 编程高手不需要懂得软件工程,也能编出很好的软件。 拥有最后的开发工具和计算机就能编写优秀的软件。 软件开发进度落后,只要增加人员就能解决。
一、软件危机
1.1软件危机的介绍 什么是软件危机?
计算机软件的开发和维护过程所遇到的一系列严重问题.
软件危机的特征是什么?
对软件开发成本和进度的估计常常很不准确。 用户对“已完成的”软件系统不满意的现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 软件通常没有适当的文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(2)软件开发维护中的问题
图 引入同一变动付出的代价随时间变化的趋势
正确的规格说明
错误的规格说明
需求分析
设计
正确的设计
错误的设计
对错误说明的设计
编码
正确编码
对错误说明的编码
错误编码
对错误设计的编码
测试
正确功能
潜伏的错误
不可改正的错误
可改正的错误
(2)软件开发维护中的问题
错误认为:软件开发=程序编写 软件开发只要依靠个别编程高手就能完成 轻视软件维护 Biblioteka 100%0%1955
1970
1985
———— 以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些
软件危机著名案例

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程第一讲软件危机与软件工程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。

从智能手机上的各种应用程序,到企业的管理系统,再到国家的关键基础设施,软件的身影无处不在。

然而,在软件的发展历程中,并非一帆风顺,而是经历了诸多挑战和困难,其中最为突出的就是软件危机。

那么,什么是软件危机呢?简单来说,软件危机指的是在软件开发和维护过程中所遇到的一系列严重问题。

这些问题包括但不限于软件开发成本和进度的失控、软件质量的低下、软件的维护困难等等。

在过去,软件开发常常被视为一种个体化的艺术创作,缺乏规范的方法和流程。

开发人员往往凭借个人的经验和直觉来进行开发,这导致了软件开发的效率低下和质量不稳定。

而且,由于对软件需求的理解不够准确和全面,很多软件在开发完成后并不能满足用户的实际需求,需要进行大量的修改和返工,这不仅浪费了时间和资源,还严重影响了软件的交付进度。

此外,软件的规模和复杂度也在不断增加。

过去,一个简单的程序可能只有几百行代码,而现在,一些大型的软件系统可能拥有数百万甚至数千万行代码。

这种规模的增长使得软件开发和维护变得异常困难。

代码的复杂性导致了理解和修改的难度加大,容易引入新的错误,而且软件的测试和调试也变得更加耗时和费力。

软件危机给软件开发带来了巨大的困扰,严重制约了软件行业的发展。

为了解决这些问题,软件工程应运而生。

软件工程是一门致力于研究软件开发和维护的方法、技术和管理的学科。

它的目标是提高软件开发的效率和质量,降低开发成本,增强软件的可维护性和可扩展性。

软件工程强调采用规范化、系统化的方法来进行软件开发。

在软件开发的早期阶段,就需要对软件的需求进行详细的分析和定义,确保开发出来的软件能够真正满足用户的需求。

同时,软件工程还引入了一系列的开发模型,如瀑布模型、迭代模型、敏捷开发模型等,以适应不同类型和规模的软件项目。

在软件设计阶段,软件工程注重软件的架构设计和模块划分,通过合理的设计来提高软件的可维护性和可扩展性。

软件危机与软件工程

软件危机与软件工程
Middle to late 1960s:
Truly large software systems were attempted.
After 1968:
Software Engineering
第二十四页,共49页。
软件(ruǎn jiàn)的角色
软件在社会上扮演了双重角色
它本身是一种产品
将计算机硬件的计算能力发挥出来
• 只是对软件工程技术依赖的程度不同而已。 第十八页,共49页。
软件(ruǎn jiàn)的分类
按软件工作(gōngzuò)方式划分:
实时处理软件 交互式软件 批处理软件 分时软件
第十九页,共49页。
软件(ruǎn jiàn)的分类
按软件服务对象的范围划分(huà fēn):
项目软件 产品软件
High level languages were invented easier
User Programmer Computer
第二十三页,共49页。
软件(ruǎn jiàn)的发展
Early 1960s:
Very few large software projects were done by some experts.
第八页,共49页。
什么(shén me)是软件
软件是计算机系统中与硬件相互依存的另一部分, 它是包括程序,数据及其相关文档的完整集合
程序是按事先设计的功能和性能要求执行的指令 序列
数据是使程序能正常操纵(cāozòng)信息的数据 结构
文档是与程序开发,维护和使用有关的图文材料
第九页,共49页。
第二十页,共49页。
软件(ruǎn jiàn)的分类 按使用的频度(pín dù)进行划分: 一次使用 频繁使用

第一讲 软件工程概述(软件危机)

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件工程概述(软件危机)1·软件工程的定义软件工程是一门工程学科,旨在应用系统性、可量化的方法来开发和维护软件。

它涉及软件开发的各个方面,包括软件需求分析、设计、编码、测试和维护等。

2·软件发展的历史2·1 软件危机的出现在20世纪60年代末和70年代初,随着计算机应用的快速发展,软件开发面临了一系列的问题,被称为软件危机。

这些问题包括项目延期、成本超支、质量低下等。

2·2 软件危机的原因软件危机的主要原因包括:2·2·1 需求不明确在软件开发过程中,需求的变化和需求不明确是导致软件危机的主要原因之一。

客户往往无法准确地描述他们的需求,而开发人员也往往无法准确地理解需求。

2·2·2 缺乏有效的管理方法软件开发过程往往缺乏有效的管理方法,导致项目进展缓慢、进度不可控、团队合作不顺畅等问题。

2·2·3 技术限制和约束过去的软件开发技术受到硬件性能和软件工具的限制,导致开发效率低下和质量不可靠。

3·软件工程的基本原理和方法3·1 需求工程需求工程是软件工程的关键环节,旨在通过系统的方法来理解、分析和定义软件系统的需求。

3·2 结构化设计结构化设计是一种将软件系统划分为各个模块,并定义它们之间的关系的方法。

3·3 面向对象设计面向对象设计是一种将软件系统设计为一组相互协作的对象的方法。

它包括类的定义、继承和多态等概念。

3·4 软件测试软件测试是验证和验证软件系统是否满足要求的过程。

它包括单元测试、集成测试、系统测试等不同层次的测试。

3·5 软件维护软件维护是指对已发布的软件进行修改、优化和错误修复的过程。

4·软件工程的发展趋势4·1 敏捷开发敏捷开发是一种以迭代、增量和协作为核心的开发方法。

它强调灵活性、快速反馈和适应性。

01_1软件工程与软件危机

01_1软件工程与软件危机

安 庆 师 范 学 院
7.软件成本相当昂贵。 8.相当多的软件工作涉及到社会因 素。
18
软 件 工 程
软件工程的定义
Fritz Bauer在NATO(北大西洋 公约组织)会议上给出的定义:
“软件工程是为了经济地获得
安 庆 师 范 学 院
可靠的和能在实际机器上高效运行 的软件而确立和使用的健全的工程 原理(方法)。”
和谐地合作是开发软件的关键
软件必须有效地支持它的用户
在软件工程领域中是由一种文化背景的人 替具有另一种文化背景的人创造产品
27
软 件 工 程
软件工程的基本目标
组织实施软件工程项目,从技术和管理上采取 了多项措施以后,最终希望得到项目的成功。
成功指的是达到以下几个主要目标: 付出较低的开发成本;
38
软 件 工 程
软件工程知识结构
软件需求 软件设计 软件构造 软件测试 软件维护 软件配置管理 软件工程管理 软件工程过程 软件工程工具和方法 软件质量
安 庆 师 范 学 院
39
软 件 工 程
“软件工程”课程 与其它软件专业课的区别
(1) 立足于系统的整体。
安 庆 师 范 学 院
(2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践 软件开发全过程。
40
软 件 工 程
“软件工程”课程教学与实践的目标

转变对软件的认识: 上升
程序 系统

安 庆 师 范 学 院
转变思维定式: 上升
程序员 系统工程师 (系统分析员)
工程化训练
软 件 工 程
课 名:软件工程
教学方式:授课+课程设计

第一讲 软件工程概述(软件危机)

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)第一讲软件工程概述(软件危机)软件工程是一门综合性学科,旨在研究如何以科学的方法,规范的过程和工程化的方式开发、维护和管理软件系统。

软件工程的发展离不开软件危机的触发和推动。

本文将详细介绍软件工程概述以及软件危机的背景和原因。

1.软件工程的定义和范畴1.1 软件工程的定义1.2 软件工程的发展历程1.3 软件工程的目标和原则1.4 软件工程的生命周期2.软件危机的背景和原因2.1 软件危机的概念2.2 软件危机的背景2.3 软件危机的原因2.4 软件危机的影响和后果3.软件危机的解决方案3.1 软件过程改进3.2 软件工程方法学3.3 软件工程工具和环境3.4 软件工程的标准和认证4.软件工程的未来趋势4.1 敏捷开发和DevOps4.2 和机器学习在软件工程中的应用4.3 云原生和微服务架构4.4 软件工程与其他学科的交叉融合附录:________本文档涉及附件:________法律名词及注释:________1.版权法:________指规范作品著作权及相应权利的法律法规。

2.专利法:________指规范发明、实用新型和外观设计专利权的法律法规。

3.商标法:________指规范商标注册、商标权利保护和商标侵权行为处罚的法律法规。

4.反不正当竞争法:________指规范商业主体之间竞争行为的合法性和合规性的法律法规。

附件:________法律名词及注释:________1.版权法:________指规范作品著作权及相应权利的法律法规。

2.专利法:________指规范发明、实用新型和外观设计专利权的法律法规。

3.商标法:________指规范商标注册、商标权利保护和商标侵权行为处罚的法律法规。

4.反不正当竞争法:________指规范商业主体之间竞争行为的合法性和合规性的法律法规。

第一讲 软件工程概述(软件危机)

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件危机在计算机科学发展的早期,软件开发的过程中出现了一系列严重的问题,被称为软件危机。

软件危机主要表现在以下几个方面:1. 项目延期和超预算软件开发项目常常会因为技术、人员或者需求变更等原因导致延期和超预算。

这让开发者和客户都感到沮丧,并对软件开发过程的可行性和有效性产生质疑。

2. 软件质量低下由于软件开发的复杂性,很容易出现缺陷和错误。

软件质量低下会导致系统不稳定、易于崩溃、功能不完备等问题。

3. 缺乏可维护性和可重用性由于缺乏系统化的工程方法和设计规范,很多软件很难进行维护和重用。

这不仅增加了开发者的工作量,也浪费了大量的时间和资源。

4. 项目管理困难软件开发涉及多个工作环节和不同的团队成员,项目管理的难度非常大。

缺乏有效的管理方法和工具,往往导致项目进度难以掌控,人员协调困难等问题。

软件工程的出现为了解决软件危机所带来的问题,软件工程这一概念应运而生。

软件工程旨在通过系统化的方法和工程化的思维来开发和维护软件。

1. 系统化的方法软件工程提供了一套系统化的方法,包括需求分析、系统设计、编码、测试等环节,以确保软件开发过程的可控和可靠性。

2. 工程化的思维软件工程借鉴了工程学科的思维方式,将软件开发过程看作是一个工程项目,强调规划、设计、组织和管理等方面。

3. 软件开发生命周期软件工程将软件开发过程划分为不同的阶段,形成了软件开发生命周期的概念,包括需求分析、设计、编码、测试、发布等阶段。

每个阶段都有不同的任务和目标,确保软件开发的高质量和高效率。

4. 软件工程的原则和方法软件工程提出了一系列原则和方法,如模块化、结构化、面向对象、迭代开发、敏捷开发等,用来指导和规范软件开发过程。

软件工程是解决软件危机的一种有效途径。

通过系统化的方法和工程化的思维,可以提高软件开发的质量和效率,降低项目风险和成本。

软件工程对于现代社会的发展具有重要的意义,对于软件开发者和项目管理者来说,也是必不可少的知识和技能。

第一讲 软件工程概述(软件危机)

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件危机的背景和概念软件危机是指在软件开发过程中,出现了大量的开发延期、超出预算和质量问题的现象。

这种危机主要是由于软件工程领域在早期阶段的蓬勃发展,导致了开发过程的混乱和不规范,也暴露了软件复杂性带来的挑战。

软件危机的存在对于软件行业的发展和应用产生了重要的影响。

软件危机的原因和表现软件危机的产生主要有以下几个原因:1. 项目管理不规范:许多早期软件项目缺乏清晰的目标和明确的需求,在项目开发过程中缺乏有效的管理和控制手段,导致项目进展缓慢和低效。

2. 软件复杂性增加:随着软件规模的不断扩大和功能的不断增加,软件系统变得越来越复杂,而人类对于复杂系统的认知和理解能力有限,这给软件开发带来了很大的困难。

3. 缺乏有效的开发方法和工具:早期的软件开发方法和工具相对较为简单和粗糙,无法满足软件开发过程中的需求,导致开发过程存在很多不确定性和风险。

软件危机的表现主要体现在以下几个方面:1. 延期交付:很多软件项目无法按照原定的计划和时间要求准时交付,导致项目进度拖延和成本增加。

2. 超出预算:由于开发过程中存在不确定性和风险,许多软件项目的开发成本超出了最初的预算,给项目管理带来了很大的压力。

3. 质量问题:软件开发过程中的不规范和管理不足导致了软件质量的下降,出现了很多的缺陷和bug。

软件工程的发展和作用为了解决软件危机带来的问题,软件工程作为一门新兴的学科逐渐兴起并取得了长足的发展。

软件工程的主要目标是通过建立一套科学的方法论和规范,来管理和控制软件开发过程,以提高软件开发的效率和质量。

软件工程的发展主要经历了以下几个阶段:1. 软件危机阶段:这个阶段主要是软件工程学科的起源阶段,人们开始意识到软件开发过程中存在的问题和挑战,并提出了一些初步的解决方案。

2. 软件工程方法论阶段:在这个阶段,软件工程学科逐渐形成了一套方法论体系,包括需求分析、设计、编码、测试等各个方面的方法和技术。

软件工程2(软件危机)

软件工程2(软件危机)
① 彻底消除“软件就是程序”的错误观念。 ② 充分认识到软件开发应该是一种组织良好、管理严 密、各类人员协同配合、共同完成的工程项目。 ③ 推广和使用在实践中总结出来的开发软件的成功技 术、方法和工具。 ④ 按工程化的原则和方法组织软件开发工作。
6)软件工程的概念
• 为了克服软件危机,1968年10月在北大西洋公约 组织(NATO)召开的计算机科学会议上,Fritz Bauer首次提出“软件工程”的概念,试图将工 程化方法应用于软件开发。
念。重点掌握软件危机产生的原因,软件危机
和软件工程的定义。
下课了。。。
休息一会儿。。。
• 在NATO会议上,Fritz Bauer对软件工程的定义 是:“软件工程就是为了经济地获得可靠的且能 在实际机器上有效地运行的软件,而建立和使用 完善的工程原理。”
6)软件工程的概念
• 1993年IEEE给出的定义: “软件工程是:① 把系统的、规范的、 可度量的途径应用于软件开发、运行和维护 过程,也就是把工程应用于软件;② 研究 ①中提到的途径。”。
2)软件错误的实例
• ARIANE 5 火箭
–1996 年6 月,耗资70 亿美元,发射37 秒后爆炸
–发射失败的原因在于软件的错误 • 软件错误 –程序中试图将 64 位浮点数转换成16 位整数时产生 溢出 –缺少错误处理程序对数据溢出进行管理 –备份软件复制而成

严格地遵守软件确认过程可以避免这种错误
也远远跟不上计机应用迅速普及深入的趋势。
4)软件危机产生的原因
(1)开发工作的计划很难制定。 (2)软件人员与用户的交流存在障碍,使得获取的需
求不充分或存在错误 。
(3)软件开发过程不规范。 (4)随着软件规模的增大,其复杂性往往会呈指数级 升高。 (5)提交用户的软件质量不能完全保证。

第一次课一软件危机与软件工程ppt课件

第一次课一软件危机与软件工程ppt课件

——第一章——第一
软件工程 软件设计阶段示意图
——第一章——第一
软件工程 软件系统设计阶段示意图
——第一章——第一
软件工程 软 件 工 程 阶 段 示 意 图
——第一章——第一
软件工程
二、什么是软件工程?
软件工程是计算机软件的一个分支学科,主要 研究软件开发全过程中的各种技术。
是一门指导计算机软件开发和维护的工程学科。 以计算机科学、数学为方法原理,以工程科学为 工具,利用管理科学来构成软件。
——第一章——第一
对应的a:
软件工程
对应的b:
——第一章——第一
软件工程
软件发开应做什么工作呢? 上面求和的例子非常简单,现在考虑下“网
上购书系统”的开发。大家都能想到: a.买书,建数据库
可数据库里有哪些字段呢? b.查询…… c.支付…… ……
——第一章——第一
软件工程
这里应该这样考虑:前台和后台两个大的平 台。前台包括注册、登录、查询(、标记、转入 购物车、支付书款等;后台包括系统管理员的登 录、入库、查询、接受订单等等。也可以这样表 示:
——第一章——第一
软件工程
软件的特点
软件是一种逻辑实体,而不是具体的物理实体, 因而它具有抽象性。
软件的生产与硬件不同,在它的开发过程中没 有明显的制造过程。
在软件的运行和使用期间,没有硬件那样的机 械磨损,老化问题。
——第一章——第一
软件工程
——第一章——第一
软件工程
软件的分类
• 按软件的功能进行划分 – 系统软件(例如:操作系统) – 支撑软件(例如:文本编辑程序) – 应用软件(例如:Office办公软)
——第一章——第一

1.2软件危机

1.2软件危机

1.2软件危机1.2软件危机软件危机的产⽣及概念“软件”这个名词的正式提出是在1958年,⽽在1968年的NATO会议上,软件危机这个名词就被提出来了,难道仅仅过了⼗年功夫,软件的发展就到了危急关头了?什么是软件危机呢?它是指在计算机软件的开发和维护过程中,所遇到的⼀系列严重问题。

这些问题包括:项⽬超出预算、项⽬超过计划完成时间、软件运⾏效率很低、软件质量差、软件通常不符合要求、项⽬难以管理并且代码难以维护、软件不能交付等。

最终导致的后果:软件的效率和质量急剧下降。

案例1、IBM亏死•1961到1964年期间由IBM公司开发操作系统。

该系统共约100万条指令,花费了5000个⼈年,开发总投资5亿美元,达到了当时美国研究原⼦弹的曼哈顿计划投资20亿美元的1/4。

结果却令⼈沮丧,错误多达2000个以上,最终也没能完全实现当初的设想。

•不过,该项⽬总⼯程师Frederick Brooks后来总结此次经验教训,写了⼀本软件⼯程领域的经典著作《⼈⽉神话》,他本⼈更在1999年获得了计算机领域的最⾼奖——“图灵奖”。

2、美国⽕箭爆炸因为某个参数写错,导致最终不得不销毁⽕箭。

3、美国银⾏亏⼤钱•美国银⾏1982年进⼊信托商业领域,并规划发展信托软件系统。

•项⽬原订预算2千万美元,开发时程9个⽉,预计于1984年12⽉31⽇以前完成,后来⾄1987年3⽉都未能完成该系统,期间已投⼊6千万美元。

•美国银⾏最终因为此系统不稳定⽽不得不放弃,亏了很多亿。

时代趋势软件成本⽇益增加从最开始占成本的不到百分之20,到现在占百分之⼋⼗左右。

软件技术进步 < 需求增长随着计算机技术的发展,⼈们对计算机的需求也在不断的提⾼,⼈们希望软件能办到更多的事情。

然⽽,当时的计算机技术进步程度并不能够完全满⾜⼈们⽇益增长的需求,所以开发者只能通过不断增加软件复杂度来弥补技术进步与需求增长之间的差距。

客观问题尚且可以通过技术的进步降低软件复杂度得以解决,⽐如,机器学习的应⽤曾经陷⼊停滞,但由于GPU技术的登台解决了性能问题从⽽使得⼈⼯智能进⼊了新的时代;主观问题则是通过技术进步也⽆法解决的,必须让开发者具备对软件开发的正确理解。

软件危机

软件危机

软件危机落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

20 世纪60年代以前,计算机主要为电子管计算机,体积大,速度慢,性能较差,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

1964年4月,以IBM360为代表德大容量、高速度的计算机—集成电路计算机出现,使计算机的应用范围迅速扩大,软件开发急剧增长。

高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生。

软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。

原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

早期出现的软件危机主要表现在:①软件开发费用和进度失控。

费用超支、进度拖延的情况屡屡发生。

有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量。

②软件的可靠性差。

尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人。

③生产出来的软件难以维护。

很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。

随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。

进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度。

为此,1968 年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件危机
——科技的“危机”与重生
邓家龙 刘鑫 朱垚 应用六班
软件危机简介 软件危机历史 软件危机表现 软件危机案例 软件危机的原因分析
——软件危机简介
软件危机(英语:Software Crisis)是早期计算机科 学的一个术语[1],是指在软件开发及维护的过程中所 遇到的一系列严重问题,这些问题皆可能导致软件产 品的寿命缩短、甚至夭折。[2]软件开发是一项高难度、 高风险的活动,由于它的高失败率,故有所谓“软件 危机”之说。[3]软件危机的本源是复杂、期望和改变。 这个术语用来描述正急遽增加之电脑的力量带来的冲 击和可能要处理的问题的复杂性。从本质上来说,它 谈到了写出正确、可理解、可验证的电脑程序的困难。
随着事件的进展,最初诺顿的误杀已然演变成一场危机公关事 件。 记者就此事的危机公关过程欲采访赛门铁克公司时, 被对方以“目前以解决客户问题为先,公司没有太多时间和媒 体解释”为由拒绝了采访。对于赛门铁克的这种做法,危机处 理专家认为,这违背了危机处理原则之一——真诚沟通。
——软件危机的原因分析
用户需求不明确
在软件开发过程中,用户需求不明确问题主要体现在四个方面:
在软件开发出来之前,用户自己也不清楚软件开发的具体需求;——软 Nhomakorabea危机表现
软件危机其原因,衔接到硬件的整体复杂度,与软件开发流程。危机表现在几个 方面:
项目运行超出预算。 项目运行超过时间。 软件质量低落。 软件通常不符合需求。 项目无法管理,且代码难以维护。
硬件成长率每年大约30%,软件每年只勉强以4~7%速度在成长,信息系统的交 付日期一再延后,许多待开发的软件系统无法如期开始。1960年代软件开发成本 占总成本20%以下;1970年代软件成本已达总成本80%以上,软件维护费用在软 件成本中高达65%。1986年公布的数据,所有验收的外包软件中,竟然只有4% 可用,其余96%却是不堪一用。大部分的企业自行开发的信息系统中,有四分之 三也是功败垂成。因此软件维护成本居高不下,软件产品质量低落是最主要的原 因
——软件危机案例
IBMOS/360
IBMOS/360操作系统被认为是一个典型的案例。到现在为止 ,它仍然被使用在360系列主机中。这个经历了数十年,极度 复杂的软件项目甚至产生了一套不包括在原始设计方案之中的 工作系统。OS/360是第一个超大型的软件项目,它使用了1000 人左右的程序员。佛瑞德·布鲁克斯在随后他的大作《人月神 话》中曾经承认,在他管理这个项目的时候,他犯了一个价值 数百万美元的错误。
软件危机的主要原因,把它很不客气地说:只要没有机器,编程是一点问题也没 有;当我们有几台微弱的电脑,编程就成为平和的问题,而现在我们有巨大的电脑, 编程已成为一个同样巨大的问题。
——艾兹赫尔·戴克斯特拉,《卑微的程序员》,《Communications of the ACM》
软件危机使人们认识到中大型软件系统与小型软件有着本质性差异:大型软件系统 开发周期长、费用昂贵、软件质量难以保证、生产率低,它们的复杂性已远超出人 脑能直接控制的程度 ,大型软件系统不能沿袭工作室的开发方式,就像制造小木 船的方法不能生产航空母舰一样。[9]它的存在已经有数十年的历史了,一直到了 1980年代的面向对象技术才解决了一部分在软件危机上的窘境。
——软件危机案例
1995年,Standish Group研究机构以美国境内8000个软 件项目作为调查样本,调查结果显示,有84%软件计划无 法于既定时间、经费中完成,超过30%的项目于运行中被 取消,项目预算平均超出189%。
美国银行信托软件系统开发案
美国银行1982年进入信托商业领域,并规划发展信托 软件系统。项目原订预算2千万美元,开发时程9个月,预 计于1984年12月31日以前完成,后来至1987年3月都未能 完成该系统,期间已投入6千万美元。美国银行最终因为 此系统不稳定而不得不放弃,并将340亿美元的信托账户 转移出去,并失去了6亿美元的信托生意商机。 其他
随着事件的进展,最初诺顿的误杀已然演变成一场危机公关 事件。 记者就此事的危机公关过程欲采访赛门铁克公司 时,被对方以“目前以解决客户问题为先,公司没有太多时 间和媒体解释”为由拒绝了采访。对于赛门铁克的这种做法, 危机处理专家认为,这违背了危机处理原则之一——真诚沟 通。
——软件危机案例
诺顿危机公关不力 “误杀门”事件升级 ◎ 文/本报记 者 徐英 截至5月28日,跨国软件企业赛门铁克中国分公司仍 未就旗下产品诺顿“误杀门”事件对用户致歉。而这个时间被 危机处理专家认为是最后的化解危机时间。 5月18日,不少 使用诺顿杀毒软件的用户,遇到了重启电脑出现蓝屏无法启动 的状况,原来,5月17日升级的诺顿杀毒软件将两个简体中文版 本的Microsoft Windows系统文件当成病毒删除,从而让用户电 脑瘫痪。
1985年-1987年,导致病人死于Therac-25医疗线性加速器的 过量辐射。
1996年,亚利安五号原型爆炸。 1998年,波音Delta III火箭爆炸。
——软件危机案例
诺顿危机公关不力 “误杀门”事件升级 ◎ 文/本报记 者 徐英 截至5月28日,跨国软件企业赛门铁克中国分公 司仍未就旗下产品诺顿“误杀门”事件对用户致歉。而这个 时间被危机处理专家认为是最后的化解危机时间。 5月 18日,不少使用诺顿杀毒软件的用户,遇到了重启电脑出现 蓝屏无法启动的状况,原来,5月17日升级的诺顿杀毒软件 将两个简体中文版本的Microsoft Windows系统文件当成病毒 删除,从而让用户电脑瘫痪。
——软件危机历史
1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机 (Software crisis)一词。[4][5]而1960年代中期开始爆发众所周知的软件危机,为 了解决问题,在1968、1969年连续召开两次著名的NATO会议,并同时提出软件工 程的概念。
1972年,艾兹赫尔·戴克斯特拉于计算机协会图灵奖的演讲:
相关文档
最新文档