软件工程概论6-软件维护课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程概论6-软件维护课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概论 软件 维护 课件
- 资源描述:
-
1、2023-1-261/66软件工程导论 第第8章章 维护维护n 软件交付后,就进入维护期,这是软件生命周期的最软件交付后,就进入维护期,这是软件生命周期的最后一个阶段,基本任务是保证软件正常运行后一个阶段,基本任务是保证软件正常运行;n 维护需要的工作量很大、投入也大维护需要的工作量很大、投入也大;n对大型软件,是开发成本的对大型软件,是开发成本的4 4倍左右,主要包括运倍左右,主要包括运行成本和维护成本;行成本和维护成本;n国外许多软件开发组织把国外许多软件开发组织把60%60%以上的人力用于维护以上的人力用于维护已有的软件,这个百分比还在持续上升已有的软件,这个百分比还在持续上升n 软件工
2、程的目标之一,就是要提高软件的可维护性,软件工程的目标之一,就是要提高软件的可维护性,减少软件维护成本。减少软件维护成本。2023-1-262/66软件工程导论 第第8章章 维护维护8.1 8.1 软件维护的内容软件维护的内容8.2 8.2 维护的特点维护的特点8.3 8.3 维护任务的实施维护任务的实施8.4 8.4 软件的可维护性软件的可维护性2023-1-263/66软件工程导论 n为了改正错误或满足新的需要而修改软件的过程,为了改正错误或满足新的需要而修改软件的过程,即是软件维护即是软件维护n维护的内容包括四种:维护的内容包括四种:改正性维护(改正性维护(21%21%)适应性维护(适应
3、性维护(25%25%)完善性维护(完善性维护(50%50%)预防性维护(预防性维护(4%4%)8.1 8.1 软件维护的内容软件维护的内容2023-1-264/66软件工程导论 改正性维护改正性维护v由维护人员诊断和改正错误的过程,称为改正由维护人员诊断和改正错误的过程,称为改正性维护。性维护。v因为测试的不彻底性和测试的不可能穷举,必因为测试的不彻底性和测试的不可能穷举,必然有些隐错,在某些特定应用环境下,必然会然有些隐错,在某些特定应用环境下,必然会暴露出来;暴露出来;v发现错误,极时改正,由维护人员进行发现错误,极时改正,由维护人员进行2023-1-265/66软件工程导论 适应性维护适
4、应性维护n 硬件换代、操作系统升级速度非常快,而应用硬件换代、操作系统升级速度非常快,而应用软件的使用寿命却可能很长,远长于最初开发软件的使用寿命却可能很长,远长于最初开发这个软件时的运行环境的寿命这个软件时的运行环境的寿命;n 适应性维护,也就是为了使软件与变化了的环适应性维护,也就是为了使软件与变化了的环境适应而进行的修改境适应而进行的修改2023-1-266/66软件工程导论 完善性维护完善性维护l 使用过程中,用户会提出增新功能或修改已有使用过程中,用户会提出增新功能或修改已有功能的要求,或者是提出一般性的改进意见。功能的要求,或者是提出一般性的改进意见。l 为了满足这类要求,需要对软
5、件进行为了满足这类要求,需要对软件进行完善性维完善性维护护。l 这项维护活动通常占软件维护工作的量最大(这项维护活动通常占软件维护工作的量最大(50%50%)2023-1-267/66软件工程导论 预防性维护预防性维护n 当为了改善软件的可维护性或可靠性,或为了当为了改善软件的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时,给未来的改进奠定更好的基础而修改软件时,出现了第四项维护活动。这项维护活动通常称出现了第四项维护活动。这项维护活动通常称为预防性维护;为预防性维护;n 目前这项维护活动相对比较少。目前这项维护活动相对比较少。2023-1-268/66软件工程导论 小结小结n
6、 从上述关于软件维护的定义不难看出,软件维护绝不从上述关于软件维护的定义不难看出,软件维护绝不仅限于纠正错误,事实上一半以上是完善性维护仅限于纠正错误,事实上一半以上是完善性维护;n 国外的统计数字表明国外的统计数字表明:n完善性维护占完善性维护占50%50%66%66%;n改正性维护占改正性维护占17%17%21%21%;n适应性维护占适应性维护占18%18%25%25%;n其他维护活动只占其他维护活动只占4%4%左右。左右。n 应该注意,上述应该注意,上述4 4类维护活动都必须应用于整个软件配类维护活动都必须应用于整个软件配置,维护软件文档和维护软件的可执行代码是同样重置,维护软件文档和维
7、护软件的可执行代码是同样重要的。要的。2023-1-269/66软件工程导论 第第8章章 维护维护8.1 8.1 软件维护的内容软件维护的内容8.2 8.2 维护的特点维护的特点8.3 8.3 维护任务的实施维护任务的实施8.4 8.4 软件的可维护性软件的可维护性2023-1-2610/66软件工程导论 8.2 8.2 软件维护的特点软件维护的特点8.2.1 8.2.1 非结构化维护与结构化维护非结构化维护与结构化维护8.2.2 8.2.2 维护的困难性维护的困难性8.2.3 8.2.3 维护的费用维护的费用2023-1-2611/66软件工程导论 8.2.1 8.2.1 非结构化维护与结构
8、化维护非结构化维护与结构化维护v非结构化维护与结构化维护差别很大,维护的非结构化维护与结构化维护差别很大,维护的困难也不同困难也不同2023-1-2612/66软件工程导论 1.1.非结构化维护非结构化维护n 如果软件配置只有程序代码,没有或很少有文档,就如果软件配置只有程序代码,没有或很少有文档,就是非结构化维护,维护活动将非常艰难;是非结构化维护,维护活动将非常艰难;n 首先难在维护必须从阅读、理解源代码开始;首先难在维护必须从阅读、理解源代码开始;n 其次,对于软件结构、数据结构、系统接口、性能和其次,对于软件结构、数据结构、系统接口、性能和设计约束等经常会产生误解,而且对程序代码所做的
9、设计约束等经常会产生误解,而且对程序代码所做的改动的后果也是难于估量的;改动的后果也是难于估量的;n 第三,因为没有测试方面的文档,所以不可能进行回第三,因为没有测试方面的文档,所以不可能进行回归测试归测试n 非结构化维护需要付出很大代价非结构化维护需要付出很大代价(浪费精力并且遭受挫浪费精力并且遭受挫折的打击折的打击),这种维护方式是没有使用良好定义的方法,这种维护方式是没有使用良好定义的方法学开发出来的软件的必然结果。学开发出来的软件的必然结果。2023-1-2613/66软件工程导论 2.2.结构化维护结构化维护v 结构化维护是有据、有序地进行的结构化维护是有据、有序地进行的v 如果有完
10、整的软件配置,维护工作就可以从评价设计文档如果有完整的软件配置,维护工作就可以从评价设计文档开始,开始,u(1 1)确定软件重要的结构特点、性能特点以及接口特点;)确定软件重要的结构特点、性能特点以及接口特点;u(2 2)估量要求的改动将带来的影响,并且计划实施途径。)估量要求的改动将带来的影响,并且计划实施途径。v 然后,然后,u(1 1)首先修改设计并且对所做的修改进行仔细复查。)首先修改设计并且对所做的修改进行仔细复查。u(2 2)接下来编写相应的源程序代码;)接下来编写相应的源程序代码;u(3 3)使用在测试说明书中包含的信息进行回归测试;)使用在测试说明书中包含的信息进行回归测试;u
11、(4 4)最后,把修改后的软件再次交付使用。)最后,把修改后的软件再次交付使用。2023-1-2614/66软件工程导论 n 上面描述的事件,就所谓的结构化维护,它是在软件上面描述的事件,就所谓的结构化维护,它是在软件开发的早期应用软件工程方法学的结果。开发的早期应用软件工程方法学的结果。n 虽然有了软件的完整配置并不能保证维护中没有问题虽然有了软件的完整配置并不能保证维护中没有问题,但是确实能减少精力的浪费并且能提高维护的总体,但是确实能减少精力的浪费并且能提高维护的总体质量。质量。2023-1-2615/66软件工程导论 8.2 8.2 软件维护的特点软件维护的特点8.2.1 8.2.1
12、非结构化维护与结构化维护非结构化维护与结构化维护8.2.2 8.2.2 维护的困难性维护的困难性8.2.3 8.2.3 维护的费用维护的费用2023-1-2616/66软件工程导论 8.2.2 8.2.2 维护的困难性维护的困难性n 与软件维护有关的绝大多数问题,都可归因于与软件维护有关的绝大多数问题,都可归因于软件定义和软件开发的方法有缺限。软件定义和软件开发的方法有缺限。n 在软件生命周期的头两个时期没有严格而又科在软件生命周期的头两个时期没有严格而又科学的管理和规划,几乎必然会导致在最后阶段学的管理和规划,几乎必然会导致在最后阶段出现问题。出现问题。n 维护困难主要表现如下:维护困难主要
13、表现如下:2023-1-2617/66软件工程导论 读懂别人的程序是困难的读懂别人的程序是困难的v理解别人写的程序通常非常困难,且困难程度理解别人写的程序通常非常困难,且困难程度随着软件配置成分的减少而迅速增加。随着软件配置成分的减少而迅速增加。v如果仅有程序代码没有说明文档,则会出现严如果仅有程序代码没有说明文档,则会出现严重的问题。重的问题。2023-1-2618/66软件工程导论 文档的不一致性文档的不一致性v 需要维护的软件往往没有合格的文档,或者需要维护的软件往往没有合格的文档,或者文档资料显著不足、内容与软件不一致。文档资料显著不足、内容与软件不一致。v认识到软件必须有文档仅仅是第
14、一步,容易理认识到软件必须有文档仅仅是第一步,容易理解的并且和程序代码完全一致的文档才真正有解的并且和程序代码完全一致的文档才真正有价值的。价值的。2023-1-2619/66软件工程导论 维护人员不可能总是开发人员维护人员不可能总是开发人员v当要求对软件进行维护时,不能指望由开发人当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。员给我们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要由于维护阶段持续的时间很长,因此,当需要解释软件时,往往原来写程序的人已经不在附解释软件时,往往原来写程序的人已经不在附近了。近了。2023-1-2620/66软件工程导论 软件设计时没有很好
15、的考虑可维护性软件设计时没有很好的考虑可维护性v 绝大多数软件在设计时没有考虑将来的修改绝大多数软件在设计时没有考虑将来的修改问题。问题。v除非使用强调模块独立原理的设计方法学,否除非使用强调模块独立原理的设计方法学,否则修改软件既困难又容易发生差错。则修改软件既困难又容易发生差错。2023-1-2621/66软件工程导论 软件维护不是一项吸引人的工作软件维护不是一项吸引人的工作v形成这种观念很大程度上是因为维护工作经常形成这种观念很大程度上是因为维护工作经常遭受挫折。遭受挫折。2023-1-2622/66软件工程导论 8.2.2 8.2.2 维护的困难性维护的困难性v读懂别人的程序是困难的读
16、懂别人的程序是困难的v文档的不一致性文档的不一致性v维护人员不可能总是开发人员维护人员不可能总是开发人员v软件设计时没有很好的考虑可维护性软件设计时没有很好的考虑可维护性v软件维护不是一项吸引人的工作软件维护不是一项吸引人的工作2023-1-2623/66软件工程导论 8.2 8.2 软件维护的特点软件维护的特点8.2.1 8.2.1 非结构化维护与结构化维护非结构化维护与结构化维护8.2.2 8.2.2 维护的困难性维护的困难性8.2.3 8.2.3 维护的费用维护的费用2023-1-2624/66软件工程导论 8.2.3 8.2.3 维护的费用维护的费用n 在过去的几十年中,软件维护的费用
17、逐年上升在过去的几十年中,软件维护的费用逐年上升n 用于维护已有软件的费用只占软件总预算:用于维护已有软件的费用只占软件总预算:n 19701970年:年:35%35%40%40%;n 19801980年:年:40%40%60%60%;n 19901990年:年:70%70%80%80%。2023-1-2625/66软件工程导论 其他无形的代价还有:其他无形的代价还有:n 当看来合理的有关改错或修改的要求不能及时当看来合理的有关改错或修改的要求不能及时满足时将引起用户不满;满足时将引起用户不满;n 由于维护时的改动,在软件中引入了潜伏的错由于维护时的改动,在软件中引入了潜伏的错误,从而降低了软
18、件的质量;误,从而降低了软件的质量;n 当必须把软件工程师调去从事维护工作时,将当必须把软件工程师调去从事维护工作时,将在开发过程中造成混乱。在开发过程中造成混乱。n 软件维护的最后一个代价是生产率的大幅度下软件维护的最后一个代价是生产率的大幅度下降,这种情况在维护旧程序时常常遇到。降,这种情况在维护旧程序时常常遇到。2023-1-2626/66软件工程导论 关于维护活动及工作量估算关于维护活动及工作量估算n 用于软件维护工作的活动可以分为:生产性活用于软件维护工作的活动可以分为:生产性活动和非生间性活动;动和非生间性活动;n 生产生活动,例如,分析评价,修改设计和编生产生活动,例如,分析评价
19、,修改设计和编码等码等n 非生产性活动,例如,理解程序代码的功能,非生产性活动,例如,理解程序代码的功能,解释数据结构、接口特点和性能限制等。解释数据结构、接口特点和性能限制等。2023-1-2627/66软件工程导论 工作量估算:工作量估算:n 维护工作量估计模型:维护工作量估计模型:M=M=P+KP+Kexp(c-dexp(c-d)n 其中:其中:nM M是维护用的总工作量,是维护用的总工作量,nP P是生产性工作量,是生产性工作量,nK K是经验常数,是经验常数,nc c是复杂程度是复杂程度(非结构化设计和缺少文档都会增加软件的复非结构化设计和缺少文档都会增加软件的复杂程度杂程度),nd
20、 d是维护人员对软件的熟悉程度。是维护人员对软件的熟悉程度。n 上面的模型表明,如果软件的开发途径不好上面的模型表明,如果软件的开发途径不好(即,没有即,没有使用好的软件工程方法使用好的软件工程方法),而且原来的开发人员不能参,而且原来的开发人员不能参加维护工作,那么维护工作量和费用将指数地增加。加维护工作,那么维护工作量和费用将指数地增加。2023-1-2628/66软件工程导论 第第8章章 维护维护8.1 8.1 软件维护的内容软件维护的内容8.2 8.2 维护的特点维护的特点8.3 8.3 维护任务的实施维护任务的实施8.4 8.4 软件的可维护性软件的可维护性2023-1-2629/6
展开阅读全文