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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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