文档介绍:§1. 定义
第八章维护(Maintenance)
——亦称 Software Evolution
Q:什么是维护?
A:在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
Q:维护做什么?
A: ①诊断和改正错误——改正性维护(corrective maintenance),约占全部维护活动的 17~20%;
②为了适合变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件——适应性维护(adaptive maintenance),约占全部维护活动的18~25%;
§1. 定义
③为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件——完善性维护(perfective maintenance),约占全部维护活动的50~66% ;
④为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件——预防性维护(preventive maintenance),与其它维护活动共占总维护的4%左右。
§1. 定义
注:①一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4倍;
②文档维护与代码维护同样重要。
软件结构、系统接口、
约束条件……???
不知道!
1、结构化维护与非结构化维护的对比
维护要求
软件配置
只有代码
评价代码
重编程序
复查
完整配置
评价设计文档
估计改动影响,计划实施途径
修改设计
重编程序
复查
交付使用
§2. 维护的特点
2、维护的代价
有形代价:费用已上升至总预算的80%;
无形代价: 占用资源以致延误开发; 修改不及时引起用户不满; 维护引入新错误,降低了软件质量;等等。
维护工作量的经验模型:
§2. 维护的特点
M = P + K ec-d
其中:M = 总的维护工作量;
P = 生产性工作量(. Analysis, evaluation, design, coding, and testing);
K = 经验常数;
c = 复杂度( caused by the lack of structured design and documentation)
d = 维护人员对软件的熟悉程度.
3、维护的问题
§2. 维护的特点
别人的程序很难读懂
文档与代码不一致
开发人员往往不参加维护
大多数软件在设计时没有考虑将来的修改
软件工程的思想至少部分地解决了与维护有关的每一个问题。
维护工作不是一项吸引人的工作
§3. 维护过程——本质上是修改和压缩了的软件定义和开发过程
1、建立维护组织(maintenance team):
在维护活动开始之前就明确维护责任是十分必要的,这样可以大大减少维护过程中可能出现的混乱
维护管理员
系统管理员
客户要求
任务评价
任务评价
变化授权人
§3. 维护过程
要求维护
用户
2、维护报告
⑴维护申请报告(Maintenance Request Form,MRF) 由用户填写的外部文件,提供错误情况说明(输入数据,错误清单等),或修改说明书等。
⑵软件修改报告(Software Change Report)
与MRF相应的内部文件,要求说明:
①所需修改变动的性质;
②申请修改的优先级;
③为满足某个维护申请报告,所需的工作量;
④预计修改后的状况。
§3. 维护过程
用户
类型
维护要求
估计
错误严重
程度
改错
计划
改正
进度
不严重
错误改正目录
分析
问题
严重
维护
任务
分配的人员
复审
修改后的软件配置
评价
优先度
开始
分析
开发目录
完善
适应
低
高
分配的人员
复审后供使用的软件配置
§3. 维护过程
3、维护的事件流