第六章 软件维护PPT讲稿.ppt
《第六章 软件维护PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第六章 软件维护PPT讲稿.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章 软件维护软件维护第1页,共48页,编辑于2022年,星期三软件维护软件维护 大型软件维护成本甚至高达开发成本的四倍左右。大型软件维护成本甚至高达开发成本的四倍左右。大型软件维护成本甚至高达开发成本的四倍左右。大型软件维护成本甚至高达开发成本的四倍左右。国外软件开发组织把国外软件开发组织把国外软件开发组织把国外软件开发组织把60%60%60%60%左右的人力用于维护,并有上升趋势。左右的人力用于维护,并有上升趋势。左右的人力用于维护,并有上升趋势。左右的人力用于维护,并有上升趋势。增强功能大约占软件维护成本的增强功能大约占软件维护成本的60%60%,错误更正仅,错误更正仅占占17%
2、17%。因此,软件维护的主题是在旧软件中加入。因此,软件维护的主题是在旧软件中加入新功能,而不是更正错误。新功能,而不是更正错误。维护是解决方案,而不是问题。维护是解决方案,而不是问题。比较软件开发和软件维护中的工作,除了维护中比较软件开发和软件维护中的工作,除了维护中“理解现有的产品理解现有的产品”这项工作之外,其他工作都这项工作之外,其他工作都一样。这项工作占据了大约一样。这项工作占据了大约30%30%的维护时间,是主的维护时间,是主要的维护活动。因此可以说维护比开发更难。要的维护活动。因此可以说维护比开发更难。第2页,共48页,编辑于2022年,星期三软件维护软件维护编程大师曾说过:编程
3、大师曾说过:“哪怕程序只有三行长,总有哪怕程序只有三行长,总有一天你也不得不对它进行维护。一天你也不得不对它进行维护。”软件维护是软件生命周期的最后一个阶段,软件软件维护是软件生命周期的最后一个阶段,软件从部署完毕到退役的整个时间内对软件的改动所从部署完毕到退役的整个时间内对软件的改动所做的工作都是维护的内容。做的工作都是维护的内容。在项目的各个阶段对项目的可维护性进行充分考在项目的各个阶段对项目的可维护性进行充分考虑、对可维护性的严格评审以及在维护阶段有效虑、对可维护性的严格评审以及在维护阶段有效地组织和管理维护活动,则是保证软件可维护性地组织和管理维护活动,则是保证软件可维护性和降低维护费
4、用的关键。和降低维护费用的关键。第3页,共48页,编辑于2022年,星期三第六章第六章 软件维护软件维护6.1 软件维护的定义和分类软件维护的定义和分类6.2 软件维护的特点软件维护的特点6.3 可维护性可维护性6.4 维护过程与维护活动维护过程与维护活动6.5 软件维护的副作用软件维护的副作用6.6 软件再工程软件再工程6.7 小结小结第4页,共48页,编辑于2022年,星期三6.1 软件维护的定义和分类软件维护的定义和分类软软件件维维护护:是是在在软软件件已已经经交交付付使使用用之之后后,为为了了改正错误或满足新的需要而修改软件的过程。改正错误或满足新的需要而修改软件的过程。维维护护的的目
5、目的的:保保证证软软件件系系统统能能持持续续地地与与用用户户环环境境、数数据据处处理理操操作作、政政府府或或其其他他有有关关部部门门的请求取得协调。的请求取得协调。第5页,共48页,编辑于2022年,星期三软件维护的分类q按照维护的起因分类:纠错性维护 适应性维护 改善性维护 预防性维护四类四类第6页,共48页,编辑于2022年,星期三1.纠错性维护纠错性维护在软件交付使用后,因开发时测试的不彻底、不在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就这些隐藏下来的错误在某些
6、特定的使用环境下就会暴露出来。会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做纠错性维护。正错误的过程就叫做纠错性维护。第7页,共48页,编辑于2022年,星期三2.适应性维护适应性维护 适应性维护适应性维护适应性维护适应性维护为适应软件运行环境的变化而修改软件的活动。为适应软件运行环境的变化而修改软件的活动。为适应软件运行环境的变化而修改软件的活动。为适应软件运行环境的变化而修改软件的活动。在使用过程中,在使用过程中,在使用过程中,在使用过程中
7、,l外部环境(新的硬、软件配置)l数据环境(数据库、数据格式、数据输入/输输出方式、数据存储介质)出方式、数据存储介质)可能发生变化。可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维为使软件适应这种变化,而去修改软件的过程就叫做适应性维为使软件适应这种变化,而去修改软件的过程就叫做适应性维为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。护。护。护。第8页,共48页,编辑于2022年,星期三3.改善性维护改善性维护 改善性维护改善性维护根据用户在软件使用过程中提出根据用户在软件使用过程中提出的建设性意见而进行的维护活动。的建设性意见而进行的维护活动。主要是针对用户提
8、出的新的软件需求或修改原有主要是针对用户提出的新的软件需求或修改原有的软件需求而进行的维护,该种维护通常占所有的软件需求而进行的维护,该种维护通常占所有维护工作量的一半以上。软件在部署之后一段时维护工作量的一半以上。软件在部署之后一段时间内,用户的改善性维护应该是递减的。间内,用户的改善性维护应该是递减的。第9页,共48页,编辑于2022年,星期三4.预防性维护预防性维护 预防性维护预防性维护为了进一步改善软件系统的可维为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。护性和可靠性,并为以后的改进奠定基础。预防性维护可以采取逆向工程(预防性维护可以采取逆向工程(reverse
9、engineering)和重构工程()和重构工程(re-engineering)方)方式。式。第10页,共48页,编辑于2022年,星期三6.2 软件维护的特点软件维护的特点6.2.1 软件工程方法对维护的影响软件工程方法对维护的影响6.2.2 维护的代价高昂维护的代价高昂6.2.3 软件维护中的一些典型问题软件维护中的一些典型问题第11页,共48页,编辑于2022年,星期三6.2.1 软件工程方法对维护的影响 软件的开发过程对软件的维护产生较大的影响。软件的开发过程对软件的维护产生较大的影响。软件的开发过程对软件的维护产生较大的影响。软件的开发过程对软件的维护产生较大的影响。如果采用软件工程
10、的方法进行软件开发,保证每个阶段如果采用软件工程的方法进行软件开发,保证每个阶段如果采用软件工程的方法进行软件开发,保证每个阶段如果采用软件工程的方法进行软件开发,保证每个阶段都有完整且详细的文档,这样维护会相对容易,被称为都有完整且详细的文档,这样维护会相对容易,被称为都有完整且详细的文档,这样维护会相对容易,被称为都有完整且详细的文档,这样维护会相对容易,被称为结构化的维护。结构化的维护。结构化的维护。结构化的维护。反之,如果不采用软件工程方法开发软件,软件只有程反之,如果不采用软件工程方法开发软件,软件只有程反之,如果不采用软件工程方法开发软件,软件只有程反之,如果不采用软件工程方法开发
11、软件,软件只有程序而欠缺文档,则维护工作变得十分困难,被成为非结序而欠缺文档,则维护工作变得十分困难,被成为非结序而欠缺文档,则维护工作变得十分困难,被成为非结序而欠缺文档,则维护工作变得十分困难,被成为非结构化的维护。构化的维护。构化的维护。构化的维护。结构化维护结构化维护非结构化维护非结构化维护程序程序文档文档第12页,共48页,编辑于2022年,星期三结构化维护与非结构化维护交付使用交付使用分析设计分析设计制定计划制定计划修改计划修改计划重新编码重新编码复审通过复审通过文件有吗文件有吗苦读代码苦读代码找到问题找到问题重新编码重新编码复审通过复审通过维护请求维护请求n ny yy yy y
12、y yn nn nn n结构化维护结构化维护 非结构化维护非结构化维护 第13页,共48页,编辑于2022年,星期三非结构化维护非结构化维护在非结构化维护过程中,开发人员只能通过阅读、在非结构化维护过程中,开发人员只能通过阅读、理解和分析理解和分析源程序源程序来了解系统功能、软件结构、来了解系统功能、软件结构、数据结构、系统接口和设计约束等,这样做是十数据结构、系统接口和设计约束等,这样做是十分困难的,也容易产生误解。分困难的,也容易产生误解。要弄清楚整个系统,势必要花费大量的人力和物要弄清楚整个系统,势必要花费大量的人力和物力,对源程序修改产生的后果难以估计。力,对源程序修改产生的后果难以估
13、计。在没有文档的情况下,也不可能进行回归测试,在没有文档的情况下,也不可能进行回归测试,很难保证程序的正确性。很难保证程序的正确性。第14页,共48页,编辑于2022年,星期三结构化维护结构化维护在结构化维护的过程中,所开发的软件具有各个在结构化维护的过程中,所开发的软件具有各个阶段的文档,它对于理解和掌握软件的功能、性阶段的文档,它对于理解和掌握软件的功能、性能、体系结构、数据结构、系统接口和设计约束能、体系结构、数据结构、系统接口和设计约束等有很大的作用。等有很大的作用。维护时,开发人员从分析需求规格说明开始,明维护时,开发人员从分析需求规格说明开始,明白软件功能和性能上的改变,对设计说明
14、文档进白软件功能和性能上的改变,对设计说明文档进行修改和复查,再根据设计修改进行程序变动,行修改和复查,再根据设计修改进行程序变动,并用测试文档中的测试用例进行回归测试,最后并用测试文档中的测试用例进行回归测试,最后将修改后的软件再次交付使用。这种维护有利于将修改后的软件再次交付使用。这种维护有利于减少工作量和降低成本,大大提高软件的维护效减少工作量和降低成本,大大提高软件的维护效率。率。第15页,共48页,编辑于2022年,星期三6.2.2 6.2.2 维护的代价高昂维护的代价高昂维护费用只不过是软件维护最明显的代价,其他维护费用只不过是软件维护最明显的代价,其他一些还不明显的代价将来可能更
15、为人们关注。其一些还不明显的代价将来可能更为人们关注。其他无形的代价还有:他无形的代价还有:可用的资源被软件维护所占用。可用的资源被软件维护所占用。未能及时满足用户的维护要求时引起用户不满。未能及时满足用户的维护要求时引起用户不满。维护时改动软件,引入了潜在故障,降低了软维护时改动软件,引入了潜在故障,降低了软件质量。件质量。抽调人员从事维护工作,对新的开发过程造成抽调人员从事维护工作,对新的开发过程造成混乱。混乱。导致生产率的大幅下降。导致生产率的大幅下降。第16页,共48页,编辑于2022年,星期三软件维护的代价高昂软件维护的代价高昂用于维护工作的劳动可以划分成:用于维护工作的劳动可以划分
16、成:生产性活动生产性活动(如,分析评价、修改设计、编写(如,分析评价、修改设计、编写程序代码等)程序代码等)非生产性活动非生产性活动(例如,理解程序代码功能、解(例如,理解程序代码功能、解释数据结构、接口特点、性能限度等)释数据结构、接口特点、性能限度等)第17页,共48页,编辑于2022年,星期三维护工作量的计算模型维护工作量的计算模型MP+Ke(c-d)其中:其中:其中:其中:M M M M:维护所用工作量;:维护所用工作量;:维护所用工作量;:维护所用工作量;P P P P:生产性工作量:生产性工作量:生产性工作量:生产性工作量 分析评价、修改设计和代码;分析评价、修改设计和代码;分析评
17、价、修改设计和代码;分析评价、修改设计和代码;KeKeKeKe(c-d)(c-d)(c-d)(c-d):助动性工作量:助动性工作量:助动性工作量:助动性工作量 理解文档和代码;理解文档和代码;理解文档和代码;理解文档和代码;K K K K:经验常数;:经验常数;:经验常数;:经验常数;c c c c:软软软软件件件件的的的的维维维维护护护护复复复复杂杂杂杂度度度度,由由由由软软软软件件件件本本本本身身身身的的的的复复复复杂杂杂杂度度度度,软软软软件件件件的的的的设设设设计质量以及文档化的程度等因素决定;计质量以及文档化的程度等因素决定;计质量以及文档化的程度等因素决定;计质量以及文档化的程度等
18、因素决定;d d d d:维护人员对软件的熟悉程度;:维护人员对软件的熟悉程度;:维护人员对软件的熟悉程度;:维护人员对软件的熟悉程度;上述模型表明,如果软件开发没有运用软件工程方法学,上述模型表明,如果软件开发没有运用软件工程方法学,上述模型表明,如果软件开发没有运用软件工程方法学,上述模型表明,如果软件开发没有运用软件工程方法学,而且原来的开发人员未能够参与到维护工作之中,则维而且原来的开发人员未能够参与到维护工作之中,则维而且原来的开发人员未能够参与到维护工作之中,则维而且原来的开发人员未能够参与到维护工作之中,则维护工作量和费用将指数增加。护工作量和费用将指数增加。护工作量和费用将指数
19、增加。护工作量和费用将指数增加。第18页,共48页,编辑于2022年,星期三6.2.3 软件维护中的一些典型问题软件维护中的一些典型问题与软件维护有关的大多数问题都可归因于软件定与软件维护有关的大多数问题都可归因于软件定义和开发方法上的不足。义和开发方法上的不足。软件开发时采用急功近利,还是放眼未来的态度,软件开发时采用急功近利,还是放眼未来的态度,对软件维护影响极大。对软件维护影响极大。一般说来,软件开发若不严格遵循软件开发标准,一般说来,软件开发若不严格遵循软件开发标准,软件维护就会遇到许多困难。软件维护就会遇到许多困难。第19页,共48页,编辑于2022年,星期三维护的问题维护的问题(1
20、 1 1 1)理解他人编写的程序一般都有一定的困难性。)理解他人编写的程序一般都有一定的困难性。)理解他人编写的程序一般都有一定的困难性。)理解他人编写的程序一般都有一定的困难性。(2 2 2 2)软件配置的文档严重不足甚至没有,或者没有合格的文档。)软件配置的文档严重不足甚至没有,或者没有合格的文档。)软件配置的文档严重不足甚至没有,或者没有合格的文档。)软件配置的文档严重不足甚至没有,或者没有合格的文档。(3 3 3 3)当当当当需需需需要要要要对对对对软软软软件件件件进进进进行行行行维维维维护护护护时时时时,由由由由于于于于软软软软件件件件人人人人员员员员经经经经常常常常流流流流动动动动
21、,维维维维护护护护阶阶阶阶段段段段持持持持续续续续的的的的时时时时间间间间又又又又很很很很长长长长,所所所所以以以以一一一一般般般般不不不不能能能能指指指指望望望望由由由由原原原原来来来来的的的的开开开开发发发发人人人人员员员员来来来来完完完完成成成成或或或或提提提提供软件的解释。供软件的解释。供软件的解释。供软件的解释。(4 4 4 4)绝大多数软件在设计时没有考虑到将来的修改问题。)绝大多数软件在设计时没有考虑到将来的修改问题。)绝大多数软件在设计时没有考虑到将来的修改问题。)绝大多数软件在设计时没有考虑到将来的修改问题。(5 5 5 5)软软软软件件件件维维维维护护护护可可可可以以以以说
22、说说说是是是是一一一一项项项项毫毫毫毫无无无无吸吸吸吸引引引引力力力力的的的的工工工工作作作作。之之之之所所所所以以以以形形形形成成成成这这这这样样样样一一一一种种种种观观观观念念念念,一一一一方方方方面面面面是是是是因因因因为为为为软软软软件件件件维维维维护护护护工工工工作作作作量量量量大大大大,看看看看不不不不到到到到什什什什么么么么“成成成成果果果果”,更更更更主要的原因是因为维护工作难度大,又经常遭受挫折。主要的原因是因为维护工作难度大,又经常遭受挫折。主要的原因是因为维护工作难度大,又经常遭受挫折。主要的原因是因为维护工作难度大,又经常遭受挫折。第20页,共48页,编辑于2022年,
23、星期三6.3 可维护性可维护性6.3.1 决定软件可维护性的因素决定软件可维护性的因素6.3.2 可维护性的若干量化的测度可维护性的若干量化的测度6.3.3 提高软件的可维护性方法提高软件的可维护性方法第21页,共48页,编辑于2022年,星期三6.3 6.3 可维护性可维护性软件可维护性可以定性地定义为:维护人员理解、软件可维护性可以定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。软件的改正、改动和改进这个软件的难易程度。软件的可维护性是软件开发的目标之一。可维护性是软件开发的目标之一。可维护性、可用性、可靠性是软件质量的主要质可维护性、可用性、可靠性是软件质量的主要质量特征
24、。量特征。第22页,共48页,编辑于2022年,星期三6.3.1 决定软件可维护性的因素决定软件可维护性的因素决定软件可维护性的因素主要有下述决定软件可维护性的因素主要有下述5个:个:(1)可理解性可理解性(2)可测试性可测试性(3)可修改性可修改性(4)可移植性可移植性(5)可重用性可重用性第23页,共48页,编辑于2022年,星期三6.3.2 可维护性的若干量化的测度 软件可维护性与软件质量和可靠性一样是难于量化的概念,软件可维护性与软件质量和可靠性一样是难于量化的概念,然而借助维护活动中可以定量估算的属性,能间接地度量可然而借助维护活动中可以定量估算的属性,能间接地度量可维护性维护性:(
25、1)(1)问题识别时间。问题识别时间。(2)(2)管理延迟时间。管理延迟时间。(3)(3)收集维护工具所用的时间。收集维护工具所用的时间。(4)(4)分析问题所需时间。分析问题所需时间。(5)(5)形成修改说明书所需时间。形成修改说明书所需时间。(6)(6)纠错(或修改)所用时间。纠错(或修改)所用时间。(7)(7)局部测试所用时间。局部测试所用时间。(8)(8)整体测试所用时间。整体测试所用时间。(9)(9)维护复审所用时间。维护复审所用时间。(10)(10)完全恢复所用时间。完全恢复所用时间。第24页,共48页,编辑于2022年,星期三6.3.3 提高软件的可维护性方法提高软件的可维护性方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 软件维护PPT讲稿 第六 软件 维护 PPT 讲稿
限制150内