软件维护
软件系统的维护和故障处理

04 常见软件系统故障处理
操作系统故障处理
启动故障
检查硬件连接、启动配置和启动文件,使用恢复工具修复或重建 启动环境。
性能下降
分析系统资源使用情况,查找并结束占用大量资源的进程,优化 系统设置。
文件损坏或丢失
从备份中恢复损坏或丢失的文件,使用文件系统修复工具进行修 复。
数据库系统故障处理
数据库连接失败
提高维护效率的对策
01
建立完善的维护流程
制定详细的维护计划和流程,明确维护目标和步骤,提高维护效率和质
量。
02
加强技术培训和知识更新
定期组织技术培训和交流活动,提高维护人员的专业技能和知识水平。
03
引入自动化工具
采用自动化工具进行代码审查、测试、部署等操作,减少人工干预,提
高维护效率。
应对系统故障的应急措施
检查数据库服务状态、网络连通性和认证配置, 确保数据库可访问。
数据损坏
从备份中恢复损坏的数据,使用数据库修复工 具进行修复。
性能问题
优化数据库查询、调整数据库配置参数、增加硬件资源等。
网络通信故障处理
网络连通性故障
检查网络设备状态、网络配置和物理连接,确保网络通信正常。
数据传输故障
检查数据传输协议、端口配置和防火墙设置,确保数据传输不受阻 碍。
提供专业的培训课程
包括系统架构、编程语言、数据库管理等。
定期组织技术交流会
分享经验,共同学习新技术和方法。
鼓励维护人员参与开源项目
积累实践经验,提高解决问题的能力。
设立激励机制
鼓励维护人员积极学习,提高自身技能水平。
加强与用户的沟通与协作
01
建立用户反馈渠道:及时了解用 户对软件系统的意见和建议。
第八章软件维护

④ 软件维护工作是一项难出成果,大家都不愿意干的工作。
8.1.4 软件维护的代价
1.软件维护的工作量大 软件维护的费用在整个软件开发费用的 55%-70%,并且所占比例在逐年上升。而且维 护中还可能产生新的潜在错误。例如 1970 年维护费用约占软件开发费用的 40%,到 1990 年维护费用所占比例就超过了 70%。另外维护还包含了无形的资源占用,包括大量的使用 很多硬件、软件和软件工程师等资源。 在软件维护时,直接影响维护成本和工作量的因素很多,主要如下: (1)系统规模大小 系统规模大小直接影响维护工作量,系统规模越大,仅仅看懂理解就很困难,维护的 工作量就更多。系统规模主要由源代码行数、程序模块数、数据接口文件数、使用数据库 规模大小等因素衡量。 (2)程序设计语言 参与软件开发的人员都知道,解决相同的问题选择不同的程序设计语言,得到的程序 的规模可能不同,由此应选择功能强且适合解决问题的程序设计语言,这样可以使生成程 序的指令数更小。 (3)系统使用年限 使用年限长的老系统维护比新系统所需要的工作量更多。老系统因已经进行多次维 护,参与维护的人员也不断变化,因此这样的系统结构更乱,如果没有系统说明和设计文 档,维护就更加困难。 (4)软件开发新技术的应用 软件开发过程中,使用先进的分析和设计技术,以及程序设计技术,如:面向对象的技术、 构件技术、可视化程序设计技术等,可以减少维护工作量。 (5)设计过程中的技术 在具体对软件进行维护时,影响维护工作量的其他因素还有很多,例如设计过程中应 用的类型、数学模型、任务的难度、开关与标记、IF 嵌套深度、索引或下标数等。 2.软件维护工作量模型 维护活动分为生产性活动和非生产性活动。生产性活动包括分析评价、修改设计和编 写程序代码等。非生产性活动包括理解程序代码,解释数据结构,接口特点和设计约束等。 Belady 和 Lehman 提出软件维护工作模型:
软件维护的4类活动

