11.1软件维护的概念 维护的概念: 在软件已经交付使用之后,为了改正错误或满足新的需要 而修改软件的过程。 维护的目的: 满足用户对已开发产品的性能与运行环境不断提高的要求, 进而达到延长软件寿命的目的。 2
2 11.1 软件维护的概念 维护的目的: 满足用户对已开发产品的性能与运行环境不断提高的要求, 进而达到延长软件寿命的目的。 维护的概念: 在软件已经交付使用之后,为了改正错误或满足新的需要 而修改软件的过程
维护的种类: 1、改正性维护:对程序使用期间发现的程序错误进行诊 断和改正的过程;占维护工作量17-21%。 2、适应性维护:配合变化了的环境进行修改软件的活动; 占维护工作量18-25%。 3、完善性维护:满足用户在使用过程中提出增加新的功 能或修改已有功能的建议而进行的改进工作;占维护工 作量50-66%。 4、预防性维护:为了改善未来的可维护性或可靠性而修 改软件的工作:占维护工作量4%左右。 3
3 1、改正性维护:对程序使用期间发现的程序错误进行诊 断和改正的过程;占维护工作量17-21%。 2、适应性维护:配合变化了的环境进行修改软件的活动; 占维护工作量18-25%。 3、完善性维护:满足用户在使用过程中提出增加新的功 能或修改已有功能的建议而进行的改进工作;占维护工 作量50-66%。 4、预防性维护:为了改善未来的可维护性或可靠性而修 改软件的工作;占维护工作量4%左右。 ◼ 维护的种类:
11.2维护的特点 一.维护方式 方式 结构化维护 非结构化维护 配置 每个阶段文档与程序代码 仅有程序代码 开始 评价设计文档开始 评价代码开始 作 (1)确定软件的结构特征、性能特性和接口特性,(2)确 软件结构、全程数据 定软件修改带来的影响,找出一种处理方法: 结构、系统接口、性 (3)修改设计、复审; 能要求、设计约束等 (4)再编写源程序代码,进行回归测试; 具体特点不清楚而很 (5)将修改后的软件交付使用。 难确定。 成本 维护成本较低。 很高 难度 易于维护。 维护困难
4 11.2 维护的特点 一. 维护方式 方式 结构化维护 非结构化维护 配置 每个阶段文档与程序代码 仅有程序代码 开始 评价设计文档开始 评价代码开始 工作 (1)确定软件的结构特征、性能特性和接口特性,(2)确 定软件修改带来的影响,找出一种处理方法; (3)修改设计、复审; (4)再编写源程序代码,进行回归测试; (5)将修改后的软件交付使用。 软件结构、全程数据 结构、系统接口、性 能要求、设计约束等 具体特点不清楚而很 难确定。 成本 维护成本较低。 很高 难度 易于维护。 维护困难
11.2维护的特点 二.有关的问题 开发方法 开发条件 (1)模块化详细设计文档有助于理解软件的结构、 软件开发及维护人员的水平; 影响 界面功能和内部流程; 维护 使用标准的程序设计语言; 因素 (2)开发过程中严格而科学的管理规划及清晰可靠 使用标准的操作系统接口; 的文档资料对发生错误后的理解与纠错无疑是很 重要的。 使用规范化的文档资料; (3)模块的独立程度对软件修改的难易程度、改进 测试用例的有效性。 和移植影响是很大的 理解 别人写的程序在没有说明文档时,理解很困难,不为人喜欢; 维护 时间 维护持续时间都很长,开发人员一般不在现场,对软件没有人说明。 困难 设计 绝大多数软件在设计时都没有考虑将来的修改。除非设计中强调了模块的独立性 问题 否则软件的修改既困难又易发生差错
5 11.2 维护的特点 二. 有关的问题 影响 维护 因素 开发方法 开发条件 (1)模块化详细设计文档有助于理解软件的结构、 界面功能和内部流程; 软件开发及维护人员的水平; 使用标准的程序设计语言; (2)开发过程中严格而科学的管理规划及清晰可靠 的文档资料对发生错误后的理解与纠错无疑是很 重要的。 使用标准的操作系统接口; 使用规范化的文档资料; (3)模块的独立程度对软件修改的难易程度、改进 和移植影响是很大的 测试用例的有效性。 维护 困难 理解 别人写的程序在没有说明文档时,理解很困难,不为人喜欢; 时间 维护持续时间都很长,开发人员一般不在现场,对软件没有人说明。 设计 问题 绝大多数软件在设计时都没有考虑将来的修改。除非设计中强调了模块的独立性, 否则软件的修改既困难又易发生差错
11.3维护的过程 1.建立软件维护的组织 总负责人、系统管理员和维护管理员等。 2.编写维护的报告 用标准化的格式表达所有软件维护的要求。包括: 1.满足维护要求表中提出的要求所需要的工作量; 2.维护要求的性质; 3.该项要求的优先顺序; 4.与修改有关的事后数据。 6
6 11.3 维护的过程 1. 建立软件维护的组织 总负责人、系统管理员和维护管理员等。 2. 编写维护的报告 用标准化的格式表达所有软件维护的要求。包括: 1.满足维护要求表中提出的要求所需要的工作量; 2.维护要求的性质; 3.该项要求的优先顺序; 4.与修改有关的事后数据
维护要求 维护管理员 变化授权人 系统管理员 白白 软件 系统 。维护组 织 7
7 ◼ 维护组 织
11.3维护的过程 3.为每一个维护要求规定一个标准化的事件序列 1.明确维护的类型; 2纠错性维护 从评价错误的严重性开始,分别不同程度采取不同的方法; 3.适应性维护和完善性维护 沿着同一路径推进,确定优先顺序后开始工作; 4.对恶性软件故障 应把所有的资源用来解决问题; 5.对任何类型的维护都要进行同样的技术工作 包括:修改软件设计、设计复审、必要的代码修改、单元测试、集成 测试、验收测试和复审等。 8
8 11.3 维护的过程 3. 为每一个维护要求规定一个标准化的事件序列 1.明确维护的类型; 2.纠错性维护 从评价错误的严重性开始,分别不同程度采取不同的方法; 3.适应性维护和完善性维护 沿着同一路径推进,确定优先顺序后开始工作; 4.对恶性软件故障 应把所有的资源用来解决问题; 5.对任何类型的维护都要进行同样的技术工作 包括:修改软件设计、设计复审、必要的代码修改、单元测试、集成 测试、验收测试和复审等
11.3维护的过程 估量 严重 开始 维护 错误严重 要求 问题分析 错误 程度 ⊕ 类型 不严 ⊕ 适应 计划 分配的人员 ④ 改正进度 进 评价 维护 优先度 任务 错误改正目录 修改后的软件配置 低 变 ⊕ 分配的人员 开始 复审 开发目录 分析 复审后供使用 的软件配置 维护阶段的事件流 9
维护阶段的事件流 9 11.3 维护的过程
11.3维护的过程 4.保存维护记录 ①程序标识; ②源语句数; ③机器指令条数; ④使用的程序设计语言; ⑤程序安装的日期; ⑥自从安装以来程序运行的次数; ⑦自从安装以来程序失效的次数; ⑧程序变动的层次和标识。 10
10 4.保存维护记录 ①程序标识; ②源语句数; ③机器指令条数; ④使用的程序设计语言; ⑤程序安装的日期; ⑥自从安装以来程序运行的次数; ⑦自从安装以来程序失效的次数; ⑧程序变动的层次和标识。 11.3 维护的过程
11.3维护的过程 5.评价维护活动 从7个方面度量维护工作: (1)每次程序运行平均失效的次数; (2)用于每一类维护活动的总人时数; (3)平均每个程序、每种语言、每种维护类型所做的程序变动数; (4)维护过程中增加或删除一个源语句平均花费的人时数; (⑤)维护每种语言平均花费的人时数; (6)一张维护要求表的平均周转时间; (7)不同维护类型所占的百分比。 11
11 5. 评价维护活动 从7个方面度量维护工作: (1)每次程序运行平均失效的次数; (2)用于每一类维护活动的总人时数; (3)平均每个程序、每种语言、每种维护类型所做的程序变动数; (4)维护过程中增加或删除一个源语句平均花费的人时数; (5)维护每种语言平均花费的人时数; (6)一张维护要求表的平均周转时间; (7)不同维护类型所占的百分比。 11.3 维护的过程