软件工程-第十五章-软件维护
软件工程 软件维护(共10张PPT)

预防性 维护4%
完善性 维护
50%
纠错性 维护 25%
适应性 维护21%
纠错性维护 适应性维护 完善性维护 预防性维护
用户
维护人员
严重
进行问
修改过
涉主及要到 用软到件测的开试软发阶的段件所的有技确阶术段。定。更
结构化维护 结构化维护
— —
指指软软件件开开改发发要过过程程求是是按按照照软软件件工工纠错性
评价错误
严重程度
或
不严重
安排改正 性维护
题分析 理解分析程序
安排计划修 改程序
维护实施 人
测试程序
适应性 完美性
或 确定数据结构、系统接口等特性。
适应性维护(Adaptive Maintenance)
员
主要用到测试阶段的技术。 涉及到软件开发的所有阶段。
低
评价优
先级
将改正错误列入计划 安
高
排
进行问
复审
软件维护的管理流程如图所示:
软件维护的管理流程
N
Y
N
Y
N Y
9.2 软件维护的特性
一、结构化维护与非结构化维护
M=P+K*EXP(C - D) M=P+K*EXP(C - D)
— 指软件开发过程是按照软件工
程方法,软件的维护过程,有一整套完整的方案、 管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分的估计,对于不妥的修改予以撤销。
二、软件支援技术
在软件维护阶段用于提高维护工作的效率和质 量的技术。主要用到测试阶段的技术。
(信息收集、错误原因分析、软件分析与理解、 维护方案评价、代码与文档的修改、修改后的确认。)
赵良《软件工程》软件维护

建立维护活动的登记制度以及规定评价
和评审的标准。
2021/8/17
10
软件维护的机构
2021/8/17
11
软件维护的副作用-源程序
通常对源程序的修改不能无计划地仓促上阵, 为了正确、有效地修改,需要经历以下三个步 骤。 分析和理解程序 修改程序 重新验证程序
2021/8/17
12
(1)修改代码的副作用
2021/8/17
3
改正性维护
在软件交付使用后,因开发时测试的不彻 底、不完全,必然会有部分隐藏的错误遗 留到运行阶段。
这些隐藏下来的错误在某些特定的使用环 境下就会暴露出来。
为了识别和纠正软件错误、改正软件性能 上的缺陷、排除实施中的误使用,应当进 行的诊断和改正错误的过程就叫做改正性 维护。
2021/8/17
2021/8/17
29
4
适应性维护
在使用过程中, 外部环境(新的硬、软件配置) 数据环境(数据库、数据格式、数据输 入/输出方式、数据存储介质)可能发生 变化。
为使软件适应这种变化,而去修改软件的 过程就叫做适应性维护。
2021/8/17
5
完善性维护
在软件的使用过程中,用户往往会对软件 提出新的功能与性能要求。
为了满足这些要求,需要修改或再开发软 件,以扩充软件功能、增强软件性能、改 进加工效率、提高软件的可维护性。
2021/8/17
16
软件的可维护性
软件可维护性是指纠正软件系统出现的错 误和缺陷,以及为满足新的要求进行修改、 扩充或压缩的容易程度。
可维护性、可使用性、可靠性是衡量软件 质量的主要质量特性。
软件的可维护性是软件开发阶段各个时期 的关键目标。
《软件工程》软件维护

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

(4)充分利用交叉引用表、符号表及其他由 编译程序或汇编程序等提供的交叉引用信息; (5)必须非常谨慎地对程序进行修改。如果 可能,要尊重程序的风格和格式,要说明需要 变更的程序指令; (6)在删除某些代码时,要确认代码确实不 再使用;
(7)不要试图共享程序已有的临时变量或工 作区,需要时可插入新的变量以避免冲突; (8)保持详细的维护活动和维护结果记录; (9)如果程序结构混乱,修改受到干扰,可 抛弃程序重新编写; (10)插入出错检验。
15.4.3 软件维护的费用 软件维护的费用在总费用中的比重是在不断增 加的,据统计数字分析,它在1970年占 35%~40%,1980年上升到40%~150%, 1990年上升到70%~80%。
软件维护费用不断上升,这只是软件维护有形 的代价。另外还有无形的代价,即要占用更多 的硬件、软件和软件工程师等资源,这样一来, 新的开发工作就因投入的资源不足而受到影响。
3.完善性维护 用户在使用软件的过程中,用户的工作流程、 应用环境都会发生变化,因此会提出增加新的 功能和改善性能的要求。这种增加软件功能、 增强软件性能和提高软件运行效率而进行的维 护活动称为完善性维护。
4.预防性维护 为了提高软件的可维护性和可靠性而对软件进 行的修改称为预防性维护。
15.5 软件维护的实施
15.5.1 维护的组织 为保证软件维护的质量,必须要为软件维护活 动建立维护机构。这种维护机构通常以维护小 组形式出现。维护小组分为临时维护小组和长 期维护小组两种类型。
1.临时维护小组 临时维护小组执行一些特殊的或临时的维护任 务。 2.长期维护小组 对长期运行的复杂系统进行维护必须有一个稳 定的维护小组才可以完成任务。
软件维护整理ppt课件