软件维护是指软件从开始到结束的整个生命周期中,为了确保软件能够正确地实现需求、提高软件质量、降低软件维护成本而进行的一系列活动。
根据软件维护的定义,可以将软件维护的活动分为以下四类:
1.改正性维护:在软件交付使用后,由于在软件开发过程中产生的错误并没有完全被发现,导致在软件运行时会出现一些错误,所以需要开展改正
性维护。
2.适应性维护:随着计算机硬件和外部环境的变化,软件可能无法正常工作,因此需要开展适应性维护。
3.完善性维护:用户在使用软件的过程中,可能会提出一些新的需求和功能要求,为了满足用户的需求,需要对软件进行完善性维护。
4.预防性维护:为了预防软件在未来出现故障或过时,需要进行预防性维护,例如更新软件设计、改进软件性能等。
这些维护活动可以帮助软件更好地适应外部环境的变化,提高软件的质量和可靠性,延长软件的使用寿命。
第8章软件维护

软件维护步骤
4、修改程序的副作用
副作用是指因修改软件而造成的错误或其它不希望发生的情况。 1)编码副作用:在使用程序设计语言修改源代码时可能引起的错误, 如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系, 改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都 很容易引入错误,应特别小心。 2)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构 的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如 重新定义全局或局部常量,重新初始化控制标志或指针等,都容易产生设 计与数据不相容的错误,可通过详细设计文档对数据副作用加以控制。 3)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须 对相关技术文档进行修改,否则会导致 文档与程序功能不匹配,使文档不 能反映软件当前的状态。
软件维护步骤
5、重新验证程序:
1)静态确认; 2)计算机确认; 3)维护后的验收。
软件维护步骤
第三步:维护文档整理
记录一些与维护工作有关的数据信息,这些信息 可作为估计软件维护的有效程度,确定软件产品的 质量,确定维护的实际开销等工作的原始数据。
软件维护步骤
第四步:维护活动评价
具体的评价工作可从以下几个方面考虑: (1)每次程序运行时的平均出错次数; (2)花费在每类维护活动上的总的“人时”数; (3)每个程序、每种语言、每种维护类型程序的平均修改次数; (4)维护工作中增加或删除每个源程序语句所花费的平均“人 时”数; (5)用于每种语言的平均“人时”数; (6)维护申请报告的平均处理时间; (7)各类维护申请的百分比。 一方面,可判定此次维护活动开展是否顺利、成功;另一方面, 为今面的维护工作积累经验。
2、结构化维护:进行维护 活动时,首先从评价需求开始,搞清楚 功能、性能上的改变,然后对设计说明文档进行评价、修改和复查; 根据设计的修改,再进行程序的变动;然后根据测试文档中的测试 用例进行回归测试;最后将修改后的软件再次交付使用。
软件维护的概念

软件维护的概念软件维护是指在软件开发完成并投入使用后,对软件系统进行的修改、优化和修复工作。
软件维护是软件生命周期中重要的一个阶段,它包括对软件系统的各种修改和改进,以保证软件系统的稳定性、可靠性和安全性。
软件维护是保障软件系统持续发展的重要环节,它的目的是通过不断地对软件进行改进和修复,确保软件系统能够适应新的需求和环境变化,提高软件系统的使用价值并延长软件的使用寿命。
软件维护包括对软件系统的多方面工作,主要包括以下几个方面:1.纠错性维护:在软件运行过程中,发现产生的错误和缺陷,并进行修复和改进,以确保软件系统的稳定性和可靠性。
2.适应性维护:对软件进行适应新的硬件、操作系统、数据库、网络环境等方面的变化,确保软件系统能够适应不断变化的技术环境和应用需求。
3.完善性维护:不断对软件进行优化和改进,提高软件的性能、可用性和用户体验,以满足用户不断增长的需求和期望。
4.预防性维护:通过对软件系统进行分析和评估,及时发现和解决潜在的问题和风险,防止软件系统出现严重的故障和漏洞。
软件维护是软件开发生命周期中的重要环节,它对软件系统的稳定性、可靠性和可维护性有着重要影响。
软件维护的目标是通过对软件系统的不断修复、改进和优化,确保软件能够持续地满足用户的需求,并在不断变化的技术和商业环境中保持竞争力。
软件维护可以帮助软件系统不断地适应用户需求和市场变化,同时及时发现和解决软件系统中的问题和隐患,保证软件系统的稳定运行和持续发展。
软件维护的重要性主要体现在以下几个方面:1.保障软件系统的稳定性和可靠性。
软件维护可以及时发现和解决软件系统中的问题和缺陷,确保软件系统能够持续稳定地运行,提高软件系统的可靠性和可用性。
2.延长软件系统的使用寿命。
通过对软件系统的改进和优化,延长软件系统的使用寿命,提高软件系统的投资回报率,减少软件系统更换的成本和风险。
3.提高软件系统的适应性和竞争力。
软件维护可以帮助软件系统适应不断变化的技术环境和市场需求,提高软件系统的灵活性和竞争力,满足用户不断增长的需求和期望。
软件工程学维护

