软件工程- 软件维护

上传人:第*** 文档编号:59401796 上传时间:2018-11-07 格式:PPT 页数:39 大小:1.96MB
返回 下载 相关 举报
软件工程- 软件维护_第1页
第1页 / 共39页
软件工程- 软件维护_第2页
第2页 / 共39页
软件工程- 软件维护_第3页
第3页 / 共39页
软件工程- 软件维护_第4页
第4页 / 共39页
软件工程- 软件维护_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《软件工程- 软件维护》由会员分享,可在线阅读,更多相关《软件工程- 软件维护(39页珍藏版)》请在金锄头文库上搜索。

1、,第8章 软件维护,软件维护的基本概念,软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。 软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存期中最长的一个阶段,其费用高达整个软件生命期花费的约60%-70。,完善性维护(Perfective Maintenance),纠错性维护(Corrective Maintenance),适应性维护(Adaptive Maintenance),预防性维护(Preventive Maintenance),按照不同的维护目的,维护工作可分成4类。,软件维护的类型,完善性维护(Perfective Maintenance),纠

2、错性维护(Corrective Maintenance),适应性维护(Adaptive Maintenance),预防性维护(Preventive Maintenance),按照不同的维护目的,维护工作可分成4类。,软件维护的类型,扩充原有系统的功能,提高系统的性能,提高软件运行的效率,满足用户的实际需要而进行的维护活动。 当一个软件系统投入使用和成功地运行时,用户会根据业务发展的实际需要,提出增加新功能、修改已有功能以及性能的改进要求等。,完善性维护(Perfective Maintenance),纠错性维护(Corrective Maintenance),适应性维护(Adaptive Ma

3、intenance),预防性维护(Preventive Maintenance),按照不同的维护目的,维护工作可分成4类。,软件维护的类型,软件测试不可能找出一个软件系统中所有潜伏的错误,所以当软件在特定情况下运行时,这些潜伏的错误可能会暴露出来。对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程,称为纠错性维护。,完善性维护(Perfective Maintenance),纠错性维护(Corrective Maintenance),适应性维护(Adaptive Maintenance),预防性维护(Preventive Maint

4、enance),按照不同的维护目的,维护工作可分成4类。,软件维护的类型,计算机的软、硬件环境,数据环境在不断的变化,使运行的软件能适应运行环境或者数据的变动而修改软件的过程称为适宜性维护。,完善性维护(Perfective Maintenance),纠错性维护(Corrective Maintenance),适应性维护(Adaptive Maintenance),预防性维护(Preventive Maintenance),按照不同的维护目的,维护工作可分成4类。,软件维护的类型,为了进一步改善软件的可靠性和易维护性,或者为预见的将来软件运行和维护打下更好的基础而对软件进行修改。 由于对于该类

5、维护工作必须采用先进的软件工程方法,对需要修改的软件或部分进行设计、编码和测试。对该类维护工作的必要性有争议,它所占的比例较小。,纠错性维护,适应性维护,完善性维护,预防性维护,纠错性维护25%,适应性 维护21%,完善性 维护50%,预防性 维护4%,各类维护所占的比例,针对以上几种类型的维护,可采取相应的维护策略,以提高维护效率,降低维护成本。图中表示各种维护所占的比例,显然完善性维护所占的比例最大。,软件维护策略,软件维护的策略,软件维护的特性,一、时间长、工作量大、成本高 维护阶段是软件生存期中最长的一个阶段,软件维护的工作量占整个软件生存期的70以上,而且还在逐年增加。,二、维护的副

6、作用 维护的副作用是指由于修改程序而导致新的错误或者新增加一些不必要的活动。 、修改代码的副作用 在修改源代码时,可能引起的错误。,、修改数据的副作用 在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。,、修改文档的副作用 对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配,缺省条件改变等错误,产生文档的副作用。,三、软件维护的困难 由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人员首先要对软件各阶段的文档和代码进行分析、理解。因而出现

7、了理解别人的程序困难、文档不齐等问题,尤其是对大型、复杂系统的维护,更加困难和复杂,甚至是不可能的!,结构化维护与非结构化维护 非结构化维护 缺乏必要的文档说明,文档缺少或者不一制,难于确定数据结构、系统接口等特性,这样的维护工作令人生畏,事倍功半。,太累了!受不了啦!几万行程序怎么改哦?,结构化维护 指软件开发过程是按照软件工程方法进行的,开发各阶段的文档齐全,软件的维护过程,有一整套完整的方案、技术、审定过程及文档。,可以看到,维护工作的难度及工作量的大小,明显与前期的开发工作密切相关。,软件维护的困难,软件维护的特性,软件维护的工作量模型,维护活动分为生产性活动和非生产性活动。 生产性活

8、动 包括分析评价、修改设计和编写程序代码等。 非生产性活动 包括理解程序代码,解释数据结构,接口特点和设计约束等。 Belady 和 Lehman 提出软件维护工作模型: M=P+K*EXP(C - D) 其中: M维护工作的总工作量 P生产性活动的工作量 K经验常数 C程序复杂度(由非结构化维护引起的) D对维护软件熟悉程度的度量 显然,若越大,越小,则维护工作量成指数增长,为此,必须防止出现非结构化维护并尽可能由熟悉软件的原开发人员参加维护。,软件维护的工作量模型,软件维护的过程,软件维护是一件复杂而困难的事,必须在相应的技术指导下,按照一定的步骤进行。 组织 流程 管理,维护组织,下图给

9、出了一种典型的维护组织方式。,其中,维护管理员可以是某个人,也可以是一个包括管理人员、高级技术人员等在内的小组。,用户,维护人员,确认维 护类型,维护实施,评价优 先级,进行问 题分析,复审,评价错误 严重程度,进行问 题分析,确定更 改要求,维护要求,完 美 性,适 应 性,将安排好的工作量列入计划,低,高,纠错性,人 员 安 排,交付使用 的软件,理解分析程序,安排计划修改程序,测试程序,软件维护的工作流程图,修改过 的软件,维护工作的流程,下图描述了实施软件维护的工作流程,一个维护申请经过评审后,首先要确定维护的类型,还要分辨错误的严重程度或修改优先级的高低,分别处理。,人员安排,维护工

10、作的组织管理,软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护工作的质量。下图描述了软件维护的管理流程。,软件维护的管理流程,许多软件的维护十分困难,原因在于这些软件的文档不全、质量差、开发过程不注意采用好的方法,忽视程序设计风格等。 许多维护要求并不是因为程序中出错而提出的,而是为适应环境变化或需求变化而提出的。 为了使得软件能够易于维护,必须考虑使软件具有可维护性,软件可维护性的定义,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。 可维护性、可使用性、可靠性是衡量软件质量的主要质量特性,也是用户十分关心的几个方面。

11、 软件的可维护性是软件开发阶段各个时期的关键目标。,软件可维护性,目前广泛使用的是用如下的七个特性来衡量程序的可维护性。 可理解性 可使用性 可测试性 可移植性 可修改性 效率 可靠性 而且对于不同类型的维护,这七种特性的侧重点也不相同。,表 各类维护中的侧重点,这些质量特性通常体现在软件产品的许多方面; 为使每一个质量特性都达到预定的要求,需要在软件开发的各个阶段采取相应的措施加以保证。 这些质量要求要渗透到而各开发阶段的各个步骤当中。因此,软件的可维护性是产品投入运行以前各阶段面向上述各质量特性要求进行开发的最终结果。,可维护性的度量,质量检查表 是用于测试程序中某些质量特性是否存在的一个

