软件工程导论课件之第8章_维护(第五版)(张海藩编著).ppt

软件工程导论课件之第8章_维护(第五版)(张海藩编著).ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程导论课件之第8章_维护(第五版)(张海藩编著)

第8章 维护 8.1 软件维护的定义 8.2 软件维护的特点 8.3 软件维护过程 8.4 软件的可维护性 8.5 预防性维护 8.6 软件再工程过程 在软件产品被开发出来并交付用户使用之后,就进入了软件的运行维护阶段。其基本任务是保证软件在一个相当长的时期能够正常运行。 软件维护需要的工作量很大,平均说来,大型软件的维护成本高达开发成本的4倍左右。 软件工程的目的是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 软件发展的特征: Lehman第一定律:软件产品必须持续改进,否则就会越来越没用。 Lehman第二定律:程序的结构可能会随着越来越多的维护的进行而退化。 Lehman第三定律:在一个程序的生命周期中,其开发率的数值应当近似为恒定的。 8.1 软件维护的定义 所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 可分为4项活动: 改正性维护 适应性维护 完善性维护 预防性维护 改正性维护: 把诊断和改正错误的过程称为改正性维护。 改正性维护占17%~21%。 适应性维护: 为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。 包括外部环境和数据环境的变化。 适应性维护占18%~25%。 完善性维护: 为了满足在用户提出的增加新功能或修改已有功能的要求和一般性的改进要求,需要进行完善性维护。 包括功能和性能的要求。 完善性维护占50%~66%。 预防性维护: “把今天的方法学应用于昨天的系统以满足明天的需要。” 采用先进的软件工程方法对需要维护的软件或软件中的某一部分,主动地进行重新设计、编码和测试。 预防性维护占4%左右。 只有预防性维护是主动的,其他维护都是被动的。 影响维护工作量的因素: 系统规模 开发工具和平台 系统年龄 数据库技术的应用 先进的软件开发技术 其它:应用的类型、数学模型、任务的难度。 许多软件在开发时并未考虑将来的修改,为软件的维护带来许多问题,是影响软件维护工作量的最主要因素。 软件维护的策略: 改正性维护:通常要生成100%可靠的软件并不一定合算,成本太高。但通过使用新技术,可大大减少进行改正性维护的需要。 适应性维护:这一类维护不可避免,可以控制。 完善性维护:用前两类维护中列举的方法,也可以减少这一类维护。 8.2 软件维护的特点 8.2.1 结构化维护与非结构化维护差别巨大 1. 非结构化维护 如果软件配置的惟一成分是程序代码,那么维护活动从艰苦地评价程序代码开始,而且常常由于程序内部文档不足而使评价更困难。 非结构化维护需要付出很大代价,这种维护方式是没有使用良好定义的方法学开发出来的软件的必然结果。 2. 结构化维护 如果有一个完整的软件配置存在,那么维护工作从评价设计文档开始,确定软件重要的结构特点、性能特点以及接口特点;估量要求的改动将带来的影响,并且计划实施途径。 然后首先修改设计并且对所做的修改进行仔细复查。接下来编写相应的源程序代码;使用在测试说明书中包含的信息进行回归测试; 最后,把修改后的软件再次交付使用。 8.2.2 维护的代价高昂 在过去的几十年中,软件维护的费用稳步上升。 1970年用于维护已有软件的费用只占软件总预算的35%~40%; 1980年上升为40%~60%; 1990年上升为70%~80%。 8.2.3 维护的问题很多 维护的问题: 理解别人写的程序通常非常困难,而且困难程度随着软件配置成分的减少而迅速增加。 需要维护的软件往往没有合格的文档,或者文档资料显著不足。 当要求对软件进行维护时,不能指望由开发人员给我们仔细说明软件。 绝大多数软件在设计时没有考虑将来的修改。 软件维护不是一项吸引人的工作。 8.4 软件的可维护性 可以把软件的可维护性定性地定义为: 维护人员理解、改正、改动或改进这个软件的难易程度。 提高可维护性是支配软件工程方法学所有步骤的关键目标。 8.4.1 决定软件可维护性的因素 决定软件可维护性的因素主要有7个: 可理解性 可测试性 可修改性 可靠性 可移植性 可使用性 效率 1. 可理解性 软件可理解性表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。 模块化(模块结构良好,高内聚,松耦合)、详细的设计文档、结构化设计、程序内部的文档和良好的高级程序设计语言等等,都对提高软件的可理解性有重要贡献。 2. 可测试性 可测试性表明论证程序正确性的容易程度。 程序越简单,证明其正确性就越容易。 设计合适的测试用例,取决于对程序的全面理解。 对于程序模块来说,可以用程序复杂度来度量它的可测试性。模块的环形复杂度越大,可执行的路径就越多,因此,全面测试它的难度就越

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档