20-40倍。 ② 使用现代设计概念重新设计软件体系结构,对未来的维护
工作将有很大的帮助。 ③ 由于软件原型已经存在,软件开发生产率将远远高于平均
水平。 ④ 由于用户已经有较丰富的软件使用经验,所以很容易确定
为了使软件和变化了的环境(如软/硬件升级、新数据库 等)适当地配合而修改软件的活动。约占全部维护活动的18 % ~25%。
§1. 软件维护的定义
③ 完善性维护(perfective maintenance) 为了增加软件新功能、改已有功能(如改造界面)、增强软
件性能、提高运行效率等,而修改软件的活动。 约占全部维护活动的50% ~66%。
④ 预防性维护(preventive maintenance)
为了改进未来的可维护性或可靠性,或为了给未来的改进奠 定更好的基础而主动修改软件的活动。与其它维护活动共占总 维护的4%左右。
注:① 一般维护的工作量占生存周期70%以上,维护成本约 为开发成本的4倍;
② 文档维护与代码维护同样重要。
§2. 软件维护的特点
1、建立维护组织(maintenance team)
在维护活动开始之前就明确维护责任是十分必要的,这样可 以大大减少维护过程中可能出现的混乱。
§3. 软件维护过程
钱太少 要
任务评价
变
不干!
求 维
客户要求
化
护
授
权
人
任务评价
维护管理员
系 统 管 理 员
2、维护报告
§3. 软件维护过程
⑴ 维护要求表(Maintenance Request Form)
简述软件维护的内容

简述软件维护的内容
软件维护是指对已经开发的软件进行修正、更新和改进,以确保其正常运行并保持最新的功能和技术。
软件维护的目的是为了解决已有的软件存在的问题,保证软件的稳定性和可靠性,并提高软件的性能和效率。
软件维护包括以下几个方面的内容:
1. 代码修改和优化:针对软件中存在的错误、漏洞和不兼容等问题,修改和优化代码,以确保软件的正确性和稳定性。
2. 更新软件版本:更新软件的版本以提高其性能和功能。
通过更新软件,可以修复之前版本的已知问题,增加新的功能,提高软件的可靠性和可用性。
3. 性能优化:优化软件的性能和效率,以提高软件的响应速度和处理能力。
这可以通过修改代码、优化数据库和网络连接等方式来实现。
4. 安全维护:维护软件的安全性,确保软件不受恶意攻击和篡改。
安全维护包括对软件漏洞的修复、安全审计和风险评估等。
5. 技术支持和培训:提供软件的用户和技术支持,回答用户的问题和提供技术支持文档,并对软件的使用人员进行培训,以确保软件的正常运行。
软件维护是保证软件长期正常运行的关键步骤。
通过及时维护和更新软件,可以确保软件的可靠性和稳定性,提高软件的性能和效率,从而满足用户的需求。
软件维护的名词解释