结构化维护
• 在结构化维护的过程中,所开发的软件具有各 个阶段的文档,它对于理解和掌握软件的功能、 性能、体系结构、数据结构、系统接口和设计 约束等有很大的作用。维护时,开发人员从分 析需求规格说明开始,明白软件功能和性能上 的改变,对设计说明文档进行修改和复查,再 根据设计修改进行程序变动,并用测试文档中 的测试用例进行回归测试,最后将修改后的软 件再次交付使用。这种维护有利于减少工作量 和降低成本,大大提高软件的维护效率。
• 许多大型软件公司为维护已有软件耗费大量人 力、财力。因此,必须建立一套评估、控制和 实施软件维护的机制,这就是本章重点讨论的 内容。
内容提要
▪ 软件维护的定义 ▪ 软件维护的类型 ▪ 结构化维护VS非结构化维护 ▪ 影响软件维护工作量的因素 ▪ 软件维护的过程 ▪ 可维护性 ▪ 软件维护的管理
结构化维护 非结构化维护
文档 程序
结构化维护VS非结构化维护
结构化维护
维护要求 y 文件有吗 n
非结构化维护
分析设计
苦读代码
制定计划 修改计划
编码
复审通过 y
n
n n
交付使用
找到问题 y
编码
复审通过 y
维护要求
软件
配置
代码
评价设计
评价代码
非
结
结
构 化
计划途径
?
构 化
维 护
修改设计
维 护
重编程序
重编程序
远程维护 √ 现场维护
的测评,如管理人员只能对管理人员
软件:√ 纠错维护
进行测评,教师只能测评教师。
适应维护
维护类型
完善维护
硬件: 系统设备
外部设备
《软件维护整》课件

