软件工程 第十五节 软件维护.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
国防科技大学计算机学院 第十五章 软件维护 在软件开发过程中始终强调软件的可维护性。原因是,一个应用系统由于需求和环境的变化以及自身暴露的问题,在交付用户使用后,对它进行维护是不可避免的,统计和估测结果表明,信息技术中硬件费用一般占35%,软件占65%,而软件后期维护费用有时竟高达软件总费用的80%,所有前期开发费用仅占20%。 许多大型软件公司为维护已有软件耗费大量人力、财力。因此,必须建立一套评估、控制和实施软件维护的机制,这就是本章重点讨论的内容。 15.1 软件维护的分类 生存周期的最后一个阶段,所有活动都发生在软件交付并投入运行之后。维护活动根据起因可分为改正性维护、适应性维护、改善性维护和预防性维护四类: 改正性维护是为诊断和改正软件系统中潜藏的错误而进行的活动。 适应性维护是为适应环境的变化而修改软件的活动。 改善性维护是根据用户在使用过程中提出的一些建设性意见而进行的维护活动。 预防性维护是为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。 15.2 维护过程 软件维护与软件开发阶段的各项活动相比,直到近期才引起人们足够的重视,因此有关维护的技术和方法研究得还很不够。 本节主要讨论: (1)维护阶段的主要活动及软件工程的目标、原则对这些活动的影响; (2)维护阶段的代价; (3)软件维护中经常遇到的一些问题。 15.2.1 结构化与非结构化的维护 非结构化 如果软件配置中唯一可用的是源代码,那么维护只能从“苦读”代码开始。由于缺乏内部文档,读代码是一项很枯燥、很困难的工作。 软件系统的许多微妙之处(例如软件总体结构、全局数据、系统接口、性能和设计方面的约束等)不是搞不清楚就是常常被误解,以致无法估量对源代码修改所产生的后果。 特别是,由于没有保存测试记录,使“回归测试”无法进行。 对于没有使用良好开发方法开发的软件,不得不采用非结构化的方式进行维护并为此付出高昂的代价(浪费大量人力,且让维护人员有挫折感)。 结构化 如果欲维护的软件存在一个完整的软件配置,维护活动将从阅读设计文档开始。 首先确定软件的重要结构、性能及接口特征,评估这次维护可能带来的影响并规划出一个具体实施方案;然后从修改设计入手(采用以前讨论过的设计技术),设计复审通过之后再修改代码,并参照测试规格说明书对软件进行回归测试,测试通过后交付用户使用。 上述过程也称为结构化维护,它是采用软件工程方法学开发软件的自然结果。拥有完整的软件配置能减少维护工作量,提高维护质量。 15.2.2 维护的成本 过去的二十年,软件维护的成本在不断增长。 七十年代,一个信息系统机构用于软件维护的费用占其软件总预算的35~40%,八十年代接近60%。 若维护方式没有大的改进,未来几年,许多大型软件公司可能要将其预算的80%用于软件系统的维护上。 维护的成本 其他因素也已经引起人们的注意。如: 由于资源(人力、设备)优先用于维护任务,影响新软件系统的开发,可能会丧失机会; 有时还要付出一些无形的代价,如某些貌似合理但实际不能满足的维护请求将引起用户不满; 在软件维护过程中引入的潜在错误降低了软件的质量; 从开发小组中临时抽调工程师从事维护工作冲击正在进行的开发等等。 最后,维护旧程序使生产率(按每人月代码行或每人月功能点计算)大幅度下降。 15.2.3 可能存在的问题 软件维护中出现的大部分问题都可归咎于软件规划和开发方法的缺陷。 软件开发时采用急功近利还是放眼未来的态度,对软件维护影响极大。 一般说来,软件开发若不严格遵循软件开发标准,软件维护就会遇到许多困难。 典型问题 (1)很难甚至不可能追踪软件版本的进化过程,软件的变化没在相应文档中反映出来;  (2)很难甚至不可能追踪软件的整个创建过程; (3)理解他人的程序非常困难,当软件配置不全,仅有源代码时问题尤为严重; (4)软件人员流动性很大,维护他人软件时很难得到开发者的帮助; (5)软件没有文档、或文档不全、或文档不易理解、或与源代码不一致; (6)多数软件设计未考虑修改的需要(有些设计方法采用了功能独立和对象类型等一些便于修改的概念),软件修改不仅困难而且容易出错。 (7)软件维护不是一项有吸引力的工作,从事这项工作令人缺乏成就感。 15.3 可维护性 软件可维护性指,软件被理解、改正、调整和改进的难易程度。 可维护性是指导软件工程各个阶段工作的一条基本原则,也是软件工程追求的目标之一。 15.3.1 影响可维护性的因素 软件的可维护性受各种因素的影响。设计、编码和测试时漫不经心,软件配置不全都会给维护带来困难。除了与开发方法有关的因素外,还有下列与开发环境有关的因素: ①是否拥有一组训练有素的软件人员; ②系统结构是否可理解; ③是否使用标准的程序设计语言

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档