12、问题清单。评测者针对检查表上的每一个问题,依据自己的定性判断,回答 “Yes”或者“No”。 质量测试和质量标准 用于定量分析和评价程序的质量。由于许多质量特性是相互抵触的,可用以下度量标准,去度量不同的质量特性。,可维护性,可维护性的度量标准,可理解性 文档化; 模块化; “90-10测试法” :Shneiderman提出一种的一种衡量维护可理解性的方法,即让有经验的程序员阅读10分钟要测试的程序,然后如能凭记忆和理解写出90的程序,则称该程序是可理解的。 可靠性 度量的主要标准有:平均失效间隔时间、平均修复时间、有效性。 植入模型:根据程序错误统计数字,进行可靠性预测。 根据程序文本复杂性

13、,预测软件可靠性。 可测试性 表明论证软件正确性的容易程度。对于程序模块,可用程序复杂性来度量可测试性。,可维护性的度量1,可维护性的度量,可修改性 一个可修改的软件应当是可理解的、通用的、灵活的、简单的。 测试可修改性的一种定量方法是修改练习,其基本思想是通过做几个简单的修改,来评价修改难度: D = A * n / C 其中C是程序中各个模块的平均复杂性,A是要修改的n个模块的平均复杂性。A和C可用任何一种度量程序复杂性的方法计算。 可移植性 表明软件转移到一个新的计算环境的可能性的大小;或者软件能有效地在各种环境中运行的容易程度。 效率 包括时间和空间的效率。 可使用性 从用户的角度出发

14、,将可使用性定义为程序方便、实用及易于使用的程度。,可维护性的度量,提高可维护性的方法,提高软件系统的可维护性,并不是维护阶段才进行的过程,而是贯穿于整个软件分析、开发实现的全过程: 建立明确的软件质量目标 使用提高软件质量的技术和工具 进行明确的质量保证审查 选择可维护的程序设计语言 改进程序的文档,建立明确的软件质量目标和优先级,一个可维护的程序应是可理解的、可靠的、可测试的、可修改的、可移植的、效率高的、可使用的。 要实现这所有的目标,需要付出很大的代价,而且也不一定行得通。 某些质量特性是相互促进的,例如可理解性和可测试性、可理解性和可修改性。 另一些质量特性是相互抵触的,如效率和可移

15、植性、效率和可修改性等。 每一种质量特性的相对重要性应随程序的用途及计算环境的不同而不同。例如,对编译程序来说,可能强调效率;但对管理信息系统来说,则可能强调可使用性和可修改性。 应当对程序的质量特性,在提出目标的同时还必须规定它们的优先级。,使用提高软件质量的技术和工具,模块化 如果需要改变某个模块的功能,则只要改变这个模块,对其它模块影响很小; 如果需要增加程序的某些功能,则仅需增加完成这些功能的新的模块或模块层; 程序的测试与重复测试比较容易; 程序错误易于定位和纠正,结构化程序设计,程序被划分成分层的模块结构; 模块调用控制必须从模块的入口点进入,从出口点退出。 模块的控制结构仅限于顺

16、序、选择、重复三种,且没有GOTO语句。 每个程序变量只用于唯一的程序目的,而且变量的作用范围应是明确的、有限制的。,用结构化程序设计技术,提高现有系统的可维护性,采用备用件的方法用一个新的结构良好的模块替换掉整个要修改的模块。 采用自动重建结构和重新格式化的工具(结构更新技术) 把非结构化代码转换成良好结构代码 。 改进现有程序不完善的文档建立或补充系统说明书、设计文档、模块说明书、以及在源程序中插入必要注释。,进行明确的质量保证审查,质量保证审查对于获得和维持软件的质量,是一个很有用的技术。 审查可以用来检测在开发和维护阶段内发生的质量变化。 一旦检测出问题来,就可以采取措施来纠正,以控制不断增长的软件维护成本,延长软件系统的有效生命期。,软件开发期间各个检查点的检查重点,在设计阶段,检查重点是可理解性、可

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号