《软件工程项目实践教程》教学课件—项目7 软件维护
合集下载
软件工程软件维护和软件项目管理.pptx
(3)功能级:反映程序段功能和
段间关系的信息
(4)领域级:反映程序分量与应
用领域概念间对应 关系的信息
低
信息的抽象
级别越高, 抽 它与代码距
象 离越远, 通
级
过逆向工程 恢复的难度
别 越大, 自动
工具支持的
可能性变小
高
逆向工程
反汇编、反编译 程序分析技术:程序结构分析工具
程序功能分析工具
源程序
概要设计 详细设计 需求分析
开发和维护者不应等待用户的维护申请, 可先选 择以下类型程序作为预防性维护对象:
(1)预计若干年内将继续使用的程序 (2)当今正成功使用的程序 (3)最近的将来要进行大修改和完善的
程序
7.7.3 文档重构
(1)保持现状
(2)针对系统中当前正在修改的那些部分建 立完整文档
(3)如果某应用系统是完成业务工作的关键 ,而且必须重构全部文档,则仍然应该设法把 文档工作减少到必需的最小量。
7.7.4 逆向工程
逆向工程(反推工程reverse engineering) 从现有软件恢复设计信息(有用的维护信息)
软件的全部文档
设计的 恢复过程
非结构化、无文档 的源代码或目标代码
逆向工程恢复信息的级别:
(1)实现级:程序的抽象语法
树、符号表等信息
(2)结构级:反映程序分量之间
相互依赖关系的信 息,如调用图、结 构图等.
不管维护类型如何,都需要进行同样的技术工作。 这些工作包括修改软件设计、复查、必要的代码修 改、单元测试和集成测试(包括使用以前的测试方 案的回归测试)、验收测试和复审。不同类型的维 护强调的重点不同,但是基本路径是相同的。维护 事件流中最后一个事件是复审,它再次检验软件配 置的所有成分的有效性,并且保证事实上满足了维 护要求表中的要求。
段间关系的信息
(4)领域级:反映程序分量与应
用领域概念间对应 关系的信息
低
信息的抽象
级别越高, 抽 它与代码距
象 离越远, 通
级
过逆向工程 恢复的难度
别 越大, 自动
工具支持的
可能性变小
高
逆向工程
反汇编、反编译 程序分析技术:程序结构分析工具
程序功能分析工具
源程序
概要设计 详细设计 需求分析
开发和维护者不应等待用户的维护申请, 可先选 择以下类型程序作为预防性维护对象:
(1)预计若干年内将继续使用的程序 (2)当今正成功使用的程序 (3)最近的将来要进行大修改和完善的
程序
7.7.3 文档重构
(1)保持现状
(2)针对系统中当前正在修改的那些部分建 立完整文档
(3)如果某应用系统是完成业务工作的关键 ,而且必须重构全部文档,则仍然应该设法把 文档工作减少到必需的最小量。
7.7.4 逆向工程
逆向工程(反推工程reverse engineering) 从现有软件恢复设计信息(有用的维护信息)
软件的全部文档
设计的 恢复过程
非结构化、无文档 的源代码或目标代码
逆向工程恢复信息的级别:
(1)实现级:程序的抽象语法
树、符号表等信息
(2)结构级:反映程序分量之间
相互依赖关系的信 息,如调用图、结 构图等.
不管维护类型如何,都需要进行同样的技术工作。 这些工作包括修改软件设计、复查、必要的代码修 改、单元测试和集成测试(包括使用以前的测试方 案的回归测试)、验收测试和复审。不同类型的维 护强调的重点不同,但是基本路径是相同的。维护 事件流中最后一个事件是复审,它再次检验软件配 置的所有成分的有效性,并且保证事实上满足了维 护要求表中的要求。
软件工程 软件维护(共10张PPT)
预防性维护(Preventive Maintenance)
为了进一步改善软件的可靠性和易维护性,或者为 将来的维护奠定更好的基础而对软件进行修改。
第3页,共10页。
四类软件维护的比例
预防性
涉及到软件开发的所有阶段。
维护4%
可维护性(可测试性、可理解性、可修改性)
维护费用高达开发费用的55% — 70%,而
完善性维护(Perfective Maintenance) 人
50%
维护工作令人生畏,事倍功半。
维护 25%
适应性 维护21%
按照不同的维护目的,维护工作可分成4类。
P—生产性活动
K—经验常数
纠错性维护 适应性维护 完善性维护 预防性维护
第4页,共10页。
二、维护的步骤
用户ห้องสมุดไป่ตู้
维护人员
修改过
的软件
确定更
N Y
第7页,共10页。
N Y
9.2 软件维护的特性
一、结构化维护与非结构化维护 结构化维护 — 指软件开发过程是按照软件工
程方法,软件的维护过程,有一整套完整的方案、 技术、审定过程。
非结构化维护 — 缺乏必要的文档说明,难于 确定数据结构、系统接口等特性。维护工作令人生畏,事
倍功半。
第8页,共10页。
纠错性维护(Corrective Maintenance)
对在测试阶段未能发现的,在软件投入使用后才逐 渐暴露出来的错误的测试、诊断、定位、纠错以及 验证、修改的回归测试过程。
第2页,共10页。
软件维护的类型 适应性维护(Adaptive Maintenance)
要使运行的软件能适应运行环境的变动而修改软件 的过程。
为了进一步改善软件的可靠性和易维护性,或者为 将来的维护奠定更好的基础而对软件进行修改。
第3页,共10页。
四类软件维护的比例
预防性
涉及到软件开发的所有阶段。
维护4%
可维护性(可测试性、可理解性、可修改性)
维护费用高达开发费用的55% — 70%,而
完善性维护(Perfective Maintenance) 人
50%
维护工作令人生畏,事倍功半。
维护 25%
适应性 维护21%
按照不同的维护目的,维护工作可分成4类。
P—生产性活动
K—经验常数
纠错性维护 适应性维护 完善性维护 预防性维护
第4页,共10页。
二、维护的步骤
用户ห้องสมุดไป่ตู้
维护人员
修改过
的软件
确定更
N Y
第7页,共10页。
N Y
9.2 软件维护的特性
一、结构化维护与非结构化维护 结构化维护 — 指软件开发过程是按照软件工
程方法,软件的维护过程,有一整套完整的方案、 技术、审定过程。
非结构化维护 — 缺乏必要的文档说明,难于 确定数据结构、系统接口等特性。维护工作令人生畏,事
倍功半。
第8页,共10页。
纠错性维护(Corrective Maintenance)
对在测试阶段未能发现的,在软件投入使用后才逐 渐暴露出来的错误的测试、诊断、定位、纠错以及 验证、修改的回归测试过程。
第2页,共10页。
软件维护的类型 适应性维护(Adaptive Maintenance)
要使运行的软件能适应运行环境的变动而修改软件 的过程。
《软件工程实用教程》教学课件7-软件维护
M p Kecd
其中M是维护的总工作量,p是生产性维护活动的工作量,c 是由于设计和文档结构不合理产生的复杂度,d是维护小组 对软件的熟悉程度,k是一个经验常数
软件维护的策略
改正性维护
通过新的技术和开发策略,提高软件的可靠性
利用数据库管理系统、新的软件开发环境和较高级的编程语言开 发软件,提高软件质量,减少开发中引进的错误
D3 原系统资料
错误列表
源代码 7.2 理解源程序
源代码
7.3 修改程序
修改后 的程序
7.4 测试程序
分析结果
理解的 源程序
计划安排
7.5 安排更改计
划
修改后的可 交付程序
7.6 复审
交付的软件
软件维护的一般工作流程
1.分类整理用户意见 2.提出维护申请 3.评审、审计、批准维护申请 4.修改需求文档 5.维护需求文档评审 6.修改设计文档 7.维护设计文档评审 8.修改源程序 9.回归测试 10.修改软件产品版本号 11.交付用户运行 12.收集用户反馈意见,准备进行新一轮维护活动,转
3
软件维护
就是软件交付使用之后,在新版本产品升级之前 这段时间里,软件厂商向客户提供的服务工作。
意义
其宗旨就是提高客户对软件产品的满意度。
保持现有系统的价值。
4
软件维护的分类
改正性维护
产品或项目中存在缺陷或错误,在测试和验收时未发现,到 了使用过程中逐步暴露出来,需要改正。
适应性维护
向流程第1个步骤
由谁进行维护
独立的维护小组 原开发小组成员
影响维护的因素
系统规模
软件规模越大,系统越复杂,维护难度就越大
程序设计语言
《软件维护整》课件
软件维护的重要性
确保软件质量
通过软件维护,可以发现和修复 软件中存在的问题,提高软件的 质量和可靠性。
延长软件寿命
通过及时的软件维护,可以延长 软件的寿命,使其更好地适应不 断变化的应用需求。
提高用户满意度
通过软件维护,可以改进和完善 软件的功能和性能,提高用户的 使用体验和满意度。
软件维护的分类
代码质量参差不齐
由于历史原因和技术限制,一些软件系统的代码质量可能较差,这增 加了维护的难度和风险。
文档不完整或缺失
在软件开发过程中,如果没有及时编写或更新文档,可能会给软件维 护带来困难。
依赖性高
软件系统可能依赖于许多外部因素,如硬件、其他软件或网络资源。 这些因素的变化可能会影响软件系统的正常运行。
逆向工程技术
逆向工程
通过反编译、反汇编等技术手段,将软件程序还 原成可读性更高的源代码或设计文档。
逆向工程工具
如IDA Pro、Ghidra、Hopper等,支持多种编程 语言和平台。
逆向工程流程
包括反编译、反汇编、代码分析等步骤,帮助维 护人员理解软件结构和实现逻辑。
代码审查技术
代码审查
通过多人对代码进行审核和检查,确保代码 质量符合要求。
缺陷修复
根据测试结果和用户反馈,修复软件中存在 的缺陷和错误。
功能改进
根据用户需求和软件维护计划,对软件功能 进行改进和优化。
代码重构
对软件代码进行重构,优化软件结构和代码 质量,提高软件可维护性和可扩展性。
维护测试与验收
功能测试
对修复和改进后的软件进行功能测试,确保软件 功能正常。
安全测试
对修复和改进后的软件进行安全测试,确保软件 安全性得到保障。
《软件工程》课件——第7章-软件维护
软件维护概述
(1)代码副作用。删除、修改子程序,语句符 号,标示符。修改文件的open、close时才会出现 ,修改逻辑操作符和边界条件的测试等。
(2)数据副作用。修改全局数据,重新排列I/O 表或子程序参数表和初始化控制标志和指针以及全 局常量和局部常量的再定义
(3)文档副作用。维护除了考虑源代码外,还 要考虑整个软件的配置。
软件维护类型
(4)预防性维护 预防性维护用以提高应用软件的可靠性和可
” 维护性,为了去适应未来软硬件环境的变化,我
们应主动增加新的预防性功能,使应用系统适应 各种变化而不被消除。这一维护的工作量约占整 个维护工作的4%。
软件维护类型
随着软件开发方面的进展,软件维护方法也得到了 发展,这首先体现在软件维护的分类。目前,软件企业 将自己的软件产品进行维护,基本上分为如下两类。
软件维护过程
在结构化维护方面,软件维护文档,就是对 已经存在的实现文档、设计文档、测试文档、 分析文档、用户指南进行修改,形成新的开发 文档。新的开发文档的组织方式有两种格式。
软件维护过程
(1)保存好原来的开发文档之后,直接修改原 文档,修改后形成新的小版本文档,就是在原版本 中小圆点的右一位或右二位上加1。
软件维护类型
02
软件维护类型
维护阶段是软件生存周期的最后阶段,该阶段 是花费时间最长、投入人力财力最多且难度系数最
” 大的一个阶段,不同的维护种类应该采取不同的
策略。角度不同导致分类方法不同,从而分类 结果也不同。传统的软件维护一般分为四大类 ,如表7.1所示。
表7.1 软件的4类维护
软件维护类型
第7章 软件维护
软件工程教程 电子科技大学出版社
学习目标
软件工程学概述第7讲软件维护PPT课件
可能发生变化。
目的
– 适应环境变化和发展而对软件进行维护。
2020/7/27
8
(3) 改善性维护
原因
– 在软件系统运行期间,用户可能要求增加新 的功能、建议修改已有功能或提出其他改进 意见。
目的
– 为功能、增强软件性能、 改进加工效率、提高软件的可维护性。
的帮助 软件修改困难,易出错 缺乏成就感
2020/7/27
19
3 软件的可维护性
概念
– 纠正软件系统出现的错误和缺陷,以及为满 足新的要求进行修改、扩充或压缩的容易程 度。
可维护性、可使用性、可靠性是衡量软 件质量的主要质量特性。
软件的可维护性是软件开发阶段各个时 期的关键目标。
2020/7/27
20
3.1 影响软件可维护性的因素
软件开发方法
– 结构化、OO、…...
软件配置是否齐全 开发人员素质 软件系统结构是否清晰、易于理解 标准的程序设计语言 文档的结构是否标准化 …...
2020/7/27
21
3.2 衡量可维护性的质量特性
衡量软件可维护性的特性
– 可理解性 – 可使用性 – 可测试性 – 可移植性 – 可修改性 – 效率 – 可靠性
在不同的检查点,检查的重点不全相同。
(1) 需求分析的复审
– 对将来可能修改和改进的部分加注释,对软 件的可移植性加以讨论,并考虑可能影响软 件维护的系统界面
3
软件生命周期
可行性研究 需求分析 概要设计 详细设计 实现
软件定义
软件开发
2020/7/27
集成测试
确认测试
使用与维护
维护
退役
4
1.1 软件维护定义
目的
– 适应环境变化和发展而对软件进行维护。
2020/7/27
8
(3) 改善性维护
原因
– 在软件系统运行期间,用户可能要求增加新 的功能、建议修改已有功能或提出其他改进 意见。
目的
– 为功能、增强软件性能、 改进加工效率、提高软件的可维护性。
的帮助 软件修改困难,易出错 缺乏成就感
2020/7/27
19
3 软件的可维护性
概念
– 纠正软件系统出现的错误和缺陷,以及为满 足新的要求进行修改、扩充或压缩的容易程 度。
可维护性、可使用性、可靠性是衡量软 件质量的主要质量特性。
软件的可维护性是软件开发阶段各个时 期的关键目标。
2020/7/27
20
3.1 影响软件可维护性的因素
软件开发方法
– 结构化、OO、…...
软件配置是否齐全 开发人员素质 软件系统结构是否清晰、易于理解 标准的程序设计语言 文档的结构是否标准化 …...
2020/7/27
21
3.2 衡量可维护性的质量特性
衡量软件可维护性的特性
– 可理解性 – 可使用性 – 可测试性 – 可移植性 – 可修改性 – 效率 – 可靠性
在不同的检查点,检查的重点不全相同。
(1) 需求分析的复审
– 对将来可能修改和改进的部分加注释,对软 件的可移植性加以讨论,并考虑可能影响软 件维护的系统界面
3
软件生命周期
可行性研究 需求分析 概要设计 详细设计 实现
软件定义
软件开发
2020/7/27
集成测试
确认测试
使用与维护
维护
退役
4
1.1 软件维护定义
软件工程实用教程第7章 软件项目验收与维护
7.1.3 项目移交与清算
步骤三:找出造成项目流产的所有原因,总结经验。 步骤四:明确责任,确定损失,协商索赔方案,形成项 目清算报告,合同各方在清算报告上签证,使之生效。 步骤五:协商不成则按合同约定提起仲裁,或直接向项 目所在地的人民法院提起诉讼。
(1)项目的技术效果评价 (2)项目的经济效果评价 (3)项目的社会效益评价
从上述关于软件维护的定义不难看出,软件维护绝 不仅限于纠正使用中发现的错误,事实上在全部维 护活动中一半以上是完善性维护。国外的统计数字 表明,完善性维护占全部维护活动的50%~66%, 改正性维护占17%~21%,适应性维护占18%~25%, 其他维护活动只占4%左右。
维护的问题很多
与软件维护有关的绝大多数问题,都可归因于软件 定义和软件开发的方法有缺点。在软件生命周期的 头两个时期没有严格而又科学的管理和规划,几乎 必然会导致在最后阶段出现问题。下面列出和软件 维护有关的部分问题:
(2)适应性维护。计算机科学技术领域的各个方 面都在迅速进步,大约每过36个月就有新一代的硬 件宣告出现,经常推出新操作系统或旧系统的修改 版本,时常增加或修改外部设备和其他系统部件; 另一方面,应用软件的使用寿命却很容易超过10年, 远远长于最初开发这个软件时的运行环境的寿命。 因此,适应性维护,也就是为了和变化了的环境适 当地配合而进行的修改软件的活动,是既必要又经 常的维护活动。
7.1.4 项目评价
软件维护
在软件产品被开发出来并交付用户使用之后,就进 入了软件的运行维护阶段,这个阶段是软件生命周 期的最后一个阶段。 软件维护需要的工作量很大,平均说来,大型软件 的维护成本高达开发成本的4倍左右。目前国外许 多软件开发组织把60%以上的人力用于维护已有的 软件。 软件工程的目的是要提高软件的可维护性,减少软 件维护所需要的工作量,降低软件系统的总成本
软件工程实践者教程---维护
武当山旅游门户网站( wd)
完善性维护
什么是完善性维护——对软件进行完善以增 加新的功能、修改已有功能。 起因——用户要求增加新的功能、修改已有 功能,或提出其他改进意见 目的——满足用户日益增长的各种需求而对 软件系统进行的改善和补充。 出现频率——占整个维护量50%。 常见的完善要求——用户的业务会发生变化, 组织机构也会发生变化。
武当山旅游门户网站( wd)
维护过程说明(续)
7. 编码和单元测试。 8.ห้องสมุดไป่ตู้评审编码情况,维护人员必须填写维护工作记录 表,记录所做的修改。维护主管要检查维护记录, 确保只在授权的工作范围内作了修改。 9. 不仅测试修改的部分,还要测试对其他部分的影 响,可以借鉴开发阶段设计的测试用例对软件进 行全面的测试。 10.更新文档,保持程序和文档一致性。 11.用户验收。 12.评审修改效果及其对系统的影响。
005 安排改 正性维 护 004 开始问 安排维护 题分析 008 维护
分析原设计 理解源程序 安排更改计划 修改程序 测试程序 009
用户 维护 人员
维 护 申 请
改正性 维护 批 准 申 请
001 评价 申请
002 判断维 护类型 006 评价优 先级 高 严重
007 开始问 题分析 安排维护 修改后的 软件
步骤:分析源程序修改源程序验证修改 1)分析和理解源程序 阅读和理解其他人的源程序是非常困难的。 也是非常好的学习和锻炼机会。阅读理解别 人写的源程序有一些技巧,可以帮助你快速、 准确地理解源程序。下面介绍这些技巧:
武当山旅游门户网站( wd)
源程序阅读技巧
武当山旅游门户网站( wd)
7.1.2.软件维护策略(续)
《软件工程》教学课件09软件维护等
完善性维护
为了满足用户新的需求或改进软件性 能而进行的修改和增强。
预防性维护
为了预防软件可能出现的问题而进行 的修改,如优化代码结构、提高系统 稳定性等。
常用软件维护技术
程序理解技术
通过阅读源代码和相关文档,理解软件的内部结构和功能。
重构技术
在不改变软件外部行为的前提下,对软件内部结构进行调整和优化, 提高软件的可维护性。
代码重构
通过对代码进行重构,提高代码的可 读性、可维护性和可扩展性,降低未 来维护的难度。
03 软件维护策略与技术
软件可维护性度量指标
可理解性
软件内部逻辑结构、 数据结构和代码的可 读性。
可测试性
软件进行测试的难易 程度,包括测试数据 的准备和执行测试的 自动化程度。
可修改性
软件进行修改、增加 或删除功能的容易程 度。
错误来源
错误可能来源于需求分析、设计、编码、测试等 各个阶段,因此需要在整个软件开发生命周期中 持续进行错误跟踪和管理。
纠正措施
纠正措施可能包括修改源代码、更新文档、重新 进行测试等,以确保错误得到彻底修复。
适应性维护
01
02
03
适应环境变化
随着外部环境的变化,如 操作系统升级、数据库迁 移等,软件需要进行适应 性维护以适应新的环境。
软件维护分类
根据维护的性质和目的,软件维护可 分为改正性维护、适应性维护、完善 性维护和预防性维护。
软件维护目标与意义
软件维护目标
确保软件的持续可用性、可靠性和效率,同时满足用户和业务需求的变化。
软件维护意义
延长软件生命周期,提高软件质量,降低软件总成本,增强用户满意度。
软件维护过程模型
软件工程7软件维护ppt课件PPT共27页
3.完善性维护策略 用前两类维护中列举的方法,也可以减少完善性维护的
工作量。此外,通过为用户提供软件系统的原型,使用户通过研 究原型进一步完善他们的功能要求,同样可以减少完善性维护。
7.1.4 软件维护的代价
软件维护的代价与软件的复杂性有关。近些年 来,随着软件复杂性的不断提高,软件维护的 代价也在逐步上升。根据有关资料表明,70年 代用于维护软件的费用只占软件总预算的 35%~40%,80年代上升为40%~60%,到了 90年代则上升为70%~80%。
除此之外,软件维护还有一些额外的代价。例 如,当看起来合理的变更要求不能及时满足时, 可能会引起用户的不满;由于维护时的改动, 在软件中引入新的错误,从而降低了软件的质 量;当必须把软件开发工程师调去从事维护工 作时,对开发工作会造成影响等。
7.2 软件维护的 实施
7.2.1 维护组织
图7-1 软件维护控制流程
4.预防性维护
除了以上3类维护之外,还有一类维护活 动,叫做预防性维护,这种维护活动为了提高 软件的可维护性、可靠性,为以后进一步改进 软件打下良好基础。
7.1.3 软件维护的策略
1.改正性维护策略 在软件开发过程中,可以通过使用新技术大大提高软件的
可靠性,并减少改正性维护。这些技术包括数据库管理系统、软 件开发环境、程序自动生成系统、较高级(第四代)语言,应用 这些技术可产生更加可靠的代码。此外,还可利用以下方法提高 软件的可靠性:
第7章 软件维护
掌握:软件维护的定义、软件维护的种类、软 件维护的策略、软件维护的实施、软件可维护 的定义、软件可维护性度量、提高软件可维护 性的方法。
3.完善性维护
在软件的使用过程中,用户往往会对软 件提出新的功能与性能要求。为了满足这些要 求,需要修改或再开发软件,以扩充软件功能、 增强软件性能、改进加工效率、提高软件的可 维护性。这种情况下进行的维护活动叫做完善 性维护。
工作量。此外,通过为用户提供软件系统的原型,使用户通过研 究原型进一步完善他们的功能要求,同样可以减少完善性维护。
7.1.4 软件维护的代价
软件维护的代价与软件的复杂性有关。近些年 来,随着软件复杂性的不断提高,软件维护的 代价也在逐步上升。根据有关资料表明,70年 代用于维护软件的费用只占软件总预算的 35%~40%,80年代上升为40%~60%,到了 90年代则上升为70%~80%。
除此之外,软件维护还有一些额外的代价。例 如,当看起来合理的变更要求不能及时满足时, 可能会引起用户的不满;由于维护时的改动, 在软件中引入新的错误,从而降低了软件的质 量;当必须把软件开发工程师调去从事维护工 作时,对开发工作会造成影响等。
7.2 软件维护的 实施
7.2.1 维护组织
图7-1 软件维护控制流程
4.预防性维护
除了以上3类维护之外,还有一类维护活 动,叫做预防性维护,这种维护活动为了提高 软件的可维护性、可靠性,为以后进一步改进 软件打下良好基础。
7.1.3 软件维护的策略
1.改正性维护策略 在软件开发过程中,可以通过使用新技术大大提高软件的
可靠性,并减少改正性维护。这些技术包括数据库管理系统、软 件开发环境、程序自动生成系统、较高级(第四代)语言,应用 这些技术可产生更加可靠的代码。此外,还可利用以下方法提高 软件的可靠性:
第7章 软件维护
掌握:软件维护的定义、软件维护的种类、软 件维护的策略、软件维护的实施、软件可维护 的定义、软件可维护性度量、提高软件可维护 性的方法。
3.完善性维护
在软件的使用过程中,用户往往会对软 件提出新的功能与性能要求。为了满足这些要 求,需要修改或再开发软件,以扩充软件功能、 增强软件性能、改进加工效率、提高软件的可 维护性。这种情况下进行的维护活动叫做完善 性维护。
软件工程软件维护课件
二、软件维护分类
按照维护的起因分类四类: 纠错性维护 适应性维护 完善性维护 预防性维护
2024/7/26
1. 纠错性维护(Corrective Maintenance)
——为改正软件系统中潜藏的错误而进行的活动。
纠错性维护是指在系统开发阶段已发生而系统测试阶段尚未发 现的错误。这方面的维护工作量占整个维护工作量的17%21%。所发现的错误有的不太重要,不影响系统的正常运行 ,其维护工作可随时进行;而有的错误非常重要,甚至影响整 个系统的正常运行,其维护工作必须制定计划,进行修改,并 且要进行复查和控制。
2024/7/26
(2)数据副作用 数据副作用是由于修改数据结构带来的副作用。容
易引起数据副作用的修改包括: ①局部和全局常量的再定义; ②记录或文件格式的再定义; ③增减数据或是由于修改数据结构的定义导致 数据结构长度的改变; ④修改全局数据; ⑤重新初始化控制标志和指针; ⑥重新排列I/O表或子程序参数表。。
2.熟悉软件系统
熟悉所维护软件的功能是非常重要的,也是进行软件维护工作的第 一步。首先阅读现有的文档,最好能对文档中提到的内容亲自进 行测试。掌握现实中软件的使用方法,确保你要知道最常用的使 用情形。有时候用户会要求提供一些已经存在的功能特性,只是 因为他们不知道软件中已经具有了这些功能。
最后只能研究代码了,试着去理解函数、模块和组件在软件中所扮 演的角色。使用调试器单步执行程序中不同的分支,查看当代码 的不同部分执行时将会发生什么。要把熟悉软件的体系结构当做 一个持续进行的过程,而不是一次就能完成的事情。当你修改bug 或添加新的特性时,可能对系统有更好的理解。以上过程一定要 记录结果,这样对维护工作有巨大的帮助。
y 队列中还有维护请求吗?
《软件工程》教学课件09软件维护等
它包括各种类型的维护,如预防性维护、改正性维护、适应性维护和完善性维护。
2 软件维护面临一些挑战。
例如,处理遗留代码、需求变更和资源限制。
3 采用最佳实践可以提高软件维护的效率和质量。
例如,使用版本控制、测试自动化和良好的文档注释。
面对资源限制,如时间、人力和 预算,仍要保持高效的软件维护。
软件维护的最佳实践
1
版本控制
使用版本控制工具管理代码,确保团队成员的协作和追踪变更历史。
2
测试自动化
采用自动化测试工具,提高测试效率和测试覆盖率。
3
文档注释
编写清晰的代码注释和维护文档,方便后续维护和团队成员的理解。
总结和重点
1 软件维护是软件工程的重要组成部分。
2 改正性维护
修复已发现的错误或缺陷,确保软件系统的 正常运行。
3 适应性维护
根据用户需求、环境变化或市场需求进行修 改和扩展。
4 完善性维护
改进已有的功能或性能,提高软件系统的质 量和可靠性。
软件维护的挑战
遗留代码
维护旧有系统时,处理复杂、难 以理解和文档化的遗留代码。
需求变更
资源不足
及时适应和响应用户的需求变化, 保持软件系统的有效性。
《软件工程》教学课件09 软件维护等
欢迎来到本节课的教学课件!在本课中,我们将探讨软件工程中的一个关键 主题:软件维护。我们将了解软件维护的定义、类型、挑战以及最佳实践。
软件工程课程概述
软件生命周期
学习软件工程的基本概念和原理,包括软件开 发过程中不同阶段的活动。
软件设计
学习如何设计高质量的软件架构和模块,以满 足系统需求。
需求工程
学习如何识别、分析和规划软件系统的需求, 以满足用户和利益相关者的期望。
2 软件维护面临一些挑战。
例如,处理遗留代码、需求变更和资源限制。
3 采用最佳实践可以提高软件维护的效率和质量。
例如,使用版本控制、测试自动化和良好的文档注释。
面对资源限制,如时间、人力和 预算,仍要保持高效的软件维护。
软件维护的最佳实践
1
版本控制
使用版本控制工具管理代码,确保团队成员的协作和追踪变更历史。
2
测试自动化
采用自动化测试工具,提高测试效率和测试覆盖率。
3
文档注释
编写清晰的代码注释和维护文档,方便后续维护和团队成员的理解。
总结和重点
1 软件维护是软件工程的重要组成部分。
2 改正性维护
修复已发现的错误或缺陷,确保软件系统的 正常运行。
3 适应性维护
根据用户需求、环境变化或市场需求进行修 改和扩展。
4 完善性维护
改进已有的功能或性能,提高软件系统的质 量和可靠性。
软件维护的挑战
遗留代码
维护旧有系统时,处理复杂、难 以理解和文档化的遗留代码。
需求变更
资源不足
及时适应和响应用户的需求变化, 保持软件系统的有效性。
《软件工程》教学课件09 软件维护等
欢迎来到本节课的教学课件!在本课中,我们将探讨软件工程中的一个关键 主题:软件维护。我们将了解软件维护的定义、类型、挑战以及最佳实践。
软件工程课程概述
软件生命周期
学习软件工程的基本概念和原理,包括软件开 发过程中不同阶段的活动。
软件设计
学习如何设计高质量的软件架构和模块,以满 足系统需求。
需求工程
学习如何识别、分析和规划软件系统的需求, 以满足用户和利益相关者的期望。
《项目软件维护》PPT课件
• 提高软件可测试性的措施有:采用良好的 程序结构;书写详细正确的文档;使用测 试工具和调试工具;保存以前的测试过程 和测试用例等
30
软件可维护性-主要影响因素
• 可修改性:指修改软件〔主要指程序〕的 难易程度.
• 在修改软件时经常会发生这样的情况:修 改了程序中某个错误的同时又产生新的错 误〔由程序的修改引起的〕;或者在程序 中增加了某个功能后,导致原先的某些功 能不能正常执行.
– 绝大多数软件在设计时没有考虑到将来的 修改问题
– 软件维护这项工作毫无吸引力.一方面是因 为软件维护,看不到什么"成果",但工作量很 大,更重要的是维护工作难度大,软件维护人 员经常遭受挫折.
11
软件维护的概念-维护成本
• 软件维护除费用外的无形代价包括 • 维护活动占用了其他软件开发可用的资源,
4
软件维护的概念
• 什么是软件维护 • 是指软件系统交付使用以后,为了改正错
误或满足新的需要而修改软件的过程 • 国标GB/T 11457-95给出如下定义 • 在一软件产品交付使用后对其进行修改,
以纠正故障; • 在一软件产品交付使用后对其进行修改,
以纠正故障、改进其性能和其它属性,或 使产品适应改变了的环境
• 修改控制决策机构、维护管理员可以是指 定的某个人,也可以是一个包括管理人员、 高级技术人员在内的小组.
• 系统监督员可以有其他职责,但应具体分 管某一个软件包.
19
软件维护的过程-维护组织
• 维护团队根据时间的不同,可以分为短期 团队和长期团队
• 短期团队一般是当需要执行相关具体任务 时,临时组织起来解决手头的问题
33
软件可维护性-主要影响因素
– 程序在执行之前是否初始化内存? – 程序在执行之前是否测定当前的输入/输出
30
软件可维护性-主要影响因素
• 可修改性:指修改软件〔主要指程序〕的 难易程度.
• 在修改软件时经常会发生这样的情况:修 改了程序中某个错误的同时又产生新的错 误〔由程序的修改引起的〕;或者在程序 中增加了某个功能后,导致原先的某些功 能不能正常执行.
– 绝大多数软件在设计时没有考虑到将来的 修改问题
– 软件维护这项工作毫无吸引力.一方面是因 为软件维护,看不到什么"成果",但工作量很 大,更重要的是维护工作难度大,软件维护人 员经常遭受挫折.
11
软件维护的概念-维护成本
• 软件维护除费用外的无形代价包括 • 维护活动占用了其他软件开发可用的资源,
4
软件维护的概念
• 什么是软件维护 • 是指软件系统交付使用以后,为了改正错
误或满足新的需要而修改软件的过程 • 国标GB/T 11457-95给出如下定义 • 在一软件产品交付使用后对其进行修改,
以纠正故障; • 在一软件产品交付使用后对其进行修改,
以纠正故障、改进其性能和其它属性,或 使产品适应改变了的环境
• 修改控制决策机构、维护管理员可以是指 定的某个人,也可以是一个包括管理人员、 高级技术人员在内的小组.
• 系统监督员可以有其他职责,但应具体分 管某一个软件包.
19
软件维护的过程-维护组织
• 维护团队根据时间的不同,可以分为短期 团队和长期团队
• 短期团队一般是当需要执行相关具体任务 时,临时组织起来解决手头的问题
33
软件可维护性-主要影响因素
– 程序在执行之前是否初始化内存? – 程序在执行之前是否测定当前的输入/输出
软件工程——软件维护课件
实施过程
需求分析、修改设计、修改代码、测试与验 证。
技术
模块化设计、面向对象设计、设计模式、重 构技术等。
04
完善性维护
定义与目的
定义
完善性维护是对软件系统进行修改和增强,以改进其性能、可维护性、可靠性和安全性 的过程。
目的
完善性维护旨在提高软件系统的质量,使其更好地满足用户需求,并增强系统的适应性 和稳定性。
软件工程——软件维护课件
目录
• 软件维护概述 • 改正性维护 • 适应性维护 • 完善性维护 • 软件维护的挑战与解决方案 • 软件维护最佳实践
01
软件维护概述
软件维护的定义
软件维护是指在软件运行过程中,为 了改正错误、满足新的需求或改进性 能等目的,对软件进行的修改、完善 和优化活动。
软件维护是软件生命周期中一个重要 的阶段,包括改正性维护、适应性维 护、完善性维护和预防性维护等类型 。
适应性维护
定义与目的
定义
适应性维护是指对软件系统进行修改, 使其适应软件环境的变化和满足新的要 求。
VS
目的
确保软件系统在变化的环境中能够正常运 行,提高软件的可维护性和可扩展性。
常见问题与原因
问题
软件系统无法适应环境变化或新需求。
原因
软件设计不够灵活、缺乏有效的维护机制、 代码质量差等。
实施过程与技术
定义
改正性维护是指在软件发布后,为了识别和纠正软件中的错误、缺陷或不符合需求的地方所进行的维护活动。
目的
确保软件能够满足用户的需求,修复已知的错误,提高软件的质量和可靠性。
常见问题与原因
常见问题
软件崩溃、数据丢失、功能异常、界面错误等。
原因
需求分析、修改设计、修改代码、测试与验 证。
技术
模块化设计、面向对象设计、设计模式、重 构技术等。
04
完善性维护
定义与目的
定义
完善性维护是对软件系统进行修改和增强,以改进其性能、可维护性、可靠性和安全性 的过程。
目的
完善性维护旨在提高软件系统的质量,使其更好地满足用户需求,并增强系统的适应性 和稳定性。
软件工程——软件维护课件
目录
• 软件维护概述 • 改正性维护 • 适应性维护 • 完善性维护 • 软件维护的挑战与解决方案 • 软件维护最佳实践
01
软件维护概述
软件维护的定义
软件维护是指在软件运行过程中,为 了改正错误、满足新的需求或改进性 能等目的,对软件进行的修改、完善 和优化活动。
软件维护是软件生命周期中一个重要 的阶段,包括改正性维护、适应性维 护、完善性维护和预防性维护等类型 。
适应性维护
定义与目的
定义
适应性维护是指对软件系统进行修改, 使其适应软件环境的变化和满足新的要 求。
VS
目的
确保软件系统在变化的环境中能够正常运 行,提高软件的可维护性和可扩展性。
常见问题与原因
问题
软件系统无法适应环境变化或新需求。
原因
软件设计不够灵活、缺乏有效的维护机制、 代码质量差等。
实施过程与技术
定义
改正性维护是指在软件发布后,为了识别和纠正软件中的错误、缺陷或不符合需求的地方所进行的维护活动。
目的
确保软件能够满足用户的需求,修复已知的错误,提高软件的质量和可靠性。
常见问题与原因
常见问题
软件崩溃、数据丢失、功能异常、界面错误等。
原因
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图7.1 各类维护的比重
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
1. 非结构化维护和结构化维护 开发过程不采用软件工程方法,软件只有程序而无文档,维护工作困难,这是非结构化 维护;采用软件工程方法进行软件开发,各阶段均有相应的文档记录,则容易维护,这是结 构化维护。 (1)非结构化维护
因为只有源程序,没有文档或文档很少,维护活动只能从阅读、理解和分析源程序代 码开始,为后面的维护工作带来了极大地困难。
(2)结构化维护 软件开发过程按照软件工程方法进行,开发各阶段文档齐全,对于理解和掌握软件功
能与性能、数据结构、系统接口和设计约束有很大帮助。
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
维护工作的某个职责范围。维护管理员、修改负责人可以是指定 的某个人,也可以是一个包括管理人员、高级技术人员等在内的 小组。系统监督员可以有其他职责,但应具体分管某一个软件包。
每个维护申请提交给一个维护管理员,他负责把申请交给某 个系统监督员去评价。系统监督员是一位技术人员,他必须熟悉 产品程序的每一部分,当他做出评价后,修改负责人确定如何进 行修改。在维护人员对程序进行修改的过程中,配置管理员要严 格把关,控制修改范围,对软件配置进行审计。
在使用程序设计语言修改源代码时,以下修改最容易引人错误: 删除或修改一个子程序、语句标号和标识符。 改变程序代码的时序关系、占用存储的大小和逻辑运算符。 修改文件的打开或关闭。 改进程序的执行效率。 把设计上的改变翻译成代码的改变。 为边界条件的逻辑测试做出改变时。
每次维护任务完成后,还要对维护工作进行复审。并对以下问题做总结: 在目前情况下,设计、编码、测试中的哪一方面可以改进? 哪些维护资源应该有,但当前缺乏? 工作中主要的和次要的障碍是什么? 从维护申请的类型来看,是否应当有预防性维护?
项目七 7.2 软件维护活动
7.2.3 软件维护的副作用
软件维护的副作用是指因修改软件而造成的错误或其它不希望发生的情况,一般软件维 护产生的副作用有以下三种: 1.修改代码的副作用
项目七 软件维护
本章 要点
理解软件维护的概念; 掌握软件维护活动; 理解软件的可维护性及提高可维护性的方法; 了解软件的再生工程; 项目分析。
项目七 软件维护
学习内容
7.1 软件维护的概念 7.2 软件维护活动 7.3 软件可维护性 7.4 软件的逆向工程与再工程 7.5 结合项目进行分析——网上购书系统项目的维护
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
3. 软件维护的费用 软件维护的费用在总费用中的比重不断增加,已经上升到了70%~80%或者更多, 我们看 到的软件不断升级就是维护的体现。
项目七 7.2 软件维护活动
7.2.1 软件维护组织
任务1. 建立网上购书系统项目的软件维护组织 本项目软件维护的组织如图7.2所示。 其中,维护管理员、修改负责人和系统监督员等分别代表了
图7.2 软件维护的组织
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程 每一个维护申请提出,并经过评审确定需要维护时,按照图7.3所示的本项目软件维护工
作流程实施维护。 首先,确定维护要求。这需要维护人员与用户反复协商,弄清错误情况、对业务影响大
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程 为了正确、有效地修改源程序,通常需要经历以下三个步骤:
①分析和理解程序; ②修改程序; ③重新验证程序。
项目七 7.1 软件维护的概念
7.1.2 软件维护的内容
1.改正性维护(Corrective Maintenance) 改正性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。 2.适应性维护(Adaptive Maintenance) 适应性维护是指使用软件适应信息技术变化和管理需求变化而进行的维护工作。 3.完善性维护(Perfective Maintenance) 为扩充功能和改善性能而进行的修改就是完善性维护。 4.预防性维护 为改进软件效率、可靠性、可维修性 而进行的维护称预防性维护。
活动,用户手册的编写
项目七 7.1 软件维护的概念
7.1.1பைடு நூலகம்软件维护的意义
软件维护工作处于软件生命周期的最后阶段,也是最长的一个阶段。软件维护的主要工 作就是在软件运行和维护阶段对软件产品进行必要的调整和修改。软件维护主要具有以下五 个意义: 发现并改正运行中在测试阶段未能发现的潜在软件错误和设计缺陷; 根据实际情况,改进软件的设计,以增强软件的功能,提高软件的性能; 要求在当前环境下已运行的软件能适应特定的硬件、软件、外部设备和通信设备等新 的工作环境,或适应已变动的数据或文件; 使投入运行的软件与其他相关的程序有良好的接口,以利于协同工作; 使运行软件的应用范围得到必要的扩充。
小以及用户对于修改的期望,并把这些情况存入故障数据库,然后由维护组织管理员确认维 护类型。
对于改正性维护申请,从评价错误的严重性开始。如果存在严重错误,则由管理员立即 组织有关人员进行问题分析,寻找错误根源,进行“救火”性的紧急维护;对于不严重的错 误,可根据任务情况,视轻重缓急,统筹协调处理。
对于适应性维护和完善性维护申请,应先确定每项申请的优先次序。严格按照优先次序 进行相应的维护工作,如果某项请求的优先次序非常高,就应立即开始维护工作;否则,就 同其它开发任务一起,统筹安排。
2. 软件维护的困难性 由于软件需求分析和开发方法的缺陷,造成了软件维护的困难性。这些困难具体表现在 以下六个方面。 (1)读懂别人编的程序困难。 (2)软件开发人员和软件维护人员在时间上的差异。 (3)文档的不一致。文档的不一致表现在各种文档之间的不一致以及文档与程序之间的不一 致。 (4)很多的程序在设计时没有考虑到将来的修改。 (5)软件的建立过程难以追踪,且若软件发行了多个版本,要追踪软件的演化非常困难。 (6)软件维护不是一项吸引人的工作,缺乏成就感。
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
1. 非结构化维护和结构化维护 开发过程不采用软件工程方法,软件只有程序而无文档,维护工作困难,这是非结构化 维护;采用软件工程方法进行软件开发,各阶段均有相应的文档记录,则容易维护,这是结 构化维护。 (1)非结构化维护
因为只有源程序,没有文档或文档很少,维护活动只能从阅读、理解和分析源程序代 码开始,为后面的维护工作带来了极大地困难。
(2)结构化维护 软件开发过程按照软件工程方法进行,开发各阶段文档齐全,对于理解和掌握软件功
能与性能、数据结构、系统接口和设计约束有很大帮助。
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
维护工作的某个职责范围。维护管理员、修改负责人可以是指定 的某个人,也可以是一个包括管理人员、高级技术人员等在内的 小组。系统监督员可以有其他职责,但应具体分管某一个软件包。
每个维护申请提交给一个维护管理员,他负责把申请交给某 个系统监督员去评价。系统监督员是一位技术人员,他必须熟悉 产品程序的每一部分,当他做出评价后,修改负责人确定如何进 行修改。在维护人员对程序进行修改的过程中,配置管理员要严 格把关,控制修改范围,对软件配置进行审计。
在使用程序设计语言修改源代码时,以下修改最容易引人错误: 删除或修改一个子程序、语句标号和标识符。 改变程序代码的时序关系、占用存储的大小和逻辑运算符。 修改文件的打开或关闭。 改进程序的执行效率。 把设计上的改变翻译成代码的改变。 为边界条件的逻辑测试做出改变时。
每次维护任务完成后,还要对维护工作进行复审。并对以下问题做总结: 在目前情况下,设计、编码、测试中的哪一方面可以改进? 哪些维护资源应该有,但当前缺乏? 工作中主要的和次要的障碍是什么? 从维护申请的类型来看,是否应当有预防性维护?
项目七 7.2 软件维护活动
7.2.3 软件维护的副作用
软件维护的副作用是指因修改软件而造成的错误或其它不希望发生的情况,一般软件维 护产生的副作用有以下三种: 1.修改代码的副作用
项目七 软件维护
本章 要点
理解软件维护的概念; 掌握软件维护活动; 理解软件的可维护性及提高可维护性的方法; 了解软件的再生工程; 项目分析。
项目七 软件维护
学习内容
7.1 软件维护的概念 7.2 软件维护活动 7.3 软件可维护性 7.4 软件的逆向工程与再工程 7.5 结合项目进行分析——网上购书系统项目的维护
项目七 7.1 软件维护的概念
7.1.3 软件维护的特点
3. 软件维护的费用 软件维护的费用在总费用中的比重不断增加,已经上升到了70%~80%或者更多, 我们看 到的软件不断升级就是维护的体现。
项目七 7.2 软件维护活动
7.2.1 软件维护组织
任务1. 建立网上购书系统项目的软件维护组织 本项目软件维护的组织如图7.2所示。 其中,维护管理员、修改负责人和系统监督员等分别代表了
图7.2 软件维护的组织
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程 每一个维护申请提出,并经过评审确定需要维护时,按照图7.3所示的本项目软件维护工
作流程实施维护。 首先,确定维护要求。这需要维护人员与用户反复协商,弄清错误情况、对业务影响大
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程
项目七 7.2 软件维护活动
7.2.2 软件维护工作流程
任务2.确立网上购书系统项目的软件维护工作流程 为了正确、有效地修改源程序,通常需要经历以下三个步骤:
①分析和理解程序; ②修改程序; ③重新验证程序。
项目七 7.1 软件维护的概念
7.1.2 软件维护的内容
1.改正性维护(Corrective Maintenance) 改正性维护是指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误。 2.适应性维护(Adaptive Maintenance) 适应性维护是指使用软件适应信息技术变化和管理需求变化而进行的维护工作。 3.完善性维护(Perfective Maintenance) 为扩充功能和改善性能而进行的修改就是完善性维护。 4.预防性维护 为改进软件效率、可靠性、可维修性 而进行的维护称预防性维护。
活动,用户手册的编写
项目七 7.1 软件维护的概念
7.1.1பைடு நூலகம்软件维护的意义
软件维护工作处于软件生命周期的最后阶段,也是最长的一个阶段。软件维护的主要工 作就是在软件运行和维护阶段对软件产品进行必要的调整和修改。软件维护主要具有以下五 个意义: 发现并改正运行中在测试阶段未能发现的潜在软件错误和设计缺陷; 根据实际情况,改进软件的设计,以增强软件的功能,提高软件的性能; 要求在当前环境下已运行的软件能适应特定的硬件、软件、外部设备和通信设备等新 的工作环境,或适应已变动的数据或文件; 使投入运行的软件与其他相关的程序有良好的接口,以利于协同工作; 使运行软件的应用范围得到必要的扩充。
小以及用户对于修改的期望,并把这些情况存入故障数据库,然后由维护组织管理员确认维 护类型。
对于改正性维护申请,从评价错误的严重性开始。如果存在严重错误,则由管理员立即 组织有关人员进行问题分析,寻找错误根源,进行“救火”性的紧急维护;对于不严重的错 误,可根据任务情况,视轻重缓急,统筹协调处理。
对于适应性维护和完善性维护申请,应先确定每项申请的优先次序。严格按照优先次序 进行相应的维护工作,如果某项请求的优先次序非常高,就应立即开始维护工作;否则,就 同其它开发任务一起,统筹安排。
2. 软件维护的困难性 由于软件需求分析和开发方法的缺陷,造成了软件维护的困难性。这些困难具体表现在 以下六个方面。 (1)读懂别人编的程序困难。 (2)软件开发人员和软件维护人员在时间上的差异。 (3)文档的不一致。文档的不一致表现在各种文档之间的不一致以及文档与程序之间的不一 致。 (4)很多的程序在设计时没有考虑到将来的修改。 (5)软件的建立过程难以追踪,且若软件发行了多个版本,要追踪软件的演化非常困难。 (6)软件维护不是一项吸引人的工作,缺乏成就感。