《第9章软件维护》由会员分享,可在线阅读,更多相关《第9章软件维护(10页珍藏版)》请在金锄头文库上搜索。
1、第第 九九 章章9 99.1 9.1 软件维护的类型软件维护的类型软件维护是指软件系统交付使用以后,为了改正软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成同的维护目的,维护工作可分成4 4类。类。完善性维护完善性维护(Perfective MaintenancePerfective Maintenance)扩充原有系统的功能,提高原有系统的性能,满扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。足用户的实际需要。纠错性维护纠错性维护(Corrective Maintenanc
2、eCorrective Maintenance)对在测试阶段未能发现的,在软件投入使用后才逐对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。验证、修改的回归测试过程。一、软件维护的类型一、软件维护的类型一、软件维护的类型一、软件维护的类型软件维护的类型软件维护的类型软件维护的类型软件维护的类型 适应性维护适应性维护(Adaptive Maintenance) 要使运行的软件能适应运行环境的变动而修要使运行的软件能适应运行环境的变动而修改软件的过程。改软件的过程。 预防性维护预防性维护(
3、Preventive Maintenance) 为了进一步改善软件的可靠性和易维护性,为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进或者为将来的维护奠定更好的基础而对软件进行修改。行修改。四类软件维护的比例四类软件维护的比例四类软件维护的比例四类软件维护的比例纠错性纠错性纠错性纠错性纠错性纠错性维护维护维护维护维护维护25%25%25%25%25%25%适应性适应性适应性适应性维护维护维护维护21%21%完善性完善性完善性完善性维护维护维护维护50%50%预防性预防性预防性预防性维护维护维护维护4%4%二、维护的步骤二、维护的步骤二、维护的步骤二、维护的步骤用户
4、用户维护人员维护人员安排改正安排改正性维护性维护确认维确认维护类型护类型维护实施维护实施评价优评价优先级先级进行问进行问题分析题分析复审复审评价错误评价错误严重程度严重程度进行问进行问题分析题分析确定更确定更改要求改要求维护维护要求要求完完 美美 性性 适适 应应 性性将安排好的工将安排好的工作量列入计划作量列入计划低低高高纠错性纠错性严重严重不严重不严重将改正错误列入计划将改正错误列入计划 人人 员员 安安排排人人 员员 安安 排排交付使用交付使用的软件的软件理解分析程序理解分析程序安排计划安排计划修改程序修改程序测试程序测试程序或或或或或或或或软件维护的工作流程图软件维护的工作流程图修改过
5、修改过的软件的软件三、维护工作的组织管理三、维护工作的组织管理三、维护工作的组织管理三、维护工作的组织管理软软件件维维护护工工作作不不仅仅是是技技术术性性的的,它它还还需需要要大大量量的的管管理理工工作作与与之之相相配配合合,才才能能保保证证维维护护工工作作的的质质量量。管管理理部部门门应应对对提提交交的的修修改改方方案案进进行行分分析析和和审审查查,并并对对修修改改带带来来的的影影响响作作充充分分的的估估计计,对对于于不不妥妥的的修修改改予予以以撤撤销销。需需修修改改主主文文档档时时,管理部门更应仔细审查。管理部门更应仔细审查。 软件维护的管理流程如图所示:软件维护的管理流程如图所示: 软件
6、维护的管理流程软件维护的管理流程软件维护的管理流程软件维护的管理流程NYNYYN9.2 9.2 软件维护的特性软件维护的特性一、结构化维护与非结构化维护一、结构化维护与非结构化维护结构化维护结构化维护 指软件开发过程是按照软件工指软件开发过程是按照软件工程方法,软件的维护过程,有一整套完整的方案、程方法,软件的维护过程,有一整套完整的方案、技术、审定过程。技术、审定过程。非结构化维护非结构化维护 缺乏必要的文档说明,难于缺乏必要的文档说明,难于确确定定数数据据结结构构、系系统统接接口口等等特特性性。维维护护工工作作令令人人生畏,事倍功半。生畏,事倍功半。二、软件维护的代价二、软件维护的代价二、
7、软件维护的代价二、软件维护的代价维护费用高达开发费用的维护费用高达开发费用的55% 70%,而,而且逐年上涨。且逐年上涨。维护中还可能引入新的潜在错误。维护中还可能引入新的潜在错误。Belady 和和 Lehman 提出软件维护工作模型:提出软件维护工作模型:M=P+K*EXP(C - D)其中:其中:M维护总工作量维护总工作量P生产性活动生产性活动K经验常数经验常数C程序复杂度(由非结构化维护引起的)程序复杂度(由非结构化维护引起的)D对维护软件熟悉程度的度量。对维护软件熟悉程度的度量。结论结论9.3 9.3 软件维护的技术软件维护的技术在软件开发阶段用来减少错误,提高软件可在软件开发阶段用
8、来减少错误,提高软件可维护性的技术。涉及到软件开发的所有阶段。维护性的技术。涉及到软件开发的所有阶段。可维护性可维护性(可测试性、可理解性、可修改性)(可测试性、可理解性、可修改性)二、软件支援技术二、软件支援技术二、软件支援技术二、软件支援技术一、面向维护的技术一、面向维护的技术一、面向维护的技术一、面向维护的技术在软件维护阶段用于提高维护工作的效率和在软件维护阶段用于提高维护工作的效率和质量的技术。主要用到质量的技术。主要用到测试测试阶段的技术。阶段的技术。(信息收集、错误原因分析、软件分析与理解、(信息收集、错误原因分析、软件分析与理解、维护方案评价、代码与文档的修改、修改后的确认。维护方案评价、代码与文档的修改、修改后的确认。)三、软件维护中应注意的问题三、软件维护中应注意的问题三、软件维护中应注意的问题三、软件维护中应注意的问题(谨慎、工具使用)(谨慎、工具使用)(谨慎、工具使用)(谨慎、工具使用)