软件系统开发所面临的挑战_第1页
软件系统开发所面临的挑战_第2页
软件系统开发所面临的挑战_第3页
软件系统开发所面临的挑战_第4页
软件系统开发所面临的挑战_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2022-1-51软件系统开发所面临的挑战软件系统开发所面临的挑战2022-1-52l 什么是软件什么是软件l 软件的特点软件的特点l 软件的发展软件的发展2022-1-53一、什么是软件一、什么是软件软件软件 是计算机系统中与硬件相互依存的另是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文一部分,它是包括程序,数据及其相关文档的完整集合。档的完整集合。程序程序 是按事先设计的功能和性能要求执行是按事先设计的功能和性能要求执行的指令序列。的指令序列。数据数据 是使程序能正常操纵信息的数据结构是使程序能正常操纵信息的数据结构文档文档 是与程序开发、维护和使用有关的图是与程序开

2、发、维护和使用有关的图文材料。文材料。2022-1-54二、软件的特点二、软件的特点软件具有抽象性。软件具有抽象性。因为它是一种因为它是一种逻辑实逻辑实体体,而不是具体的物理实体。,而不是具体的物理实体。软件是开发或工程化而形成的。软件是开发或工程化而形成的。而不是而不是传统意义上的制造产生的。传统意义上的制造产生的。软件不会磨损。软件不会磨损。2022-1-55故障率曲线时间故障率软件的故障率曲线时间故障率软件的故障率曲线时间故障率硬件的故障率曲线理想曲线实际曲线2022-1-56 软件是自定义的。软件是自定义的。他不能通过已有的构件组装而来。他不能通过已有的构件组装而来。 软件对计算机系统

3、有一定的依赖性。软件对计算机系统有一定的依赖性。其开发和运行常受其开发和运行常受到计算机系统的限制。到计算机系统的限制。 软件成本昂贵软件成本昂贵2022-1-57软件本身是复杂的软件本身是复杂的v实际问题的复杂性实际问题的复杂性v程序逻辑结构的复杂性程序逻辑结构的复杂性 例例1 1 Windows95 Windows95程序超过程序超过10001000万行万行例例2 2 军事和控制军事和控制系统项目,系统项目, 35003500多人花费多人花费了了几年几年时间时间,交付后,交付后相继相继发发现了现了100100个错个错误,最后误,最后以以失败失败告终告终。2022-1-58软件的投入费用越来

4、越高软件的投入费用越来越高2022-1-59三、软件的发展过程三、软件的发展过程程序设计阶段程序设计阶段 50 50至至6060年代年代程序系统阶段程序系统阶段 60 60至至7070年年软件工程阶段软件工程阶段 70 70年代以后年代以后2022-1-510计算机50年的发展 早期早期 第二代第二代 第三代第三代 第四代第四代面向批处理面向批处理 多用户多用户 分布式系统分布式系统 桌面系统桌面系统有限的分布有限的分布 实时实时 嵌入嵌入“智能智能” ” 面向对象技面向对象技术术自定义软件自定义软件 数据库数据库 低成本硬件低成本硬件 专家系专家系统 软件产品软件产品 消费者的影响消费者的影

5、响 人工神经网络人工神经网络 并行计算并行计算 网络计算机网络计算机195019601970198019902000小规模程序小规模程序 软件作坊软件作坊 微处理器微处理器 网络网络 软件产品软件产品 2022-1-511发展带来的新问题:l 硬件的发展超过软件发展;集成度18个月翻一翻,计算速度、存储容量成倍增长,成本每10年递减两位数。l 制作软件的能力和速度与需求不适应;l 计算机的应用依赖于可靠的软件,软件失败将造成巨大经济损失;l 已有的软件难以维护。2022-1-512挑战挑战l 外国软件渗透l 软件开发投资力度不足l 软件侵权行为l 软件人才结构不合理,缺乏高级系统程序员和项目负

6、责人。l 软件人员缺乏软件工程化的概念。2022-1-513 软件已经从特定的问题解决和信息分析工具演化为一门独立的产业!需要解决的新问题:!2022-1-514l 什么是软件危机什么是软件危机l 产生危机的原因产生危机的原因2022-1-515一、什么是软件危机一、什么是软件危机例例: : IBM公司在公司在1963年至年至1966年开发的年开发的IBM360机的操作系统。这一项目花了机的操作系统。这一项目花了5000人一年的工作量,最多时有人一年的工作量,最多时有1000人投人投入开发工作,写出了近入开发工作,写出了近100万行源程万行源程序。序。.据统计,这个操作系统每次发据统计,这个操

7、作系统每次发行的新版本都是从前一版本中找出行的新版本都是从前一版本中找出1000个个程序错误而修正的结果。程序错误而修正的结果。.2022-1-516 项目负责人项目负责人F. D. BrooksF. D. Brooks事后总结了他事后总结了他在组织开发过程中的沉痛教训时说:在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。脱灭顶的灾难。.程序设计工作正像这程序设计工作正像这样一个泥潭,样一个泥潭,.一批批程序员被迫在泥一批批程序员被迫在泥潭中拼命挣扎

