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