软件工程第9章软件维护课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程第9章软件维护课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件 维护 课件
- 资源描述:
-
1、9软件维护的基本概念软件维护的基本概念 软件维护是指软件系统交付使用以后,为了改正错软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。误或满足新的需求而修改软件的过程。软件维护工作处于软件生命期的最后阶段,维护阶软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存期中最长的一个阶段,所花费的人力、物段是软件生存期中最长的一个阶段,所花费的人力、物力最多,其花费高达整个软件生命期花费的约力最多,其花费高达整个软件生命期花费的约60-7060-70。因为计算机程序总是会发生变化,对隐含错误的修改,因为计算机程序总是会发生变化,对隐含错误的修改,新功能的加入,环境变化
2、造成的程序变动等。新功能的加入,环境变化造成的程序变动等。因此,应该充分认识到维护工作的重要性和迫切性,因此,应该充分认识到维护工作的重要性和迫切性,提高软件的可维护性,减少维护的工作量和费用,延长提高软件的可维护性,减少维护的工作量和费用,延长已经开发软件的生命期,以发挥其应有的效益。已经开发软件的生命期,以发挥其应有的效益。9 9.1.1.1.1 软件维护的目的软件维护的目的1.1.在运行中发现在测试阶段未能发现的潜在软件错误和在运行中发现在测试阶段未能发现的潜在软件错误和设计缺陷;设计缺陷;2.2.根据实际情况,需要改进软件设计,以增强软件的功根据实际情况,需要改进软件设计,以增强软件的
3、功能,提高软件的性能;能,提高软件的性能;3.3.要求在某环境下已运行的软件能适应特定的硬件、软要求在某环境下已运行的软件能适应特定的硬件、软件、外部设备和通信设备等新的工作环境,或是要求适件、外部设备和通信设备等新的工作环境,或是要求适应已变动的数据或文件;应已变动的数据或文件;4.4.为使投入运行的软件与其它相关的程序有良好的接口,为使投入运行的软件与其它相关的程序有良好的接口,以利于协同工作;以利于协同工作;5.5.为使运行软件的应用范围得到必要的扩充。为使运行软件的应用范围得到必要的扩充。2022-12-1911软件维护的类型软件维护的类型按照不同的维护目的,维护工作可分成按照不同的维
4、护目的,维护工作可分成4 4类。类。完善性维护完善性维护(Perfective MaintenancePerfective Maintenance)扩充原有系统的功能,提高原有系统的性能,满扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。足用户的实际需要。纠错性维护纠错性维护(Corrective MaintenanceCorrective Maintenance)对在测试阶段未能发现的,在软件投入使用后才逐对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。验证、修改的回归测
5、试过程。适应性维护适应性维护(Adaptive Maintenance)要使运行的软件能适应运行环境的变动而要使运行的软件能适应运行环境的变动而修改软件的过程。修改软件的过程。预防性维护预防性维护(Preventive Maintenance)为了进一步改善软件的可靠性和易维护性,为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进或者为将来的维护奠定更好的基础而对软件进行修改。行修改。纠错性维护纠错性维护适应性维护适应性维护完善性维护完善性维护预防性维护预防性维护软件维护的特性软件维护的特性1.1.时间长、工作量大、成本高时间长、工作量大、成本高 软件的维护过程是软
6、件生存期中最长,并且相当困难软件的维护过程是软件生存期中最长,并且相当困难的阶段,软件维护的工作量占整个软件生存期的的阶段,软件维护的工作量占整个软件生存期的70%70%以上,以上,而且还在逐年增加。因此,如何减少软件维护的工作量,而且还在逐年增加。因此,如何减少软件维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质量的降低软件维护的成本,就成为提高软件维护效率和质量的关键。关键。2.2.维护的副作用维护的副作用(1 1)修改代码的副作用。在修改源代码时,由于软件的内)修改代码的副作用。在修改源代码时,由于软件的内在结构等原因,任何一个小的修改都可能引起的错误。因在结构等原因,任何一
7、个小的修改都可能引起的错误。因此在修改时必须特别小心。此在修改时必须特别小心。软件维护的特性软件维护的特性(2 2)修改数据的副作用。在修改数据结构时,有可能造成)修改数据的副作用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。修改数据副副作用就是修改软件信息结构导致的结果。修改数据副作用可以通过详细的设计文档加以控制,此文档中描述作用可以通过详细的设计文档加以控制,此文档中描述了一种交叉作用,把数据元素、记录、文件和其他结构了一种交叉作用,把数据元素、记录、文件和其他结构联系起
8、来。联系起来。(3 3)修改文档的副作用。对软件的数据流、软件结构、模)修改文档的副作用。对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应修块逻辑等进行修改时,必须对相关技术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配,缺省条件改变等错误,产生文档的副作用。功能不匹配,缺省条件改变等错误,产生文档的副作用。为了控制因修改而引起的副作用,应该:按模块把修为了控制因修改而引起的副作用,应该:按模块把修改分组;自顶向下的安排被修改模块的顺序;每次修改改分组;自顶向下的安排被修改模块的顺序;每次修改一
9、个模块。一个模块。3 3、软件维护的困难、软件维护的困难读懂别人的程序困难。读懂别人的程序困难。文档的不一致性。文档的不一致性。软件开发人员和软件维护人员在时间上的差异。软件开发人员和软件维护人员在时间上的差异。软件维护工作是一项难出成果的工作。软件维护工作是一项难出成果的工作。结构化维护结构化维护 指软件开发过程是按照软件工程方法进指软件开发过程是按照软件工程方法进行的,开发各阶段文档齐全,软件的维护过程,有一行的,开发各阶段文档齐全,软件的维护过程,有一整套完整的方案、技术、审定过程。整套完整的方案、技术、审定过程。非结构化维护非结构化维护 只有源程序,缺乏必要的文档说明,只有源程序,缺乏
10、必要的文档说明,难于难于确确定数据结构、系统接口等特性。维护工作令人定数据结构、系统接口等特性。维护工作令人生畏,事倍功半。生畏,事倍功半。软件维护的工作量及模型软件维护的工作量及模型1.1.软件维护的工作量软件维护的工作量 软件维护的费用在整个软件开发费用的软件维护的费用在整个软件开发费用的55%-70%55%-70%,并且所占,并且所占比例在逐年上升。而且维护中还可能产生新的潜在错误。例如比例在逐年上升。而且维护中还可能产生新的潜在错误。例如1970 1970 年维护费用约占软件开发费用的年维护费用约占软件开发费用的40%40%,到,到19901990年维护费用年维护费用所占比例就超过了所
11、占比例就超过了70%70%。另外维护还包含了无形的资源占用,包。另外维护还包含了无形的资源占用,包括大量的使用很多硬件、软件和软件工程师等资源。括大量的使用很多硬件、软件和软件工程师等资源。在软件维护时,直接影响维护成本和工作量的因素很多,在软件维护时,直接影响维护成本和工作量的因素很多,主要如下:主要如下:(1 1)系统规模大小)系统规模大小 系统规模大小直接影响维护工作量,系统规模越大,仅仅系统规模大小直接影响维护工作量,系统规模越大,仅仅看懂理解就很困难,维护的工作量就更多。系统规模主要由源看懂理解就很困难,维护的工作量就更多。系统规模主要由源代码行数、程序模块数、数据接口文件数、使用数
12、据库规模大代码行数、程序模块数、数据接口文件数、使用数据库规模大小等因素衡量。小等因素衡量。软件维护的工作量及模型软件维护的工作量及模型1.1.软件维护的工作量软件维护的工作量(2 2)程序设计语言)程序设计语言 解决相同的问题选择不同的程序设计语言,得到的程序解决相同的问题选择不同的程序设计语言,得到的程序的规模可能不同。的规模可能不同。(3 3)系统使用年限)系统使用年限 使用年限长的老系统维护比新系统所需要的工作量更多。使用年限长的老系统维护比新系统所需要的工作量更多。(4 4)软件开发新技术的应用)软件开发新技术的应用 软件开发过程中,使用先进的分析和设计技术,以及程序软件开发过程中,
13、使用先进的分析和设计技术,以及程序设计技术,如:面向对象的技术、构件技术、可视化程序设设计技术,如:面向对象的技术、构件技术、可视化程序设计技术等,可以减少维护工作量。计技术等,可以减少维护工作量。(5 5)设计过程中的技术)设计过程中的技术 在具体对软件进行维护时,影响维护工作量的其他因素还在具体对软件进行维护时,影响维护工作量的其他因素还有很多,例如设计过程中应用的类型、数学模型、任务的难有很多,例如设计过程中应用的类型、数学模型、任务的难度、开关与标记、度、开关与标记、IF IF 嵌套深度、索引或下标数等。嵌套深度、索引或下标数等。软件维护的工作量及模型软件维护的工作量及模型2.2.软件
14、维护工作量模型软件维护工作量模型 维护活动分为生产性活动和非生产性活动。生产性活动包括分析评维护活动分为生产性活动和非生产性活动。生产性活动包括分析评价、修改设计和编写程序代码等。非生产性活动包括理解程序代码,解价、修改设计和编写程序代码等。非生产性活动包括理解程序代码,解释数据结构,接口特点和设计约束等。释数据结构,接口特点和设计约束等。BeladyBelady 和和Lehman Lehman 提出软件维护工作模型:提出软件维护工作模型:M=P+K M=P+K*EXPEXP(C-DC-D)其中:其中:M维护总工作量维护总工作量P生产性活动生产性活动K经验常数经验常数C程序复杂度(由非结构化维
15、护引起的)程序复杂度(由非结构化维护引起的)D对维护软件熟悉程度的度量。对维护软件熟悉程度的度量。上式可以发现,上式可以发现,C C 越大,越大,D D 越小,那么维护工作量就成指数的增加。越小,那么维护工作量就成指数的增加。C C 增加主要因为软件采用非结构化设计,程序复杂性高;增加主要因为软件采用非结构化设计,程序复杂性高;D D 减小表示维减小表示维护人员不是原来的开发人员,不熟悉程序,理解程序花费太多时间。护人员不是原来的开发人员,不熟悉程序,理解程序花费太多时间。维护费用高达开发费用的维护费用高达开发费用的55%70%,而,而且逐年上涨。且逐年上涨。维护中还可能引入新的潜在错误。维护
16、中还可能引入新的潜在错误。Belady 和和 Lehman 提出软件维护工作模型:提出软件维护工作模型:M=P+K*EXP(C-D)其中:其中:M维护总工作量维护总工作量P生产性活动生产性活动K经验常数经验常数C程序复杂度(由非结构化维护引起的)程序复杂度(由非结构化维护引起的)D对维护软件熟悉程度的度量。对维护软件熟悉程度的度量。结论结论软件维护的过程软件维护的过程1.1.维护组织维护组织 除大的软件公司外,通常的在软件维护工作方面,并不除大的软件公司外,通常的在软件维护工作方面,并不保持一个正式的组织。在软件开发部门,确立一个非正式的保持一个正式的组织。在软件开发部门,确立一个非正式的维护
17、组织即非正式的维护管理员来负责维护工作却是绝对必维护组织即非正式的维护管理员来负责维护工作却是绝对必要的。要的。用户用户维护人员维护人员安排改正安排改正性维护性维护确认维确认维护类型护类型维护实施维护实施评价优评价优先级先级进行问进行问题分析题分析复审复审评价错误评价错误严重程度严重程度进行问进行问题分析题分析确定更确定更改要求改要求维护维护要求要求完完 美美 性性 适适 应应 性性将安排好的工将安排好的工作量列入计划作量列入计划低低高高纠错性纠错性严重严重不严重不严重将改正错误列入计划将改正错误列入计划 人人 员员 安安排排人人 员员 安安 排排交付使用交付使用的软件的软件理解分析程序理解分
18、析程序安排计划安排计划修改程序修改程序测试程序测试程序或或或或或或或或软件维护的工作流程图软件维护的工作流程图修改过修改过的软件的软件 软件维护工作不仅是技术性的,它还需要大量的管软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护工作的质量。管理部理工作与之相配合,才能保证维护工作的质量。管理部门应对提交的修改方案进行分析和审查,并对修改带来门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分的估计,对于不妥的修改予以撤销。需修的影响作充分的估计,对于不妥的修改予以撤销。需修改主文档时,管理部门更应仔细审查。改主文档时,管理部门更应仔细审查。软件维护的管理流程如
19、图所示:软件维护的管理流程如图所示:软件维护的管理流程软件维护的管理流程 维护修改建议维护修改建议 分析修改建议分析修改建议是否合理是否合理提交管理部门审查提交管理部门审查是否同意是否同意修改修改撤销撤销NYNY进行测试进行测试 提交管理部门审批提交管理部门审批是否批准是否批准更新主文档更新主文档Y 更新其他文档更新其他文档 提交使用提交使用修改修改N一、结构化维护与非结构化维护一、结构化维护与非结构化维护结构化维护结构化维护 指软件开发过程是按照软件工指软件开发过程是按照软件工程方法,软件的维护过程,有一整套完整的方案、程方法,软件的维护过程,有一整套完整的方案、技术、审定过程。技术、审定过
20、程。非结构化维护非结构化维护 缺乏必要的文档说明,难于缺乏必要的文档说明,难于确确定数据结构、系统接口等特性。维护工作令人定数据结构、系统接口等特性。维护工作令人生畏,事倍功半。生畏,事倍功半。维护费用高达开发费用的维护费用高达开发费用的55%70%,而,而且逐年上涨。且逐年上涨。维护中还可能引入新的潜在错误。维护中还可能引入新的潜在错误。Belady 和和 Lehman 提出软件维护工作模型:提出软件维护工作模型:M=P+K*EXP(C-D)其中:其中:M维护总工作量维护总工作量P生产性活动生产性活动K经验常数经验常数C程序复杂度(由非结构化维护引起的)程序复杂度(由非结构化维护引起的)D对
21、维护软件熟悉程度的度量。对维护软件熟悉程度的度量。结论结论软件维护的技术软件维护的技术在软件开发阶段用来减少错误,提高软件可在软件开发阶段用来减少错误,提高软件可维护性的技术。涉及到软件开发的所有阶段。维护性的技术。涉及到软件开发的所有阶段。可维护性可维护性(可测试性、可理解性、可修改性)(可测试性、可理解性、可修改性)在软件维护阶段用于提高维护工作的效率和在软件维护阶段用于提高维护工作的效率和质量的技术。主要用到质量的技术。主要用到测试测试阶段的技术。阶段的技术。(信息收集、错误原因分析、软件分析与理解、(信息收集、错误原因分析、软件分析与理解、维护方案评价、代码与文档的修改、修改后的确维护
展开阅读全文