第8章软件维护

上传人:桔**** 文档编号:568782398 上传时间:2024-07-26 格式:PPT 页数:76 大小:255KB
返回 下载 相关 举报
第8章软件维护_第1页
第1页 / 共76页
第8章软件维护_第2页
第2页 / 共76页
第8章软件维护_第3页
第3页 / 共76页
第8章软件维护_第4页
第4页 / 共76页
第8章软件维护_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《第8章软件维护》由会员分享,可在线阅读,更多相关《第8章软件维护(76页珍藏版)》请在金锄头文库上搜索。

1、 软件维护的概念软件维护的概念 软件维护活动软件维护活动 程序修改的步骤及修改程序修改的步骤及修改的副作用的副作用 可维护性可维护性 提高可维护性的方法提高可维护性的方法 避怒饺胳凸闯述麦论搀奔坍硼远美孜肯岸匣瓮榆准藐匹迫富诈肩漳俏摸寂第8章软件维护第8章软件维护一、软件维护的概念一、软件维护的概念n n软件维护的定义软件维护的定义n n影响维护工作量的因素影响维护工作量的因素n n软件维护的策略软件维护的策略n n维护成本维护成本毁携苑巢屹秩计书或师碘苹饭既嘶嘱假濒智悼舰晾呆烈晚奋焦鹤庇州者弥第8章软件维护第8章软件维护1. 1. 软件维护的定义软件维护的定义n n在软件运行维护阶段在软件运

2、行维护阶段对软件产品对软件产品进行的修改进行的修改就是所谓的维护。就是所谓的维护。n n维护的类型有四种:维护的类型有四种:uu 改正性维护改正性维护uu 适应性维护适应性维护uu 完善性维护完善性维护uu 预防性维护预防性维护骚淬捐畜炭同悍毒虚梭沉痞绞疑列窟篷胎湘尔熬寓怒缄巨寻字眉磨诀幽炼第8章软件维护第8章软件维护1.1 改正性维护改正性维护n n在软件交付使用后,因开发时测试在软件交付使用后,因开发时测试的的不彻底、不完全不彻底、不完全,必然会有部分,必然会有部分隐藏的错误遗留到运行阶段。隐藏的错误遗留到运行阶段。n n这些隐藏下来的错误这些隐藏下来的错误在某些特定的在某些特定的使用环境

3、下就会暴露出来使用环境下就会暴露出来。n n为了为了识别和纠正软件错误识别和纠正软件错误、改正软改正软件性能上的缺陷件性能上的缺陷、排除实施中的误排除实施中的误使用使用,应当进行的诊断和改正错误,应当进行的诊断和改正错误的过程就叫做改正性维护。的过程就叫做改正性维护。咋乔努纽儒议猎诺胆搽实锁厩沛糠曹余程砌狗撮聘弯寅漠享驾沏据爆请嗣第8章软件维护第8章软件维护1.2 适应性维护适应性维护n n在使用过程中,在使用过程中,uu 外部环境外部环境(新的硬、软件配置新的硬、软件配置)uu 数据环境数据环境(数据库、数据格式、数据库、数据格式、数据输入数据输入/ /输出方式、数据存储介输出方式、数据存储

4、介质质)可能发生变化。可能发生变化。n n为使软件适应这种变化,而去修改为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。软件的过程就叫做适应性维护。识予娄实杨属适皋曝阜粮级茨出椰士吵切些锰弥滋纵缠僚掐巧匀赃嫂昼俱第8章软件维护第8章软件维护1.3 完善性维护完善性维护n n在软件的使用过程中,用户往往会在软件的使用过程中,用户往往会对软件提出新的对软件提出新的功能功能与与性能性能要求。要求。n n为了满足这些要求,需要修改或再为了满足这些要求,需要修改或再开发软件,以开发软件,以扩充软件功能、增强扩充软件功能、增强软件性能、改进加工效率、提高软软件性能、改进加工效率、提高软件的可维护

5、性件的可维护性。n n这种情况下进行的维护活动叫做完这种情况下进行的维护活动叫做完善性维护。善性维护。独咸意淹崇误猴故集挛凄瓦话钳虑缅负捷迂虫譬燥胜胆莱戊惑低乾丰催搬第8章软件维护第8章软件维护n n实践表明,在几种维护活动中,完实践表明,在几种维护活动中,完善性维护所占的比重最大。善性维护所占的比重最大。即大部即大部分维护工作是改变和加强软件,而分维护工作是改变和加强软件,而不是纠错。不是纠错。n n完善性维护不一定是救火式的紧急完善性维护不一定是救火式的紧急维修,而可以维修,而可以是有计划、有预谋的是有计划、有预谋的一种再开发活动一种再开发活动。n n事实证明,来自用户要求扩充、加事实证明

6、,来自用户要求扩充、加强软件功能、性能的维护活动约占强软件功能、性能的维护活动约占整个维护工作的整个维护工作的5050。朵融诛夷塑宪损谤靛社克捶矣搞屿答毖转森洛耽巡蝗虱侮拖肆糟敲稳砂敏第8章软件维护第8章软件维护1.4 预防性维护预防性维护n n预防性维护是为了预防性维护是为了提高软件的可维提高软件的可维护性、可靠性等护性、可靠性等,为以后进一步改,为以后进一步改进软件打下良好基础。进软件打下良好基础。n n预防性维护定义为:预防性维护定义为:采用先进的软采用先进的软件工程方法对需要维护的软件或软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、件中的某一部分(重新)进行设计、编制

7、和测试。编制和测试。您潜阴弧乎让萨帐咬摘槽垛腔幕骏雏批柿盐厚缅龟驮尺谰耪改恤硝亲俊却第8章软件维护第8章软件维护n n在整个软件维护阶段所花费的全部工在整个软件维护阶段所花费的全部工作量中,作量中,完善性维护占了几乎一半的完善性维护占了几乎一半的工作量。工作量。n n软件维护活动所花费的工作占整个生软件维护活动所花费的工作占整个生存期工作量的存期工作量的70%以上以上,这是由于在,这是由于在漫长的软件运行过程中需要不断对软漫长的软件运行过程中需要不断对软件进行修改,以件进行修改,以改正新发现的错误改正新发现的错误、适应新的环境和用户新的要求,这些适应新的环境和用户新的要求,这些修改需要花费很多

8、精力和时间,而且修改需要花费很多精力和时间,而且有时会引入新的错误。有时会引入新的错误。修艳嘿扰些壤颗芝佛咬糜童惦迄遭孪搐拽淌理贪苇衔钠沼吭翟毯葬奶边锚第8章软件维护第8章软件维护 三类维护占三类维护占 维护在软件生存期维护在软件生存期 总维护比例总维护比例 所占比例所占比例海漱泌棋充酝削锥把凸舍晾打辫琅婶驳禽刊琼嗓椭粥锑爹守砧闭强臆齐坚第8章软件维护第8章软件维护2. 2. 影响维护工作量的因素影响维护工作量的因素n n在软件的维护过程中,需要花费在软件的维护过程中,需要花费大量的工作量,从而大量的工作量,从而直接影响了直接影响了软件维护的成本。软件维护的成本。n n应当考虑应当考虑有哪些因

9、素影响软件维有哪些因素影响软件维护的工作量护的工作量,相应,相应应该采取什么应该采取什么维护策略维护策略,才能,才能有效地维护软件有效地维护软件并并控制维护的成本控制维护的成本。长空铰因狰荣竹渴赌赏亭志发饱机吼踏明划疥察漱凳擎丈卤娥芝波靠柬屈第8章软件维护第8章软件维护n n系统大小系统大小:系统越大,理解掌握起:系统越大,理解掌握起来越困难。系统越大,所执行功能来越困难。系统越大,所执行功能越复杂。因而需要更多的维护工作越复杂。因而需要更多的维护工作量。量。n n程序设计语言程序设计语言:使用强功能的程序:使用强功能的程序设计语言可以控制程序的规模。语设计语言可以控制程序的规模。语言的功能越

10、强,生成程序的模块化言的功能越强,生成程序的模块化和结构化程度越高,所需的指令数和结构化程度越高,所需的指令数就越少,程序的可读性越好。就越少,程序的可读性越好。岁峪咎盯柴亏钧锋谰答莽蓑彩殉巍鹿糕剂胚疚核到陇诗虞轧替觅矗吟赛亥第8章软件维护第8章软件维护n n系统年龄系统年龄:uu 老系统随着不断的修改,结构老系统随着不断的修改,结构越来越乱;越来越乱;uu 维护人员经常更换,程序又变维护人员经常更换,程序又变得越来越难于理解。得越来越难于理解。uu 许多老系统在当初并未按照软许多老系统在当初并未按照软件工程的要求进行开发,因而没件工程的要求进行开发,因而没有文档,或文档太少。有文档,或文档太

11、少。uu 在长期的维护过程中文档在许在长期的维护过程中文档在许多地方与程序实现变得不一致,多地方与程序实现变得不一致,在维护时就会遇到很大困难。在维护时就会遇到很大困难。全沽吏界力纠污巨话澳槛菊姐叮赠违宿泥汞驻份揣访眉简敷湿秀袜般途盐第8章软件维护第8章软件维护n n数据库技术的应用数据库技术的应用:使用数据库,可以简单而有效地管理和存储用户程序中的数据,还可以减少生成用户报表应用软件的维护工作量。n n先进的软件开发技术先进的软件开发技术:在软件开发:在软件开发时,时,若使用能使软件结构比较稳定的分析与设计技术,及程序设计技术,如面向对象技术、复用技术等,可减少大量的工作量。豢尸粹垃伏愤屑钧

12、阁胎熙孔异罩祷俭雄向棠钝娄肃援邮讥民入膛乍壕物遵第8章软件维护第8章软件维护3. 3. 软件维护的策略软件维护的策略n n改正性维护改正性维护通常要生成通常要生成100可靠的软件并不一可靠的软件并不一定合算,成本太高定合算,成本太高。但通过使用新但通过使用新技术,可大大减少进行改正性维护技术,可大大减少进行改正性维护的需要的需要。这些技术包括:这些技术包括:数据库管理系统、数据库管理系统、软件开发环境、程序自动生成系统、软件开发环境、程序自动生成系统、较高级较高级( (第四代第四代) )的语言的语言。以及新的以及新的开发方法、软件复用、防错程序设开发方法、软件复用、防错程序设计及周期性维护审查

13、等计及周期性维护审查等。慨锑娠风折扦彰坤捂棘惩仆镐寡惺壹辅跃肌娄怜波端叔阮扼虱嘱欠瞒轻招第8章软件维护第8章软件维护n n适应性维护适应性维护这一类维护不可避免,可以控制。这一类维护不可避免,可以控制。(1)(1) 在配置管理时,把硬件、操作在配置管理时,把硬件、操作系统和其它相关环境因素的可能变系统和其它相关环境因素的可能变化考虑在内化考虑在内。(2)(2) 把与硬件、操作系统,以及其把与硬件、操作系统,以及其它外围设备有关的程序归到特定的它外围设备有关的程序归到特定的程序模块中。程序模块中。 (3)(3) 使用内部程序列表、外部文件,使用内部程序列表、外部文件,以及处理的例行程序包,可为维

14、护以及处理的例行程序包,可为维护时修改程序提供方便。时修改程序提供方便。渭疡联涕悍戍牢艰惭誉弧骚耽通旁麻冈津褥灰磁热隆锚糟咬销哥疏蜕聚逛第8章软件维护第8章软件维护n n完善性维护完善性维护利用前两类维护中列举的方法,也利用前两类维护中列举的方法,也可以减少这一类维护。特别是可以减少这一类维护。特别是数据数据库管理系统、程序生成器、应用软库管理系统、程序生成器、应用软件包件包,可减少维护工作量。,可减少维护工作量。此外,建立软件系统的原型,把它此外,建立软件系统的原型,把它在实际系统开发之前提供给用户。在实际系统开发之前提供给用户。用户通过研究原型,进一步完善他用户通过研究原型,进一步完善他们

15、的功能要求,就可以减少以后完们的功能要求,就可以减少以后完善性维护的需要。善性维护的需要。式也男猴台倾搞抒晕邯纤孩云蛰瘩役畴佰讳侦线兑涪返勒阑企创憋猾勤宛第8章软件维护第8章软件维护4. 4. 维护成本维护成本n n有形的软件维护成本有形的软件维护成本是花费了多少钱,是花费了多少钱,无形的维护成本无形的维护成本有更大的影响。有更大的影响。uu 一些一些合理的修复或修改请求不能合理的修复或修改请求不能及时安排及时安排,使得客户不满意;,使得客户不满意;uu 变更的结果变更的结果引入新的故障引入新的故障,使得,使得软件整体质量下降;软件整体质量下降;uu 把软件人员抽调到维护工作中,把软件人员抽调

16、到维护工作中,干扰了软件开发工作。干扰了软件开发工作。熙腕端蹈姑吁砍痊袍讹似赘甲否拆段鄂手悔胀欺讶部咎囤枣缕蹦蕴谱夯纺第8章软件维护第8章软件维护n n软件维护的软件维护的代价代价是是降低了生产率降低了生产率,在做老程序的维护时非常明显。在做老程序的维护时非常明显。n n例如,例如,开发每一行源代码耗资开发每一行源代码耗资25美美元,维护每一行源代码需要耗资元,维护每一行源代码需要耗资1000美元美元。n n维护工作量包括维护工作量包括生产性活动生产性活动(如分(如分析和评价、设计修改和实现)和析和评价、设计修改和实现)和“轮转轮转”活动活动(如力图理解代码在做(如力图理解代码在做什么、试图判

17、明数据结构、接口特什么、试图判明数据结构、接口特性、性能界限等)。性、性能界限等)。概蜗扭痒酸亥浦贰稿颂涨扮一深裁讣撂丰乞袁锡碴谍新赫疽卿另峻珊竣揖第8章软件维护第8章软件维护二、软件维护活动二、软件维护活动n n为了有效地进行软件维护,应事先为了有效地进行软件维护,应事先就开始做组织工作。就开始做组织工作。uu 首先首先建立维护的机构建立维护的机构uu 申明申明提出维护申请报告的过程及提出维护申请报告的过程及评价的过程评价的过程uu 为每一个维护申请规定为每一个维护申请规定标准的处标准的处理步骤理步骤uu 建立建立维护活动的登记制度维护活动的登记制度以及规以及规定定评价和评审的标准评价和评审

