第八章 维护
? 软件维护的定义
? 维护的特点
? 维护过程
? 可维护性
软件维护的定义
? 在软件已经交付使用之后,为了改正错误
或满足新的需要而修改软件的过程
? 改正性维护
? 诊断和改正错误 —— 约占全部维护活动的
17~20%
? 适应性维护
? 为了和变化了的环境(如软 \硬件升级、新数据
库等)适当地配合而修改软件,约占全部维护
活动的 18~25%
软件维护的定义
? 完善性维护
? 为了增加新功能,修改已有功能,改造界面,
增加 HELP等,而修改软件,约占全部维护活
动的 50~66%
? 预防性维护
? 为了改进未来的可维护性或可靠性,或为了给
未来的改进奠定更好的基础而修改软件,与其
它维护活动共占总维护的 4%左右
维护的特点
? 8.2.1 结构化维护与非结构化维护的对比
? 8.2.2 维护的代价
? 8.2.3 维护的问题
维护的特点
? 结构化维护非
结构化维护的
对比
维护的特点
? 维护的代价
?有形代价
? 费用已上升至总预算的 80%
?无形代价
? 占用资源以致延误开发
? 修改不及时引起用户不满
? 维护引入新错误,降低了软件质量
维护的特点
? 维护的问题
? 别人的程序很难读懂
? 文档与代码不一致
? 开发人员往往不参加维护
? 大多数软件在设计时没有考虑将来的修改
维护过程
? 8.3.1 维护组织
? 8.3.2 维护报告
? 8.3.3 维护的事件流
? 8.3.4 保存维护记录
? 8.3.5 评价维护活动
维护过程
? 维护组织
? 维护报告
? 维护申请报告
? 由用户填写的外部文件,提供错误情况说明(输入
数据,错误清单等),或修改说明书等
? 软件修改报告
? 所需修改变动的性质
? 申请修改的优先级
? 为满足某个维护申请报告,所需的工作量
? 预计修改后的状况
维护过程
? 维护的事件流
维护过程
? 保存维护记录
? 评价维护活动
可维护性
? 8.4.1 决定软件可维护性的因素
? 8.4.2 文档
? 8.4.3 可维护性复审
可维护性
? 维护人员理解、改正、改动和改进这个软件
的难易程度
? 决定软件可维护性的因素
改正性维护 运行性维护 完善性维护
1, 可理解性 ?
2, 可测试性 ?
3, 可修改性 ? ?
4,可靠性 ?
5,可移植性 ?
6,可使用性 ? ?
7,效 率 ?
可维护性
? 决定软件可维护性的因素
? 可理解性
? 是指由 文档代码 理解 功能运行 的容易程度。
? 好程序的特征:模块化、结构化、代码与设计风格一致,高级
语言实现
? 可测试性
? 是指论证程序正确性的容易程度
? 好程序的特征:可理解、可靠、简单
? 可修改性
? 是指程序容易修改的程度。
? 好程序的特征:可理解、简单、通用
可维护性
? 文档
? 影响可维护性的决定因素,比代码更重要
? 用户文档
? 功能描述 —— 说明系统能做什么
? 安装文档 —— 说明安装系统的方法及适应特定的硬件配置的
方法
? 使用手册 —— 说明使用方法以及错误挽救方法
? 参考手册 —— 详尽描述用户可使用的所有系统设施以及它们
的使用方法;给出错误信息注解表
? 操作员指南(如果需要有系统操作员的话) —— 说明操作员
处理使用中出现的各种情况的方法
? 系统文档
? 即软件生产过程中每一步产生的文档
可维护性
? 可维护性复审
分析 设计 编码 测试 验收 配置复审
可靠性
可移植性
可用性
可理解性
可修改性
可测试性
可理解性
可修改性
可移植性
效率
可靠性
效率 完整性
一致性
可理解性