第 七 章
7.1 软件维护的类型软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成 4类。
退出上页首页 下页 末页完善性维护 ( Perfective Maintenance)
扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。
纠错性维护 ( Corrective Maintenance)
对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试,诊断,定位,纠错以及验证,修改的回归测试过程 。
一、软件维护的类型软件维护的类型退出上页首页 下页 末页适应性维护 ( Adaptive Maintenance)
要使运行的软件能适应运行环境的变动而修改软件的过程 。
预防性维护 ( Preventive Maintenance)
为了进一步改善软件的可靠性和易维护性,
或者为将来的维护奠定更好的基础而对软件进行修改 。
四类软件维护的比例退出上页首页 下页 末页
à ′í D¤
ê ó| D¤
íê é? D¤
¤·à D¤
纠错性维护
25%
适应性维护 21%
完善性维护
50%
预防性维护 4%
二、维护的步骤退出上页首页 下页 末页用户 维护人员安排改正性维护确认维护类型 维护实施评价优先级 进行问题分析复审评价错误严重程度进行问题分析确定更改要求维护要求完美性适应性将安排好的工作量列入计划低 高纠错性严重不严重将改正错误列入计划人员安排 交付使用的软件理解分析程序安排计划修改程序测试程序或或或或软件维护的工作流程图修改过的软件三、维护工作的组织管理软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护工作的质量 。 管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分的估计,
对于不妥的修改予以撤销 。 需修改主文档时,
管理部门更应仔细审查 。
软件维护的管理流程如图所示:
退出上页首页 下页 末页软件维护的管理流程退出上页首页 下页 末页维护修改建议分析修改建议是否合理提交管理部门审查是否同意修改 撤销
N
Y
N
Y
进行测试提交管理部门审批是否批准更新主文档
Y
更新其他文档提交使用修改
N
7.2 软件维护的特性一,结构化维护与非结构化维护结构化维护 — 指软件开发过程是按照软件工程方法,软件的维护过程,有一整套完整的方案,
技术,审定过程 。
非结构化维护 — 缺乏必要的文档说明,难于确 定数据结构,系统接口等特性 。 维护工作令人生畏,事倍功半 。
退出上页首页 下页 末页二、软件维护的代价维护费用高达开发费用的 55% — 70%,而且逐年上涨 。
维护中还可能引入新的潜在错误 。
Belady 和 Lehman 提出软件维护工作模型:
M=P+K*EXP( C - D)
其中:
M— 维护总工作量
P— 生产性活动 K— 经验常数
C— 程序复杂度 ( 由非结构化维护引起的 )
D— 对维护软件熟悉程度的度量 。
退出上页首页 下页 末页结论
7.3 软件维护的技术在软件开发阶段用来减少错误,提高软件可维护性的技术。涉及到软件开发的所有阶段。
退出上页首页 下页 末页可维护性 (可测试性、可理解性、可修改性)
二、软件支援技术一、面向维护的技术在软件维护阶段用于提高维护工作的效率和质量的技术。主要用到 测试 阶段的技术。
(信息收集、错误原因分析、软件分析与理解、
维护方案评价、代码与文档的修改、修改后的确认。)
三、软件维护中应注意的问题 (谨慎、工具使用)
补充:软件工程管理技术一、软件工程管理的重要性先进的管理技术往往是大型软件开发成功的关键。
退出上页首页 下页 末页二、软件工程管理技术
1、成本估算
2、开发计划开发计划安排人员组织管理开发计划安排表达计划安排的三种主要工具:
( 1)一般表格工具 —— 进度表退出上页首页 下页 末页
0
10
20
30
40
50
60
70
òt èy áù
Dè?ó ·
×ü ì? éè
ê éè
±à¢ 2a ê?
( 2)甘特图( Gantt Chart)
实线 — 已完成虚线 — 未完成退出上页首页 下页 末页任务时间
A
B
C
5 10 15 20
时标网状图 —
改进的 Gantt Chart
任务
A
B
C
5 10 15 20
A1





B1 B2
( 3) PERT图
Program Evaluation Review Technique
进度计划与评审技术,是一种网络图。
退出上页首页 下页 末页
1 2 3 4
5
6
7
8
9
10 11
调查研究
20天系统分析
30天系统设计
60天系统调试
30天子系统 1编调
40天建立文件库
30天子系统 2编调
30天用户培训
20天建立硬件系统 30天通过计算可以找出一条关键路径,计算出完成系统总时间。
界面设计
25天界面调试 10天


人员组织安排一、人员组织原则
1、专人负责、有责、有权。
2、切忌开发过程中增加人员。
退出上页首页 下页 末页例:一组 4个软件工程师,独立开发
5000行 /年,每条联系路径降低工作生产率 250行 /年。小组生产率为:
20000-250?6=18500行 /年新增加 2人,生产率为 840行 /年,
联系路径增加到 15条。小组生产率为,20000+840? 2-250?15=17930
6条联系路径
15条联系路径二、组织模式
1、按课题划分小组。
2、按工作阶段划分小组。
3、矩阵型模式退出上页首页 下页 末页负责工作项目 1
经理 1
项目 2
经理 2
项目 3
经理 3
项目 4
经理 4
信息采集 Y Y Y
信息系统 Y Y
图形处理 Y Y Y
软件测试 Y Y Y Y
软件维护 Y Y Y
三、按开发进度进行人员配置
1、按 40 — 20 — 40 模式前 编码 后退出上页首页 下页 末页
2、按 Putnam— Norden 曲线 软件计划 5 - 6%需求分析 10-20%
软件设计 20-30%
编 码 10-20%
软件测试 30-50%
高低 计划需求分析初步设计详细设计编码单元测试整体测试功能测试高级技术人员初级技术人员管理人员三、系统评价
1、经济指标评价
2、性能指标评价
3、管理指标评价退出上页首页 下页 末页软件工程 — 设计、可靠性和管理
M 。 L 舒曼著 上海翻译出版社