18、的标准。谬泉狙亮兄他椒润录葡搬体迸贾馆顽寸化句卒矗獭蓖颅跨歇旅检呼颤蛤潮第8章软件维护第8章软件维护1. 1. 维护机构维护机构n n除了较大的软件开发公司外,通除了较大的软件开发公司外,通常在软件维护工作方面,并不保常在软件维护工作方面,并不保持一个正式的组织机构。持一个正式的组织机构。n n虽然不要求建立一个正式的维护虽然不要求建立一个正式的维护机构,但是在开发部门确立一个机构,但是在开发部门确立一个非正式的维护机构则是非常必要非正式的维护机构则是非常必要的。的。样奄胀逆茧奎肘嗽毡肺衍荤料酉省聘沼珐神扶骇线卓炎费保授匠嫂妒洽臣第8章软件维护第8章软件维护软件维护的机构软件维护的机构宫鄙内鸳

19、坠硅眼为式辑忠蔷俘劣绥挤淄莉黄沧驱财孔劲涧霞铁戒佩褂杜径第8章软件维护第8章软件维护n n维护申请维护申请提交给提交给维护管理员维护管理员,他把,他把申请交给某个申请交给某个系统监督员系统监督员去去评价评价。n n一旦做出评价,由一旦做出评价,由修改负责人修改负责人确定确定如何进行修改如何进行修改。n n在修改程序的过程中,由在修改程序的过程中,由配置管理配置管理员员严格把关,严格把关,控制修改的范围控制修改的范围,对对软件配置进行审计软件配置进行审计。n n在维护之前,就把责任明确下来,在维护之前,就把责任明确下来,可以减少维护过程中的混乱。可以减少维护过程中的混乱。筑卫铬泻瑰琵虏遮壬奋郑牛

20、躲颊堆来阮僚孝惺貉饼缆孤馅枣风壶骆断聘冲第8章软件维护第8章软件维护2. 2. 软件维护申请报告软件维护申请报告n n维护申请报告或称维护申请报告或称软件问题报告软件问题报告,由由申请维护的用户申请维护的用户填写填写。n n用户必须用户必须完整地说明产生错误的完整地说明产生错误的情况情况,包括,包括输入数据、错误清单输入数据、错误清单以及其它有关材料以及其它有关材料。n n如果申请的是适应性维护或完善如果申请的是适应性维护或完善性维护,用户必须提出一份修改性维护,用户必须提出一份修改说明书,列出所有希望的修改。说明书,列出所有希望的修改。祭巨卧汹辱咎滓阮蔓卧青榜菩咋揖尧澜狮渍确芯瞪快挣盗壁迷递

21、佳掣如渭第8章软件维护第8章软件维护n n维护申请报告将由维护申请报告将由维护管理员维护管理员和和系统监督员系统监督员来研究处理。来研究处理。n n他们应相应地做出他们应相应地做出软件修改报告,软件修改报告,指明:指明:uu 所需修改变动的性质;所需修改变动的性质;uu 申请修改的优先级;申请修改的优先级;uu 为满足某个维护申请报告,所为满足某个维护申请报告,所需的工作量;需的工作量;uu 预计修改后的状况预计修改后的状况. .勇贬佑羊疽突抛描疲招还篷盯翁穆圈骑牛胃柏谋国旭虫崩素懈佰胁尿文劲第8章软件维护第8章软件维护n n软件修改报告应提交修改负责人,软件修改报告应提交修改负责人,经批准后

22、才能开始进一步安排维经批准后才能开始进一步安排维护工作。护工作。葬豌碧熬傲蔼柏簿裕涟剩菇绪钢铜鞋卸爆蹬酥矫仆瑚榷荡昼詹襟寥荧菏囚第8章软件维护第8章软件维护n n尽管维护申请的类型不同,但都要尽管维护申请的类型不同,但都要进行同样的技术工作。进行同样的技术工作。uu 修改软件需求说明修改软件需求说明uu 修改软件设计修改软件设计uu 设计评审设计评审uu 对源程序做必要的修改对源程序做必要的修改uu 单元测试单元测试uu 集成测试集成测试( ( 回归测试回归测试) )uu 确认测试确认测试uu 软件配置评审等。软件配置评审等。捏魂砒酚津鸭玛蝉箭烈阀粉影蒜米剪厢漳深舜扒困睛擂尽泻唉怂宿用刮辩第8

23、章软件维护第8章软件维护 在每次软件维护任务完成后进行情在每次软件维护任务完成后进行情况评审,对以下问题做一总结:况评审,对以下问题做一总结:(1)(1) 在目前情况下,设计、编码、测在目前情况下,设计、编码、测试中的哪一方面可以改进试中的哪一方面可以改进? ?(2)(2) 哪些维护资源应该有但没有哪些维护资源应该有但没有? ?(3)(3) 工作中主要的或次要的障碍是什工作中主要的或次要的障碍是什么么? ?(4)(4) 从维护申请的类型来看是否应当从维护申请的类型来看是否应当有预防性维护有预防性维护? ?情况评审对将来的维护工作如何进行情况评审对将来的维护工作如何进行会产生重要的影响。会产生重

24、要的影响。弃拈燕合欢拈诗猴亭轿悉渝滋它跃忠具钠泡嗅徒族气献咖却墩盅查狭缀泣第8章软件维护第8章软件维护3. 3. 维护档案记录维护档案记录n n程序名称程序名称n n源程序语句条数源程序语句条数n n机器代码指令条数机器代码指令条数n n所用的程序设计语言所用的程序设计语言n n程序安装的日期程序安装的日期n n程序安装后的运行次数程序安装后的运行次数n n与程序安装后运行次数有关的处与程序安装后运行次数有关的处理故障次数理故障次数狐俐润华篙屯搏乏双邱髓眷恕介椅怂汀闹撵孜涎孜行满清婶算恍荣假叛瑰第8章软件维护第8章软件维护n n程序改变的层次及名称程序改变的层次及名称n n修改程序增加的源程序

25、语句条数修改程序增加的源程序语句条数n n修改程序减少的源程序语句条数修改程序减少的源程序语句条数n n每次修改所付出的每次修改所付出的“人时人时”数数n n修改程序的日期修改程序的日期n n软件维护人员的姓名软件维护人员的姓名n n维护申请报告的名称、维护类型维护申请报告的名称、维护类型n n维护开始时间和维护结束时间、维护开始时间和维护结束时间、n n花费在维护上的累计花费在维护上的累计“人时人时”数数n n维护工作的净收益等。维护工作的净收益等。占庭荣鹏旦潮悟妆拍翻鸯危威主哪趾缓埔纹峻疯钨瑟玩全脖将赢陪假哨胯第8章软件维护第8章软件维护4. 4. 维护评价维护评价n n评价维护活动比较困

26、难评价维护活动比较困难,因为缺乏可,因为缺乏可靠的数据。靠的数据。n n如果维护的档案记录做得比较好,可如果维护的档案记录做得比较好,可以得出一些维护以得出一些维护“性能性能”方面的度量方面的度量值。值。uu 每次程序运行时的平均出错次数;每次程序运行时的平均出错次数;uu 花费在每类维护上的总花费在每类维护上的总“人时人时”数;数;淀酉惶蜡安炸舶寇憾寂茧瞻咳爪崇咀峻妙父廉缩诞俄趁坚厩箕晾义大侣不第8章软件维护第8章软件维护uu 每个程序、每种语言、每种维护类型每个程序、每种语言、每种维护类型的程序平均修改次数;的程序平均修改次数;uu 因为维护,增加或删除每个源程序语因为维护,增加或删除每个

27、源程序语句所花费的平均句所花费的平均“人时人时”数;数;uu 用于每种语言的平均用于每种语言的平均“人时人时”数;数;uu 维护申请报告的平均处理时间;维护申请报告的平均处理时间;uu 各类维护申请的百分比。各类维护申请的百分比。据此可对开发技术、语言选择、维护工据此可对开发技术、语言选择、维护工作计划、资源分配、以及其它许多方作计划、资源分配、以及其它许多方面做出判定。面做出判定。崖苔酥窿习巳呻子杰团岿荒飘滞嫡肆羊柬长绥郝拳饥栓驮骑柔郁怖迷鳃叶第8章软件维护第8章软件维护三三. .程序修改的步骤及修改的副作用程序修改的步骤及修改的副作用n n在软件维护时,必然会对源程序进在软件维护时,必然会

28、对源程序进行修改。行修改。n n通常对源程序的修改不能无计划地通常对源程序的修改不能无计划地仓促上阵,为了正确、有效地修改仓促上阵,为了正确、有效地修改, ,需要经历以下三个步骤。需要经历以下三个步骤。FF 分析和理解程序分析和理解程序FF 修改程序修改程序FF 重新验证程序重新验证程序昧情貌录筑搐蒋苍馏唾梆彤灼丸怒稻钠生流窃彻亿起器胡虫腹篙仁夕零晤第8章软件维护第8章软件维护分析和理解程序分析和理解程序n n经过分析,经过分析,全面、准确、迅速地理全面、准确、迅速地理解程序是决定维护成败和质量好坏解程序是决定维护成败和质量好坏的关键的关键。在这方面,软件的可理解。在这方面,软件的可理解性和文

29、档的质量非常重要。性和文档的质量非常重要。uu 理解程序的功能和目标;理解程序的功能和目标;uu 掌握程序的结构信息,即从程序掌握程序的结构信息,即从程序中细分出若干结构成分。如程序系中细分出若干结构成分。如程序系统结构、统结构、 控制结构、数据结构和控制结构、数据结构和输入输出结构等;输入输出结构等;秧砒默匆翰溺脂钱翌秘鼻掣俘烬涤疵磨午架慨阎拢吞宋逸岗腐鲜碳陀苇挎第8章软件维护第8章软件维护uu 了解数据流信息,即涉及到的了解数据流信息,即涉及到的数据来源何处,在哪里被使用;数据来源何处,在哪里被使用;uu 了解控制流信息,即执行每条了解控制流信息,即执行每条路径的结果;路径的结果;uu 理

30、解程序的操作理解程序的操作( (使用使用) )要求;要求;n n为了容易地理解程序,要求自顶为了容易地理解程序,要求自顶向下地理解现有源程序的程序结向下地理解现有源程序的程序结构和数据结构,为此可采用如下构和数据结构,为此可采用如下几种方法:几种方法:朝棍撅讯亮瓮乍匿捡滴较堵嚎雹域锯跺兆歌耽悬否烤幂希棍蚌孔尊胜许秸第8章软件维护第8章软件维护1. 1. 分析程序结构图分析程序结构图搜集所有存储该程序的文件,阅搜集所有存储该程序的文件,阅读这些文件,记下它们包含的过读这些文件,记下它们包含的过程名,程名,建立一个包括这些过程名建立一个包括这些过程名和文件名的清单和文件名的清单;果汕摔敛盘棘兼畜镐

31、拐林背遂撬另覆战挤筷哪档瞳驱约捌则勘擂陨条咙五第8章软件维护第8章软件维护2. 数据跟踪数据跟踪(1) 建立各层次的程序级上的接口建立各层次的程序级上的接口图图,展示各模块或过程的调用方,展示各模块或过程的调用方式和接口参数;式和接口参数;(2) 利用数据流分析方法,对过程利用数据流分析方法,对过程内部的一些变量进行跟踪。内部的一些变量进行跟踪。可获可获得得有关数据在过程间如何传递有关数据在过程间如何传递,在过程内如何处理在过程内如何处理等信息。对于等信息。对于判断问题原因特别有用。在跟踪判断问题原因特别有用。在跟踪的过程中可在源程序中间插入自的过程中可在源程序中间插入自己的注释。己的注释。公

32、服林萌否恋样肉蛹沥月需虞禁槽寨隆姨霄宜韵室筒悬校隘佩洋忌措挂局第8章软件维护第8章软件维护3. 控制跟踪控制跟踪控制流跟踪可采用符号执行或实际控制流跟踪可采用符号执行或实际动态跟踪的方法,动态跟踪的方法,了解数据如何从了解数据如何从一个输入源到达输出点的。一个输入源到达输出点的。4. 充分阅读和使用源程序清单和文档充分阅读和使用源程序清单和文档,分析现有文档的合理性。分析现有文档的合理性。5. 充分使用由编译程序或汇编程序提充分使用由编译程序或汇编程序提供的交叉引用表、符号表、以及其供的交叉引用表、符号表、以及其它有用的信息。它有用的信息。6. 如有可能如有可能,积极参加开发工作。,积极参加开

33、发工作。蘸物舶育笼辞思般新钉砷孺俘睹效概氮翘笼暂耽椭惹发榔拄究寨盛狮耙仿第8章软件维护第8章软件维护修改程序修改程序n n对程序的修改,必须事先做出计对程序的修改,必须事先做出计划,有预谋地、周密有效地实施划,有预谋地、周密有效地实施修改。修改。1. 设计程序的修改计划设计程序的修改计划程序的修改计划要考虑人员和资程序的修改计划要考虑人员和资源的安排。小的修改可以不需要源的安排。小的修改可以不需要详细的计划,而对于需要耗时数详细的计划,而对于需要耗时数月的修改,就需要计划立案。月的修改,就需要计划立案。拽嫉带迷瞳拭冀助雅柜商烁矫强穿羹绍涌盎酿培肤梗会这溉窍昭喀予奖淋第8章软件维护第8章软件维护

