文章目录
- 第8章 维护
- 一、软件交付使用的工作
- 二、软件交付使用的方式
- 1) 直接方式
- 2) 并行方式
- 3) 逐步方式
- 8.1 软件维护的定义
- 1、软件维护的定义
- 2、软件维护的原因
- 3、软件维护的类型
- 1、改正性维护
- 2、适应性维护
- 3、完善性维护
- 4、预防性维护
- 8.2 软件维护的特点
- 8.2.1结构化维护和非结构化维护差别巨大
- 8.2.2 维护的代价高昂
- 8.2.3 维护的问题很多
- 8.3 软件维护的过程
- 8.3.1 维护组织
- 8.3.2 维护报告
- 8.3.3 维护的时间流
- 8.4 软件的可靠性维护
- 8.4.1 决定软件可维护性的因素
- 8.4.2 文档
- 8.4.3 可维护性复查
- 8.5 预防性维护
- 8.6 软件再工程过程
- 小结
- 软件维护手册
- 软件问题报告
- 软件修改报告
第8章 维护
软件维护所需的工作量非常大,一般说来,大型软件的维护成本高达开发总成本的四倍左右。目前,软件开发组织把60%以上的工作量用于维护自己的软件上。
一、软件交付使用的工作
- 将旧系统的数据转换到新系统(如数据库数据);
- 新系统调试完成并加载入机器,准备运行;
- 将有关资料(如使用说明)转交给用户;
- 对用户做适当的培训
二、软件交付使用的方式
1) 直接方式
直接方式是用新系统直接替换旧系统,没有过渡。
优点:转换简单,费用最省。
缺点:风险大。
2) 并行方式
优点:
A.可以对系统进行全面测试,减少了新系统失灵带
来的风险,因为旧系统也仍然存在;
B.用户也能够有一段熟悉新系统的时间。
缺点:
所需费用较高,双系统要投入更多的人力财力。
3) 逐步方式
逐步方式是将软件分期,部分地交付使用。这种方式克服了上面两种方式的缺点,既能防止直接转换产生的危险性,又能减少并行方式的费用。
8.1 软件维护的定义
1、软件维护的定义
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
2、软件维护的原因
1)改正在特定使用条件下暴露出来的一些潜在程序错误或设计缺陷;
2)因在软件使用过程中数据环境发生变化(如所要处理的数据发生变化)或处理环境发生变化(如硬件或软件操作系统等发生变化),需要修改软件,以适应这种变化;
3)用户和数据处理人员在使用时常提出改进现有功能、增加新功能、以及改善总体性能的要求,为满足这些要求,需要修改软件。
3、软件维护的类型
1、改正性维护
诊断和改正错误的过程称为改正性维护。
2、适应性维护
随着计算机的飞速发展,新的硬件系统和外部设备时常更新和升级,一些数据库环境、数据输入输出方式、数据存储介质等也可能发生变换。为了使软件适应这些环境变化而修改软件的过程叫做适应性维护
3、完善性维护
在软件投入使用过程中,用户可能还会有新的功能和性能要求,可能会提出增加新功能、修改现有功能等要求。为了满足这类要求而进行的维护称为完善性维护。
4、预防性维护
为了改进软件未来的可维护性或可靠性,或者为了给未来的改进奠定更好的基础而进行的修改,称为预防性维护。
8.2 软件维护的特点
8.2.1结构化维护和非结构化维护差别巨大
8.2.2 维护的代价高昂
软件维护的代价表现为有形代价和无形代价。
- 有形代价指软件维护的费用开支。
- 无形代价可用的资源必须供维护任务使用,以致耽误甚至丧失了开发的良机。
8.2.3 维护的问题很多
8.3 软件维护的过程
8.3.1 维护组织
① 维护申请提交给维护管理员,他把申请交给某个系统监督员去评价。
② 一旦做出评价,由修改负责人(变化授权人)确定如何进行修改。
③ 在修改程序的过程中,由配置管理员严格把关,控制修改的范围,对软件配置进行审计。
8.3.2 维护报告
- 维护申请报告或称软件问题报告,由申请维护的用户填写。
- 维护申请报告是由软件组织外部提交的文档,它是计划维护活动的基础。
- 根据软件问题报告(维护要求),作出的软件修改报告包含的信息主要有:
- 满足维护要求表中提出的要求所需要的工作量;
- 维护要求的性质;
- 这项要求的优先次序;
- 与修改有关的事后数据(如测试数据等)。
8.3.3 维护的时间流
8.4 软件的可靠性维护
8.4.1 决定软件可维护性的因素
- 可理解性
- 可测试性
- 可修改性
- 可移植性
- 可重用性
8.4.2 文档
①文档是开发、使用和维护程序所需要的图文资料。
②文档是影响软件可维护性的决定因素。
③文档比程序代码更重要。
- 用户文档
用户文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。 - 系统文档
所谓系统文档指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。
8.4.3 可维护性复查
- 系统大小
- 程序设计语言
- 系统年龄
- 数据库技术的应用
- 先进的软件开发技术
8.5 预防性维护
1)反复多次做修改程序的尝试;
2)先通过仔细分析程序,尽可能多地掌握程序内部工作细节,再有效地修改;
3)用软件工程方法重新设计、编码和测试需要变更的软件部分; —局部再工程
4)以软件工程方法为指导,对程序全部重新设计、编码和测试。—软件再工程
8.6 软件再工程过程
- 库存目录分析
包含每个应用系统的基本信息,如:名称、构建日期、修改次数、过去18个月报告的错误、用户数量文档质量、预期寿命等。从中选出再工程的候选者。 - 文档重构
(1)如果一个程序走向生命终点,不再经历变化,则保持现状;
(2)重构只针对当前正在修改的软件部分。 - 逆向工程
逆向工程是一个恢复设计结果的过程,从程序代码中抽取数据结构、体系结构和处理过程的设计信息。 - 代码重构
用重构工具分析源代码,标注出与结构化程序设计概念不符的部分,重构它的代码,测试
重构代码并更新代码。 - 数据重构
当数据结构较差时,进行再工程。如以文件方式保存数据变为以数据库方式存储。 - 正向工程
也称革新或改造,即应用软件工程的原理、概念、技术和方法来重新开发现有系统。
小结
软件维护手册
主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软
件的维护。
软件问题报告
指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。
软件修改报告
软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以
及修改的影响作出详细的描述,提交审批。