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