34、2. 修改代码,以适应变化修改代码,以适应变化在修改时,要求:在修改时,要求: (1) 正确、有效地编写修改代码;正确、有效地编写修改代码;(2) 要谨慎地修改程序,尽量保持程要谨慎地修改程序,尽量保持程序的风格及格式,要在程序清单上序的风格及格式,要在程序清单上注明改动的指令;注明改动的指令;(3) 不要删除程序语句,除非完全肯不要删除程序语句,除非完全肯定它是无用的;定它是无用的;(4) 不要试图共用程序中已有的临时不要试图共用程序中已有的临时变量或工作区,为了避免冲突或混变量或工作区,为了避免冲突或混淆用途,应设置自己的变量;淆用途,应设置自己的变量;脏袜垒衷遗见红敖初壳雨拉堂怔胯穆乖子

35、毁杭娃瞥尔棺必适韦同黑枝獭丢第8章软件维护第8章软件维护(5) 插入错误检测语句;插入错误检测语句;(6) 在修改过程中做好修改的详细在修改过程中做好修改的详细记录,消除变更中任何有害的副作记录,消除变更中任何有害的副作用(波动效应);用(波动效应);3. 修改程序的副作用修改程序的副作用所谓副作用是指因修改软件而造成所谓副作用是指因修改软件而造成的错误或其它不希望发生的情况。的错误或其它不希望发生的情况。副作用有三种:副作用有三种:修改代码的副作用、修改代码的副作用、修改数据的副作用、文档的副作用。修改数据的副作用、文档的副作用。襄贺苏猴列在堡佃袭制淳绊妒先筋少衙向蒂捡淡榴览篡郁获崎禾趟拦务

36、密第8章软件维护第8章软件维护n n在修改源代码时,都可能引入错误。在修改源代码时,都可能引入错误。例如,例如,删除或修改一个子程序、删删除或修改一个子程序、删除或修改一个标号、除或修改一个标号、 删除或修改一删除或修改一个标识符、改变程序代码的时序关个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计改进程序的执行效率,以及把设计上的改变翻译成代码的改变上的改变翻译成代码的改变时,都时,都容易引入错误。容易引入错误。(1) 修改代码的副作用修改代码的副作用欲湾阉

37、跋瑟识沟宙绰造厂浅像会纱擎氖即寡呜潜线狙鹰煞绽陈办坑拯犊疑第8章软件维护第8章软件维护(2) 修改数据的副作用修改数据的副作用n n在在修改数据结构修改数据结构时,有可能造成时,有可能造成软软件设计与数据结构不匹配件设计与数据结构不匹配,因而导,因而导致软件出错。致软件出错。n n数据副作用就是修改软件信息结构数据副作用就是修改软件信息结构导致的结果。导致的结果。n n容易导致设计与数据不相容的错误容易导致设计与数据不相容的错误可以有:可以有:uu 重新定义局部的或全局的常量重新定义局部的或全局的常量镍完隅觅染各击谢址迸焊僧裂砚顷凉济妒溪鄂屠完旦潘梯蚌煌豆蛔侥造邦第8章软件维护第8章软件维护u

38、u 重新定义记录或文件的格式重新定义记录或文件的格式uu 增大或减小一个数组或高层数增大或减小一个数组或高层数据结构的大小据结构的大小uu 修改全局或公共数据修改全局或公共数据uu 重新初始化控制标志或指针重新初始化控制标志或指针uu 重新排列输入输出或子程序重新排列输入输出或子程序的参数的参数n n数据副作用可以通过数据副作用可以通过交叉引用表交叉引用表加加以控制。把数据元素、记录、文件以控制。把数据元素、记录、文件和其它结构联系起来。和其它结构联系起来。医梧汗瘸勋畸爷匡奖攀抨宝淳夺乏澈身撰粕聚憨彼眉钦藏兆鸡敞恒迄殆伴第8章软件维护第8章软件维护(3) 文档的副作用文档的副作用n n对对数据

39、流、软件结构、数据流、软件结构、 模块逻辑或模块逻辑或任何其它有关特性任何其它有关特性进行修改时,必进行修改时,必须须对相关技术文档进行相应修改对相关技术文档进行相应修改。否则会导致否则会导致文档与程序功能不匹配,文档与程序功能不匹配,缺省条件改变,新错误信息不正确缺省条件改变,新错误信息不正确等错误。使得等错误。使得软件文档不能反映软软件文档不能反映软件的当前状态。件的当前状态。n n对于用户来说,软件事实上就是文对于用户来说,软件事实上就是文档。档。愈撒文鸟钞树鸟傲茁佐弦纂肤冻侮佐荐颖泌肆诞旬懈蜕啤坑楔甭珠腕附唇第8章软件维护第8章软件维护n n如果对可执行软件的修改不反映在文档如果对可执

40、行软件的修改不反映在文档里,就会产生文档的副作用。里,就会产生文档的副作用。uu 对交互输入的顺序或格式进行修改,对交互输入的顺序或格式进行修改,如果没有正确地记入文档中,就可能引如果没有正确地记入文档中,就可能引起重大的问题。起重大的问题。uu 过时的文档内容、索引和文本可能造过时的文档内容、索引和文本可能造成冲突,引起用户失败和不满。成冲突,引起用户失败和不满。n n因此,因此,必须在软件交付之前对整个软件必须在软件交付之前对整个软件配置进行评审配置进行评审,以减少文档的副作用。,以减少文档的副作用。啊渐痘呼婿妒呜祁藤韶笛兆迢荫疑睦彻料衷筷激先愚洁垫感忌尚茬焦廊懊第8章软件维护第8章软件维

41、护四、软件可维护性四、软件可维护性n n许多软件的维护十分困难,原因许多软件的维护十分困难,原因在于这在于这些软件的文档不全些软件的文档不全、质量质量差差、开发过程不注意采用好的方开发过程不注意采用好的方法法,忽视程序设计风格忽视程序设计风格等。等。n n许多维护要求并不是因为程序中许多维护要求并不是因为程序中出错而提出的,而是为出错而提出的,而是为适应环境适应环境变化或需求变化变化或需求变化而提出的。而提出的。n n为了使得软件能够易于维护,必为了使得软件能够易于维护,必须考虑使软件具有须考虑使软件具有可维护性可维护性。匡疚锭冶葛憨陀帅撇汰涪稗萨链脯决叭饱火抹谣惶墩弦补朔挑睹秀业赊蜘第8章软

42、件维护第8章软件维护 软软件件可可维维护护性性的的定定义义n n软件可维护性软件可维护性是指是指纠正软件系统纠正软件系统出现的错误和缺陷,以及为满足出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩新的要求进行修改、扩充或压缩的容易程度的容易程度。n n可维护性、可使用性、可靠性可维护性、可使用性、可靠性是是衡量软件质量的主要质量特性,衡量软件质量的主要质量特性,也是用户十分关心的几个方面。也是用户十分关心的几个方面。n n软件的软件的可维护性可维护性是是软件开发阶段软件开发阶段各个时期的关键目标各个时期的关键目标。寐簿妮箱受喊椭莽恩碟莲腑哼棺谆碌吵猪猛叭名迁升筛闺层摹逝而别莱兔第8章软

43、件维护第8章软件维护n n目前广泛使用的是用如下的七个特目前广泛使用的是用如下的七个特性来衡量程序的可维护性。性来衡量程序的可维护性。可理解性可理解性可使用性可使用性可测试性可测试性可移植性可移植性可修改性可修改性效率效率可靠性可靠性n n而且对于不同类型的维护,这七种而且对于不同类型的维护,这七种特性的侧重点也不相同特性的侧重点也不相同。筏骋揉轻藻绿努没剥境规台抛收辣盎沟迂荧稍概虚挪眩凌星延瞪肌祝埃哄第8章软件维护第8章软件维护可维护性的度量可维护性的度量n n人们一直期望人们一直期望对软件的可维护性做对软件的可维护性做出定量度量出定量度量,但要做到这一点并不,但要做到这一点并不容易。容易。

44、n n常用的度量一个可维护的程序的七常用的度量一个可维护的程序的七种特性的方法。就是:种特性的方法。就是: 滩箍滚亏眷嘴争怕哇催沮菱程乎蹿挪川猜忠幸况播苹门论黄再京陀硅晌乡第8章软件维护第8章软件维护1. 可理解性可理解性n n可理解性表明人们通过阅读源代码可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如和相关文档,了解程序功能及其如何运行的容易程度。何运行的容易程度。n n一个可理解的程序应具备以下一些一个可理解的程序应具备以下一些特性:特性:模块化,风格一致性,不使模块化,风格一致性,不使用令人捉摸不定或含糊不清的代码,用令人捉摸不定或含糊不清的代码,使用有意义的数据名和过程名

45、,结使用有意义的数据名和过程名,结构化,完整性构化,完整性等。等。弘婉也来胸凰婆奠拄料辑灰厅惹互吁唇祥戚暮俯强槛怕郎乡奔镰某吊恰蚤第8章软件维护第8章软件维护2. 可靠性可靠性n n可靠性表明一个程序按照用户的要可靠性表明一个程序按照用户的要求和设计目标,在给定的一段时间求和设计目标,在给定的一段时间内正确执行的概率。内正确执行的概率。n n关于可靠性,度量的标准主要有:关于可靠性,度量的标准主要有:uu平均失效间隔时间平均失效间隔时间MTTFuu 平均修复时间平均修复时间MTTRuu 有效性有效性A = MTBD/(MTBD+MDT)四焦让嚎景坏弃戈粮榜巩翼逸毫泌舜缝声呛亭短矿岸钦琢吕抓旁乓

46、奎歹谚第8章软件维护第8章软件维护3. 可测试性可测试性n n可测试性表明论证程序正确性的容易可测试性表明论证程序正确性的容易程度程度。程序越简单,证明其正确性就。程序越简单,证明其正确性就越容易。而且设计合用的测试用例,越容易。而且设计合用的测试用例,取决于对程序的全面理解。取决于对程序的全面理解。n n一个可测试的程序应当是一个可测试的程序应当是可理解的,可理解的,可靠的,简单的。可靠的,简单的。n n用于可测试性度量的检查项目如下:用于可测试性度量的检查项目如下:uu 程序是否模块化程序是否模块化? ? 结构是否良好结构是否良好? ?猫辩己赴柠岁吸休测粳堵脯哗捆娱院邵盔奉瑰都绚炬显惕匀陪

47、痊吟枚耶诲第8章软件维护第8章软件维护uu 程序是否可理解程序是否可理解? ? 程序是否可靠程序是否可靠? ?uu 程序是否能显示任意中间结果程序是否能显示任意中间结果? ?uu 程序是否能以清楚的方式描述它的程序是否能以清楚的方式描述它的输出输出? ?uu 程序是否能及时地按照要求显示所程序是否能及时地按照要求显示所有的输入有的输入? ?uu 程序是否有跟踪及显示逻辑控制流程序是否有跟踪及显示逻辑控制流程的能力程的能力? ?uu 程序是否能从检查点再启动程序是否能从检查点再启动? ?uu 程序是否能显示带说明的错误信息程序是否能显示带说明的错误信息? ?比董求露论竹疟斡捡浆倚眺昂埠健尧蔼柞禽

48、诛监著顽轻儿浴媳矣谭淳胁铀第8章软件维护第8章软件维护4. 可修改性可修改性n n可修改性表明程序容易修改的程度可修改性表明程序容易修改的程度。n n一个可修改的程序应当是一个可修改的程序应当是可理解的、可理解的、通用的、灵活的、简单的通用的、灵活的、简单的。n n通用性是指程序适用于各种功能变通用性是指程序适用于各种功能变化而无需修改。化而无需修改。n n灵活性是指能够容易地对程序进行灵活性是指能够容易地对程序进行修改。修改。晰疑讽者友胁烹逗誓雌瞅癸顾沽呸矮涎峨影寐追春距蚌拆墒澄倔挞锋瀑捣第8章软件维护第8章软件维护5. 可移植性可移植性n n可移植性表明程序转移到一个新的计可移植性表明程序

49、转移到一个新的计算环境的可能性的大小算环境的可能性的大小。或者它表明。或者它表明程序可以容易地、有效地在各种各样程序可以容易地、有效地在各种各样的计算环境中运行的容易程度。的计算环境中运行的容易程度。n n一个可移植的程序应具有一个可移植的程序应具有结构良好结构良好、灵活灵活、不依赖于某一具体计算机或操不依赖于某一具体计算机或操作系统的性能作系统的性能。n n用于可移植性度量的检查项目如下:用于可移植性度量的检查项目如下:拟溃饶啃隅里晰弥晾秽白苯导搀卒掀打无狐会庐瓶骋撮袍欢教锅湿铱枷默第8章软件维护第8章软件维护uu 是否是用高级的独立于机器的语是否是用高级的独立于机器的语言来编写程序言来编写

50、程序? ?uu 是否使用广泛使用的标准化的程是否使用广泛使用的标准化的程序设计语言来编写程序序设计语言来编写程序? ? 是否仅使是否仅使用了这种语言的标准版本和特性用了这种语言的标准版本和特性? ?uu 程序中是否使用了标准的普遍使程序中是否使用了标准的普遍使用的库功能和子程序用的库功能和子程序? ?uu 程序中是否极少使用或根本不使程序中是否极少使用或根本不使用操作系统的功能用操作系统的功能? ?帧挑讽煌弊蛤般港督矫抡厕绅装贷奎壬鲸卸清碱锋耗扎庸丁动势乍豪鞋京第8章软件维护第8章软件维护uu程序在执行之前是否初始化内存程序在执行之前是否初始化内存?uu 程序在执行之前是否测定当前的程序在执行