软件维护的重要性
确保软件质量
通过软件维护,可以发现和修复 软件中存在的问题,提高软件的 质量和可靠性。
延长软件寿命
通过及时的软件维护,可以延长 软件的寿命,使其更好地适应不 断变化的应用需求。
提高用户满意度
通过软件维护,可以改进和完善 软件的功能和性能,提高用户的 使用体验和满意度。
软件维护的分类
代码质量参差不齐
由于历史原因和技术限制,一些软件系统的代码质量可能较差,这增 加了维护的难度和风险。
文档不完整或缺失
在软件开发过程中,如果没有及时编写或更新文档,可能会给软件维 护带来困难。
依赖性高
软件系统可能依赖于许多外部因素,如硬件、其他软件或网络资源。 这些因素的变化可能会影响软件系统的正常运行。
逆向工程技术
逆向工程
通过反编译、反汇编等技术手段,将软件程序还 原成可读性更高的源代码或设计文档。
逆向工程工具
如IDA Pro、Ghidra、Hopper等,支持多种编程 语言和平台。
逆向工程流程
包括反编译、反汇编、代码分析等步骤,帮助维 护人员理解软件结构和实现逻辑。
代码审查技术
代码审查
通过多人对代码进行审核和检查,确保代码 质量符合要求。
缺陷修复
根据测试结果和用户反馈,修复软件中存在 的缺陷和错误。
功能改进
根据用户需求和软件维护计划,对软件功能 进行改进和优化。
代码重构
对软件代码进行重构,优化软件结构和代码 质量,提高软件可维护性和可扩展性。
维护测试与验收
功能测试
对修复和改进后的软件进行功能测试,确保软件 功能正常。
安全测试
对修复和改进后的软件进行安全测试,确保软件 安全性得到保障。
软件工程学维护
20-40倍。 ② 使用现代设计概念重新设计软件体系结构,对未来的维护
工作将有很大的帮助。 ③ 由于软件原型已经存在,软件开发生产率将远远高于平均
水平。 ④ 由于用户已经有较丰富的软件使用经验,所以很容易确定
为了使软件和变化了的环境(如软/硬件升级、新数据库 等)适当地配合而修改软件的活动。约占全部维护活动的18 % ~25%。
§1. 软件维护的定义
③ 完善性维护(perfective maintenance) 为了增加软件新功能、改已有功能(如改造界面)、增强软
件性能、提高运行效率等,而修改软件的活动。 约占全部维护活动的50% ~66%。
④ 预防性维护(preventive maintenance)
为了改进未来的可维护性或可靠性,或为了给未来的改进奠 定更好的基础而主动修改软件的活动。与其它维护活动共占总 维护的4%左右。
注:① 一般维护的工作量占生存周期70%以上,维护成本约 为开发成本的4倍;
② 文档维护与代码维护同样重要。
§2. 软件维护的特点
1、建立维护组织(maintenance team)
在维护活动开始之前就明确维护责任是十分必要的,这样可 以大大减少维护过程中可能出现的混乱。
§3. 软件维护过程
钱太少 要
任务评价
变
不干!
求 维
客户要求
化
护
授
权
人
任务评价
维护管理员
系 统 管 理 员
2、维护报告
§3. 软件维护过程
⑴ 维护要求表(Maintenance Request Form)
软件工程 维护
软件工程维护在当今数字化的时代,软件已经成为了我们生活和工作中不可或缺的一部分。
从手机上的各种应用程序,到企业内部的复杂业务系统,软件无处不在。
然而,软件的开发并不是一次性的工作,其后续的维护同样至关重要。
软件工程维护,简单来说,就是在软件产品交付使用之后,为了改正错误、改进性能、适应新的环境和需求等目的,对软件进行的修改和完善工作。
它是软件工程生命周期中的一个重要阶段,直接影响着软件的质量、可靠性和用户满意度。
软件维护的重要性不言而喻。
首先,随着时间的推移,用户的需求可能会发生变化。
新的业务流程、法规要求或者市场竞争压力都可能促使软件需要进行功能上的调整和扩展。
如果不能及时进行维护,软件可能会逐渐变得过时,无法满足用户的需求,从而失去其价值。
其次,软件在运行过程中可能会暴露出各种问题,比如错误、漏洞或者性能瓶颈。
这些问题如果不加以解决,不仅会影响用户的使用体验,还可能会给企业带来严重的损失,比如数据丢失、业务中断等。
再者,技术的不断发展也要求软件进行相应的更新。
新的操作系统、硬件设备、编程语言和开发工具的出现,都可能导致现有的软件需要进行适配和优化,以保持其兼容性和竞争力。
软件维护工作大致可以分为四种类型:改正性维护、适应性维护、完善性维护和预防性维护。
改正性维护主要是针对软件在运行过程中发现的错误进行修复。
这些错误可能是由于设计缺陷、编码错误或者测试不充分等原因导致的。
例如,一个金融软件在计算利息时出现了错误,就需要进行改正性维护来修复这个问题,以确保计算结果的准确性。
适应性维护则是为了使软件能够适应运行环境的变化而进行的维护工作。
比如,当操作系统从 Windows 7 升级到 Windows 10 时,软件可能需要进行适应性维护,以确保在新的操作系统上能够正常运行。
完善性维护是为了增强软件的功能和性能而进行的维护工作。
这可能包括增加新的功能模块、优化算法以提高运行速度、改进用户界面以提高用户体验等。
软件工程中的软件维护流程
软件工程中的软件维护流程软件维护是软件工程中不可缺少的一个环节。
它包括对软件进行修改、调试、优化和完善等活动,以确保软件能够持续运行并满足用户需求。
本文将介绍软件工程中常见的软件维护流程。
一、问题识别和报告软件维护流程的第一步是问题的识别和报告。
这是通过用户反馈、错误日志等方式来获取软件问题的信息。
在识别问题时,可以针对软件的功能、性能、可靠性等方面进行分类,以便更好地定位和解决问题。
二、问题诊断和确认在问题报告后,维护团队将进行问题诊断和确认。
这需要对问题进行详细分析和调查,以找出问题的根本原因。
同时,还需确认问题是否确实存在,并与用户进行沟通和确认。
只有明确问题后,才能制定有效的解决方案。
三、问题解决问题解决是软件维护流程的核心环节。
根据问题的性质和严重程度,维护团队将采取不同的策略和方法来解决问题。
可能的解决方案包括修复代码错误、重新设计功能模块、优化性能等。
在解决问题的过程中,需要进行详细的测试和验证,以确保解决方案的有效性和稳定性。
四、验证和发布解决问题后,维护团队将对软件进行验证和测试,以确保问题已经完全解决,并且没有引入新的问题。
验证过程中需要进行功能测试、性能测试、兼容性测试等,以确保软件的整体质量。
通过验证后,维护团队将发布修复版本,供用户升级使用。
五、文档更新在软件维护流程中,不可忽视的一个环节是文档的更新。
随着问题的解决和软件的升级,相应的文档也需要进行更新,包括用户手册、技术文档、API文档等。
更新文档可以帮助用户更好地理解和使用软件,减少后续的问题和困惑。
六、反馈和监控软件维护流程的最后一步是反馈和监控。
这需要与用户建立有效的沟通渠道,及时获取用户的反馈和建议。
同时,还需要对软件进行持续监控,以及时发现和解决潜在的问题。
反馈和监控可以帮助持续改进软件的质量和性能。
综上所述,软件维护流程包括问题识别和报告、问题诊断和确认、问题解决、验证和发布、文档更新以及反馈和监控等环节。
软件工程基础之 软件维护
可维护性改进
代码重构
对代码进行重新组织和优化,使其更易于阅读、理解和维护 。
文档更新
更新软件文档,以反映软件的新功能、性能优化和修复的缺 陷,方便后续维护和开发。
05
适应性维护
环境变化处理
操作系统升级
当操作系统升级时,软件也需要进行相应的调整以适应新的操作系统。这可能涉及到修改软件与操作系统的接口、更 新系统调用等。
软件版本控制
为了确保软件的版本兼容性和升级的顺利进行,需要进行软件版本的控制和管理 。这可能涉及到版本号的分配、版本升级流程的制定和实施等。
兼容性测试
在软件升级后,需要进行兼容性测试以确保新版本软件与旧版本软件的兼容性。 这可能涉及到测试用例的设计、测试环境的搭建和测试执行等。
THANKS
感谢观看
04
完善性维护
功能增强
增加新功能
根据用户需求或市场需求,对软 件进行功能扩展或升级,增加新 的特性和功能。
优化现有功能
对现有功能进行改进和调整,提 高其性能、稳定性和用户体验。
性能优化
提升运行速度
通过优化算法、减少冗余计算或使用 更高效的存储结构等方式,提高软件 的运行速度。
降低资源消耗
优化软件对内存、CPU等资源的利用 ,降低软件运行成本和维护成本。
文档化与标准化
文档是软件维护的重要依据,包 括系统架构、系统功能、接口协
议等方面的文档。
标准化则是指遵循统一的编码规 范、命名规范、接口规范等,提
高代码的可读性和可维护性。
文档化和标准化有助于提高软件 的可维护性和可扩展性,降低维
护成本。
03
改正性维护
错误识别与定位
错误报告
01
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15.1.1 软件维护的定义 属于软件维护工作的活动不只是对软件中的错 误进行修改,只要是因为以下的原因之一产生 的活动都属于软件维护:
(1)对软件中的错误进行修改 (2)因软件在使用过程中的软硬件环境发生 变化,需要修改软件以适应这种变化。 (3)用户要求增加新的功能,提高软件的性 能等。 (4)为适应新的工作要求而对软件部分或整 体进行再工程(reengineer)
3.文档副作用 如果对可执行软件的修改没有反映在文档中, 就会产生如下文档副作用: (1)修改交互输入的顺序或格式,没有正确 的记入文档中。 (2)过时的文档内容、索引和文本可能造成 冲突等。
15.6 维护“老化代码“
对于那些使用超过15年的程序,这些程序通常 称为“老化代码”。 对于这样没有完全软件配置和良好设计的“老 化代码”,维护人员可能不太熟悉。为了能够 有效地维护它们,Yourdon提出了以下的维护 建议:
(4)充分利用交叉引用表、符号表及其他由 编译程序或汇编程序等提供的交叉引用信息; (5)必须非常谨慎地对程序进行修改。如果 可能,要尊重程序的风格和格式,要说明需要 变更的程序指令; (6)在删除某些代码时,要确认代码确实不 再使用;
(7)不要试图共享程序已有的临时变量或工 作区,需要时可插入新的变量以避免冲突; (8)保持详细的维护活动和维护结果记录; (9)如果程序结构混乱,修改受到干扰,可 抛弃程序重新编写; (10)插入出错检验。
1.改正性维护 测试并不能发现所有的错误,因此必然有一部 分隐含的错误在使用时才会被发现。对此类错 误进行确定和修改的过程,就称为改正性维护。
2.适应性维护 随着计算机的飞速发展,计算机的软硬件环境 在不断发生变化,硬件的性价比越来越高,操 作系统的功能越来越强,越稳定,使用越来越 方便。为了使应用软件适应这种变化而修改软 件的过程称为适应性维护。
度量可靠性的方法,主要有两类: 1)根据程序存在的错误的统计数字,进行可 靠性预测。 2)根据程序复杂性,预测软件可靠性。 3)可测试性 4)可修改性
5)可移植性 6)效率 7)可使用性 8)其他间接定量度量可维护性的方法
Gilb提出了与软件维护期间工作量有关的一些 数据,可以使用它们间接地对软件的可维护性 做出估计。 问题识别的时间; 因管理活动拖延的时间; 收集维护工具的时间; 分析、诊断问题的时间; 修改规格说明的时间;
软件工程
Software Engineering
第十五章 软件维护
15.1 15.2 15.3 15.4 15.5 15.6 15.7 小结
软件维护的概念 软件维护的内容 软件可维护性 软件维护的特点 软件维护的实施 维护“老化代码“ 逆向工程和再工程
15.1 软件维护的概念
15.5.3 维护技术 在维护活动中,按目的不同分为两类维护技术, 分别是面向维护的技术和维护支援技术。
1.面向维护的技术 面向维护的技术涉及软件开发的所有阶段。 在需求分析阶段,保证对用户的需求没有矛盾 和易于理解,可以减少软件中的错误。 在设计阶段,考虑计算机的发展趋势,充分考 虑将来改动或扩充的可能性。 在测试阶段,设计完善的测试方法,尽量发现 存在的错误,保存测试用例和测试数据等。
用于软件维护工作的活动可分为生产性活动和 非生产性活动两种。生产性活动包括分析评价、 修改设计和编写程序代码等。非生产性活动包 括理解程序代码功能、解释数据结构、接口特 点和设计约束。
维护活动总的工作量由下式表示: M = P + K· exp(C-D) 其中:M表示维护工作的总工作量;P表示生 产性活动工作量;K表示经验常数;C表示复 杂性程序;D表示维护人员对软件的熟悉程度。
维护的副作用有编码副作用、数据副作用和文 档副作用三种。
1.编码副作用 在使用程序设计语言修改源代码时可能引入如下错误, 这些错误要到运行时才能被发现: (1)删除或修改一个子程序、一个标号和一个标识 符。 (2)改变程序代码的时序关系,改变占用存储的大 小,改变逻辑运算符。 (3)为边界条件的逻辑测试做出改变。 (4)改进程序的执行效率。 (5)把设计上的改变翻译成代码的改变。
2.维护支援技术 维护支援技术包括下列各方面的技术: (1)信息收集。 (2)错误原因分析。 (3)软件分析与理解。 (4)维护方案评价。 (5)代码与文档修改。 (6)修改后的确认。 (7)远距离的维护。
15.5.4 维护的副作用 维护的目的是为了延长软件的寿命并让其创造 更多的价值,经过一段时间的维护,软件的错 误被修正了,功能增强了。但同时,因为修改 而引入的潜伏的错误也增加了。这种因修改软 件而造成的错误或其他不希望出现的情况称为 维护的副作用。
15.7 逆向工程和再工程
逆向工程过程制从源代码中抽取出来的设计信 息。作为逆向工程的评价,要求抽取出来的信 息的抽象程度越高越好。下面是逆向工程中得 到的信息抽象层次(从低到高): 软件过程的设计表示、程序和数据结构信息、 数据和控制流模型和实体-关系模型。
2.维护过程 一个维护申请提出之后,经评审需要维护,则按下列 过程实施维护: (1)首先确定要进行维护的类型。 (2)对改正性维护从评价错误的严重性开始。 (3)对适应性和完善性维护。 (4)实施维护任务。 (5)“救火”维护。
3.维护的复审 在维护任务完成后,要对维护任务进行复审。 进行复审时要回答下列问题; (1)评价维护的情况,即设计、代码和测试 的哪些方面已经完成? (2)对软件开发工作有哪些改进要求? (3)对于维护工作,主要的、次要的障碍是 什么?
定位错误
修改设计
重编程序
重编程序
回归测试
回归测试
交付使用
15.4.2 维护的困难性 造成软件维护困难的根本原因是缺乏和软件有 关文档。而缺乏文档又是不按照科学的软件工 程方法来开发软件造成的。在软件维护中的困 难表现在如下几个方面:
(1)读懂别人的源程序是困难的。 (2)文档的不一致性。 (3)软件开发和软件维护在人员和时间上的 差异。 (4)软件维护不是一项吸引力的工作。
质量检查表是一个问题清单,评价者针对检查 表上的每一个问题,依据自己的定性判断,回 答“Yes”或者“No”。用这个清单对质量进行 分析。质量测试与质量标准则用于定量分析和 评价程序的质量。下面是对七个软件特性的描 述。
(1)可理解性 可理解性是指人们通过阅读源代码和相关文档, 了解程序功能及其如何运行,对源程序的理解 的容易程序。
3.完善性维护 用户在使用软件的过程中,用户的工作流程、 应用环境都会发生变化,因此会提出增加新的 功能和改善性能的要求。这种增加软件功能、 增强软件性能和提高软件运行效率而进行的维 护活动称为完善性维护。
4.预防性维护 为了提高软件的可维护性和可靠性而对软件进 行的修改称为预防性维护。
2.结构化维护 用软件工程思想开发的软件具有各个阶段的文 档,这对于理解、掌握软件功能、性能、软件 结构、数据结构、系统接口和设计约束有很大 作用。
我们可以从下面的图中看出结构化维护和非结 构化维护在维护活动中的区别:
维护要求 是 是否结构化 求 评价设计 阅读源代码 否
图15-2
计划途径
15.5 软件维护的实施
15.5.1 维护的组织 为保证软件维护的质量,必须要为软件维护活 动建立维护机构。这种维护机构通常以维护小 组形式出现。维护小组分为临时维护小组和长 期维护小组两种类型。
1.临时维护小组 临时维护小组执行一些特殊的或临时的维护任 务。 2.长期维护小组 对长期运行的复杂系统进行维护必须有一个稳 定的维护小组才可以完成任务。
15.3 软件可维护性
15.3.1 软件可维护性的定义 软件可维护性就是指进行维护活动时的容易程 度。
目前广泛使用的是用如下的七个特性来衡量程 序的可维护性。而且对于不同类型的维护,这 七种特性的侧重点也不相同。表15--1显示了 在各类维护中应侧重哪些特性。图中的“√” 表示特别需要的特性。
15.5.2 维护的流程 软件维护活动和软件开发一样,要有严格的规 范,才能保证软件的质量。一般执行维护活动 的流程如下:
(3)进行维护并做详细记录。 (4)复审。
1.制定维护申请报告 应该以文档的方式提出所有软件维护申请。由 申请维护的人员(用户、开发人员)填写。
(2)可靠性 可靠性指按照用户的要求和设计目标,一个程 序在给定的一段时间内正确执行的概率。
用于衡量软件可靠性的标准主要有 MTBF = MTTF+MTTR 其中:MTBF是平均失败间隔时间(Mean Time Between Failures) MTTF是平均无效时间(Mean Time To Failure) MTTR是平均修复时间(Mean Time To Repair error)
15.1.2 影响维护工作的因素 (1)系统大小 。 (2)系统的开发文档 。 (3)在程序中使用的、数学模型、任务的难 度、IF嵌套深度、索引或下标数等,对维护工 作量都有影响。
15.1.3 维护成本 软件的维护成本体现为有形和无形两类。
15.2 软件维护的内容
软件维护有改正性维护、适应性维护、完善性 维护和预防性维护。
(1)在进入“紧急维修”之前,必须研究程 序的使用环境及有关资料,尽可能得到更多的 背景信息; (2)力图熟悉程序的所有控制流程。最初可 以忽略某些编码细节。如果设计存在,则可利 用它们来帮助画出结构图和高层流程图; (3)评价现有文档的可用性。若有帮助,可 利用它们在源程序清单中插入注释;