《软件工程维护》PPT课件.ppt
《《软件工程维护》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程维护》PPT课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1软件工程第八章 维护2第八章 维护8.1 软件维护的定义软件维护的定义8.2 软件维护的特点软件维护的特点8.3 软件维护过程软件维护过程8.4 软件的可维护性(自学)软件的可维护性(自学)8.5 提高可维护性的方法(补充自学)提高可维护性的方法(补充自学)8.6 预防性维护(自学)预防性维护(自学)8.7 软件再工程过程(自学)软件再工程过程(自学)38.1 软件维护的定义在软件产品被开发出来并交付用户使用之后,就进入了软件在软件产品被开发出来并交付用户使用之后,就进入了软件的运行维护阶段:的运行维护阶段:l这个阶段是软件生命周期的最后一个阶段,其基本任务是这个阶段是软件生命周期的最后一个
2、阶段,其基本任务是保证软件在一个相当长的时期能够正常运行。保证软件在一个相当长的时期能够正常运行。l软件维护需要的工作量非常大,平均说来,大型软件的维软件维护需要的工作量非常大,平均说来,大型软件的维护成本高达开发的护成本高达开发的4 4倍左右。倍左右。l目前国外许多软件开发组织把目前国外许多软件开发组织把60%60%以上的人力用于维护已以上的人力用于维护已有的软件,而且随着软件产品数量增多和使用寿命延长,有的软件,而且随着软件产品数量增多和使用寿命延长,这个百分比还在持续上升。这个百分比还在持续上升。软件工程的主要目标就是提高软件的可维护性,减少软件软件工程的主要目标就是提高软件的可维护性,
3、减少软件维护所需要的工作量,降低软件系统的总成本。维护所需要的工作量,降低软件系统的总成本。41 1.软件维护的定义:软件维护的定义:软件维护的定义:软件维护的定义:在软件运行维护阶段对软件产品进在软件运行维护阶段对软件产品进在软件运行维护阶段对软件产品进在软件运行维护阶段对软件产品进行的修改就是所谓的维护。行的修改就是所谓的维护。行的修改就是所谓的维护。行的修改就是所谓的维护。2.2.改正性维护:改正性维护:改正性维护:改正性维护:在软件交付使用后,因开发时测试的在软件交付使用后,因开发时测试的在软件交付使用后,因开发时测试的在软件交付使用后,因开发时测试的不彻底不彻底不彻底不彻底、不完全不
4、完全不完全不完全,必,必,必,必然会有部分隐藏的错误遗留到运行阶段。然会有部分隐藏的错误遗留到运行阶段。然会有部分隐藏的错误遗留到运行阶段。然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的这些隐藏下来的这些隐藏下来的这些隐藏下来的错误错误错误错误在某些特定的使用环境下就会暴露出来在某些特定的使用环境下就会暴露出来在某些特定的使用环境下就会暴露出来在某些特定的使用环境下就会暴露出来。为了为了为了为了识别和纠正软件错误、改正软件性能上的缺陷、排除识别和纠正软件错误、改正软件性能上的缺陷、排除识别和纠正软件错误、改正软件性能上的缺陷、排除识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用
5、实施中的误使用实施中的误使用实施中的误使用,应当进行的诊断和改正错误的过程就叫,应当进行的诊断和改正错误的过程就叫,应当进行的诊断和改正错误的过程就叫,应当进行的诊断和改正错误的过程就叫做改正性维护。做改正性维护。做改正性维护。做改正性维护。3.3.适应性维护适应性维护适应性维护适应性维护 :在使用过程中,在使用过程中,在使用过程中,在使用过程中,外部环境外部环境外部环境外部环境(新的硬、软件新的硬、软件新的硬、软件新的硬、软件配置配置配置配置)和)和)和)和数据环境数据环境数据环境数据环境(数据库、数据格式、数据输入数据库、数据格式、数据输入数据库、数据格式、数据输入数据库、数据格式、数据输
6、入/输出方输出方输出方输出方式、数据存储介质式、数据存储介质式、数据存储介质式、数据存储介质)可能发生变化。为使软件适应这种变可能发生变化。为使软件适应这种变可能发生变化。为使软件适应这种变可能发生变化。为使软件适应这种变化,而去修改软件的过程。化,而去修改软件的过程。化,而去修改软件的过程。化,而去修改软件的过程。8.1 软件维护的定义54.4.4.4.完善性维护:完善性维护:完善性维护:完善性维护:软件的使用过程中,用户往往会对软件提出新软件的使用过程中,用户往往会对软件提出新软件的使用过程中,用户往往会对软件提出新软件的使用过程中,用户往往会对软件提出新的的的的功能功能功能功能与与与与性
7、能性能性能性能要求。进而需要修改或再开发软件,以要求。进而需要修改或再开发软件,以要求。进而需要修改或再开发软件,以要求。进而需要修改或再开发软件,以扩充软件扩充软件扩充软件扩充软件功能功能功能功能、增强软件性能增强软件性能增强软件性能增强软件性能、改进加工效率改进加工效率改进加工效率改进加工效率、提高软件的可维护性的提高软件的可维护性的提高软件的可维护性的提高软件的可维护性的维护活动维护活动维护活动维护活动 实践表明,完善性维护所占的比重最大。实践表明,完善性维护所占的比重最大。实践表明,完善性维护所占的比重最大。实践表明,完善性维护所占的比重最大。即大部分维护工作即大部分维护工作即大部分维
8、护工作即大部分维护工作是改变和加强软件,而不是纠错是改变和加强软件,而不是纠错是改变和加强软件,而不是纠错是改变和加强软件,而不是纠错。完善性维护占了几乎一半的完善性维护占了几乎一半的完善性维护占了几乎一半的完善性维护占了几乎一半的工作量。工作量。工作量。工作量。完善性维护不一定是救火式的紧急维修,而可以完善性维护不一定是救火式的紧急维修,而可以完善性维护不一定是救火式的紧急维修,而可以完善性维护不一定是救火式的紧急维修,而可以是有计划、是有计划、是有计划、是有计划、有预谋的一种再开发活动有预谋的一种再开发活动有预谋的一种再开发活动有预谋的一种再开发活动。事实证明,来自用户要求扩充、加强软件功
9、能、性能的维护事实证明,来自用户要求扩充、加强软件功能、性能的维护事实证明,来自用户要求扩充、加强软件功能、性能的维护事实证明,来自用户要求扩充、加强软件功能、性能的维护活动约占整个维护工作的活动约占整个维护工作的活动约占整个维护工作的活动约占整个维护工作的50505050。5.5.5.5.预防性维护:预防性维护:预防性维护:预防性维护:采用先进的软件工程方法对需要维护的软件或采用先进的软件工程方法对需要维护的软件或采用先进的软件工程方法对需要维护的软件或采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。是为了软件中的某一部分(重新)进行设计、编制和测试。是
10、为了软件中的某一部分(重新)进行设计、编制和测试。是为了软件中的某一部分(重新)进行设计、编制和测试。是为了提提提提高软件的可维护性高软件的可维护性高软件的可维护性高软件的可维护性、可靠性等可靠性等可靠性等可靠性等,为以后进一步改进软件打下良为以后进一步改进软件打下良为以后进一步改进软件打下良为以后进一步改进软件打下良好基础。好基础。好基础。好基础。8.1 软件维护的定义6 软件维护活动所花费的工作占整个生存期工作量的软件维护活动所花费的工作占整个生存期工作量的软件维护活动所花费的工作占整个生存期工作量的软件维护活动所花费的工作占整个生存期工作量的70%70%70%70%以上以上以上以上,这是
11、由于在漫长的软件运行过程中需要不断对软件进行修改,这是由于在漫长的软件运行过程中需要不断对软件进行修改,这是由于在漫长的软件运行过程中需要不断对软件进行修改,这是由于在漫长的软件运行过程中需要不断对软件进行修改,以以以以改正新发现的错误改正新发现的错误改正新发现的错误改正新发现的错误、适应新的环境和用户新的要求,这些、适应新的环境和用户新的要求,这些、适应新的环境和用户新的要求,这些、适应新的环境和用户新的要求,这些修改需要花费很多精力和时间,而且有时会引入新的错误。修改需要花费很多精力和时间,而且有时会引入新的错误。修改需要花费很多精力和时间,而且有时会引入新的错误。修改需要花费很多精力和时
12、间,而且有时会引入新的错误。8.1 软件维护的定义71.1.1.1.影响维护工作量的因素影响维护工作量的因素影响维护工作量的因素影响维护工作量的因素 在软件的维护过程中,需要花费大量的工作量,从而直在软件的维护过程中,需要花费大量的工作量,从而直在软件的维护过程中,需要花费大量的工作量,从而直在软件的维护过程中,需要花费大量的工作量,从而直接接接接影响了软件维护的成本影响了软件维护的成本影响了软件维护的成本影响了软件维护的成本。系统大小系统大小系统大小系统大小:系统越大,理解掌握起来越困难,所执行功能:系统越大,理解掌握起来越困难,所执行功能:系统越大,理解掌握起来越困难,所执行功能:系统越大
13、,理解掌握起来越困难,所执行功能越复杂。因而需要更多的维护工作量。越复杂。因而需要更多的维护工作量。越复杂。因而需要更多的维护工作量。越复杂。因而需要更多的维护工作量。程序设计语言程序设计语言程序设计语言程序设计语言:语言的功能越强,程序的模块化和结构化:语言的功能越强,程序的模块化和结构化:语言的功能越强,程序的模块化和结构化:语言的功能越强,程序的模块化和结构化程度越高,程序的可读性越好。程度越高,程序的可读性越好。程度越高,程序的可读性越好。程度越高,程序的可读性越好。系统年龄:系统年龄:系统年龄:系统年龄:数据库技术的应用程度数据库技术的应用程度数据库技术的应用程度数据库技术的应用程度
14、 先进的软件开发技术先进的软件开发技术先进的软件开发技术先进的软件开发技术 其它:其它:其它:其它:应用的类型、应用的类型、应用的类型、应用的类型、数学模型、任务的难度、开关与标数学模型、任务的难度、开关与标数学模型、任务的难度、开关与标数学模型、任务的难度、开关与标记、记、记、记、IFIFIFIF嵌套深度、索引或下标数等嵌套深度、索引或下标数等嵌套深度、索引或下标数等嵌套深度、索引或下标数等对维护工作量都有影响。对维护工作量都有影响。对维护工作量都有影响。对维护工作量都有影响。8.2 软件维护的特点82.结构化维护与非结构化维护差别巨大结构化维护与非结构化维护差别巨大l非结构化维护的代价很高
15、(浪费精力并且遭受挫折),非结构化维护的代价很高(浪费精力并且遭受挫折),这种维护方式是没有使用软件工程方法学出来的软件的必这种维护方式是没有使用软件工程方法学出来的软件的必然结果。然结果。l以完整的软件配置为基础的结构化维护,是在软件开发以完整的软件配置为基础的结构化维护,是在软件开发过程中应用软件过程方法学的结果。过程中应用软件过程方法学的结果。l虽然有了软件的完整配置并不能保证维护时没有问题,虽然有了软件的完整配置并不能保证维护时没有问题,但是确实能减少精力的浪费并且可以提高维护的总体质量但是确实能减少精力的浪费并且可以提高维护的总体质量l在过去的几十年中,软件维护的费用稳步上升。在过去
16、的几十年中,软件维护的费用稳步上升。l1970年用于维护已有软件的费用只占软件总预算的年用于维护已有软件的费用只占软件总预算的35%40%,1980年上升为年上升为40%60%,1990年上升为年上升为70%80%。8.2 软件维护的特点93 3 3 3、维护成本、维护成本、维护成本、维护成本(维护的代价高昂维护的代价高昂)有形的软件维护成本有形的软件维护成本有形的软件维护成本有形的软件维护成本是花费了多少钱,是花费了多少钱,是花费了多少钱,是花费了多少钱,无形的维护成本无形的维护成本无形的维护成本无形的维护成本有有有有更大的影响。更大的影响。更大的影响。更大的影响。不能及时安排不能及时安排不
17、能及时安排不能及时安排,使得客户不满意;,使得客户不满意;,使得客户不满意;,使得客户不满意;变更的结果变更的结果变更的结果变更的结果引入新的故障引入新的故障引入新的故障引入新的故障,使软件整体质量下降,使软件整体质量下降,使软件整体质量下降,使软件整体质量下降 把软件人员抽调到维护工作中,干扰了软件开发把软件人员抽调到维护工作中,干扰了软件开发把软件人员抽调到维护工作中,干扰了软件开发把软件人员抽调到维护工作中,干扰了软件开发 软件维护的软件维护的软件维护的软件维护的代价代价代价代价是是是是降低了生产率降低了生产率降低了生产率降低了生产率,在做老程序的维护时非,在做老程序的维护时非,在做老程
18、序的维护时非,在做老程序的维护时非常明显。常明显。常明显。常明显。例如,例如,例如,例如,开发每一行源代码耗资开发每一行源代码耗资开发每一行源代码耗资开发每一行源代码耗资25252525美元美元美元美元,维护每一行源代码维护每一行源代码维护每一行源代码维护每一行源代码需要耗资需要耗资需要耗资需要耗资1000100010001000美元美元美元美元。维护工作量包括维护工作量包括维护工作量包括维护工作量包括生产性活动生产性活动生产性活动生产性活动(如分析和评价、设计修改和(如分析和评价、设计修改和(如分析和评价、设计修改和(如分析和评价、设计修改和实现)和实现)和实现)和实现)和“轮转轮转轮转轮转
19、”活动活动活动活动(如力图理解代码在做什么、试图(如力图理解代码在做什么、试图(如力图理解代码在做什么、试图(如力图理解代码在做什么、试图判明数据结构、接口特性、性能界限等)。判明数据结构、接口特性、性能界限等)。判明数据结构、接口特性、性能界限等)。判明数据结构、接口特性、性能界限等)。8.2 软件维护的特点10维护工作量的模型维护工作量的模型维护工作量的模型维护工作量的模型 MM是维护中消耗的总工作量是维护中消耗的总工作量是维护中消耗的总工作量是维护中消耗的总工作量 p p是上面描述的生产性工作量是上面描述的生产性工作量是上面描述的生产性工作量是上面描述的生产性工作量 K K是一个经验常数
20、是一个经验常数是一个经验常数是一个经验常数 c c是因缺乏好的设计和文档而导致复杂性的度量是因缺乏好的设计和文档而导致复杂性的度量是因缺乏好的设计和文档而导致复杂性的度量是因缺乏好的设计和文档而导致复杂性的度量 d d是对软件熟悉程度的度量。是对软件熟悉程度的度量。是对软件熟悉程度的度量。是对软件熟悉程度的度量。模型指明,如果使用了不好的软件开发方法(未按软件工模型指明,如果使用了不好的软件开发方法(未按软件工模型指明,如果使用了不好的软件开发方法(未按软件工模型指明,如果使用了不好的软件开发方法(未按软件工程要求做),原来参加开发的人员或小组不能参加维护,程要求做),原来参加开发的人员或小组
21、不能参加维护,程要求做),原来参加开发的人员或小组不能参加维护,程要求做),原来参加开发的人员或小组不能参加维护,则工作量(及成本)将按指数级增加。则工作量(及成本)将按指数级增加。则工作量(及成本)将按指数级增加。则工作量(及成本)将按指数级增加。8.2 软件维护的特点114.维护的问题很多维护的问题很多l与软件维护有关的绝大部分问题,都可归因于软件开发的与软件维护有关的绝大部分问题,都可归因于软件开发的方法有缺点。方法有缺点。l在软件生命周期的头两个时期没有严格而又科学的管理和在软件生命周期的头两个时期没有严格而又科学的管理和规划,几乎必然会导致在最后阶段出现问题。规划,几乎必然会导致在最
22、后阶段出现问题。l和软件维护有关的部分问题:和软件维护有关的部分问题:理解别人写的程序通常非常困难,而且困难程度随着配理解别人写的程序通常非常困难,而且困难程度随着配置成分的减少而迅速增加。置成分的减少而迅速增加。如果仅有程序代码没有文档,则会出现严重的问题如果仅有程序代码没有文档,则会出现严重的问题需要维护的软件往往没有合格的文档,或者文档资料显需要维护的软件往往没有合格的文档,或者文档资料显著不足。著不足。认识到软件必须有文档仅仅是第一步,容易理解的并认识到软件必须有文档仅仅是第一步,容易理解的并且和程序代码完全一致的文档才真正有价值。且和程序代码完全一致的文档才真正有价值。8.2 软件维
23、护的特点12当要求对软件进行维护时,不能指望由开发人员给我当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。们仔细说明软件。由于维护阶段持续的时间很长,因此,当需要理解由于维护阶段持续的时间很长,因此,当需要理解软件时,往往原来写程序的人已经不在附近了。软件时,往往原来写程序的人已经不在附近了。绝大多数软件在设计时没有考虑将来的修改。绝大多数软件在设计时没有考虑将来的修改。除非是强调模块独立原理的设计方法学,否则修改除非是强调模块独立原理的设计方法学,否则修改软件既困难又容易发生差错。软件既困难又容易发生差错。软件维护不是一项吸引人的工作。软件维护不是一项吸引人的工作。形成这种观念
24、很发程度上是因为维护工作经常遭受形成这种观念很发程度上是因为维护工作经常遭受挫折。挫折。l上述种种问题在现有的没采用软件过程思想开发出来的上述种种问题在现有的没采用软件过程思想开发出来的软件中,都或多或少地存在着。软件中,都或多或少地存在着。8.2 软件维护的特点13 维护过程本质上是修改和压缩了的软件定义和开发过程维护过程本质上是修改和压缩了的软件定义和开发过程维护过程本质上是修改和压缩了的软件定义和开发过程维护过程本质上是修改和压缩了的软件定义和开发过程 为了有效地进行软件维护,应事先就开始做组织工作。为了有效地进行软件维护,应事先就开始做组织工作。为了有效地进行软件维护,应事先就开始做组
25、织工作。为了有效地进行软件维护,应事先就开始做组织工作。首先首先首先首先建立维护的机构建立维护的机构建立维护的机构建立维护的机构 申明申明申明申明提出维护申请报告的过程提出维护申请报告的过程提出维护申请报告的过程提出维护申请报告的过程及及及及评价的过程评价的过程评价的过程评价的过程 为每一个维护申请规定为每一个维护申请规定为每一个维护申请规定为每一个维护申请规定标准的处理步骤标准的处理步骤标准的处理步骤标准的处理步骤 建立建立建立建立维护活动登记制度维护活动登记制度维护活动登记制度维护活动登记制度及规定及规定及规定及规定评价和评审的标准评价和评审的标准评价和评审的标准评价和评审的标准1 1 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程维护 软件工程 维护 PPT 课件
限制150内