51、之前是否测定当前的输入输出设备输入输出设备?uu 程序是否把与机器相关的语句分程序是否把与机器相关的语句分离了出来,集中放在了一些单独的离了出来,集中放在了一些单独的程序模块中,并有说明文件程序模块中,并有说明文件?u 程序是否结构化程序是否结构化? 并允许在小一并允许在小一些的计算机上分段些的计算机上分段(覆盖覆盖)运行运行?uu 程序中是否避免了依赖于字母数程序中是否避免了依赖于字母数字或特殊字符的内部位表示字或特殊字符的内部位表示? 贩关江轩腾陛靠拦榨火信刑嘻电指猿漏拧稻孺碌徽储摆省狸蜒豁灵雅爪炙第8章软件维护第8章软件维护6. 效率效率n n效率表明一个程序能执行预定功能效率表明一个程

52、序能执行预定功能而又不浪费机器资源的程度而又不浪费机器资源的程度。n n这些机器资源包括这些机器资源包括内存容量、外存内存容量、外存容量、通道容量和执行时间容量、通道容量和执行时间。n n用于效率度量的检查项目如下用于效率度量的检查项目如下:uu 程序是否模块化程序是否模块化? 结构是否良好结构是否良好?uu 是否消除了无用的标号与表达式,是否消除了无用的标号与表达式,以充分发挥编译器优化作用以充分发挥编译器优化作用?甜芳吓帝猎孔撤剧找雏熏绝绣坡玫团桂夜彦押谊交粹统括撂住茸酶氓虚刀第8章软件维护第8章软件维护uu 程序的编译器是否有优化功能程序的编译器是否有优化功能? ?uu 是否把特殊子程序

53、和错误处理是否把特殊子程序和错误处理子程序都归入了单独的模块中子程序都归入了单独的模块中? ?uu 是否以快速的数学运算代替了是否以快速的数学运算代替了较慢的数学运算较慢的数学运算? ?uu 是否尽可能地使用了整数运算,是否尽可能地使用了整数运算,而不是实数运算而不是实数运算? ?uu 是否在表达式中避免了混合数是否在表达式中避免了混合数据类型的使用,消除了不必要的据类型的使用,消除了不必要的类型转换类型转换? ? 小椒咯缘遂肠烯歇澳掌位婪购现龟陋色芦鞠欣抖伪杂掀聊笔焰乱泉撰剂主第8章软件维护第8章软件维护uu 程序是否避免了非标准的函数程序是否避免了非标准的函数或子程序的调用或子程序的调用?

54、 ?uu 在几条分支结构中,是否最有在几条分支结构中,是否最有可能为可能为“真真”的分支首先得到测的分支首先得到测试试? ?uu 在复杂的逻辑条件中,是否最在复杂的逻辑条件中,是否最有可能为有可能为“真真“的表达式首先得的表达式首先得到测试到测试? ?浸泪肉脱瀑褂亩姐门雕廷忽声墓免表厚仰但乡捎腋镊澳霞慎斧防拖边肺绑第8章软件维护第8章软件维护7. 可使用性可使用性n n从用户观点出发,从用户观点出发,可使用性定义为程可使用性定义为程序方便、实用、及易于使用的程度。序方便、实用、及易于使用的程度。一个可使用的程序应是一个可使用的程序应是易于使用的、易于使用的、能允许用户出错和改变,并尽可能不能允

55、许用户出错和改变,并尽可能不使用户陷入混乱状态的使用户陷入混乱状态的程序。程序。n n用于可使用性度量的检查项目如下:用于可使用性度量的检查项目如下:uu 程序是否具有自描述性程序是否具有自描述性? ?迫晦壳泼悄赋怠厘债贸勃钳市盾超漂宁栓擅琢坦硷育峰尘亭绊刑鞋罪郭晃第8章软件维护第8章软件维护uu 程序是否能始终如一地按照用程序是否能始终如一地按照用户的要求运行户的要求运行? ?uu 程序是否让用户对数据处理有程序是否让用户对数据处理有一个满意的和适当的控制一个满意的和适当的控制? ?uu 程序是否容易学会使用程序是否容易学会使用? ?uu 程序是否使用数据管理系统来程序是否使用数据管理系统来

56、自动地处理事务性工作和管理格自动地处理事务性工作和管理格式化、地址分配及存储器组织。式化、地址分配及存储器组织。uu 程序是否具有容错性程序是否具有容错性? ?uu 程序是否灵活程序是否灵活? ?效水娇痴冬秒翔横际盆坑垛反阂惊搓逐表激胯贡郁剑甩揖旗酪春札脂舱阀第8章软件维护第8章软件维护其它间接定量度量可维护性的方法其它间接定量度量可维护性的方法n n问题识别的时间;问题识别的时间;n n因管理活动拖延的时间;因管理活动拖延的时间;n n收集维护工具的时间;收集维护工具的时间;n n分析、诊断问题的时间;分析、诊断问题的时间;n n修改规格说明的时间;修改规格说明的时间;n n具体的改错或修改

57、的时间;具体的改错或修改的时间;n n局部测试的时间;局部测试的时间;n n集成或回归测试的时间;集成或回归测试的时间;n n维护的评审时间;维护的评审时间;走续淌亢标懦屎警拇师趴渴烷跃埠锑组榆哥饺占污遵绒深锐蝇胚侥氟脓搁第8章软件维护第8章软件维护n n这些数据反映了维护全过程中这些数据反映了维护全过程中检错检错纠错验证纠错验证的周期,即的周期,即从检测出从检测出软件存在的问题开始至修正它们并软件存在的问题开始至修正它们并经回归测试验证这段时间。经回归测试验证这段时间。n n可以粗略地认为,可以粗略地认为,这个周期越短,这个周期越短,维护越容易维护越容易。柴格垮臻腋刀歧溜陡烁署像旱碱颇因楚飘

58、绥乎语宗准醋彰霞窥扯擦钳垃赶第8章软件维护第8章软件维护五、提高可维护性的方法五、提高可维护性的方法n n建立明确的软件质量目标和建立明确的软件质量目标和优先级优先级n n使用提高软件质量的技术和使用提高软件质量的技术和工具工具n n进行明确的质量保证审查进行明确的质量保证审查n n选择可维护的程序设计语言选择可维护的程序设计语言n n改进程序的文档改进程序的文档稼该耶腺竟殖乎栖汁艺踌刨峭詹研渴端畸猖部惺见蹭鹏捆元脏舷迟吓岗务第8章软件维护第8章软件维护建立明确的软件质量目标和优先级建立明确的软件质量目标和优先级n n一个可维护的程序应是一个可维护的程序应是可理解的、可理解的、可靠的、可测试的

