软件工程软件维护精.ppt
《软件工程软件维护精.ppt》由会员分享,可在线阅读,更多相关《软件工程软件维护精.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件维护软件工程软件维护第1页,本讲稿共78页q软件维护的概念软件维护的概念q软件维护分类软件维护分类q软件维护活动软件维护活动v结构化维护和非结构化维护结构化维护和非结构化维护v维护成本维护成本v维护可能存在的问题维护可能存在的问题q软件维护过程软件维护过程v维护机构维护机构/组织组织v维护流程维护流程v软件维护文档软件维护文档q维护的副作用维护的副作用q软件的可维护性软件的可维护性q软件维护的新方法软件维护的新方法软件工程软件工程软件维护软件维护 第2页,本讲稿共78页第第15章章软件维护软件维护l软件维护是软件生命周期的最后一个阶段,软件软件维护是软件生命周期的最后一个阶段,软件
2、从部署完毕到退役的整个时间内对软件的改动所从部署完毕到退役的整个时间内对软件的改动所做的工作都是维护的内容。做的工作都是维护的内容。l在项目的各个阶段对项目的可维护性进行充分考虑、在项目的各个阶段对项目的可维护性进行充分考虑、对可维护性的严格评审以及在维护阶段有效地组织和对可维护性的严格评审以及在维护阶段有效地组织和管理维护活动,则是保证软件可维护性和降低维护费管理维护活动,则是保证软件可维护性和降低维护费用的关键。用的关键。l本章重点内容:维护的主要内容、维护的流程、如何本章重点内容:维护的主要内容、维护的流程、如何在软件的生产过程各个阶段保证软件的可维护性目标。在软件的生产过程各个阶段保证
3、软件的可维护性目标。第3页,本讲稿共78页第十五章第十五章 软件维护软件维护l软件后期维护费用有时竟高达软件总费软件后期维护费用有时竟高达软件总费用的用的80%80%,所有前期开发费用仅占,所有前期开发费用仅占20%20%。l许多大型软件公司为维护已有软件耗费大许多大型软件公司为维护已有软件耗费大量人力、财力。因此,必须建立一套评估、量人力、财力。因此,必须建立一套评估、控制和实施软件维护的机制。控制和实施软件维护的机制。第4页,本讲稿共78页软件维护软件维护概念概念是指在软件的运行是指在软件的运行/维护阶段由软件厂维护阶段由软件厂商向客户所提供的服务工作商向客户所提供的服务工作。三层含义三层
4、含义(1 1)软件的维护总是针对某一种软件产品在软)软件的维护总是针对某一种软件产品在软件生存周期内所进行的活动件生存周期内所进行的活动(2 2)当今的软件维护更强调的是服务)当今的软件维护更强调的是服务 。在激烈。在激烈的市场竞争中,同类软件产品的价格、功能、性的市场竞争中,同类软件产品的价格、功能、性能和接口等都差不多,而服务就会成为用户选购能和接口等都差不多,而服务就会成为用户选购软件的重要依据,即软件的重要依据,即“卖软件就是卖服务卖软件就是卖服务”(3 3)软件维护的时间是有限度的,一般而言目前软)软件维护的时间是有限度的,一般而言目前软件产品的免费服务时间为两年左右,两年以后软件厂
5、件产品的免费服务时间为两年左右,两年以后软件厂商总会推出更新的版本以适应用户在功能、性能、接商总会推出更新的版本以适应用户在功能、性能、接口等方面所提出的新需求,从而软件厂商也会找到新口等方面所提出的新需求,从而软件厂商也会找到新的利润增长点。的利润增长点。第5页,本讲稿共78页主讲内容主讲内容l软件维护的分类软件维护的分类l维护活动维护活动l软件维护过程软件维护过程l维护的副作用维护的副作用l软件的可维护性软件的可维护性l软件再工程:逆向工程和重构工程软件再工程:逆向工程和重构工程 第6页,本讲稿共78页15.1 软件维护的分类软件维护的分类q按照维护的起因分类:按照维护的起因分类:纠错性维
6、护纠错性维护 适应性维护适应性维护 改善性维护改善性维护/扩充与完善性维护扩充与完善性维护 预防性维护四类。预防性维护四类。1.纠错性维护纠错性维护(Corrective Maintenance)为改正为改正软件系统中潜藏的错误而进行的活动。软件系统中潜藏的错误而进行的活动。l用户在使用软件过程中发现软件的错误是激发该种用户在使用软件过程中发现软件的错误是激发该种维护的起因。维护的起因。四类四类 第7页,本讲稿共78页15.1 软件维护的分类软件维护的分类2.适应性维护适应性维护(Adaptive Maintenance)为适应软件运行环境的变化而修改软件的为适应软件运行环境的变化而修改软件的
7、活动。活动。软件的运行环境包括两个方面,硬件和软软件的运行环境包括两个方面,硬件和软件,软件则大体上包括操作系统、中间件、件,软件则大体上包括操作系统、中间件、虚拟机等等。虚拟机等等。第8页,本讲稿共78页15.1 软件维护的分类软件维护的分类3.改善性维护改善性维护(Perfective Maintenance)根据用户在软件使用根据用户在软件使用过程中提出的建设性意见而进行的维护过程中提出的建设性意见而进行的维护活动。活动。主要是针对用户提出的新的软件需求或主要是针对用户提出的新的软件需求或修改原有的软件需求而进行的维护,该修改原有的软件需求而进行的维护,该种维护通常占所有维护工作量的一半
8、以种维护通常占所有维护工作量的一半以上。软件在部署之后一段时间内,用户上。软件在部署之后一段时间内,用户的改善性维护应该是递减的。的改善性维护应该是递减的。第9页,本讲稿共78页15.1 软件维护的分类软件维护的分类4.预防性维护预防性维护(Preventive Maintenance)为了进一步改善软件为了进一步改善软件系统的可维护性和可靠性,并为以后的系统的可维护性和可靠性,并为以后的改进奠定基础。改进奠定基础。预防性维护可以采取预防性维护可以采取逆向工程逆向工程(reverse engineering)和)和重构工程重构工程(re-engineering)方式。)方式。第10页,本讲稿共
9、78页15.1 软件维护的分类软件维护的分类l预防性维护即预防性维护即软件再工程软件再工程,是为了提高,是为了提高软件的可维护性、可靠性等,为以后进软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。一步改进软件打下良好基础。预防性维护定义为:采用先进的软件工程方法预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。进行设计、编制和测试。第11页,本讲稿共78页软件维护的种类软件维护的种类l完善性维护(完善性维护(perfective maintenance)完善和加强产品的功能与性能,以满足
10、用户日益增长的需要。完善和加强产品的功能与性能,以满足用户日益增长的需要。50%l适应性维护(适应性维护(adaptive maintenance)使软件适应运行环境的变化。使软件适应运行环境的变化。25%l纠错性维护(纠错性维护(corrective maintenance)纠正在开发期间未能发现的遗留错误。纠正在开发期间未能发现的遗留错误。21%l预防性维护(预防性维护(preventive maintenance)4%为了进一步改善软件的可靠性和易维护性,或者为将来为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。的维护奠定更好的基础而对软件进行修改。
11、第12页,本讲稿共78页各类维护活动的根本目的是各类维护活动的根本目的是延长软件生存期延长软件生存期其它维护其它维护 4%4%软件软件生存生存周期周期软件诞生软件诞生计计划划分分析析设设计计编编码码测测试试运行和维护运行和维护(简称维护简称维护)改善期改善期 稳定期稳定期 陈旧期陈旧期1 1年年-10-10年年2 2个月个月-2-2年年重构重构软件工程周期软件工程周期15.1 软件维护的分类软件维护的分类 第13页,本讲稿共78页q软件维护的概念软件维护的概念q软件维护分类软件维护分类q软件维护活动软件维护活动v结构化维护和非结构化维护结构化维护和非结构化维护v维护成本维护成本v维护可能存在的
12、问题维护可能存在的问题q软件维护过程软件维护过程v维护机构维护机构/组织组织v维护流程维护流程v软件维护文档软件维护文档q维护的副作用维护的副作用q软件的可维护性软件的可维护性q软件维护的新方法软件维护的新方法软件工程软件工程软件维护软件维护 第14页,本讲稿共78页15.2 软件维护活动软件维护活动软件维护是一种繁琐而又不可或缺的工作,软件维护是一种繁琐而又不可或缺的工作,由于维护通常要求维护人员在用户现场进由于维护通常要求维护人员在用户现场进行,而且维护任务可能非常紧急,因此对行,而且维护任务可能非常紧急,因此对现场维护人员的压力很大。而且没有丝毫现场维护人员的压力很大。而且没有丝毫的成就
13、感。的成就感。第15页,本讲稿共78页15.2.1 结构化维护与非结构化维护结构化维护与非结构化维护l非结构化维护非结构化维护软件的配置中只有源软件的配置中只有源代码。代码。l由于没有分析和设计文档,无法对程序由于没有分析和设计文档,无法对程序的功能进行反向追踪,理解别人的代码的功能进行反向追踪,理解别人的代码是很痛苦的事情。是很痛苦的事情。l由于配置中没有测试文档,所以维护后由于配置中没有测试文档,所以维护后的代码无法进行回归测试。因而导致程的代码无法进行回归测试。因而导致程序的结构化被不断的破坏,维护的质量序的结构化被不断的破坏,维护的质量无法得到保证。无法得到保证。第16页,本讲稿共78
14、页15.2.1 结构化维护与非结构化维护结构化维护与非结构化维护结构化维护结构化维护待维护的软件的配置是待维护的软件的配置是完整的。完整的。用户提出的维护申请用正向追踪很容易用户提出的维护申请用正向追踪很容易从分析设计文档追踪直至代码中,从而从分析设计文档追踪直至代码中,从而使维护人员很容易定位代码的维护点。使维护人员很容易定位代码的维护点。所以这种维护不会破坏软件的结构。所以这种维护不会破坏软件的结构。结构化维护不仅能减少维护的工作量,结构化维护不仅能减少维护的工作量,还能提高维护的质量。还能提高维护的质量。第17页,本讲稿共78页15.2.1 结构化与非结构化的维护结构化与非结构化的维护
15、第18页,本讲稿共78页15.2.2 维护成本维护成本l20世纪世纪70年代,软件的维护费用约占软年代,软件的维护费用约占软件总预算的件总预算的3540%。l80年代时,软件维护费用进一步增加,年代时,软件维护费用进一步增加,约占软件总预算的约占软件总预算的60%。l近年来,该值已上升到近年来,该值已上升到80%左右。左右。l随着软件复杂性的不断提高,软件的维随着软件复杂性的不断提高,软件的维护难度越来越大。这不仅导致维护成本护难度越来越大。这不仅导致维护成本不断增高,软件生产率急剧下降,还会不断增高,软件生产率急剧下降,还会带来其他方面的负面影响。带来其他方面的负面影响。第19页,本讲稿共7
16、8页15.2.2 维护成本维护成本l其他因素也已经引起人们的注意。如:其他因素也已经引起人们的注意。如:由于资源由于资源由于资源由于资源(人力、设备人力、设备人力、设备人力、设备)优先用于维护任务,影响新软件系统的优先用于维护任务,影响新软件系统的优先用于维护任务,影响新软件系统的优先用于维护任务,影响新软件系统的开发,可能会丧失机会;开发,可能会丧失机会;开发,可能会丧失机会;开发,可能会丧失机会;有时还要付出一些无形的代价,如某些貌似合理但实际不能满有时还要付出一些无形的代价,如某些貌似合理但实际不能满有时还要付出一些无形的代价,如某些貌似合理但实际不能满有时还要付出一些无形的代价,如某些
17、貌似合理但实际不能满足的维护请求将引起用户不满足的维护请求将引起用户不满足的维护请求将引起用户不满足的维护请求将引起用户不满;在软件维护过程中引入的潜在错误降低了软件的质量在软件维护过程中引入的潜在错误降低了软件的质量在软件维护过程中引入的潜在错误降低了软件的质量在软件维护过程中引入的潜在错误降低了软件的质量;从开发小组中临时抽调工程师从事维护工作冲击正在进行的从开发小组中临时抽调工程师从事维护工作冲击正在进行的从开发小组中临时抽调工程师从事维护工作冲击正在进行的从开发小组中临时抽调工程师从事维护工作冲击正在进行的开发等等。开发等等。开发等等。开发等等。l最后,维护旧程序使生产率最后,维护旧程
18、序使生产率(按每人月代码按每人月代码行或每人月功能点计算行或每人月功能点计算)大幅度下降。大幅度下降。第20页,本讲稿共78页15.2.2 维护成本维护成本l估算模型估算模型MP+Ke e=(c c-d d)M M :维护工作总工作量维护工作总工作量P P:生产性工作量生产性工作量K K :经验常数经验常数c c:复杂度复杂度d d:对该软件熟悉程度的度量对该软件熟悉程度的度量 第21页,本讲稿共78页15.2.3 维护可能存在的问题维护可能存在的问题1)无法追踪软件的整个创建过程。)无法追踪软件的整个创建过程。2)无法追踪软件版本的进化过程。)无法追踪软件版本的进化过程。软件交付使用后对软件
19、不断修复和完善的软件交付使用后对软件不断修复和完善的 过程,就是软件版本的进化过程,每一次过程,就是软件版本的进化过程,每一次 进化都会使软件的主、次版本号增大。进化都会使软件的主、次版本号增大。3)理解别人的程序非常困难。)理解别人的程序非常困难。4)得不到开发人员的帮助。)得不到开发人员的帮助。5)软件配置不完整或不正确。)软件配置不完整或不正确。6)分析和设计的缺陷。)分析和设计的缺陷。7)维护工作让人没有成就感。)维护工作让人没有成就感。第22页,本讲稿共78页15.2.3 维护可能存在的问题维护可能存在的问题l软件维护中出现的大部分问题都可归咎于软件维护中出现的大部分问题都可归咎于软
20、件规划和开发方法的缺陷。软件规划和开发方法的缺陷。l软件开发时采用急功近利还是放眼未来软件开发时采用急功近利还是放眼未来的态度,对软件维护影响极大。的态度,对软件维护影响极大。l一般说来,软件开发若不严格遵循软件一般说来,软件开发若不严格遵循软件开发标准,软件维护就会遇到许多困难。开发标准,软件维护就会遇到许多困难。第23页,本讲稿共78页15.2.4 影响软件维护工作量的因素影响软件维护工作量的因素l在软件维护中,影响维护工作量的因素主在软件维护中,影响维护工作量的因素主要有以下六种:要有以下六种:系统的大小系统的大小系统规模越大,其功能就越复杂,软件维护的系统规模越大,其功能就越复杂,软件
21、维护的工作量也随之增大。工作量也随之增大。程序设计语言程序设计语言使用功能强大的程序设计语言可以控制程序的使用功能强大的程序设计语言可以控制程序的规模。语言的功能越强,生成程序的模块化和规模。语言的功能越强,生成程序的模块化和结构化程度越高,所需的指令数就越少,程序结构化程度越高,所需的指令数就越少,程序的可读性越好。的可读性越好。To be continue 第24页,本讲稿共78页l系统年龄系统年龄系统使用时间越长,所进行的修改就越多,而多次的修系统使用时间越长,所进行的修改就越多,而多次的修改可能造成系统结构混乱。由于维护人员经常更换,程改可能造成系统结构混乱。由于维护人员经常更换,程序
22、变得越来越难于理解,加之系统开发时文档不齐全,序变得越来越难于理解,加之系统开发时文档不齐全,或在长期的维护过程中文档在许多地方与程序实现不一或在长期的维护过程中文档在许多地方与程序实现不一致,从而使维护变得十分困难。致,从而使维护变得十分困难。l数据库技术的应用数据库技术的应用使用数据库,可以简单而有效地存储、管理系统数据,使用数据库,可以简单而有效地存储、管理系统数据,还可以减少生成用户报表应用软件的维护工作量。还可以减少生成用户报表应用软件的维护工作量。To be continue 15.2.4 影响软件维护工作量的因素影响软件维护工作量的因素第25页,本讲稿共78页l先进的软件开发技术
23、先进的软件开发技术 在软件开发过程中,如果采用先进的分析在软件开发过程中,如果采用先进的分析设计技术和程序设计技术,如面向对象技设计技术和程序设计技术,如面向对象技术、复用技术等,可减少大量的维护工作术、复用技术等,可减少大量的维护工作量。量。l其它一些因素其它一些因素如应用的类型、数学模型、任务的难度、如应用的类型、数学模型、任务的难度、开关与标记、开关与标记、IF嵌套深度、索引或下标数嵌套深度、索引或下标数等,对维护工作量也有影响。等,对维护工作量也有影响。15.2.4 影响软件维护工作量的因素影响软件维护工作量的因素第26页,本讲稿共78页q软件维护的概念软件维护的概念q软件维护分类软件
24、维护分类q软件维护活动软件维护活动v结构化维护和非结构化维护结构化维护和非结构化维护v维护成本维护成本v维护可能存在的问题维护可能存在的问题q软件维护过程软件维护过程v维护机构维护机构/组织组织v维护流程维护流程v软件维护文档软件维护文档q维护的副作用维护的副作用q软件的可维护性软件的可维护性q软件维护的新方法软件维护的新方法软件工程软件工程软件维护软件维护 第27页,本讲稿共78页15.3 软件维护过程软件维护过程l软件维护工作在维护申请提出之前就开始软件维护工作在维护申请提出之前就开始了,它必须是一项有组织有制度的工作,了,它必须是一项有组织有制度的工作,包括:包括:建立维护组织,强制报告
25、和评估的过程;建立维护组织,强制报告和评估的过程;为每个维护申请确定标准化的事件序列;为每个维护申请确定标准化的事件序列;制定保存维护活动记录的制度和有关复审及评制定保存维护活动记录的制度和有关复审及评估的标准。估的标准。l每项软件维护活动的过程是:每项软件维护活动的过程是:维护申请维护申请制定维护计划制定维护计划进行维护活动进行维护活动建建立维护文档立维护文档复审复审/评价维护评价维护 第28页,本讲稿共78页维护维护策略策略为维护工作制订流程为维护工作制订流程 所有维护必须先提交维护申请,所有维护必须先提交维护申请,维护申请必须规范维护申请必须规范 软件维护要有计划软件维护要有计划 在维护
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件 维护
限制150内