《软件工程课件6软件维护》由会员分享,可在线阅读,更多相关《软件工程课件6软件维护(43页珍藏版)》请在金锄头文库上搜索。
1、软件工程软件工程任课教师:程丽任课教师:程丽 计算机与信息学院计算机与信息学院第六章第六章 软件维护软件维护l l6.1 6.1 软件维护的内容软件维护的内容l l6.2 6.2 软件维护的特点软件维护的特点l l6.3 6.3 软件维护的实施软件维护的实施l l6.4 6.4 软件可维护性软件可维护性第六章第六章 软件维护软件维护l课程的任务、目的和基本要求熟悉软件维护的内容、特点、实施了解如何提高软软件的可维护维护 性 1.1.什么是软件维护?什么是软件维护?软件维护是指软件系统交付使用以软件维护是指软件系统交付使用以 后,为了改正错误或满足新的需求而后,为了改正错误或满足新的需求而 修改
2、软件的过程。修改软件的过程。 第六章第六章 软件维护软件维护2.2.软件维护的原因软件维护的原因 在运行中发现了在测试阶段未能发现的软件错误在运行中发现了在测试阶段未能发现的软件错误 和设计缺陷;和设计缺陷; 需要改进设计,以增强软件的功能,提高软件的需要改进设计,以增强软件的功能,提高软件的 性能;性能; 要求已运行的要求已运行的软软软软件能适件能适应应应应特定的硬件、特定的硬件、软软软软件、外件、外 部部设备设备设备设备 和通信和通信设备设备设备设备 等的工作等的工作环环环环境,或是要求适境,或是要求适应应应应 已已变动变动变动变动 的数据或文件;的数据或文件; 为为为为使投入运行的使投入
3、运行的软软软软件与其它相关的程序有良好的件与其它相关的程序有良好的 接口,以利于接口,以利于协协协协同工作;同工作; 为为为为使运行使运行软软软软件的件的应应应应用范用范围围围围得到必要的得到必要的扩扩扩扩充。 充。 第六章第六章 软件维护软件维护3.3.软件维护的意义软件维护的意义 软件维护处于软件生命期的最后阶段,也是软件维护处于软件生命期的最后阶段,也是 最长的一个阶段,提高软件的可维护性,可最长的一个阶段,提高软件的可维护性,可 减少维护的工作量和费用减少维护的工作量和费用 纠正软件开发过程未发现的错误,增强、改纠正软件开发过程未发现的错误,增强、改 进和完善软件的功能和性能,适应软件
4、的发进和完善软件的功能和性能,适应软件的发 展,延长软件的寿命,发挥其效益展,延长软件的寿命,发挥其效益第六章第六章 软件维护软件维护第六章第六章 软件维护软件维护 6.1 6.1 软件维护的内容软件维护的内容1.1.软件维护的类型软件维护的类型 按照不同的维护原因,维护工作可分成四类。按照不同的维护原因,维护工作可分成四类。 校正性维护校正性维护 适应性维护适应性维护 完善性维护完善性维护 预防性维护预防性维护2.2.什么是校正性维护什么是校正性维护对在测试阶段未能发现,而在软对在测试阶段未能发现,而在软 件投入使用后才逐渐暴露出来的错误件投入使用后才逐渐暴露出来的错误 的测试、诊断、定位、
5、纠错以及验证的测试、诊断、定位、纠错以及验证 、修改的回归测试过程,称为校正性、修改的回归测试过程,称为校正性 维护。维护。第六章第六章 软件维护软件维护 6.1 6.1 软件维护的内容软件维护的内容3.3.适应性维护适应性维护计算机的软件环境、硬件环境、数据环境计算机的软件环境、硬件环境、数据环境 在不断的变化,使运行的软件能适应运行环在不断的变化,使运行的软件能适应运行环 境或者数据的变动而修改软件的过程称为适境或者数据的变动而修改软件的过程称为适 应性维护。应性维护。第六章第六章 软件维护软件维护 6.1 6.1 软件维护的内容软件维护的内容4.4.完善性维护完善性维护扩充原有系统的功能
6、,提高系统的扩充原有系统的功能,提高系统的 性能,提高软件运行的效率,满足用性能,提高软件运行的效率,满足用 户的实际需要而进行的维护活动称为户的实际需要而进行的维护活动称为 完善性维护。完善性维护。第六章第六章 软件维护软件维护 6.1 6.1 软件维护的内容软件维护的内容5.5.预防性维护预防性维护为了进一步改善软件的可靠性和为了进一步改善软件的可靠性和 可维护性,或者为可预见的将来的软可维护性,或者为可预见的将来的软 件的运行和维护打下更好的基础,而件的运行和维护打下更好的基础,而 对软件进行的维护活动称为预防性维对软件进行的维护活动称为预防性维 护。护。第六章第六章 软件维护软件维护
7、6.1 6.1 软件维护的内容软件维护的内容6.6.各种维护所占各种维护所占 的比例的比例 第六章第六章 软件维护软件维护 6.1 6.1 软件维护的内容软件维护的内容第六章第六章 软件维护软件维护 6.2 6.2 软件维护的特点软件维护的特点l l6.2.1 6.2.1 非结构化维护和结构化维护非结构化维护和结构化维护l l6.2.2 6.2.2 维护的困难性维护的困难性l l6.2.3 6.2.3 软件维护的费用软件维护的费用 非结构化维护非结构化维护 缺乏必要的文档说明,或者文档说明不缺乏必要的文档说明,或者文档说明不 一致一致,难于确定数据结构、系统接口等特性难于确定数据结构、系统接口
8、等特性 。 结构化维护结构化维护 按照软件工程方法开发软件,各阶段文档按照软件工程方法开发软件,各阶段文档 齐全,易于理解和掌握软件功能、性能、软齐全,易于理解和掌握软件功能、性能、软 件结构、数据结构、系统接口和设计约束。件结构、数据结构、系统接口和设计约束。第六章第六章 软件维护软件维护 6.2.1 6.2.1 非结构化维护和结构化维护非结构化维护和结构化维护1 1、读懂别人的程序带来的困难、读懂别人的程序带来的困难 2 2、文档不一致带来的困难、文档不一致带来的困难 3 3、软件开发与维护人员不一致带来的、软件开发与维护人员不一致带来的 困难困难 4 4、软件开发与维护时间上的差异带来、
9、软件开发与维护时间上的差异带来 的困难的困难第六章第六章 软件维护软件维护 6.2.2 6.2.2 维护的困难性维护的困难性软件维护费用一般要占到整个开发费用软件维护费用一般要占到整个开发费用 的的60% 60% 70% 70%,而且逐年上涨。,而且逐年上涨。只有减少软件维护的工作量才能有效降只有减少软件维护的工作量才能有效降 低维护成本,而减少维护工作量就要分析低维护成本,而减少维护工作量就要分析 影响软件维护的各种因素。影响软件维护的各种因素。第六章第六章 软件维护软件维护 6.2.3 6.2.3 软件维护的费用软件维护的费用1.1.影响软件维护的因素影响软件维护的因素 系统的大小:系统越
10、大,功能越复杂,维护工作量系统的大小:系统越大,功能越复杂,维护工作量 就越大。就越大。 程序设计语言:语言的功能越强,生成程序所需要程序设计语言:语言的功能越强,生成程序所需要 的指令(程序)越少,而且程序的可读性也越好,的指令(程序)越少,而且程序的可读性也越好, 维护工作量也就越小。维护工作量也就越小。 系统年龄:系统越老,修改维护的次数就越多,结系统年龄:系统越老,修改维护的次数就越多,结 构也就越乱,维护工作量也就越大。 构也就越乱,维护工作量也就越大。 软件开发新技术的应用:使用先进的分析和设计技软件开发新技术的应用:使用先进的分析和设计技 术,以及程序设计技术,如:面向对象技术、
11、构件术,以及程序设计技术,如:面向对象技术、构件 技术、可视化程序设计技术等,可减少维护工作量技术、可视化程序设计技术等,可减少维护工作量 。第六章第六章 软件维护软件维护 6.2.3 6.2.3 软件维护的费用软件维护的费用2.2.软件维护的工作量模型软件维护的工作量模型维护活动分为生产性活动和非生产性活动维护活动分为生产性活动和非生产性活动 生产性活动生产性活动包括分析评价、修改设计和编写程序代码包括分析评价、修改设计和编写程序代码 等。等。 非生产性活动非生产性活动包括理解程序代码、解释数据结构、接口 包括理解程序代码、解释数据结构、接口 特点和设计约束等。特点和设计约束等。 第六章第六
12、章 软件维护软件维护 6.2.3 6.2.3 软件维护的费用软件维护的费用BeladyBelady 和和 Lehman Lehman 提出软件维护工作模型:提出软件维护工作模型: M=P+K*expM=P+K*exp(C - DC - D)其中:其中:MM维护工作的总工作量维护工作的总工作量PP生产性活动的工作量生产性活动的工作量KK经验常数经验常数CC程序复杂度程序复杂度DD对维护软件熟悉程度的度量对维护软件熟悉程度的度量显然,若越大,越小,则维护工作量成指数 显然,若越大,越小,则维护工作量成指数 增长,为此,必须防止出现非结构化维护并尽可能由增长,为此,必须防止出现非结构化维护并尽可能由
13、 熟悉软件的原开发人员参加维护。熟悉软件的原开发人员参加维护。第六章第六章 软件维护软件维护 6.2.3 6.2.3 软件维护的费用软件维护的费用第六章第六章 软件维护软件维护 6.3 6.3 软件维护的实施软件维护的实施l l6.3.1 6.3.1 维护的组织维护的组织l l6.3.2 6.3.2 维护的流程维护的流程临时维护小组临时维护小组维护机构维护机构长期维护小组长期维护小组第六章第六章 软件维护软件维护 6.3.1 6.3.1 维护的组织维护的组织1.1.临时维护小组临时维护小组非正式机构,执行特殊或临时的维护任非正式机构,执行特殊或临时的维护任 务,如:对程序排错的检查、检查完善性
14、务,如:对程序排错的检查、检查完善性 维护的设计、进行质量控制的复审。维护的设计、进行质量控制的复审。采用采用“同事复审同事复审”、“同行复审同行复审”的方的方 法。法。第六章第六章 软件维护软件维护 6.3.1 6.3.1 维护的组织维护的组织2.2.长期维护小组长期维护小组组长:有经验的系统分析员,向上级组长:有经验的系统分析员,向上级 汇报维护工作汇报维护工作副组长:协调部门、小组、用户之间副组长:协调部门、小组、用户之间长期维护小组长期维护小组 的关系的关系维护负责人:负责维护小组人事管理维护负责人:负责维护小组人事管理工作工作维护程序员:分析程序改变要求并修改维护程序员:分析程序改变
15、要求并修改第六章第六章 软件维护软件维护 6.3.1 6.3.1 维护的组织维护的组织1 1、制定维护申请报告、制定维护申请报告 2 2、审查申请报告并批准、审查申请报告并批准 3 3、进行维护并做详细记录、进行维护并做详细记录 4 4、复审、复审第六章第六章 软件维护软件维护 6.3.2 6.3.2 维护的流程维护的流程1.1.制定维护申请报告制定维护申请报告维护申请报告也维护申请报告也称称软件问题报告,由申请软件问题报告,由申请 维护的用户填写,完整说明导致错误的环境维护的用户填写,完整说明导致错误的环境 ,对于适应性或完善性的维护要求,要提交,对于适应性或完善性的维护要求,要提交 一份简要的维护规格说明。一份简要的维护规格说明。第六章第六章 软件维护软件维护 6.3.2 6.3.2 维护的流程维护的流程2.2.软件维护的过程软件维护的过程 一个维护申请经过评审后,首先要一个维护申请经过评审后,首先要 确定维护的类型,还要分辨错误的严确定维护的类型,还要分辨错误的严 重程度或修改优先级的高低,再分别重程度或修改优先级的高低,再分别 处理,如下图所示。处理,如下图所示。第六章第六章 软件维护软件维护 6.3.2 6.3.2 维护的流程维护的流程1.1.软件维护的技术包括:软件维护的技术包括: 面向维护的技术面向维护的技术- -涉