59、、可修改的、可可靠的、可测试的、可修改的、可移植的、效率高的、可使用的移植的、效率高的、可使用的。n n要实现这所有的目标,需要付出很要实现这所有的目标,需要付出很大的代价,而且也不一定行得通。大的代价,而且也不一定行得通。n n某些质量特性是相互促进的某些质量特性是相互促进的,例如,例如可理解性和可测试性、可理解性和可理解性和可测试性、可理解性和可修改性。可修改性。已表融泣苍蛙弥企榨侮墙盼孰铀膏吹颂秤虽喉鸣懊寨靶馋掳引褐籽额同纹第8章软件维护第8章软件维护n n另一些质量特性是相互抵触的另一些质量特性是相互抵触的,如效率,如效率和可移植性、效率和可修改性等。和可移植性、效率和可修改性等。n

60、n每一种每一种质量特性的相对重要性质量特性的相对重要性应随程序应随程序的用途及计算环境的不同而不同的用途及计算环境的不同而不同。例如,。例如,对编译程序来说,可能强调效率;但对对编译程序来说,可能强调效率;但对管理信息系统来说,则可能强调可使用管理信息系统来说,则可能强调可使用性和可修改性。性和可修改性。n n应当对程序的质量特性,在应当对程序的质量特性,在提出目标提出目标的的同时还必须同时还必须规定它们的优先级规定它们的优先级。烈症芒范嚣晦话菩厦拷跟锯芬骗扑趁粉涨浮堡潭况僳豁宗甭趟吠陡喧搂士第8章软件维护第8章软件维护使用提高软件质量的技术和工具使用提高软件质量的技术和工具n n模块化模块化

61、uu 如果需要改变某个模块的功能,则只要如果需要改变某个模块的功能,则只要改变这个模块,对其它模块影响很小;改变这个模块,对其它模块影响很小;uu 如果需要增加程序的某些功能,则仅需如果需要增加程序的某些功能,则仅需增加完成这些功能的新的模块或模块层;增加完成这些功能的新的模块或模块层;uu 程序的测试与重复测试比较容易;程序的测试与重复测试比较容易;uu 程序错误易于定位和纠正;程序错误易于定位和纠正; 银螺弓奸铰渠撬白规调厘射绿胡法禽痞辫遁球胶懊冶鱼狗啼真原荤疯勇枪第8章软件维护第8章软件维护n n结构化程序设计结构化程序设计uu 程序被划分成分层的模块结构;程序被划分成分层的模块结构;u

62、u 模块调用控制必须从模块的入口点模块调用控制必须从模块的入口点进入,从其出口点退出。进入,从其出口点退出。uu 模块的控制结构仅限于顺序、选择、模块的控制结构仅限于顺序、选择、重复三种,且没有重复三种,且没有GOTO语句。语句。uu 每个程序变量只用于唯一的程序目每个程序变量只用于唯一的程序目的,而且变量的作用范围应是明确的、的,而且变量的作用范围应是明确的、有限制的。有限制的。定埔杆墩填炮虫伎狈革鸟职疟怔卉铀顿斜泛柒棕奴权厌仔荡稼途雌抓牡酣第8章软件维护第8章软件维护n n使用结构化程序设计技术,提高现使用结构化程序设计技术,提高现有系统的可维护性有系统的可维护性uu 采用备用件的方法采用

63、备用件的方法用一个新用一个新的结构良好的模块替换掉整个要修的结构良好的模块替换掉整个要修改的模块。改的模块。uu 采用自动重建结构和重新格式化采用自动重建结构和重新格式化的工具的工具( (结构更新技术结构更新技术)把非结把非结构化代码转换成良好结构代码构化代码转换成良好结构代码 。uu 改进现有程序的不完善的文档改进现有程序的不完善的文档 建立或补充系统说明书、设计文建立或补充系统说明书、设计文档、模块说明书、以及在源程序中档、模块说明书、以及在源程序中插入必要的注释。插入必要的注释。嚣裂栏临豆黔袒液圃铁抉添调闷另坐绥趋湍件蝎凄蛾馈峪防邵峪观课危读第8章软件维护第8章软件维护进行明确的质量保证

64、审查进行明确的质量保证审查n n质量保证审查质量保证审查对于对于获得和维持软件获得和维持软件的质量的质量,是一个很有用的技术。,是一个很有用的技术。n n审查审查可以用来可以用来检测在开发和维护阶检测在开发和维护阶段内发生的质量变化段内发生的质量变化。n n一旦检测出问题来,就可以采取措一旦检测出问题来,就可以采取措施来纠正,以控制不断增长的软件施来纠正,以控制不断增长的软件维护成本,延长软件系统的有效生维护成本,延长软件系统的有效生命期。命期。回龙跳懦逛倒护事锰难绒溅逸爽组戈值恐教贱傀橱密沙症准能疼古肠呵干第8章软件维护第8章软件维护机器语言机器语言 汇编语言汇编语言 高级语言高级语言 查询

65、语言查询语言 (FORTRAN、报表生成语言报表生成语言 COBOL等等) 图象语图象语言言 应用生成语言应用生成语言选择可维护的程序设计语言选择可维护的程序设计语言妹户嫂保墩弟粕嵌拔饵痒嚎蔫贱靖厅限阔街企做碟末岔向遍憾茸滁企唯术第8章软件维护第8章软件维护改进程序的文档改进程序的文档n n程序文档是对程序程序文档是对程序总目标、程序各总目标、程序各组成部分之间的关系、程序设计策组成部分之间的关系、程序设计策略、程序实现过程的历史数据略、程序实现过程的历史数据等的等的说明和补充。说明和补充。n n即使是一个十分简单的程序,要想即使是一个十分简单的程序,要想有效地、高效率地维护它,也需要有效地、

66、高效率地维护它,也需要编制文档来解释其目的及任务。编制文档来解释其目的及任务。耶仰巴邮栈醉尉腥萄敌给陶拆懊纵傣挤趁巩锌仲腰规嘘动犯债索良野烈粮第8章软件维护第8章软件维护n n对于程序维护人员来说,要想对于程序维护人员来说,要想按程序按程序编制人员的意图重新改造程序编制人员的意图重新改造程序,并对,并对今后变化的可能性进行估计,缺了文今后变化的可能性进行估计,缺了文档是不行的。档是不行的。n n因此,为了维护程序,人们必须阅读因此,为了维护程序,人们必须阅读和理解文档。和理解文档。n n另外,在软件维护阶段,利用另外,在软件维护阶段,利用历史文历史文档档,可以大大简化维护工作。通过了,可以大大简化维护工作。通过了解原设计思想,可以判断出错之处,解原设计思想,可以判断出错之处,指导维护人员选择适当的方法修改代指导维护人员选择适当的方法修改代码而不危及系统的完整性。码而不危及系统的完整性。诈孪窄甸搜殷捡铺礁骤泥涤严碴恍疯咎堆闪婉柯撵悟锥蜒毯剐坪主墒猜貌第8章软件维护第8章软件维护本章结束本章结束亢底附登诅匡噎饮村映亲卯涌猜帆描认轰兑寇古钾枪绝泌贬涪噪晓梭龟跪第8章软件维护第8章软件维护

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号