软件维护的名词解释软件维护是指对已经开发完成的软件进行修改、更新、优化和修复等工作的过程。
在软件生命周期中,维护阶段占据了相当重要的地位,它是确保软件持续稳定运行和适应不断变化需求的关键环节。
本文将对软件维护的定义、目标、类型以及重要性进行深入探讨。
一、软件维护的定义软件维护是指在软件开发完成并投入使用后,对软件进行不同程度的修改、补充、纠错和优化的活动。
这些修改主要针对软件的功能、性能、易用性或者适应性等方面。
维护过程包括对软件的分析、设计、编码、测试、文档更新等环节,旨在提高软件的质量和可靠性。
二、软件维护的目标1. 改进功能:软件维护的首要目标是通过添加或修改现有功能来满足用户的新需求。
根据用户反馈和市场变化,软件需要不断演进和发展,以确保其具备更强大的功能和更好的用户体验。
2. 修复缺陷:维护过程中,开发人员会不断发现软件存在的各种问题和缺陷。
为了保证软件的正常运行和稳定性,需要对这些缺陷进行修复和纠正。
3. 提高性能:随着软件使用规模和数据量的增加,性能问题可能逐渐显露出来。
软件维护的目标之一是通过性能优化,提高软件的运行效率和响应速度,以满足不断增长的用户需求。
4. 更新技术:软件的技术环境和外部依赖可能在运行过程中发生变化。
为了确保软件与最新的技术标准和发展趋势保持一致,维护工作还需要对技术进行更新和升级。
5. 管理成本:软件维护也面临着重要的成本问题。
通过优化维护流程、提高开发效率和降低维护成本,可以有效控制长期维护过程中的成本压力。
三、软件维护的类型软件维护根据维护的对象和目的,可以分为以下几类:1.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
—— 亦称 Software Evolution
1.软件维护的概念 2.维护的特点 3.维护的过程 4.可维护性 5.软件再工程过程
2018年7月2日星期一
计算机科学与工程学院
1
6.8.软件系统维护的基本概念
1.软件维护定义:
是指在软件系统已经交付使用之后,软件使用人员为了 适应新的要求、满足新的需要或为了改正软件中存在的错误 而对软件系统进行修改的过程。
2018年7月2日星期一 计算机科学与工程学院
8
维护工作量的经验模型:
M=P+K×exp(c-d) 其中: M是维护用的总工作量; P是生产性工作量; K是经验常数; c是复杂程度(非结构化设计和缺少文档都会增加软件 的复杂程度); d是维护人员对软件的熟悉程度。
上面的模型表明,如果软件的开发途径不好(即,没 有使用软件工程方法学),而且原来的开发人员不能参加 维护工作,那么维护工作量(和费用)将指数地增加。
2018年7月2日星期一 计算机科学与工程学院 17
⑴ 可理解性(Understandability) 指由文档代码理解功能运行的容易程度。对外又称 user friendliness. 好程序的特征:模块化、结构化、代码与设计风格一致, 高级语言实现。 度量方法:90 - 10 Test ——读源程序10分钟,能否默写 出90%? ⑵可测试性(Testability) 是指论证程序正确性的容易程度。 好程序的特征:可理解、可靠、简单。 度量方法:程序复杂度(第五章中已讨论)
文档:开发文档 和测试文档
缺乏文档 不能进行回归测试
原因:没有使用良好定义的方法学开发出来。 回归测试:为了保证所做的修改没有在以前可以正常使用的软件 功能中引入错误而重复过去做过的测试。
2018年7月2日星期一 计算机科学与工程学院 5
如果有一个完整的软件配置存在:
设计文档
维护活动
评价设计文档
可确定软件结构、 全程数据结构、 系统接口、性能 和(或)设计约束
2018年7月2日星期一
计算机科学与工程学院
11
(1)、建立维护组织(maintenance team):
在维护活动开始之前就明确维护责任是十分必要的, 这样可以大大减少维护过程中可能出现的混乱。 每个维护要求都通过维 护管理员转交给相应的 系统管理员去评价。系 统管理员是被指定去熟 悉一小部分产品程序的 技术人员。系统管理员 对维护任务做出评价之 后,由变化授权人决定 应该进行的活动。
(4)可移植性(Portability) 是指程序被移到一个新环境的容易程度。 好程序的特征:结构好,不特别依赖于某一具体的计算机 或操作系统。 (5) 可重用性
2018年7月2日星期一 计算机科学与工程学院 19
(2)、文档 影响可维护性的决定因素,比代码更重要。
软件系统的文档可以分为用户文档和系统文档两类。 用户文档主要描述系统功能和使用方法,并不关心这些功能是 怎样实现的; 系统文档描述系统设计、实现和测试等各方面的内容。
总的说来,软件文档应该满足下述要求:
(1)必须描述如何使用这个系统,没有这种描述即使是最简单的系统也无 法使用;
(2)必须描述怎样安装和管理这个系统; (3)必须描述系统需求和设计; (4)必须描述系统的实现和测试,以便使系统成为可维护的。
2018年7月2日星期一 计算机科学与工程学院 20
a. 用户文档: ①功能描述 —— 说明系统能做什么; ②安装文档 —— 说明安装系统的方法及适应特定的硬件配 置的方法; ③使用手册 —— 说明使用方法以及错误挽救方法; ④参考手册 —— 详尽描述用户可使用的所有系统设施以及它 们的使用方法;给出错误信息注解表; ⑤操作员指南(如果需要有系统操作员的话)—— 说明操作 员处理使用中出现的各种情况的方法。 b.系统文档:从问题定义、需求说明到验收测试计划这样一系列和系统实
2018年7月2日星期一 计算机科学与工程学院 3
3.维护的特点
下图描绘了面对一项维护要求时,不同的软件配置所导致的不 同工作流程。
结构化维护与非结 构化维护的对比
2018年7月2日星期一 计算机科学与工程学院 4
(1)、非结构化维护与结构化维护差别悬殊
源代码 维护活动
评价源代码
导致
软件结构、全程数据结构、 系统接口、性能 导致 和(或)设计约束等 微妙的特点是难于搞清的
5. 可维护性(Maintainability )的度量
(1)、决定软件可维护性的因素
维护就是在软件交付使用后进行的修改,修改之前必须 理解修改的对象,修改之后应该进行必要的测试,以保证所 做的修改是正确的。如果是改正性维护,还必须预先进行调 试以确定错误。因此,影响软件可维护性的因素主要有下述 五个: 1. 可理解性 2. 可测试性 3. 可修改性 4. 可移植性 5. 可重用性
2018年7月2日星期一
计算机科学与工程学院
14
(4) 、保存维护记录
对于软件生命周期的所有阶段而言,以前记录保存都 是不充分的,而软件维护则根本没有记录保存下来。由于这 个原因,我们往往不能估价维护技术的有效性,不能确定一 个产品程序的“优良”程度,而且很难确定维护的实际代价 是什么。
2018年7月2日星期一
根据对维护工作定量度量的结果,可以做出关于开发技术、语 言选择、维护工作量规划、资源分配及其他许多方面的决定, 而且可以利用这样的数据去分析评价维护任务。
2018年7月2日星期一 计算机科学与工程学院 16
—— 软件度量学(Software Measurement) 软件可维护性可以定性地定义为:维护人员理解、改正、改 动和改进这个软件的难易程度。 我们一直强调,提高可维护性是支配软件工程方法学所有步 骤的关键目标。
2018年7月2日星期一 计算机科学与工程学院 7
c.由于维护时的改动,在软件中引入了潜伏的故障,从而 降低了软件的质量; d.当必须把软件工程师调去从事维护工作时,将在开发过 程中造成混乱。 软件维护的最后一个代价是生产率的大幅度下降,这种情 况在维护旧程序时常常遇到。 维护工作的劳动可以分成: •生产性活动,例如,分析评价,修改设计和编写程序代码等; •非生产性活动,例如,理解程序代码的功能,解释数据结构、 接口特点和性能限度等。
2018年7月2日星期一 计算机科学与工程学院 9
(3)、பைடு நூலகம்护的问题
•别人的程序很难读懂
•文档与代码不一致
说明性文档不可缺少!
•开发人员往往不参加维护 •大多数软件在设计时没有考虑将来的修改 •软件维护不是一项吸引人的工作。
上述种种问题在现有的没采用软件工程思想开发出来的软 件中,都或多或少地存在着。不应该把一种科学的方法学 看做万应灵药,但是,软件工程至少部分地解决了与维护 有关的每一个问题。
维护组织
2018年7月2日星期一
计算机科学与工程学院
12
(2)、维护报告
应该用标准化的格式表达所有软件维护要求。
⑴ 维护申请报告(Maintenance Request Form) 由用户填写的外部文件,提供错误情况说明(输入数据, 错误清单等),或修改说明书等。 它是计划维护活动的基础。
软件组织内部应该制定出一个软件修改报告:
⑵ 软件修改报告(Software Change Report) 与MRF相应的内部文件,要求说明: ①所需修改变动的性质; ②申请修改的优先级; ③为满足某个维护申请报告,所需的工作量; ④预计修改后的状况。
2018年7月2日星期一 计算机科学与工程学院 13
(3)、维护的事件流
下图描绘了由一项维护要求而引出的一串事件。首先应该确定 要求进行的维护的类型。用户常常把一项要求看作是为了改正 软件的错误(改正性维护),而开发人员可能把同一项要求看 作是适应性或完善性维护。当存在不同意见时必须协商解决。
2.软件系统维护分为以下四类:
① 诊断和改正错误 —— 改正性维护(corrective maintenance),约占全部维护活动的 17~21%;
2018年7月2日星期一
计算机科学与工程学院
2
② 为了 适应变化了的环境(如软\硬件升级、新数据库等) 而修改软件 —— 适应性维护(adaptive maintenance),约 占全部维护活动的18~25%; ③ 为了增加新功能,修改已有功能,改造界面,增加HELP等, 而修改软件 —— 完善性维护(perfective maintenance),约占 全部维护活动的50~66% ; ④为了改进未来的可维护性或可靠性,或为了给未来的改进 奠定更好的基础而修改软件 —— 预防性维护(preventive maintenance),与其它维护活动共占总维护的4%左右。 注:① 一般维护的工作量占生存周期70%以上,维护成 本约为开发成本的4倍(80 - 20 Rule); ② 文档维护与代码维护同样重要。
具有设计文档 测试文档 修改源代码
结构化维护,它是在软件开发的 早期应用软件工程方法学的结果
能进行回归测试
2018年7月2日星期一
计算机科学与工程学院
6
(2)、维护的代价高昂
在过去的几十年中,软件维护的费用稳步上升。 1970年用于维护已有软件的费用只占软件总预算的35%~ 40%; 1980年上升为40%~60%; 1990年上升为70%~80%。 有形代价:费用已上升至总预算的80%; 维护费用只不过是软件维护的最明显的代价,还有一些无 形代价。 无形代价: a.可用的资源必须供维护任务使用,以致耽误甚至丧失了 开发新软件的良机; b.当看来合理的有关改错或修改的要求不能及时满足时将 引起用户不满;
现有关的文档。
2018年7月2日星期一 计算机科学与工程学院 21
(3)、维护性复审
可维护性是所有软件都应该具备的基本特点,必须在开 发阶段保证软件具有前面提到的那些可维护因素。在软件工 程过程的每一个阶段都应该考虑并努力提高软件的可维护性, 在每个阶段结束前的技术审查和管理复审中,应该着重对可 维护性进行复审。 各阶段复审重点: