《软件工程》第10章 软件维护
《软件工程》软件维护

《软件工程》软件维护在当今数字化的时代,软件如同无处不在的小精灵,默默为我们的生活和工作提供着各种便捷服务。
从手机里的各种应用程序,到企业中复杂的业务系统,软件已经深深融入了我们生活的方方面面。
然而,就像任何一件物品都需要定期保养和维修一样,软件也需要精心的维护,以确保其持续稳定地运行,为我们提供可靠的服务。
那么,什么是软件维护呢?简单来说,软件维护就是在软件已经交付使用之后,为了改正错误、改进性能、适应新的环境和需求等而对软件进行的修改和完善工作。
软件维护可不是一件轻松的事儿。
它不像软件开发那样,有着明确的开始和结束时间,而是一个持续不断的过程。
在软件的整个生命周期中,维护阶段往往占据了大部分的时间和资源。
首先,我们来谈谈纠错性维护。
这就好比是给软件“治病”。
在软件开发过程中,尽管开发者们已经尽力做到尽善尽美,但难免还是会有一些小错误或者漏洞隐藏其中。
当这些错误在软件运行过程中暴露出来,影响了软件的正常功能时,就需要进行纠错性维护。
比如,某个应用程序突然闪退,或者计算结果出现错误,这时候就需要开发者迅速定位问题,修改代码,让软件恢复正常。
接下来是适应性维护。
随着时间的推移,软件运行的环境可能会发生变化。
比如操作系统升级了,新的硬件设备出现了,或者法律法规有了新的要求。
为了让软件能够在这些新的环境中继续正常运行,就需要进行适应性维护。
举个例子,当新的操作系统版本发布后,可能会导致原本兼容的软件出现兼容性问题,这时候就需要对软件进行修改,使其能够在新的操作系统上顺利运行。
还有完善性维护,这是为了提升软件的性能和功能。
用户在使用软件的过程中,可能会提出新的需求,或者开发者发现了可以改进的地方。
比如,为软件增加新的功能模块,优化用户界面,提高软件的响应速度等等。
这种维护不仅能够让用户获得更好的使用体验,还能增强软件的竞争力。
性能优化维护也是至关重要的一环。
随着软件使用时间的增长,数据量的增加,可能会导致软件的运行速度变慢。
软件工程 软件维护(共10张PPT)

为了进一步改善软件的可靠性和易维护性,或者为 将来的维护奠定更好的基础而对软件进行修改。
第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)
要使运行的软件能适应运行环境的变动而修改软件 的过程。
《软件工程》教学教案

《软件工程》
配套教学教案第1章软件工程概述
第2章可行性研究与软件工程开发计划
圆圈中的字母代表各项子任务的开始或结束事件的编号,箭头上方的数字表示完成各项子任务所需的周数。
要求:
(1)标出每个事件的最早时刻、最迟时刻与机动时间。
估算完成该工程项目总共需要多
第3章需求分析
第4章概要设计
第5章详细设计
第6章软件实现
第7章软件维护
第8章面向对象方法、UML及应用
第9章 WebApp软件工程
第10章软件重用和再工程
第11章软件工程管理
第12章实例——网上商品竞拍系统。
软件工程基础之 软件维护

可维护性改进
代码重构
对代码进行重新组织和优化,使其更易于阅读、理解和维护 。
文档更新
更新软件文档,以反映软件的新功能、性能优化和修复的缺 陷,方便后续维护和开发。
05
适应性维护
环境变化处理
操作系统升级
当操作系统升级时,软件也需要进行相应的调整以适应新的操作系统。这可能涉及到修改软件与操作系统的接口、更 新系统调用等。
软件版本控制
为了确保软件的版本兼容性和升级的顺利进行,需要进行软件版本的控制和管理 。这可能涉及到版本号的分配、版本升级流程的制定和实施等。
兼容性测试
在软件升级后,需要进行兼容性测试以确保新版本软件与旧版本软件的兼容性。 这可能涉及到测试用例的设计、测试环境的搭建和测试执行等。
THANKS
感谢观看
04
完善性维护
功能增强
增加新功能
根据用户需求或市场需求,对软 件进行功能扩展或升级,增加新 的特性和功能。
优化现有功能
对现有功能进行改进和调整,提 高其性能、稳定性和用户体验。
性能优化
提升运行速度
通过优化算法、减少冗余计算或使用 更高效的存储结构等方式,提高软件 的运行速度。
降低资源消耗
优化软件对内存、CPU等资源的利用 ,降低软件运行成本和维护成本。
文档化与标准化
文档是软件维护的重要依据,包 括系统架构、系统功能、接口协
议等方面的文档。
标准化则是指遵循统一的编码规 范、命名规范、接口规范等,提
高代码的可读性和可维护性。
文档化和标准化有助于提高软件 的可维护性和可扩展性,降低维
护成本。
03
改正性维护
错误识别与定位
错误报告
01
《软件工程》教学课件09软件维护等

完善性维护
为了满足用户新的需求或改进软件性 能而进行的修改和增强。
预防性维护
为了预防软件可能出现的问题而进行 的修改,如优化代码结构、提高系统 稳定性等。
常用软件维护技术
程序理解技术
通过阅读源代码和相关文档,理解软件的内部结构和功能。
重构技术
在不改变软件外部行为的前提下,对软件内部结构进行调整和优化, 提高软件的可维护性。
代码重构
通过对代码进行重构,提高代码的可 读性、可维护性和可扩展性,降低未 来维护的难度。
03 软件维护策略与技术
软件可维护性度量指标
可理解性
软件内部逻辑结构、 数据结构和代码的可 读性。
可测试性
软件进行测试的难易 程度,包括测试数据 的准备和执行测试的 自动化程度。
可修改性
软件进行修改、增加 或删除功能的容易程 度。
错误来源
错误可能来源于需求分析、设计、编码、测试等 各个阶段,因此需要在整个软件开发生命周期中 持续进行错误跟踪和管理。
纠正措施
纠正措施可能包括修改源代码、更新文档、重新 进行测试等,以确保错误得到彻底修复。
适应性维护
01
02
03
适应环境变化
随着外部环境的变化,如 操作系统升级、数据库迁 移等,软件需要进行适应 性维护以适应新的环境。
软件维护分类
根据维护的性质和目的,软件维护可 分为改正性维护、适应性维护、完善 性维护和预防性维护。
软件维护目标与意义
软件维护目标
确保软件的持续可用性、可靠性和效率,同时满足用户和业务需求的变化。
软件维护意义
延长软件生命周期,提高软件质量,降低软件总成本,增强用户满意度。
软件维护过程模型
软件工程——软件维护

将软件人员抽调到维护工作中,使得其它软件 开发过程受到干扰
2023/11/3
维护的工作可划分成:
生产性活动 如,分析评价、修改设计、编写程 序代码等
非生产性活动 如,程序代码功能理解、数据结 构解释、接口特点和性能界限分析等
2023/11/3
在软件维护中,影响维护工作量的因素主要 有以下六种:
二、软件维护分类
按照维护的起因分类四类: 纠错性维护 适应性维护 完善性维护 预防性维护
2023/11/3
1. 纠错性维护(Corrective Maintenance)
——为改正软件系统中潜藏的错误而进行的活动。
纠错性维护是指在系统开发阶段已发生而系统测试阶段尚未发 现的错误。这方面的维护工作量占整个维护工作量的17%21%。所发现的错误有的不太重要,不影响系统的正常运行 ,其维护工作可随时进行;而有的错误非常重要,甚至影响整 个系统的正常运行,其维护工作必须制定计划,进行修改,并 且要进行复查和控制。
系统的大小 系统规模越大,其功能就越复杂,软件维护的工 作量也随之增大。
程序设计语言 使用功能强大的程序设计语言可以控制程序的规 模。语言的功能越强,生成程序的模块化和结构 化程度越高,所需的指令数就越少,程序的可读 性越好。
2023/11/3
系统年龄 系统使用时间越长,所进行的修改就越多,而多 次的修改可能造成系统结构混乱。由于维护人员 经常更换,程序变得越来越难于理解,加之系统 开发时文档不齐全,或在长期的维护过程中文档 在许多地方与程序实现不一致,从而使维护变得 十分困难。
软件工程软件维护方案

软件工程软件维护方案1. 简介1.1 目的1.2 范围2. 定义2.1 软件维护2.2 维护类型2.3 维护流程3. 维护任务3.1 缺陷修复3.2 功能优化3.3 安全补丁3.4 数据备份与恢复4.1 预防性维护 4.2 紧急维护4.3 计划性维护5. 维护团队5.1 组成成员5.2 职责分工5.3 沟通协作6. 维护工具6.1 缺陷跟踪系统 6.2 版本控制工具 6.3 日志分析工具 6.4 监控工具7.1 编写规范7.2 更新频率7.3 文档存档与备份8. 测试与验证8.1 测试环境8.2 测试计划8.3 验证流程8.4 测试报告9. 风险管理9.1 常见问题与解决方案9.2 风险评估与规避措施10. 升级与迁移10.1 新版本发布流程 10.2 数据迁移计划10.3 升级测试与验证11. 经费与资源分配11.1 维护经费11.2 维护资源12. 培训与知识分享12.1 维护团队培训12.2 知识分享平台13. 维护周期与退出策略 13.1 维护周期规划13.2 退出策略14. 附件14.1 维护记录表14.2 维护流程图14.3 维护工具手册法律名词及注释:1. 著作权:指对软件的创作权的保护,包括复制权、发行权、出租权等。
2. 商标:用于标识商品或服务来源的符号、名称、字样、图案、颜色或其组合。
3. 知识产权:包括著作权、专利权、商标权等。
4. 隐私保护:保护个人信息不被非法获取、使用和传播的措施。
5. 合同:双方或多方就软件维护相关事项达成的法律协议。
本文档涉及附件:1. 维护记录表:记录每次维护任务的具体内容、时间和人员。
2. 维护流程图:详细描述维护任务的流程和步骤。
3. 维护工具手册:包含维护团队使用的各种工具的操作指南。
软件工程软件维护方案

软件工程软件维护方案软件维护方案一、背景和目标在软件工程中,随着软件系统的不断发展和演进,软件维护成为一个重要的环节。
本文档旨在提供一个软件维护方案,以确保软件系统在使用过程中的持续稳定运行和性能优化。
二、维护团队和职责1·维护团队成员介绍:●维护团队的核心成员包括软件开发人员、测试人员和技术支持人员。
●软件开发人员负责分析和修复软件系统的错误,开发和实现新功能。
●测试人员负责执行系统测试和性能测试,以确保软件的稳定性和可靠性。
●技术支持人员负责处理用户报告的问题,并提供技术支持。
2·维护团队的职责:●分析和修复软件系统中的错误和缺陷。
●开发和实现新功能和改进。
●执行系统测试和性能测试,以确保软件的稳定性和可靠性。
●处理用户报告的问题,并提供技术支持。
●不断优化软件系统的性能。
三、维护流程1·故障管理流程:●用户报告故障。
●技术支持人员记录问题并分配给相应的开发人员。
●开发人员分析和修复问题,并进行代码审查和测试。
●测试人员验证修复后的软件系统。
●技术支持人员向用户反馈问题的解决情况。
2·功能开发流程:●提取并分析用户需求。
●开发团队设计和实现新功能。
●测试团队执行系统测试和性能测试。
●技术支持团队提供培训和支持。
四、维护计划1·错误修复计划:●优先级高的错误将在24小时内得到修复。
●优先级中等的错误将在72小时内得到修复。
●优先级低的错误将在7个工作日内得到修复。
2·功能开发计划:●按照优先级和复杂程度来安排功能开发的优先顺序。
●每个开发周期为2周,在每个周期结束时进行内部测试和评估。
五、技术支持计划1·技术支持渠道:●提供在线技术支持系统,用户可以通过该系统提交问题和反馈。
●提供方式技术支持热线,接受用户的问题和反馈。
2·技术支持响应时间:●优先级高的问题将在4小时内得到响应。
●优先级中等的问题将在24小时内得到响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京大学远程教育课程
Software Engineering_Chapter10-2
问题定义
计划 时期 可行性论证 及软件计划
需求分析
概要设计 开发 时期
详细设计Байду номын сангаас
编码
测试 运行时期 运行/维护
北京大学远程教育课程
Software Engineering_Chapter10-3
本章主要内容
• 10.1 软件维护的定义,目标与任务 • 10.2 软件维护的类型 • 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-13
10.2.1 改正性维护(续)
• 实践表明,软件测试和排错不可能完全暴露并改正一个大 型软件系统中的所有错误。 • 经过统计分析,在典型的市场销售的软件包中,还有缺陷 的代码行约占代码总行数的3%。正式投入使用的软件中 含有错误是不足为奇的,即使是已运行多年的软件。 • 改正性维护举例:
北京大学远程教育课程
Software Engineering_Chapter10-6
10.1.3 软件维护的任务
• 一个软件开发机构60%的精力用在维护现有的软件上。随 着产品的增加,这个比例还将不断提高。不仅当前的软件 版本要维护,仍在使用的旧版本和即将投入使用的新版本 也将需要维护。 • 在软件整个运行周期中,不仅要解决原有问题,还要解决 修改过程中产生的新问题。因此软件维护是一个无穷尽的 过程。
Software Engineering_Chapter10-18
10.2.4 预防性维护
• 维护人员不要单纯等待用户提出维护的请求,而应该选择 那些还能使用数年、目前虽能运行,但不久就须作重大修 改或加强的软件,进行预先的维护。预防性维护可以改善 软件的可维护性,减少今后对它们维护时所需要的工作量。
北京大学远程教育课程
Software Engineering_Chapter10-7
正确认识软件维护工作
• 随着软件的频繁使用,某些原来隐藏的问题会逐渐暴露出 来,用户还会发现一些使用不便或不能满足需求之处,这 就有必要再次投入一定数量的人力和资源,开展软件的维 护工作。
• 如果不能充分认识到维护工作的重要性和迫切性,在技术 上、人力上和资金上给予足够的重视,必定使已开发的软 件无法发挥应有的效益。 • 在70年代后期,人们的主要注意力一直集中在开发阶段, 着重研究设计方法及其工具,忽视软件的维护。 • 近年来人们开始认识到维护好软件的重要意义,开始从思 想上、方法上重视软件的维护工作。
– Windows操作系统经常发布的安全性的各种补丁就是一种改正性 维护。 – 日常工作中的程序举例:数据库字段为null和空字符的判定。
北京大学远程教育课程
Software Engineering_Chapter10-14
10.2.2 适应性维护
• 适应性维护是指,为使软件系统适应不断变化的运行环境 而进行的修改过程。 • 随着计算机的飞速发展,外部环境(新的硬、软件配置) 或数据环境(数据库、数据格式、数据输入/输出方式、 数据存储介质)可能发生变化,为了使软件适应这种变化, 而去修改软件的过程叫做适应性维护。
集成
完善性维护 纠错性维护
模块 测试 8 % 7 %
模块 编码 5 % 6 % 5 %
设计
17 1/2 % 4% 60 1/2 % 18 %
其他维护
规格说明 分析 2 % 需求
适应性维护
67 %
维护
每种维护工作所占时间比例
软件生命周期各个阶段的相对近 似花费 北京大学远程教育课程 Software Engineering_Chapter10-20
第 10 章 软件维护
邢承杰 北京大学计算中心管理信息中心 E-mail: xingcj@
软件维护
软件维护是软件生存周期中最后一个阶段,也是历时最长、 人力和资源耗费最多的一个阶段。在前面讨论软件的开发 过程中,一直在强调软件的可维护性。这是因为一个软件 应用系统在交付使用之后,由于需求和环境的变化以及自 身暴露的问题,需要不断对它进行修改、扩充和完善,而 维护软件的成本往往远高于开发软件的成本。
北京大学远程教育课程 Software Engineering_Chapter10-11
10.2 软件维护的类型(续)
• 根据这三个软件维护的原因,将软件维护分成四种类型:
– 改正性维护 – 适应性维护
– 完善性维护
– 预防性维护
北京大学远程教育课程
Software Engineering_Chapter10-12
北京大学远程教育课程
Software Engineering_Chapter10-4
10.1.1 软件维护的定义
• 软件维护:软件系统已完成开发工作并交付使用以后,为 维持软件产品的持续、高效地运行和系统功能的不断升级 而需要对软件产品进行后续的修改工作。 • 维护是软件生命周期中花钱最多,延续时间最长的活动, 直至废弃不用为止。 • 开发时间 1-3年,维护时间可达5年到10年; • 开发费用1,维护费用2以上,甚至达到40-50倍。
北京大学远程教育课程
Software Engineering_Chapter10-22
10.3.1影响软件可维护性的软件特性
• 目前广泛使用的是用如下的七个特性来衡量程序的可 维护性。 可读性(可理解性) 可靠性 可测试性 可使用性 可修改性 可移植性 效率 • 而且对于不同类型的维护,这七种特性的侧重点也不 相同。
2. 因在软件使用过程中数据环境发生变化(例如一个事务 处理代码发生变化)或处理环境发生变化(例如安装了 新的硬件或操作系统),需要修改软件以适应这种变化。 3. 用户和数据处理人员在使用时常提出改进现有功能,增 加新的功能,以及改善总体性能的要求,为满足这些要 求,就需要修改软件把这些要求纳入到软件之中。
北京大学远程教育课程
Software Engineering_Chapter10-23
可读性(可理解性)
• 表明人们通过阅读源代码和相关文档,了解程序功能及其 如何运行的容易程度。 • 一个可理解的程序主要应具备以下一些特性:
– 模块化(模块结构良好、功能完善、简明)
– 不太复杂的算法流程结构和模块接口
北京大学远程教育课程
Software Engineering_Chapter10-5
10.1.2 软件维护的目标
• 软件维护工作的目标是:不断地、持续地改进、扩充、完 善软件系统,以提高系统运行效率,并尽量延长系统的使 用寿命,为用户创造更大的价值。 • 软件的维护与硬件维护不同,它不仅能改正软件中存在的 错误或误差,而且还能增强或扩充软件系统的整体功能。 • 据统计,为增强或扩充软件系统功能所做的维护要占到总 维护工作的75%左右,而为改正软件中错误所做的维护仅 占25%。
北京大学远程教育课程
Software Engineering_Chapter10-17
10.2.3完善性维护(续)
• 例如:
– Windows Service Pack的发布; – 修改一个计算工资的程序,使其增加新的扣除项目; – 研究生招生系统中“报名号”字段长度的问题和解决。
北京大学远程教育课程
北京大学远程教育课程
Software Engineering_Chapter10-15
10.2.2 适应性维护(续)
• 适应性维护包括如下内容:
– 硬件或支撑软件改变引起的变化。 – 将软件移植到新的机种上运行。
– 软件使用对象的较小变更。
– 文档维护及正常的用户服务。
• 适应性维护举例:
– 各种设备驱动程序的升级; – Office软件的升级; – 财务系统打印报表程序的升级。
本章主要内容
• 10.1 软件维护的定义,目标与任务
• 10.2 软件维护的类型
• 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-21
10.3 软件的可维护性
• 所谓可维护性,就是指衡量软件维护难易程度的一个指标。 也是评价软件质量的一个重要技术参数 • 那么如何评价一个软件系统维护工作的难易程度呢?从软 件工程的角度看,一个容易维护的软件系统,其运行的正 确性、可靠性、适应性就好,就容易被用户市场所接受。 目前广泛使用的是用如下的七个特性来衡量程序的可维护 性。
北京大学远程教育课程
Software Engineering_Chapter10-10
10.2 软件维护的类型
软件维护的内容非常广泛,人们一般将软件运行期间对 软件进行的修改称之为维护。要求进行软件维护的原因 很多,归结起来主要有三个原因: 1. 改正在特定的使用条件下暴露出来的一些潜在程序错误 或设计缺陷;
北京大学远程教育课程
Software Engineering_Chapter10-26
可靠性
• 指的是一个程序按照用户的要求和设计目标,在给定的一 段时间内正确执行的概率。 • 度量标准:
– MTTF-平均失效间隔时间
– MTTR-平均修复时间
– 有效性A(=MTBD/(MTBD+MDT )) 注:系统平均不工作间隔时间MTBD(Mean Time Between System Downs)、平均停机时间MDT(Mean Down Time)
10.2.1 改正性维护
• 改正性维护是在软件运行中发生异常或故障时进行的维护。
• 究其故障产生的原因,可能是开发过程中某个环节上的隐 蔽错误造成的。由于开发过程中实施的软件测试工作不彻 底、不完全,必然会有一部分隐藏的错误被带到运行阶段 来。这种错误或障碍常常是由于遇到了从未用过的输入数 据组合的情况或发生在与其他软件的接口、与硬件的接口 处出现的问题。