《软件工程》课件-第7章 软件维护_第1页
《软件工程》课件-第7章 软件维护_第2页
《软件工程》课件-第7章 软件维护_第3页
《软件工程》课件-第7章 软件维护_第4页
《软件工程》课件-第7章 软件维护_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章

软件维护XX大学XX系XXX软件工程教程电子科技大学出版社学习目标l

理解软件维护的目的意义;l

掌握软件维护的最新方法;l

掌握软件维护文档如何书写;l

了解软件维护的可维护性;l

了解软件维护的基本过程;l

了解软件维护、软件重用和再工程方面的知识。目录01020304软件维护概述软件维护类型软件维护过程软件可维护性0506软件重用和再工程本章小结软件维护概述01软件维护概述软件维护活动是发生在产品的生存周期之内。在软件生存周期最终环节才进行软件维护,能够大力减少维护软件工作,提升产品性能。减少软件开发成本是软件维护阶段的目的之一。降低软件维护的费用是开发过程中关键的环节。软件维护概述软件维护的过程会产生一些不良的影响,软件修改这项工作比较危险,即使设计文档和回归测试对排除错误有帮助,但是依然避免不了副作用的产生。副作用的概念是一些不期望的行为引进所带来的错误。软件维护概述(1)代码副作用。删除、修改子程序,语句符号,标示符。修改文件的open、close时才会出现,修改逻辑操作符和边界条件的测试等。(2)数据副作用。修改全局数据,重新排列I/O表或子程序参数表和初始化控制标志和指针以及全局常量和局部常量的再定义(3)文档副作用。维护除了考虑源代码外,还要考虑整个软件的配置。软件维护类型02软件维护类型维护阶段是软件生存周期的最后阶段,该阶段是花费时间最长、投入人力财力最多且难度系数最大的一个阶段,不同的维护种类应该采取不同的”策略。角度不同导致分类方法不同,从而分类结果也不同。传统的软件维护一般分为四大类,如表7.1所示。表7.1

软件的4类维护软件维护类型(1)改正性维护改正性维护是指纠正在系统开发阶段时发生的”而在系统测试阶段没有被发现的错误。这方面的维护工作量占总工作量的17%-21%。发现的一些错误并不是非常严重的,不影响系统的正常运行。软件维护类型(2)适应性维护适应性维护是指使用一些软件来适应信息技术”和管理需求的变化。该类型的维护工作量占总工作量的18%-25%。软件维护类型(3)完善性维护完善性维护是为了扩展功能和提高性能而进行的修改,主要是为了在系统分析和设计阶段加一些没有指定的现有软件系统中的一些功能和性能特征。这些特性和功能对”于改善系统的功能是必要的。此外,它还包括在处理效率和编写程序上的改进,占了整体维护的50%-60%,比例较大,但也关系到系统开发质量的重要方面。除了有计划和有系统地完成维护外,还需要注意将相关文档进行更新。软件维护类型(4)预防性维护预防性维护用以提高应用软件的可靠性和可维护性,为了去适应未来软硬件环境的变化,我”们应主动增加新的预防性功能,使应用系统适应各种变化而不被消除。这一维护的工作量约占整个维护工作的4%。软件维护类型随着软件开发方面的进展,软件维护方法也得到了发展,这首先体现在软件维护的分类。目前,软件企业将自己的软件产品进行维护,基本上分为如下两类。”(1)面向缺陷的维护-程序级别的维护;(2)面向特性的维护-设计级别的维护。面向缺陷维护是较小的维护,面向功能维护是较大的维护。软件维护类型可以从不同角度来划分软件维护的方法,具体分为三种。”(1)根据两层结构划分软件维护方法客户机、服务器的两层结构。我们常说的ERP软件维护,就是这种维护。软件维护类型(2)根据三层结构划分软件维护方法客户端、应用程序服务器、数据库服务器这三”层结构,是最有前途的应用程序软件结构之一。病毒杀灭工具常见的升级方式就是这种维护。软件维护类型(3)根据“三种开发方法”划分软件维护方法根据“三种开发方法”划分软件维护方法,即根据“面向过程的开发、元数据开发、面向对象的开发””来划分软件维护的方法。在三层结构中,大多数对象分布在整个应用服务器上。在数据库服务器上,仅仅有数据对象。在客户的浏览器上,只有网页对象。软件维护过程03软件维护过程软件维护的工作过程与软件开发的工作过程相似。软件维护工作程序为:维护需求分析、维护设计、程序代码修改、维护后测试、维护后试运行、维护后正式运行、维护过程的评审和审核。软件维护过程为此,需要建立一个维护组织,由用户或售后工程师提交维护申请报告,维护组织对申请报告进行审核和批准,组织技术人员实施“需求分析与维护、设计与维护、程序代码主控”维护、测试或回归测试、维护试运行后、维护后正式运行、维护过程的审查和审核,并建立详细信息文档。软件维护过程在软件生存周期中,软件的维护时间最长,可能长达几年或几十年。维护工作通常是在没有计划的情况下完成的。无组织的维护经常带来许多问题,导致维护活动混乱,加上缺乏维护记录,软件功能和文档不一致等因素,给后续维护带来严重困难。因此,为了达到更好的维护效果,有必要建立专门的维护机构。软件维护过程一个标准的维护组织模式:维护组织一般由维护人员、维护管理员、系统管理员、修改控制决策机构和配置管理员组成。软件维护过程对于一项维护流程来说,首先应确认维护要求,