8、,潭中拼命挣扎,.谁也没有料到问题竟谁也没有料到问题竟会陷入这样的困境会陷入这样的困境.”.”。IBM360IBM360操作系操作系统的历史教训成为软件开发项目的典型事统的历史教训成为软件开发项目的典型事例为人们所记取。例为人们所记取。2022-1-517问题出在哪里?问题出在哪里?u项目没有被很好地理解;计划不周,最终导致进度拖延;u文档资料不充分,使人与人的交流变得比写程序困难得多;u缺少度量软件可靠性(reliability) 的标准,质量无法保证;u软件难以维护(maintainability) , 不易升级(evolvability);2022-1-518必须意识到:必须意识到:软件

9、软件 编程编程 2022-1-519 软件系统的开发与建造高楼大厦、制软件系统的开发与建造高楼大厦、制造飞机导弹同理,需要工程化方法和造飞机导弹同理,需要工程化方法和工具工具2022-1-520二、软件危机的主要特征二、软件危机的主要特征l 对软件开发的成本和进度估计常常不准确;l 用户对“已完成的” 软件系统不满意;l 软件质量不可靠;l 软件系统常常不可维护;l 软件没有适当的文档资料;l 软件成本在计算机系统总成本不断上升;l 软件生产率的提高速度既比不上硬件的发展,也跟不上计算机应用迅速普及深入的趋势。2022-1-521三、产生危机的原因三、产生危机的原因 1. 软件需求巨增!软件需

10、求巨增!2.2.软件通用性不强软件通用性不强 3. 软件难于度量软件难于度量 2022-1-5224.4. 用户与软件开发者之间难以沟通用户与软件开发者之间难以沟通 5.5. 软件难以维护:软件难以维护:没有适当的文档资料; 软件的维护是修改原来的设计;6.6. 软件开发受硬件的限制软件开发受硬件的限制7.7. 软件是定做而不是组装;软件是定做而不是组装;8.8. 没有工程化的管理和方法。没有工程化的管理和方法。2022-1-523改正一个问题需付出的代价改正一个问题需付出的代价改正一个问题的估计费用费用改正一个问题的估计工作量工作量20200200010005.02.50.050.5(人/天

11、)需求分析概要设计详细设计编码调试系统测试用户现场2022-1-524 解决问题的途径解决问题的途径如何维护已有的软件?如何使软件的如何维护已有的软件?如何使软件的开发速度适应越来越大的软件需求?开发速度适应越来越大的软件需求?如何面临挑战?如何面临挑战?2022-1-525l 什么是软件工程什么是软件工程 l 软件工程的基本原理软件工程的基本原理l 软件工程方法学软件工程方法学2022-1-526指导计算机软件开发和维护的工程学科。以系统的、工程的概念、原理、技术和方法开发和维护软件,把先进的管理技术和开发技术相结合,经济地开发出高质量的软件并有效地维护它。 软件工程是1968年NATO在计

12、算机科学家国际会议上首次提出来。2022-1-527为了经济地获得可靠的并能高效运行的软件,而建立和使用的完善的工程化原则。开发、运行、维护和修复软件的系统方法。l 将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程。2022-1-528Boehm提出了软件工程的7条基本原理:l用分阶段的生命周期计划严格管理;l坚持进行阶段评审;l实行严格的产品控制;l采用现代程序设计技术;l结果应能清楚地审查;l开发人员应该少而精;l承认不断改进软件工程实践的必要性2022-1-529一个好的工业,应该有一一个好的工业,应该有一套良好的标准来配套。套良好的标准来配套。软件的工业化生产过程应具

