资源预览内容
第1页 / 共113页
第2页 / 共113页
第3页 / 共113页
第4页 / 共113页
第5页 / 共113页
第6页 / 共113页
第7页 / 共113页
第8页 / 共113页
第9页 / 共113页
第10页 / 共113页
亲,该文档总共113页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件维护的概念软件维护的概念 软件维护活动软件维护活动 程序修改的步骤及修改的副作用程序修改的步骤及修改的副作用 可维护性可维护性 提高可维护性的方法提高可维护性的方法 逆向工程和再工程(了解)逆向工程和再工程(了解)1预习:1.什么是软件维护?有哪几种类型?维护活动中,哪种维护 所占的比重最大? 2.为什么说软件的维护是不可避免的?3.软件维护申请报告是由谁填写的? 4.软件维护时,对源程序进行修改的步骤? 5.什么是修改程序的副作用,主要有哪些?6.什么是软件可维护性,决定软件可维护性的因素? 7.针对某一应用系统,如: (1)教材销售采购系统; (2)图书 管理系统; (3)房产管理系统,提出改进和扩充功能的要求 ? 8.要求在课程报告中阐明你是如何提高项目的可维护性,即采 取什么方法提高项目的可维护性? 26.1 6.1 软件维护的概念软件维护的概念n n软件维护的定义软件维护的定义n n影响维护工作量的因素影响维护工作量的因素n n软件维护的策略软件维护的策略n n维护成本维护成本3一、软件维护的定义一、软件维护的定义n n在软件运行维护阶段在软件运行维护阶段对软件产品进行的修改对软件产品进行的修改就是就是 所谓的维护。所谓的维护。软件维护是软件生存周期的最后一个阶段,不属于系统开发的过程。问题内 容维护 目的维护 种类满足用户对已开发产品的性能与运行环境不断提高的要求,进而 达到延长软件寿命的目的。改正性适应性完善性预防性对程序使用期间发现的程序错误进行诊断和改正的过程;配合变化了的环境进行修改软件的活动;满足用户在使用过程中提出增加新的功能或修改已有 功能的建议而进行的工作;为了改善未来的可维护性或可靠性而修改软件的工作。软件维护的工作量非常大,不同应用领 域的维护成本差别也很大。一般大型软件 的维护成本平均高达开发成本的四倍左右。改正性完善性适应性预防性1721%5066%1825%4%左右软件的易维护性是软件开发过程中每个步骤的一个关键目标。维护费用占软件总支 出的20-30%到70-80%。而无形的代价更是无法估计的。4改正性维护改正性维护n n在软件交付使用后,因开发时测在软件交付使用后,因开发时测 试的试的不彻底不彻底、不完全不完全,必然会有必然会有 部分隐藏的错误遗留到运行阶段部分隐藏的错误遗留到运行阶段 。n n这些隐藏下来的错误这些隐藏下来的错误在某些特定在某些特定 的使用环境下就会暴露出来的使用环境下就会暴露出来。n n为了为了识别和纠正软件错误识别和纠正软件错误、改正改正 软件性能上的缺陷软件性能上的缺陷、排除实施中排除实施中 的误使用的误使用,应当,应当进行的诊断和改进行的诊断和改 正错误的过程就叫做改正性维护正错误的过程就叫做改正性维护 。5适应性维护适应性维护n n在使用过程中,在使用过程中,uu 外部环境外部环境(新的硬、软件配置新的硬、软件配置 )uu 数据环境数据环境(数据库、数据格式数据库、数据格式 、数据输入、数据输入/ /输出方式、数据存输出方式、数据存 储介质储介质) 可能发生变化。可能发生变化。n n为使软件适应这种变化,而去修为使软件适应这种变化,而去修 改软件的过程就叫做适应性维护改软件的过程就叫做适应性维护 。6完善性维护完善性维护n n在软件的使用过程中,用户往往在软件的使用过程中,用户往往 会对软件提出新的会对软件提出新的功能功能与与性能性能要要 求。求。n n为了满足这些要求,需要修改或为了满足这些要求,需要修改或 再开发软件,以再开发软件,以扩充软件功能扩充软件功能、 增强软件性能增强软件性能、改进加工效率改进加工效率、 提高软件的可维护性提高软件的可维护性。n n这种情况下进行的维护活动叫做这种情况下进行的维护活动叫做 完善性维护。完善性维护。7n n实践表明,在几种维护活动中,完实践表明,在几种维护活动中,完 善性维护所占的比重最大。善性维护所占的比重最大。即大部即大部 分维护工作是改变和加强软件,而分维护工作是改变和加强软件,而 不是纠错不是纠错。n n完善性维护不一定是救火式的紧急完善性维护不一定是救火式的紧急 维修,而可以维修,而可以是有计划、有预谋的是有计划、有预谋的 一种再开发活动一种再开发活动。n n事实证明,来自用户要求扩充、加事实证明,来自用户要求扩充、加 强软件功能、性能的维护活动约占强软件功能、性能的维护活动约占 整个维护工作的整个维护工作的5050。8预防性维护预防性维护n n预防性维护是为了预防性维护是为了提高软件的可提高软件的可 维护性维护性、可靠性等可靠性等,为以后进一,为以后进一 步改进软件打下良好基础。步改进软件打下良好基础。n n预防性维护定义为:预防性维护定义为:采用先进的采用先进的 软件工程方法对需要维护的软件软件工程方法对需要维护的软件 或软件中的某一部分(重新)进或软件中的某一部分(重新)进 行设计、编制和测试。行设计、编制和测试。9n n在整个软件维护阶段所花费的全在整个软件维护阶段所花费的全 部工作量中,部工作量中,完善性维护占了几完善性维护占了几 乎一半的工作量。乎一半的工作量。n n软件维护活动所花费的工作占整软件维护活动所花费的工作占整 个生存期工作量的个生存期工作量的70%70%以上以上,这,这 是由于在漫长的软件运行过程中是由于在漫长的软件运行过程中 需要不断对软件进行修改,以需要不断对软件进行修改,以改改 正新发现的错误正新发现的错误、适应新的环境、适应新的环境 和用户新的要求,这些修改需要和用户新的要求,这些修改需要 花费很多精力和时间,而且有时花费很多精力和时间,而且有时 会引入新的错误。会引入新的错误。10三类维护占三类维护占 总维护比例总维护比例维护在软件生维护在软件生 存期所占比例存期所占比例11二、影响维护工作量的因素二、影响维护工作量的因素n在软件的维护过程中,需要花费 大量的工作量,从而直接影响了接影响了 软件维护的成本软件维护的成本。n应当考虑有哪些因素影响软件维有哪些因素影响软件维 护的工作量护的工作量,相应应该采取什么应该采取什么 维护策略维护策略,才能有效地维护软件有效地维护软件 并控制维护的成本控制维护的成本。12n n系统大小系统大小:系统越大,理解掌握:系统越大,理解掌握 起来越困难。系统越大,所执行起来越困难。系统越大,所执行 功能越复杂。因而需要更多的维功能越复杂。因而需要更多的维 护工作量。护工作量。n n程序设计语言程序设计语言:使用强功能的程:使用强功能的程 序设计语言可以控制程序的规模序设计语言可以控制程序的规模 。语言的功能越强,生成程序的。语言的功能越强,生成程序的 模块化和结构化程度越高,所需模块化和结构化程度越高,所需 的指令数就越少,程序的可读性的指令数就越少,程序的可读性 越好。越好。13n n系统年龄系统年龄:uu 老系统随着不断的修改,结构老系统随着不断的修改,结构 越来越乱;越来越乱;uu 维护人员经常更换,程序又变维护人员经常更换,程序又变 得越来越难于理解。得越来越难于理解。uu 许多老系统在当初并未按照软许多老系统在当初并未按照软 件工程的要求进行开发,因而没件工程的要求进行开发,因而没 有文档,或文档太少。有文档,或文档太少。uu 在长期的维护过程中文档在许在长期的维护过程中文档在许 多地方与程序实现变得不一致,多地方与程序实现变得不一致, 在维护时就会遇到很大困难。在维护时就会遇到很大困难。14n n数据库技术的应用数据库技术的应用:使用数据库,:使用数据库, 可以简单而有效地管理和存储用户可以简单而有效地管理和存储用户 程序中的数据,还可以减少生成用程序中的数据,还可以减少生成用 户报表应用软件的维护工作量。户报表应用软件的维护工作量。n n先进的软件开发技术先进的软件开发技术:在软件开发:在软件开发 时,若使用能使软件结构比较稳定时,若使用能使软件结构比较稳定 的分析与设计技术,及程序设计技的分析与设计技术,及程序设计技 术,如面向对象技术、复用技术等术,如面向对象技术、复用技术等 ,可减少大量的工作量。,可减少大量的工作量。15n n其它其它:uu 应用的类型应用的类型uu 数学模型数学模型uu 任务的难度任务的难度uu 开关与标记、开关与标记、IFIF嵌套深度、索嵌套深度、索 引或下标数等引或下标数等 对维护工作量都有影响。对维护工作量都有影响。n n许多软件在开发时并未考虑将来许多软件在开发时并未考虑将来 的修改,为软件的维护带来许多的修改,为软件的维护带来许多 问题。问题。16三、软件维护的策略(略)三、软件维护的策略(略)n n改正性维护改正性维护 通常要生成通常要生成100100可靠的软件并不可靠的软件并不 一定合算,成本太高一定合算,成本太高。但通过使但通过使 用新技术,可大大减少进行改正用新技术,可大大减少进行改正 性维护的需要性维护的需要。 这些技术包括:这些技术包括:数据库管理系统数据库管理系统 、软件开发环境软件开发环境、程序自动生成程序自动生成 系统系统、较高级较高级( (第四代第四代) )的语言的语言。以以 及及新的开发方法新的开发方法、软件复用软件复用、防防 错程序设计错程序设计及及周期性维护审查周期性维护审查等等 。17n n适应性维护适应性维护 这一类维护不可避免,可以控制这一类维护不可避免,可以控制 。 (1)(1) 在配置管理时,把硬件、操作在配置管理时,把硬件、操作 系统和其它相关环境因素的可能系统和其它相关环境因素的可能 变化考虑在内变化考虑在内。 (2)(2) 把与硬件、操作系统,以及其把与硬件、操作系统,以及其 它外围设备有关的程序归到特定它外围设备有关的程序归到特定 的程序模块中。的程序模块中。 (3)(3) 使用内部程序列表、外部文件使用内部程序列表、外部文件 ,以及处理的例行程序包,可为,以及处理的例行程序包,可为 维护时修改程序提供方便。维护时修改程序提供方便。18n n完善性维护完善性维护 利用前两类维护中列举的方法,也利用前两类维护中列举的方法,也 可以减少这一类维护。特别是可以减少这一类维护。特别是数据数据 库管理系统库管理系统、程序生成器程序生成器、应用软应用软 件包件包,可减少维护工作量。,可减少维护工作量。 此外,建立软件系统的原型,把它此外,建立软件系统的原型,把它 在实际系统开发之前提供给用户。在实际系统开发之前提供给用户。 用户通过研究原型,进一步完善他用户通过研究原型,进一步完善他 们的功能要求,就可以减少以后完们的功能要求,就可以减少以后完 善性维护的需要。善性维护的需要。19维护成本(了解)维护成本(了解)n n有形的软件维护成本有形的软件维护成本是花费了多是花费了多 少钱,少钱,无形的维护成本无形的维护成本有更大的有更大的 影响。影响。uu 一些一些合理的修复或修改请求不合理的修复或修改请求不 能及时安排能及时安排,使得客户不满意;,使得客户不满意;uu 变更的结果变更的结果引入新的故障引入新的故障,使,使 得软件整体质量下降;得软件整体质量下降;uu 把软件人员抽调到维护工作中把软件人员抽调到维护工作中 ,干扰了软件开发工作。,干扰了软件开发工作。 20n n软件维护的软件维护的代价代价是是降低了生产率降低了生产率 ,在做老程序的维护时非常明显,在做老程序的维护时非常明显 。n n例如,例如,开发每一行源代码耗资开发每一行源代码耗资2525 美元美元,维护每一行源代码需要耗维护每一行源代码需要耗 资资10001000美元美元。n n维护工作量包括维护工作量包括生产性活动生产性活动(如(如 分析和评价、设计修改和实现)分析和评价、设计修改和实现) 和和“ “轮转轮转” ”活动活动(如力图理解代码(如力
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号