然后要求确定将要执行的维护工作的类型。软件维护工作从评估错误的严重程度开始。在某些情况下,有些错误非常严重,以至于不得不暂时放弃正常的维护过程,即不评估修改可能产生的副作用,也不相应更新文档,并立即修改代码。这是一种只在非常关键的情况下使用的灭火矫正维护。此维护只占所有维护的一小部分。软件维护过程在结构化维护方面,软件维护文档,就是对已经存在的实现文档、设计文档、测试文档、分析文档、用户指南进行修改,形成新的开发文档。新的开发文档的组织方式有两种格式。软件维护过程(1)保存好原来的开发文档之后,直接修改原文档,修改后形成新的小版本文档,就是在原版本中小圆点的右一位或右二位上加1。(2)不直接在原文档上修改,而是将改过的内容独自作为一个附录,放在修改过的文档后面,形成一份新小版本文档,就是在原版本号中小圆点的右一位或右二位上加1。软件维护过程上述两种格式完成后,应在文档的“版本更新记录”(VersionUpdatedRecord)上做维护记录,修改后的版本号应填写在“版本更新记录”的相关栏中,如表7.2所示。软件维护过程软件维护是软件生存周期中最耗时、最耗能的阶段,需要大量的时间、人力和物力。为了降低和控制软件维护的成本,我们应该考虑哪些因素影响软件维护的工作量,并相应地采取最合适的维护策略。通常,把软件维护的工作量分为助动性和生产性两个组成部分。助动性工作量是理解各种文档和代码所需的工作量;生产性工作量则是用于分析和评估、修改设计和修改代码的工作量。给出了维护工作量估算模型。软件维护过程M=P+K*exp(c-d)(公式7.1)其中:M:维护所用工作量。P:生产性工作量。K:经验常数。c:软件维护的复杂性取决于软件的复杂性、软件设计的质量和文档化的程度。d:维护人员对软件的熟悉程度。估计模型表明,软件的维护工作量与软件的维护复杂度呈指数关系。软件可维护性04软件可维护性所谓软件可维护性,是指维护人员了解、掌握和修改维护软件的难度。可维护性软件应该具有五个属性,如表7.3所示。软件可维护性符合五个特点的软件具有良好的可维护性。反之,可维护性就差。由此可知,可维护性与开发人员的素质关系极大。低素质的开发人员,开发出低质量的软件,其可维护性差,维护难度系数大,市场潜力就会十分渺茫。低质量软件的开发,其可维护性差。作为维护的副作用,纠正旧的错误会导致新的错误。软件维护的副作用与维护的方式有关,如表7.4所示。软件可维护性把这四个副作用加在一起,就很容易出现多次修补的现象,当维护完成一次后,将添加一个补丁。补丁做得越多,隐藏的问题就越多。由于对于系统考虑不当或没理解透彻,在维护过程中可能会发生连锁反应。这为了减少维护工作量,防止维护的副作用,人们在长时间的实践中积累了以下经验,利用CMMI框架系统的思想,在软件企业中改进软件过程管理。在开发和维护中,尝试使用CASE工具。维护完成后,必须进行回归测试。始终保持文档、数据和程序的一致性。软件重用和再工程05软件重用和再工程如果比起从头开始编程,很容易修改整个产品使其在另一个编译器-硬件-操作系统配置上运行,那么该产品是可移植的。相反,简化一个功能不同的产品的开发,而运用另一个产品中的构件就是指的重用。重用的类型分为有意重用和偶然重用。如果一个新产品的开发者意识到,以前设计的产品的一个构件可在这个新产品中运用,那么这是偶然重用或机会重用。另一方面,使用专门为未来可能的重用而建造的软件构件则是有意重用或有计划重用。软件重用和再工程有意重用比偶然重用的一个潜在好处如下。为未来可能的重用专门建造的构件会更容易重用,也更安全,通常这样的构件是健壮的、文档完善并经过全面测试的。软件重用和再工程重用经常会面临这样一些障碍。太多的软件专业人员宁愿从头编写一个程序,也不愿重用别人编写的程序,也就是说程序只有自己

是NIH(NotInventedHere)综合征。NIH是一个管理方面的问题,如果管理者意识到这个问题,就可解决它,通常可通过提供财政上的激励来促进重用。软件重用和再工程重用需要考虑三项成本。建造可重用构件的成本、重用它的成本以及定义和实现重用过程的成本。仅建造可重用的构件就将增加至少60%的成本,一些组织还报道过,成本将增加200%,甚至480%。而在惠普公司的一个重用项目中,建造一个可重用构件的成本只占11%。软件重用和再工程软件再工程通过转换遗留系统使系统更容易理解,从而提高了系统的可维护性。再工程包括重新构建系统文档、修改和更新系统结构、使用高级编程语言转换源代码和数据重新工程。软件重用和再工程软件再工程有两个优点。(1)低成本重新设计在很大程度上重用了原始系统的部分,因此比重新开发系统的成本要小得多。(2)低风险组织选择完全替换它所依赖的遗留系统存在很大的风险。相对而言,再工程的成功率要高得多。一个典型的软件再工程过程模型如图7.3所示,它定义了五种类型的活动。在某些情况下,这些活动以线性顺序发生,但并不总是这样。在某些情况下,反向工程直接在原始程序下执行,然而有时根本不需要反向工程。本章小结06本章小结通过本章的学习,我们了解到如果想把软件维护这项工作做好,就必须做到如下两个方面。(1)完成开发文档、管理文档和维护文档,以便所有维护工作都成为结构化的维护工作,从而提高系统的可维护性。(2)维护人员不能在缺陷维护(即“程序级维

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论