电子科大软件工程网络课件08

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第八章软件维护88.1软件维护的基本概念8.2软件维护的过程8.3软件维护技术8.4软件可维护性8.5软件再工程8.1软件维护的基本概念8.1软件维护的基本概念软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存期中最长的一个阶段,其花费高达整个软件生命期花费的约60-70%。因此,应充分认识到维护工作的重要性和迫切性,提高软件的可维护性,减少维护的工作量和费用,延长已开发软件的生命期,以发挥其应有的效益。8.1.1软件维护的目的软件维护是指在软件运行/维护阶段对软件产品进行的修改活动。通常要求进行维护的主要原因有:在运行中发现在测试阶段未能发现的软件错误和设计缺陷;需要改进设计,以增强软件的功能,提高软件的性能;要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备等的工作环境,或是要求适应已变动的数据或文件;为使投入运行的软件与其它相关的程序有良好的接口,以利于协同工作;为使运行软件的应用范围得到必要的扩充。8.1.1软件维护的定义由于软件的发展非常迅速,显然,对软件进行维护的目的是为了纠正软件开发过程未发现的错误,增强、改进和完善软件的功能和性能,以适应软件的发展,延长软件的寿命。8.1.2软件维护的类型完善性维护(PerfectiveMaintenance)纠错性维护(CorrectiveMaintenance)适应性维护(AdaptiveMaintenance)预防性维护(PreventiveMaintenance)一、按照不同的维护目的,维护工作可分成4类。8.1.2软件维护的类型点击选择维护内容纠错性维护适应性维护完善性维护预防性维护纠错性维护25%适应性维护21%完善性维护50%预防性维护4%图8.1表示各种维护所占的比例,显然完善性维护所占的比例最大。图8.1各类维护所占的比例8.1.2软件维护的类型二、软件维护的策略针对以上几种类型的维护,可采取相应的维护策略,以提高维护效率,降低维护成本。1、纠错性维护策略开发过程中采用新技术,利用应用软件包,提高系统结构化程度,进行周期性维护审查等。2、适应性维护策略对可能变化的因素进行配置管理,将因环境变化而必须修改的部分局部化,即局限于某些程序模块等。3、完善性维护策略除了可以使用前面两类维护的策略外,还有使用功能强、使用方便的工具,采用原型化方法开发等,也可提高可维护性。4、预防性维护策略常采用提前实现、软件重用等技术。8.1.3软件维护的特性一、时间长、工作量大、成本高维护阶段是软件生存期中最长的一个阶段,软件维护的工作量占整个软件生存期的70%以上(图8.2),而且还在逐年增加。因此,如何减少软件维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质量的关键。维护71%其余29%图8.2维护工作比例二、维护的副作用维护的副作用是指由于修改程序而导致新的错误或者新增加一些不必要的活动。1、修改代码的副作用在修改源代码时,可能引起的错误。2、修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。3、修改文档的副作用对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配,缺省条件改变等错误,产生文档的副作用。8.1.3软件维护的特性8.1.3软件维护的特性三、软件维护的困难由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人员首先要对软件各阶段的文档和代码进行分析、理解。因而出现了理解别人的程序困难、文档不齐等问题,尤其是对大型、复杂系统的维护,更加困难和复杂,甚至是不可能的!1、结构化维护与非结构化维护非结构化维护—缺乏必要的文档说明,文档缺少或者不一制,难于确定数据结构、系统接口等特性,这样的维护工作令人生畏,事倍功半。太累了!受不了啦!几万行程序怎么改哦???结构化维护—指软件开发过程是按照软件工程方法进行的,开发各阶段的文档齐全,软件的维护过程,有一整套完整的方案、技术、审定过程及文档。可以看到,维护工作的难度及工作量的大小,明显的与前期的开发工作密切相关。8.1.4软件维护的代价维护费用高达开发费用的60%—70%,而且逐年上涨。维护中还可能引入新的潜在错误。要减少维护工作量,首先要考虑影响软件维护的因素。影响软件维护工作量和成本的因素很多,主要有以下方面:1、系统的大小系统越大,功能就越复杂,维护工作量就越大。2、程序设计语言语言的功能越强,生成程序所需要的指令(程序)越少,而且程序的可读性也越好,维护工作量也就越小。3、系统年龄系统越老,修改维护的次数就越多,结构也就越乱。因此维护工作量也就越大。4、软件开发新技术的应用软件开发过程中,使用先进的分析和设计技术,以及程序设计技术,如:面向对象的技术、构件技术、可视化程序设计技术等,可以减少维护工作量。8.1.4软件维护的代价一、软件维护工作量大8.1.4软件维护的代价二、软件维护的工作量模型维护活动分为生产性活动和非生产性活动。生产性活动包括分析评价、修改设计和编写程序代码等。非生产性活动包括理解程序代码,解释数据结构,接口特点和设计约束等。Belady和Lehman提出软件维护工作模型:M=P+K*EXP(C-D)其中:M—维护工作的总工作量P—生产性活动的工作量K—经验常数C—程序复杂度(由非结构化维护引起的)D—对维护软件熟悉程度的度量显然,若C越大,D越小,则维护工作量成指数增长,为此,必须防止出现非结构化维护并尽可能由熟悉软件的原开发人员参加维护。8.2软件维护的过程8.2软件维护的过程软件维护是一件复杂而困难的事,必须在相应的技术指导下,按照一定的步骤进行。首先要建立一个维护的组织,建立维护活动的登记、申请制度,及对维护方案的审批制度,规定复审的评价标准。通过软件维护组织对维护过程进行有效的控制,如首先要对软件进行全面、准确、迅速地理解,这是决定维护工作成败和质量好坏的关键。8.2.1维护组织一般维护需要保持一个正式的组织机构,但委派一个非正式的维护管理员来负责维护工作却是绝对必要的。图8.3给出了一种典型的维护组织方式。维护申请维护管理员系统管理员维护人员配置管理员修改批准人员软件系统图8.3软件维护组织维护管理员可以是某个人,也可以是一个包括管理人员、高级技术人员等在内的小组。维护管理员将提交的维护申请交给系统管理员进行评价,然后由修改批准人员决定如何修改,交维护人员在系统管理人员的指导下对软件进行修改。在修改过程中,配置管理员对软件配置进行审查。8.2.1维护组织用户维护人员安排改正性维护确认维护类型维护实施评价优先级进行问题分析复审评价错误严重程度进行问题分析确定更改要求维护要求将安排好的工作量列入计划低高纠错性严重不严重将改正错误列入计划人员安排交付使用的软件理解分析程序安排计划修改程序测试程序或或或或8.4软件维护的工作流程图修改过的软件8.2.2软件维护的流程8.2.2维护工作的流程图8.4描述了实施软件维护的工作流程,一个维护申请经过评审后,首先要确定维护的类型,还要分辨错误的严重程度或修改优先级的高低,分别处理。人员安排完美性适应性8.2.3维护工作的组织管理8.2.3维护工作的组织管理软件维护工作不仅是技术性的,它还需要大量的管理工作与之相配合,才能保证维护工作的质量。管理部门应对提交的修改方案进行分析和审查,并对修改带来的影响作充分的估计,对于不妥的修改予以撤销。需修改主文档时,管理部门更应仔细审查。图8.5描述了软件维护的管理流程。维护修改建议分析修改建议是否合理提交管理部门审查是否同意修改撤销NYNY进行测试提交管理部门审批是否批准更新主文档Y更新其他文档提交使用修改N8.5软件维护的管理流程8.3软件维护技术正确、合理的使用软件维护技术,是提高维护的效率和质量的关键。软件维护的技术包括:面向维护的技术__涉及到软件开发的所有阶段。维护支援技术—支持软件维护阶段的技术。维护档案记录—做好维护档案记录,才能为维护评价提供有效的数据。维护评价—确定维护的质量和成本。8.3软件维护技术8.3.1面向维护的技术在软件开发阶段用来减少错误,提高软件可维护性的技术。即是说,面向维护的技术涉及到软件开发的所有阶段。在需求分析阶段:对用户的需求进行严格的分析定义,使之没有矛盾和易于理解,可以减少软件中的错误。在设计阶段:划分模块时充分考虑将来改动或扩充的可能性。在编码阶段:采用灵活的数据结构,使程序相对独立于数据的物理结构,养成良好的程序设计风格。在测试阶段:尽可能多发现错误,保存测试用例和测试数据等。以上这些技术方法都能够减少软件错误,提高软件的可维护性。8.3.1面向维护的技术维护支援技术则是在软件维护阶段用来提高维护作业的效率和质量的技术。针对不同类型的维护,维护支援技术可包括以下技术:信息收集收集有关系统在运行过程中的各种问题。错误原因分析分析所收集到的信息,分析出错的原因。软件分析与理解只有对需要维护的软件进行认真的理解,才保证软件维护正确进行。维护方案评价在进行维护修改前,要确定维护方案,并由相关的组织进行评审通过后才能执行。代码与文档修改实施维护方案。修改后的确认经过修改的软件,需要重新进行测试。远距离的维护对于网络系统,可以通过远程控制进行维护。8.3.2维护支援技术8.3.2维护支援技术8.3.3维护档案记录为了评估软件维护的有效程度,确定软件产品的质量,确定维护的实际开销,需要在维护的过程中做好维护档案记录。Swanson提出维护档案记录的内容包括:程序名称源程序语句条数机器代码指令条数所用的程序设计语言程序安装的日期程序安装后的运行次数与程序运行次数有关的处理故障数程序改变的层次及名称修改程序所增加的源程序语句数修改程序所减少的源程序语句数每次修改所付出的“人-时”数修改程序的日期软件维护人员的姓名维护申请报告的名称维护类型维护开始和结束时间花费在维护上的累计“人时”数维护工作的净收益8.3.3维护档案记录8.3.4软件维护评价8.3.4软件维护评价对维护活动进行评价是比较困难的,因为往往缺乏进行评价的可靠数据。但如果维护档案记录工作做得比较好,就可以有一些进行软件维护的度量值,例如:每次程序运行时的平均出错次数;花费在每类维护上的总“人时”数;每个程序、每种语言、每种维护类型的程序平均修改次数;因为维护,增加或删除每个源程序语句所花费的平均“人时”数;用于每种语言的平均“人时”数;维护申请报告的平均处理时间;各类维护申请的百分比。8.4软件可维护性许多软件的维护十分困难,主要原因在于:这些软件的文档和源程序难于理解,又难于修改。由于维护工作面广,维护的难度大,稍有不慎,就会在修改中给软件带来新的问题或引入新的错误,所以为了使得软件能够易于维护,必须考虑使软件具有可维护性。本节从软件可维护性的定义,可维护性的度量,提高可维护性的方法三方面论述这个问题。8.4软件可维护性8.4.1软件可维护性的定义8.4.1软件可维护性的定义软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。软件的可维护性是软件开发阶段各个时期的关键目标。目前广泛使用的衡量程序的可维护性的7种特性如表8-1所示。而且对于不同类型的维护,这7种特性的侧重点也不相同。表8-1各类维护中的侧重点改正性维护适应性维护完善性维护可理解性O可测试性O可修改性OO可靠性O可移植性O可使用性OO效率O8.4.2可维护性的度量随着如何对软件可维护性进行定量度量研究的深入,形成了一个引人注目的学科——软件度量学。度量一个软件的可维护性常用的方法有:质量检查表、质量测试、质量标准。质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单。评测者针对检查表上的每一个问题,依据自己的定性判断,回答“Yes”或者“No”。质量测试和质量标准用于定量分析和评价程序的质量。由于许多质量特性是相互抵触的,可用以

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功