13、备的特点:软件的工业化生产过程应具备的特点: 明确的工作步骤明确的工作步骤 详细具体的规范化文档详细具体的规范化文档 明确的质量评价标准明确的质量评价标准方法工具过程2022-1-530软件工程层次图:软件工程层次图:管理:管理:支持软件工程的根基在于对质量的关注。过程:过程:过程将技术层结合在一起,使计算机软件合理并及时开发出来。方法:方法:涵盖一系列的任务:分析、设计、编程、测试和维护。工具:工具:对过程、方法提供自动或半自动的支持。例:CASE软件工程环境。工具(工具(CASE)方法(任务)方法(任务)过程(构建框架)过程(构建框架)质量管理(基础)质量管理(基础)计算机辅助软件工程。集

14、成了软件、硬件和一个软件工程数据库(仓库),形成了软件工程环境。2022-1-531软件工程的一般视图:软件工程的一般视图: 软件工程完成对技术实体(计算机软件)的分析、设计、建造、验证和管理。软件工程必须回答的问题:要解决的问题是什么?实体有哪些特点?如何实现?如何建造?如何及时发现错误?如何维护?2022-1-532 软件系统开发过程中会面临很多问题,就需要我们去认识,去解决!去面对!这样我们的软件事业才会迅速发展! 2022-1-533 人们在对软件工程开发的常规认识中,人们在对软件工程开发的常规认识中,认为开发程序是一个复杂而困难的过程,需要花认为开发程序是一个复杂而困难的过程,需要花

15、费大量的人力、物力和时间,而测试一个程序则费大量的人力、物力和时间,而测试一个程序则比较容易,不需要花费太多的精力。这其实是人比较容易,不需要花费太多的精力。这其实是人们对软件工程开发过程理解上的一个误区。在实们对软件工程开发过程理解上的一个误区。在实际的软件开发过程中,作为现代软件开发工业一际的软件开发过程中,作为现代软件开发工业一个非常重要的组成部分,软件测试正扮演着越来个非常重要的组成部分,软件测试正扮演着越来越重要的角色。随着软件规模的不断扩大,如何越重要的角色。随着软件规模的不断扩大,如何在有限的条件下对被开发软件进行有效的测试正在有限的条件下对被开发软件进行有效的测试正成为软件工程

16、中一个非常关键的课题。成为软件工程中一个非常关键的课题。2022-1-534软件测试的复杂性 设计测试用例是一项细致并且需要具备高度技巧的工作,稍有设计测试用例是一项细致并且需要具备高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。下面分析了容易出现不慎就会顾此失彼,发生不应有的疏漏。下面分析了容易出现问题的根源。问题的根源。 (1) (1) 完全测试是不现实的完全测试是不现实的 在实际的软件测试工作中,不论采用什么方法,由于软件测试在实际的软件测试工作中,不论采用什么方法,由于软件测试情况数量极其巨大,都不可能进行完全彻底的测试。所谓彻底情况数量极其巨大,都不可能进行完全彻底的测试。所

17、谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为。通常也称这种测试为“穷举测试穷举测试”。 穷举测试会引起以下几种问题:穷举测试会引起以下几种问题:输入量太大;输入量太大;输出结果太多;输出结果太多;软件执行路径太多;软件执行路径太多;说明书存在主观性。说明书存在主观性。2022-1-535E.W.DijkstraE.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:的一句名言对测试的不彻底性作了很好的注解:“程序程序测试只能证明错误的存在,但不能证明错误的不存在测试只能证明错误的存在,但不能证明

18、错误的不存在”。由于穷举测。由于穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的,也就不能够保证被测试程序在理论上不存在遗留的错误的,也就不能够保证被测试程序在理论上不存在遗留的错误(2) (2) 软件测试是有风险的软件测试是有风险的穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非穷穷举测试的不可行性使得大多数软件在进行测试的时候只能采取非穷举测试,这又意味着一种冒险。比如在使用举测试,这又意味着一种冒险。比如在使用Microsoft OfficeMicrosoft Office工具中工具中的的WordW

19、ord时,可以作这样的一个测试:新建一个时,可以作这样的一个测试:新建一个WordWord文档;在文档文档;在文档中输入汉字中输入汉字 “胡胡”;设置其字体属性为;设置其字体属性为“隶书隶书”,字号为初号,字号为初号,效果为效果为“ 空心空心”;将页面的显示比例设为;将页面的显示比例设为“500%500%”。这时在。这时在“胡胡”字的内部会出现字的内部会出现“胡万进印胡万进印”四个字。类似问题在实际测试中如果不四个字。类似问题在实际测试中如果不使用穷举测试是很难发现的,而如果在软件投入市场时才发现则修复使用穷举测试是很难发现的,而如果在软件投入市场时才发现则修复代价就会非常高。这就会产生一个矛

20、盾:软件测试员不能做到完全的代价就会非常高。这就会产生一个矛盾:软件测试员不能做到完全的测试,不完全测试又不能证明软件的百分之百的可靠。那么如何在这测试,不完全测试又不能证明软件的百分之百的可靠。那么如何在这两者的矛盾中找到一个相对的平衡点呢?两者的矛盾中找到一个相对的平衡点呢?2022-1-536 如图如图1 1所示的最优测试量示意图可以观察到,当软件缺陷所示的最优测试量示意图可以观察到,当软件缺陷降低到某一数值后,随着测试从量的不断上升软件缺陷降低到某一数值后,随着测试从量的不断上升软件缺陷并没有明显地下降。这是软件测试工作中需要注意的重并没有明显地下降。这是软件测试工作中需要注意的重要问

21、题。如何把测试数据量巨大的软件测试减少到可以要问题。如何把测试数据量巨大的软件测试减少到可以控制的范围,如何针对风险做出最明智的选择是软件测控制的范围,如何针对风险做出最明智的选择是软件测试人员必须能够把握的关键问题。试人员必须能够把握的关键问题。 图图1 1的最优测试量示意图说明了发现软件缺陷数量和测试的最优测试量示意图说明了发现软件缺陷数量和测试量之间的关系,随着测试量的增加,测试成本将呈几何量之间的关系,随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷降低到某一数值之后将没有明显数级上升,而软件缺陷降低到某一数值之后将没有明显的变化,最优测量值就是这两条曲线的交点。的变化,最优测量值就是这两条曲线的交点。 2022-1-5372022-1-538 软件测试的经济性 软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论