软件危机与软件工程.pptx
《软件危机与软件工程.pptx》由会员分享,可在线阅读,更多相关《软件危机与软件工程.pptx(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件危机与软件工程软件危机与软件工程软件危机软件危机 0美元支票美元支票一位主管收到了一张由计算机开出的一位主管收到了一张由计算机开出的0美元的美元的账单,在嘲笑了账单,在嘲笑了“愚蠢的计算机愚蠢的计算机”后他将账单后他将账单丢进了垃圾桶,一个月后,又一张账单寄来了,丢进了垃圾桶,一个月后,又一张账单寄来了,还标志着还标志着30天的逾期,这样的情形持续了天的逾期,这样的情形持续了4个个月,最后还带来了一封信,警告如果再不付账月,最后还带来了一封信,警告如果再不付账的话,将会采取法律行动,由于担心自己的信的话,将会采取法律行动,由于担心自己的信用度,这个主管在一个软件工程师的建议下,用度,这个主
2、管在一个软件工程师的建议下,寄出了一张寄出了一张0美元的支票,最后一张美元的支票,最后一张0美元的收美元的收据送到了,该主管小心翼翼地将这张不同寻常据送到了,该主管小心翼翼地将这张不同寻常的收据保存起来以备将来查询。的收据保存起来以备将来查询。软件危机(续)软件危机(续) 有错误的爱国者导弹有错误的爱国者导弹1991年海湾战争中,一枚飞毛腿导弹穿过了爱年海湾战争中,一枚飞毛腿导弹穿过了爱国者反导弹的防御,击中了沙特阿拉伯的国者反导弹的防御,击中了沙特阿拉伯的Dhahran附件的一个兵营,造成附件的一个兵营,造成28名美国人死名美国人死亡,亡,98人受伤。这个错误是由累积的定时错误人受伤。这个错
3、误是由累积的定时错误引起的,爱国者导弹每次只能工作几小时,超引起的,爱国者导弹每次只能工作几小时,超过这个时间后,系统时钟就会复位。可悲的是过这个时间后,系统时钟就会复位。可悲的是新的软件第二天才运到。新的软件第二天才运到。软件危机(续)软件危机(续) 美国国内税收处美国国内税收处20世纪年代让世纪年代让Sperry公公司建立一套联邦税收表格自动处理系统,司建立一套联邦税收表格自动处理系统,该系统被证明不适合当前的工作量,花该系统被证明不适合当前的工作量,花费几乎是预算的费几乎是预算的2倍,到倍,到1996年,共花费年,共花费了了40亿美元,但情况并没改善。原因是亿美元,但情况并没改善。原因是
4、“没有充分计划就错误行事没有充分计划就错误行事”。软件危机的表现软件危机的表现 超出预算时间和成本超出预算时间和成本研究表明,每研究表明,每8个新的大型软件中就有个新的大型软件中就有2个会被个会被取消,软件开发时间平均超出计划的取消,软件开发时间平均超出计划的50%,而,而软件开发中的主要成本是人力资源成本,进度软件开发中的主要成本是人力资源成本,进度的落后意味着成本的增加的落后意味着成本的增加 用户对生产出的软件不满意用户对生产出的软件不满意开发人员往往不注重或不善于和客户交流,找开发人员往往不注重或不善于和客户交流,找出客户真正需要的东西,匆忙地进行开发,在出客户真正需要的东西,匆忙地进行
5、开发,在开地过程中又不能从客户那里得到反馈信息,开地过程中又不能从客户那里得到反馈信息,最后生产出的软件和客户想要的相差很远,难最后生产出的软件和客户想要的相差很远,难免出现纠纷。免出现纠纷。软件危机的表现(续)软件危机的表现(续) 软件有残存的错误软件有残存的错误研究表明,所有的大型系统中,大约有研究表明,所有的大型系统中,大约有3/4的系统有运行问题,要么不是像预料的系统有运行问题,要么不是像预料的工作,就是根本不能使用的工作,就是根本不能使用 软件产品不可维护软件产品不可维护不能改正错误不能改正错误在原有模块上不能增加新的功能在原有模块上不能增加新的功能不能增加新的模块不能增加新的模块软
6、件危机的表现(续)软件危机的表现(续) 文档资料不完整文档资料不完整软件文档是交流平台,管理工具,必须软件文档是交流平台,管理工具,必须和软件同步更新和软件同步更新 软件生产率的提高跟不上硬件的发展速软件生产率的提高跟不上硬件的发展速度度 摩尔定律:摩尔定律:每隔每隔 18 个月计算机硬件的运个月计算机硬件的运算速度提高一倍算速度提高一倍,价格下降一半价格下降一半 软件:手工开发为主软件:手工开发为主软件危机的表现(续)软件危机的表现(续) 软件成本在计算机系统总成本中的比例不断提软件成本在计算机系统总成本中的比例不断提高高 而软件而软件维护的成维护的成 本占软本占软 件的成件的成 本也越本也
7、越 来越高来越高引起软件危机的原因引起软件危机的原因 软件开发无计划性软件开发无计划性没有经过仔细考虑就匆忙开发没有经过仔细考虑就匆忙开发,出现问题出现问题才想办法补救才想办法补救,不能保证软件开发进度和不能保证软件开发进度和预算预算,不能保证软件质量,在进度落后时,不能保证软件质量,在进度落后时,盲目增加人手,结果适得其反盲目增加人手,结果适得其反引起软件危机的原因(续)引起软件危机的原因(续) 软件需求不充分软件需求不充分没有将问题搞清楚就匆忙上马,在开发没有将问题搞清楚就匆忙上马,在开发过程中又不能和客户有效地沟通,许多过程中又不能和客户有效地沟通,许多问题在交付软件时才集中地爆发出来,
8、问题在交付软件时才集中地爆发出来,这时候已经是大势已去,难以挽回了这时候已经是大势已去,难以挽回了(和数值计算软件和平时学习语言编写(和数值计算软件和平时学习语言编写的程序不同,在实际的软件开发中的程序不同,在实际的软件开发中,首先首先应该满足的是客户的需要应该满足的是客户的需要,开发软件不,开发软件不是为了展示个人的技巧。是为了展示个人的技巧。 )引起软件危机的原因(续)引起软件危机的原因(续) 软件开发过程无规范软件开发过程无规范 开发过程没有统一的方法和规范开发过程没有统一的方法和规范 不重视文档不重视文档 各开发人员之间的接口没有统一规划各开发人员之间的接口没有统一规划引起软件危机的原
9、因(续)引起软件危机的原因(续) 软件产品无评测手段软件产品无评测手段 个人提交产品时没有进行测试个人提交产品时没有进行测试 模块之间接口没有测试模块之间接口没有测试 整个系统没有进行整体测试整个系统没有进行整体测试 忽略压力及性能测试忽略压力及性能测试软件危机解决之道软件危机解决之道:软件工程软件工程 1968年北大西洋公约组织的计算机科学家在联年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了邦德国召开的国际学术会议上第一次提出了“软件危机软件危机”(software crisis)这个名词。这个名词。 1968年秋季,北约的科技委员会召集了近年秋季,北约的科技委员
10、会召集了近50名名一流的编程人员、计算机科学家和工业界巨头,一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱讨论和制定摆脱“软件危机软件危机”的对策。在那次的对策。在那次会议上第一次提出了软件工程(会议上第一次提出了软件工程(software engineering)这个概念这个概念 用工程化的理念、方法进行软件开发用工程化的理念、方法进行软件开发软件工程的定义软件工程的定义软件工程软件工程IEE93 将将系统的、规范的、可度量系统的、规范的、可度量的方法应用的方法应用于软件的开发、运行和维护的过程;于软件的开发、运行和维护的过程; 上述方法的研究上述方法的研究软件工程基本原理软件工程
11、基本原理 B.W.Boehm提出提出 7条原理,互相独立,最小集合条原理,互相独立,最小集合 其他软件工程原理在此基础上组合、蕴其他软件工程原理在此基础上组合、蕴含、派生含、派生软件工程基本原理软件工程基本原理-1 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理不成功的软件中有一半左右是由于计划不同不成功的软件中有一半左右是由于计划不同造成的造成的应该将软件生命周期划分成若干个阶段,并应该将软件生命周期划分成若干个阶段,并相应制定出切实可行的计划,并按计划对软相应制定出切实可行的计划,并按计划对软件的开发和维护进行管理件的开发和维护进行管理六类计划:项目概要计划,里程碑计划,项六
12、类计划:项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运目控制计划,产品控制计划,验证计划,运行维护计划行维护计划软件工程基本原理软件工程基本原理-2 坚持进行阶段评审坚持进行阶段评审统计表明,大部分错误是在编码之前造成的统计表明,大部分错误是在编码之前造成的错误发现与改正越晚,所需付出的代价也越错误发现与改正越晚,所需付出的代价也越高(见下页)高(见下页)坚持阶段评审,可以避免错误的坚持阶段评审,可以避免错误的“水波效应水波效应”各阶段改正错误的相对花费各阶段改正错误的相对花费软件工程基本原理软件工程基本原理-3 实行严格的产品控制实行严格的产品控制尽量避免修改需求尽量避免
13、修改需求修改需求必须在严格的管理下进行修改需求必须在严格的管理下进行-配置配置管理管理软件工程基本原理软件工程基本原理-4 采用现代程序设计技术采用现代程序设计技术结构化程序设计技术结构化程序设计技术自顶向下,逐步求精自顶向下,逐步求精面向对象设计技术面向对象设计技术思想而非仅为技术思想而非仅为技术软件工程基本原理软件工程基本原理-5 结果应能清楚地审查结果应能清楚地审查度量是管理的基础度量是管理的基础形成自己的管理数据资料库,尽量精确地对形成自己的管理数据资料库,尽量精确地对系统进行计划、测量、修正系统进行计划、测量、修正软件工程基本原理软件工程基本原理-6 开发小组人员应少而精开发小组人员
14、应少而精 IBM的纽约时报项目(的纽约时报项目(1971):):22个月内写个月内写了了83000行程序,在行程序,在1年的运行过程中只找出年的运行过程中只找出了了25个错误,主要的程序员平均每年编写个错误,主要的程序员平均每年编写1个错误和个错误和10000行代码行代码 成功原因:成功原因: 该项目是该项目是IBM的样本项目的样本项目 每个程序员都是尖子中的尖子每个程序员都是尖子中的尖子 技术支持极为强大,编译器作者随叫随到技术支持极为强大,编译器作者随叫随到 项目领导项目领导F.Terry Baker是一个极好的管理者和是一个极好的管理者和领导者,领导者,“天才程序员天才程序员”软件工程基
15、本原理软件工程基本原理-6(续)(续) 一个好的程序员的效率是普通程序员的一个好的程序员的效率是普通程序员的4-5倍倍 开发小组人员增多,由于交流讨论问题开发小组人员增多,由于交流讨论问题所造成的通信开销急剧增加(特别是程所造成的通信开销急剧增加(特别是程序员使用其他程序员所开发的模块)序员使用其他程序员所开发的模块)软件工程基本原理软件工程基本原理-7 不断改进软件工程实践不断改进软件工程实践发展和采用新技术发展和采用新技术收集相关数据收集相关数据软件生产中的问题:软件生产中的问题: - -本质的和偶发的本质的和偶发的 硬件限制硬件限制光传播速度光传播速度制造工艺制造工艺 :电子能通过的最窄
16、的宽度为电子能通过的最窄的宽度为3个个原子的直径原子的直径 软件软件:没有银弹没有银弹软件开发中的困难软件开发中的困难 困难困难: :本质的(固有的)和偶发的(非固本质的(固有的)和偶发的(非固有的)有的) 软件的本质困难(软件的本质困难(每一种的原因及后果每一种的原因及后果)复杂性复杂性一致性一致性可变性可变性不可见性不可见性软件开发中的困难软件开发中的困难: :复杂性复杂性(1)(1) 原因原因:1.1.如果程序占如果程序占N个字,则可能的状态有个字,则可能的状态有216*N种种: :非线性增长非线性增长产品的不同块之间是要相互影响(如全局变产品的不同块之间是要相互影响(如全局变量)量)软
17、件开发中的困难软件开发中的困难: :复杂性复杂性(2)(2) 后果后果:软件产品很难理解软件产品很难理解,开发小组成员间不能进开发小组成员间不能进行良好的沟通行良好的沟通,造成开发超时和超支,并且造成开发超时和超支,并且造成说明文档中出现的错误、影响对软件过造成说明文档中出现的错误、影响对软件过程的管理程的管理 维护过程变得很复杂,除非维护人员对产品维护过程变得很复杂,除非维护人员对产品真正理解真正理解软件开发中的困难软件开发中的困难: :复杂性复杂性(3)(3) 对策对策: :结构化方法结构化方法: :自顶向下自顶向下, ,逐步求精逐步求精面向对象方法面向对象方法 :封装、消息驱动、继承、复
18、封装、消息驱动、继承、复用用 能够减少复杂性,从而提高可维护性,能够减少复杂性,从而提高可维护性,但并不能将软件复杂性完全消除但并不能将软件复杂性完全消除软件开发中的困难软件开发中的困难: :一致性一致性(1)(1) 设计软件时与现有系统的接口一致性设计软件时与现有系统的接口一致性 在设计新系统时,软件设计师与其它设在设计新系统时,软件设计师与其它设备的设计师之间的一致性备的设计师之间的一致性软件开发中的困难软件开发中的困难: :一致性一致性(2)(2) 原因:原因: 普遍存在的误解:软件是系统中一种最普遍存在的误解:软件是系统中一种最容易与别的设备进行接口的成分容易与别的设备进行接口的成分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 危机 软件工程
限制150内