资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程件工程导论8软件件维护南京理工大学南京理工大学汪惠芬汪惠芬2004年年10月月30日日第八章第八章 软件维护软件维护8.1 软件维护的概念软件维护的概念8.2 软件维护活动软件维护活动8.3 软件修正的步骤软件修正的步骤8.4 软件可维护性软件可维护性8.5 提高可维护性的方法提高可维护性的方法8.6 逆向工程和再工程逆向工程和再工程8.7 本章小结本章小结根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1 软件维护的概念软件维护的概念8.1.1 软件维护的定义软件维护的定义8.1.2 影响维护任务量的要影响维护任务量的要素素8.1.3 软件维护的战略软件维护的战略根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的定义软件维护的定义矫正性维护矫正性维护corrective maintenance在软件交付后,由于开发时测试在软件交付后,由于开发时测试的不彻底、不完全,必然会有一的不彻底、不完全,必然会有一部分隐藏的错误被带到运转阶段。部分隐藏的错误被带到运转阶段。这些隐藏下来的错误在某些特定这些隐藏下来的错误在某些特定的运用环境下会暴显露来。为了的运用环境下会暴显露来。为了识别和纠正错误、矫正软件性能识别和纠正错误、矫正软件性能上的缺陷、排除实施中的误运用,上的缺陷、排除实施中的误运用,应进展的诊断和矫正错误的过程,应进展的诊断和矫正错误的过程,是矫正性维护。是矫正性维护。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的定义软件维护的定义顺应性维护顺应性维护adaptive maintenance随着计算机的飞速开展,外部环随着计算机的飞速开展,外部环境新的硬件、软件配置或数境新的硬件、软件配置或数据环境数据库、数据格式、数据环境数据库、数据格式、数据输入输出方式、数据存储介据输入输出方式、数据存储介质能够发生变化,为了使软件质能够发生变化,为了使软件顺应这种变化,而修正软件的过顺应这种变化,而修正软件的过程叫作顺应性维护。程叫作顺应性维护。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的定义软件维护的定义完善性维护完善性维护perfective maintenance在软件运用过程中,用户往往会对软在软件运用过程中,用户往往会对软件提出新的功能与性能要求。为了满件提出新的功能与性能要求。为了满足这些要求,需求修正或再开发软件,足这些要求,需求修正或再开发软件,以扩展软件功能、加强软件性能、改以扩展软件功能、加强软件性能、改良加工效率、提高软件的可维护性。良加工效率、提高软件的可维护性。在这种情况下进展的维护活动叫作完在这种情况下进展的维护活动叫作完善性维护。善性维护。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的定义软件维护的定义预防性防性维护preventive maintenance为了提高了提高软件的可件的可维护性、可靠性、可靠性等,性等,为以后以后进一步改良一步改良软件打件打下良好根底,需求下良好根底,需求进展展预防性防性维护。预防性防性维护定定义为:“把今天把今天的方法学用于昨天的系的方法学用于昨天的系统以以满足足明天的需求。也就是明天的需求。也就是说,采用,采用先先进的的软件工程方法件工程方法对需求需求维护的的软件或件或软件中的某一部分重件中的某一部分重新新进展展设计、编制和制和测试。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的定义软件维护的定义维护的任务量分配维护的任务量分配在整个软件维护阶段破费的全在整个软件维护阶段破费的全部任务量中,预防性维护只占部任务量中,预防性维护只占很小的比例,而完善性维护占很小的比例,而完善性维护占了几乎一半的任务量。了几乎一半的任务量。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施顺应性顺应性维护维护25矫正矫正性维护性维护20完善性维护完善性维护50其它维护其它维护58.1.1 软件维护的定义软件维护的定义维护的任务量分配维护的任务量分配软件维护活动破费的任务占整软件维护活动破费的任务占整个生存期任务量的个生存期任务量的70以上。以上。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施维护维护70.88.1.2 影响维护任务量的要影响维护任务量的要素素在软件的维护过程中,需在软件的维护过程中,需求破费大量的任务量,从而直求破费大量的任务量,从而直接影响了软件维护的本钱。因接影响了软件维护的本钱。因此,该当思索有哪些要素影响此,该当思索有哪些要素影响软件维护的任务量,相应应该软件维护的任务量,相应应该采取什么维护战略,才干有效采取什么维护战略,才干有效地维护软件并控制维护的本钱。地维护软件并控制维护的本钱。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.2 影响维护任务量的要影响维护任务量的要素素在软件维护中,影响维护在软件维护中,影响维护任务量的程序特性有以下任务量的程序特性有以下6种:种:系统大小系统大小程序设计言语程序设计言语系统年龄系统年龄数据库技术的运用数据库技术的运用先进的软件开发技术先进的软件开发技术其它其它根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的战略软件维护的战略1矫正性维护战略矫正性维护战略利用运用软件包,可开发出比由利用运用软件包,可开发出比由用户完全本人开发的系统可靠性用户完全本人开发的系统可靠性更高的软件;更高的软件;运用构造化技术,开发的软件易运用构造化技术,开发的软件易于了解和测试;于了解和测试;防错性程序设计;防错性程序设计;经过周期性维护审查,在构成维经过周期性维护审查,在构成维护问题之前就可确定质量缺陷。护问题之前就可确定质量缺陷。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的战略软件维护的战略2顺应性维护战略顺应性维护战略在配置管理时,把硬件、操作系在配置管理时,把硬件、操作系统和其它相关环境要素的能够变统和其它相关环境要素的能够变化思索在内,可以减少某些顺应化思索在内,可以减少某些顺应性维护的任务量。性维护的任务量。把与硬件、操作系统,以及其它把与硬件、操作系统,以及其它外围设备有关的程序归到特定的外围设备有关的程序归到特定的程序模块中。可把因环境变化而程序模块中。可把因环境变化而必需修正的程序部分于某些程序必需修正的程序部分于某些程序模块之中。模块之中。运用内部程序列表、外部文件,运用内部程序列表、外部文件,以及处置的例行处置包,可为维以及处置的例行处置包,可为维护时修正程序提供方便。护时修正程序提供方便。运用面向对象技术,加强软件系运用面向对象技术,加强软件系统的稳定性,易于修正和移植。统的稳定性,易于修正和移植。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.1.1 软件维护的战略软件维护的战略3完善性维护战略完善性维护战略利用前两类维护中列举的方法。利用前两类维护中列举的方法。利用数据库管理系统、程序生成利用数据库管理系统、程序生成器、运用软件包,可减少系统或器、运用软件包,可减少系统或程序员的维护任务量。程序员的维护任务量。建立软件系统的原型,把它在实建立软件系统的原型,把它在实践系统开发之前提供应用户。用践系统开发之前提供应用户。用户经过研讨原型,进一步完善它户经过研讨原型,进一步完善它们的功能要求,可以减少以后完们的功能要求,可以减少以后完善性维护的需求。善性维护的需求。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2 软件维护活动软件维护活动8.2.1 软件维护恳求报告软件维护恳求报告8.2.2 软件维护任务流程软件维护任务流程8.2.3 维护档案记录维护档案记录8.2.4 维护评价维护评价根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.1 软件维护恳求报告软件维护恳求报告一一一一切切切切软软软软件件件件维维维维护护护护恳恳恳恳求求求求应应应应按按按按规规规规定定定定的的的的方方方方式式式式提提提提出出出出。软软软软件件件件维维维维护护护护组组组组织织织织通通通通常常常常提提提提供供供供维维维维护护护护恳恳恳恳求求求求报报报报告告告告MRPMRPmaintenance maintenance request request formform,或或或或称称称称软软软软件件件件问问问问题题题题报报报报告告告告,由由由由恳恳恳恳求求求求维维维维护护护护的的的的用用用用户户户户填填填填写。写。写。写。假假假假设设设设遇遇遇遇到到到到一一一一个个个个错错错错误误误误,用用用用户户户户必必必必需需需需完完完完好好好好地地地地阐阐阐阐明明明明产产产产生生生生错错错错误误误误的的的的情情情情况况况况,包包包包括括括括输输输输入入入入数数数数据据据据、错错错错误误误误清清清清单单单单以以以以及及及及其其其其他他他他有有有有关关关关资资资资料料料料。假假假假设设设设恳恳恳恳求求求求的的的的是是是是顺顺顺顺应应应应性性性性维维维维护护护护或或或或完完完完善善善善性性性性维维维维护护护护,用用用用户户户户必必必必需需需需提提提提出出出出一一一一份份份份修修修修正正正正阐阐阐阐明明明明书书书书,列列列列出出出出一一一一切切切切希希希希望望望望的的的的修修修修正正正正。维维维维护护护护恳恳恳恳求求求求报报报报告告告告将将将将由由由由维维维维护护护护管管管管理理理理员员员员和和和和系系系系统统统统监监监监视视视视员来研讨处置。员来研讨处置。员来研讨处置。员来研讨处置。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.1 软件维护恳求报告软件维护恳求报告维维护护恳恳求求报报告告是是由由软软件件组组织织外外部部提提交交的的文文档档,它它是是方方案案维维护护任任务务的的根根底底。软软件件组组织织内内部部应应相相应应地地作作出出软软件件修修正正报报告告SCRsoftware change report,并指明:,并指明:所需修正变动的性质;所需修正变动的性质;恳求修正的优先级;恳求修正的优先级;为为满满足足某某个个维维护护恳恳求求报报告告,所所需的任务量;需的任务量;估计修正后的情况。估计修正后的情况。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.2 软件维护任务流程软件维护任务流程软件维护任务流程软件维护任务流程确认维护要求;确认维护要求;确认维护类型;确认维护类型;按不同类型进展维护处置,包括按不同类型进展维护处置,包括修正软件需求阐明、修正软件设修正软件需求阐明、修正软件设计、设计评审、对源程序作必要计、设计评审、对源程序作必要的修正、单元测试、集成测试的修正、单元测试、集成测试回归测试、确认测试、软件配回归测试、确认测试、软件配置评审等;置评审等;维护义务完成后进展情况评审。维护义务完成后进展情况评审。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.2 软件维护任务流程软件维护任务流程根本概念软件维护程序修正可维护性本章小结逆向工程改善措施用户用户维护人员维护人员确定更确定更改要求改要求评价评价错误严重错误严重程度程度判明维判明维护类型护类型评价优评价优先次序先次序维护维护实施实施开场问开场问题分析题分析复审复审开场问开场问题分析题分析安排安排矫正性矫正性维护维护把安排好的开发把安排好的开发任务量列入方案任务量列入方案把错误矫正把错误矫正列入方案列入方案维护维护要求要求 改改 正正性性不严重不严重严重严重救火救火人员人员安排安排完完善善性性顺顺应应性性低低高高 人人 员员 安安排排修正修正过的过的 软件软件经过并交付经过并交付 运用的软件运用的软件了解程序了解程序 分析原设计分析原设计安排方案安排方案 修正程序修正程序测试程序测试程序8.2.2 软件维护任务流程软件维护任务流程情况评审内容:情况评审内容:在目前情况下,设计、编码、在目前情况下,设计、编码、测试中的哪一方面可以改良?测试中的哪一方面可以改良?哪些维护资源应该有,但没有哪些维护资源应该有,但没有?任务中主要或次要的妨碍是什任务中主要或次要的妨碍是什么?么?从维护恳求的类型来看能否该从维护恳求的类型来看能否该当有预防性维护?当有预防性维护?根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.3 维护档案记录维护档案记录为了估计软件维护的有效为了估计软件维护的有效程度,确定软件产品的质量,程度,确定软件产品的质量,同时确定维护的实践开销,需同时确定维护的实践开销,需求在维护过程中做好维护档案求在维护过程中做好维护档案记录。记录。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.2.3 维护档案记录维护档案记录维护档案记录内容:维护档案记录内容:根本概念软件维护程序修正可维护性本章小结逆向工程改善措施程序称号程序称号源程序语句条数源程序语句条数机器代码指令调试机器代码指令调试所用的程序设计言语所用的程序设计言语程序安装的日期程序安装的日期程序安装后的运转次数程序安装后的运转次数与程序安装后运转次数与程序安装后运转次数有关的处置缺点次数有关的处置缺点次数程序改动的层次及称号程序改动的层次及称号修正程序所添加的源程序语句条数修正程序所添加的源程序语句条数修正程序所减少的源程序语句条数修正程序所减少的源程序语句条数每次修正所付出的每次修正所付出的“人时数人时数修正程序的日期修正程序的日期软件维护人员的姓名软件维护人员的姓名维护恳求报告的称号维护恳求报告的称号维护类型维护类型维护开场时间和维护终了时间维护开场时间和维护终了时间破费在维护上的累积破费在维护上的累积“人时数人时数维护任务的净收益维护任务的净收益8.2.4 维护评价维护评价维护“性能参考度量性能参考度量值:每次程序运每次程序运转时的平均出的平均出错次数;次数;破破费在每在每类维护上的上的总“人人时数;数;每个程序、每种言每个程序、每种言语、每种、每种维护类型的程序平均修正次数;型的程序平均修正次数;因因维护添加或减少每个源程序添加或减少每个源程序语句所破句所破费的平均的平均“人人时数;数;用于每种言用于每种言语的平均的平均“人人时数;数;维护恳求求报告的平均告的平均处置置时间;各各类维护恳求的百分比。求的百分比。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3 软件修正的步骤软件修正的步骤8.3.1 分析和了解程序分析和了解程序8.3.2 修正程序修正程序8.3.3 重新验证程序重新验证程序根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序 经经过过分分析析,全全面面、准准确确、迅迅速速地地了了解解程程序序是是决决议议维维护护成成败败和和质质量量好好坏坏的的关关键键。在在这这方方面面,软软件件的的可可了了解解性性和和文文档档的的质量为常重要。质量为常重要。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序必需做的任务:必需做的任务:1研研讨讨程程序序的的运运用用环环境境及及有有关关资资料料,尽尽能能够够得得到到更更多多的的背背景资料;景资料;2了解程序的功能和目的;了解程序的功能和目的;3掌掌握握程程序序的的构构造造信信息息,即即从从程程序序中中细细分分出出假假设设干干构构呵呵斥斥分分。如如程程序序系系统统构构造造、控控制制构构造造、数数据据构构造造和和输输入入输输出出构构造等;造等;根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序必需做的任务:必需做的任务:4了了解解数数据据流流信信息息,即即所所涉涉及及到到的的数数据据来来源源何何处处,在在哪哪里里被运用;被运用; 5了了解解控控制制流流信信息息,即即执执行行每条途径的结果;每条途径的结果;6假假设设设设计计存存在在,那那么么可可利利用用它它们们来来协协助助画画出出构构造造图图和和高高层流程图;层流程图;7了了解解程程序序的的操操作作运运用用要求。要求。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序分析方法:分析方法:1分析程序构造图分析程序构造图搜搜集集并并阅阅读读一一切切存存储储该该程程序序的的文文件件,即即下下它它们们所所包包含含的的过过程程名名,建建立立一一个个包包括括这这些些过过程程名名和和文文件件名的文件;名的文件;分析各个过程的源代码;分析各个过程的源代码;分分析析各各个个过过程程的的接接口口,估估计计更更改改的复杂性。的复杂性。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序分析方法:分析方法:2数据跟踪数据跟踪建建立立各各层层次次的的程程序序级级上上的的接接口口图图,展展现现各各模模块块或或过过程程的的调调用用方方式式和和接口参数;接口参数;利利用用数数据据流流分分析析方方法法,对对过过程程内内部部的的一一些些变变量量进进展展跟跟踪踪;维维护护人人员员经经过过这这种种数数据据流流跟跟踪踪,可可获获得得有有关关数数据据在在过过程程间间如如何何传传送送,在在过过程程内内如如何何处处置置等等信信息息。在在跟跟踪踪的的过过程程中中可可在在源源程程序序中中间间插插入入本本人的注释。人的注释。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序分析方法:分析方法:3控控制制跟跟踪踪:控控制制流流跟跟踪踪同同样样可可在在构构造造图图根根底底上上或或源源程程序序根根底底上上进进展展。可可采采用用符符号号执执行行或或实实践践动动态态跟跟踪踪的的方方法法,了了解解数数据据如如何何从从一一个个输输入入源源到到达达输输出点的。出点的。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.1 分析和了解程序分析和了解程序分析方法:分析方法:4在在分分析析过过程程中中,充充分分阅阅读读和和运运用用源源程程序序清清单单和和文文档档,分分析析现现有有文档的合理性。文档的合理性。5充充分分运运用用由由编编译译程程序序或或汇汇编编程程序序提提供供的的交交叉叉援援用用表表、符符号号表表以以及其它有用的信息。及其它有用的信息。6如有能够,积极参与开发任务。如有能够,积极参与开发任务。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序1设计程序的修正方案设计程序的修正方案修正方案内容:修正方案内容:规格阐明信息规格阐明信息维护资源维护资源人员人员提供提供根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序1设计程序的修正方案设计程序的修正方案修正方案设计任务:修正方案设计任务:1研研讨讨程程序序的的各各个个模模块块、模模块块的的接接口口及及数数据据库库,从从全全局局的观念提出修正方案。的观念提出修正方案。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序1设计程序的修正方案设计程序的修正方案修正方案设计任务:修正方案设计任务:2依依次次把把要要修修正正的的以以及及那那些些受受修修正正影影响响的的模模块块和和数数据据构构造分别出来,包括:造分别出来,包括:根本概念软件维护程序修正可维护性本章小结逆向工程改善措施识别收修正影响的数据;识别收修正影响的数据;识别运用这些数据的程序模块;识别运用这些数据的程序模块;对于上面程序模块,按照是产对于上面程序模块,按照是产生数据、修正数据,还是删除生数据、修正数据,还是删除数据进展分类;数据进展分类;识别这些数据元素的外部识别这些数据元素的外部控制信息;控制信息;识别编辑和检查这些数据识别编辑和检查这些数据元素的地方;元素的地方;隔离要修正的部分。隔离要修正的部分。8.3.2 修正程序修正程序1设计程序的修正方案设计程序的修正方案修正方案设计任务:修正方案设计任务:3详详细细地地分分析析要要修修正正的的以以及及那那些些受受变变卦卦影影响响的的模模块块和和数数据据构构造造的的内内部部细细节节,设设计计修修正正方方案案,标标明明新新逻逻辑辑及及要要改改动动的的现有逻辑。现有逻辑。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序1设计程序的修正方案程序的修正方案修正方案修正方案设计任任务:4向用向用户提供逃避措施:提供逃避措施:在在问题缘由由还未未找找到到时,先先就就问题的的景景象象提提供供逃逃避避的的操操作作方方法法,能能够的情况有:的情况有:不不测停停机机,系系统完完全全不不能能任任务作作为暂时处置置,消消除除特特定定的的数数据据,插插入入暂时代代码打打补丁丁,以以人人工工方式运方式运转系系统安安装装的的期期限限到到期期系系统有有时要要延延迟变卦卦发现错误运运转系系统人人工工查找找错误并修正之并修正之假假设弄弄清清了了问题的的缘由由,可可经过暂时修修正正或或改改动运运转控控制制以以逃逃避避在在系系统运运转时产生的生的问题。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序2修正代码,以顺应变化修正代码,以顺应变化要求:要求:1正正确确、有有效效地地编编写写修修正正代代码;码;2要要谨谨慎慎地地修修正正程程序序,尽尽量量坚坚持持程程序序的的风风格格及及格格式式,要要在在程序清单上注明改动的指令;程序清单上注明改动的指令;3不不要要匆匆忙忙删删除除程程序序语语句句,除非完全一定它是无用的;除非完全一定它是无用的;根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序2修正代码,以顺应变化修正代码,以顺应变化要求:要求:4不不要要试试图图公公用用程程序序中中已已有有的的暂暂时时变变量量或或任任务务区区,为为了了防防止止冲冲突突或或混混淆淆用用途途,应应自自行行设设置置本本人人的的变变量;量;5插入错误检测语句;插入错误检测语句;6坚坚持持详详细细的的维维护护活活动动和和维维护护结果记录;结果记录;7假假设设程程序序构构造造混混乱乱,修修正正遭遭到干扰,可丢弃程序重新编写。到干扰,可丢弃程序重新编写。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序3修正程序的副作用修正程序的副作用1修正代码的副作用修正代码的副作用 在在运运用用程程序序设设计计言言语语修修正正源源代代码码时时,都都能能够够引引入入错错误误。例如:例如:根本概念软件维护程序修正可维护性本章小结逆向工程改善措施删除或修正一个子程序删除或修正一个子程序删除或修正一个标号删除或修正一个标号删除或修正一个标识符删除或修正一个标识符改动程序代码的时序关系改动程序代码的时序关系改动占用存储的大小改动占用存储的大小改动逻辑运算符改动逻辑运算符修正文件的翻开或封锁修正文件的翻开或封锁改良程序的执行效率改良程序的执行效率把设计上的改动翻译成代把设计上的改动翻译成代码的改动码的改动为边境条件的逻辑测试作为边境条件的逻辑测试作出改动出改动8.3.2 修正程序修正程序3修正程序的副作用修正程序的副作用2修正数据的副作用修正数据的副作用 在在修修正正数数据据构构造造时时,有有能能够够呵呵斥斥软软件件设设计计与与数数据据构构造造不不匹匹配配,因因此此导导致致软软件件出出错错。数数据据的的副副作作用用是是修修正正软软件件信信息息构构造造导导致致的的结结果果。例如:例如:根本概念软件维护程序修正可维护性本章小结逆向工程改善措施重新定义部分的或全局的重新定义部分的或全局的常量常量重新定义记录或文件的格重新定义记录或文件的格式式增大或减小一个数组或高增大或减小一个数组或高层数据构造的大小层数据构造的大小修正全局或公共数据修正全局或公共数据重新初始化控制标痣或指重新初始化控制标痣或指针针重新陈列输入输出或子重新陈列输入输出或子程序的参数程序的参数8.3.2 修正程序修正程序3修正程序的副作用修正程序的副作用3文档的副作用文档的副作用对对数数据据流流、软软件件构构造造、模模块块逻逻辑辑或或任任何何其其他他有有关关特特性性进进展展修修正正时时,必必需需对对相相关关技技术术文文档档进进展展相相应应修修正正。否否那那么么会会导导致致文文档档与与程程序序功功能能不不匹匹配配、缺缺省省条条件件改改动动、新新错错误误信信息息不不正正确确等等错错误误。使使得得软软件件文文档档不不能能反反映映软软件件的的当当前前形形状状。对对于于用用户户来来说说,软软件件现现实实上上就就是是文文档档。假假设设对对可可执执行行软软件件的的修修正正不不反反映映在在文文档档里里,会会产产生生文文档档的的副副作作用。用。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.2 修正程序修正程序3修正程序的副作用修正程序的副作用控制修正副作用的措施:控制修正副作用的措施:1按模块把修正分组;按模块把修正分组;2自自顶顶向向下下地地安安排排被被修修正正模模块块的顺序;的顺序;3每次修正一个模块;每次修正一个模块;4对对于于每每个个修修正正了了的的模模块块,在在安安排排修修正正下下一一个个模模块块之之前前,要要确确定定这这个个修修正正的的副副作作用用。可可以以运运用用交交叉叉援援用用表表、存存储储映映象象表表、执执行行流流程程跟跟踪等。踪等。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.3 重新验证程序重新验证程序1静态确认静态确认 修修正正软软件件,伴伴随随着着引引起起新新的的错错误误的的危危险险。为为了了可可以以作作出出正正确确的的判判别别,验验证证修修正正后后的的程程序序至至少少需求两个人参与。要检查:需求两个人参与。要检查:修修正正能能否否涉涉及及到到规规格格阐阐明明?修修正正结结果果能能否否符符合合规规格格阐阐明明?有有没没有有歪曲规格阐明?歪曲规格阐明?程程序序的的修修正正能能否否足足以以修修正正软软件件中中的的问问题题?源源程程序序代代码码有有无无逻逻辑辑错错误?修正时有无修补失误?误?修正时有无修补失误?修修正正部部分分对对其其它它部部分分有有无无不不良良影影响?响?根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.3 重新验证程序重新验证程序2计算机确认计算机确认 在在充充分分进进展展了了静静态态确确认认的的根根底底上上,要要用用计计算算机机对对修修正正程程序序进进展展确认测试。几个留意点:确认测试。几个留意点:确确认认测测试试顺顺序序:对对修修正正部部分分测测试试 隔隔离离修修正正部部分分,测测试试程程序序的的未未修修正正部分部分 把两部分集成起来进展测试。把两部分集成起来进展测试。预备规范的测试用例。预备规范的测试用例。充充分分利利用用软软件件工工具具协协助助重重新新验验证证过过程。程。在在重重新新确确认认过过程程中中,需需约约请请用用户户参参与。与。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.3 重新验证程序重新验证程序3维护后的验收维护后的验收 在在交交付付新新软软件件之之前前,维维护主管部门要检验:护主管部门要检验:全部文档能否完备,并已更新;全部文档能否完备,并已更新;一一切切测测试试用用例例和和测测试试结结果果曾曾经经正确记载;正确记载;记记录录软软件件配配置置一一切切副副本本的的任任务务曾经完成;曾经完成;维护工序和责任曾经确定。维护工序和责任曾经确定。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.3.3 重新验证程序重新验证程序从维护角度来看所需测试种类从维护角度来看所需测试种类根本概念软件维护程序修正可维护性本章小结逆向工程改善措施对修正事务的测试;对修正事务的测试;操作过程的测试;操作过程的测试;运用过程的测试;运用过程的测试;作业控制言语的测试;作业控制言语的测试;对修正程序的测试;对修正程序的测试;后备后备/恢复过程的测试。恢复过程的测试。软件系统之间接口的测试;软件系统之间接口的测试;运用系统运转过程的测试;运用系统运转过程的测试;系统各部分之间接口的测试;系统各部分之间接口的测试;与系统软件接口的测试;与系统软件接口的测试;平安性测试;平安性测试;8.4 软件可维护性软件可维护性8.4.1 软件可维护性的定软件可维护性的定义义8.4.2 可维护性的度量可维护性的度量根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.4.1 软件可维护性的定软件可维护性的定义义概念概念所谓软件可维护性,是指纠正所谓软件可维护性,是指纠正软件系统出现的错误和缺陷,软件系统出现的错误和缺陷,以及为满足新的要求进展修正、以及为满足新的要求进展修正、扩展或紧缩的容易程度。扩展或紧缩的容易程度。软件的可维护性是软件开发阶软件的可维护性是软件开发阶段各个时期的关键目的。段各个时期的关键目的。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.4.1 软件可维护性的定软件可维护性的定义义衡量程序可维护性的特性衡量程序可维护性的特性可了解性可了解性可测试性可测试性可修正性可修正性可靠性可靠性可移植性可移植性可运用性可运用性效率效率根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.4.1 软件可维护性的定软件可维护性的定义义各类维护偏重的特性各类维护偏重的特性根本概念软件维护程序修正可维护性本章小结逆向工程改善措施矫正性维护矫正性维护运用性维护运用性维护完善性维护完善性维护可了解性可了解性可测试性可测试性可修正性可修正性可可 靠靠 性性可移植性可移植性可运用性可运用性效效 率率8.5 提高可维护性的方法提高可维护性的方法8.5.1 建立明确的软件质量目的建立明确的软件质量目的及优先级及优先级8.5.2 运用提高软件质量的技术运用提高软件质量的技术和工具和工具8.5.3 进展明确的质量保证审查进展明确的质量保证审查8.5.4 选择可维护的程序设计言选择可维护的程序设计言语语8.5.5 改良程序文档改良程序文档根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.1 建立明确的软件质量目的及优先建立明确的软件质量目的及优先级级根本概念软件维护程序修正可维护性本章小结逆向工程改善措施一一一一个个个个可可可可维维维维护护护护的的的的程程程程序序序序该该该该当当当当是是是是可可可可了了了了解解解解的的的的、可可可可靠靠靠靠的的的的、可可可可测测测测试试试试的的的的、可可可可修修修修正正正正的的的的、可可可可移移移移植植植植的的的的、效效效效率率率率高高高高的的的的可可可可运运运运用用用用的的的的。但但但但要要要要实实实实现现现现一一一一切切切切这这这这些些些些目目目目的的的的,需需需需求求求求付付付付出出出出很很很很大大大大的的的的代代代代价价价价,而而而而且且且且也也也也不不不不一一一一定定定定行得通。行得通。行得通。行得通。虽虽虽虽然然然然可可可可维维维维护护护护性性性性要要要要求求求求每每每每一一一一种种种种质质质质量量量量特特特特性性性性都都都都要要要要得得得得到到到到满满满满足足足足,但但但但它它它它们们们们的的的的相相相相对对对对重重重重要要要要性性性性应应应应随随随随程程程程序序序序的的的的用用用用途途途途及及及及计计计计算算算算环环环环境境境境的的的的不不不不同同同同而而而而不不不不同同同同。因因因因此此此此,当当当当对对对对程程程程序序序序的的的的质质质质量量量量特特特特性性性性,必必必必需需需需在在在在提提提提出出出出目目目目的的的的的的的的同同同同时时时时规规规规定定定定它它它它们们们们的的的的优优优优先先先先级级级级。这这这这样样样样有有有有助助助助于于于于提提提提高高高高软软软软件件件件的的的的质质质质量量量量,并并并并对对对对软软软软件件件件生生生生存存存存期期期期的的的的费费费费用用用用产产产产生生生生很大的影响。很大的影响。很大的影响。很大的影响。8.5.2 运用提高软件质量的技术和工具运用提高软件质量的技术和工具1模块化模块化模块化技术的优点是:模块化技术的优点是:假假设设需需求求改改动动某某个个模模块块的的功功能能,那那么么只只需需改改动动这这个个模模块块,对对其其它它模块影响很小;模块影响很小;假假设设需需求求添添加加程程序序的的某某些些功功能能,那那么么仅仅需需添添加加完完成成这这些些功功能能的的新新的模块或模块层;的模块或模块层;程序的测试与反复测试比较容易;程序的测试与反复测试比较容易;程序错误易于定位和纠正;程序错误易于定位和纠正;容易提高程序效率。容易提高程序效率。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.2 运用提高软件质量的技术和工具运用提高软件质量的技术和工具2构造化程序设计构造化程序设计构构造造化化设设计计不不仅仅使使得得模模块块构构造造规规范范化化,而而且且将将模模块块间间的的相相互互作作用用也也规规范范化化了了。因因此此把把模模块块化化又又向向前前推推进进了了一一步步。采采用用构构造造化化程程序序设设计计可可以以获获得得良良好好的的程序构造。程序构造。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.2 运用提高软件质量的技术和工具运用提高软件质量的技术和工具3运运用用构构造造化化程程序序设设计计技技术术,提提高现有系统的可维护性高现有系统的可维护性采用备用件的方法采用备用件的方法采采用用自自动动重重建建构构造造和和重重新新格格式式化化的工具构造更新技术的工具构造更新技术改良现有程序的不完善的文档改良现有程序的不完善的文档运运用用构构造造化化程程序序设设计计方方法法实实现现新新的子系统的子系统采用构造化小组采用构造化小组根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查1在检查点进展复审在检查点进展复审保证程序质量的最正确方法是在保证程序质量的最正确方法是在软件开发的最初阶段就把质量要软件开发的最初阶段就把质量要求思索进去,并在开发过程每一求思索进去,并在开发过程每一阶段的终点,设置检查点进展检阶段的终点,设置检查点进展检查。检查的目的是要证明,已开查。检查的目的是要证明,已开发的软件能否符合规范,能否满发的软件能否符合规范,能否满足规定的质量需求。足规定的质量需求。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查软件开发期间各检查点的检查重点软件开发期间各检查点的检查重点根本概念软件维护程序修正可维护性本章小结逆向工程改善措施分析分析设计设计编码编码测试测试验收验收检查点检查点检查点检查点检查点检查点检查点检查点可靠性可靠性可顺应性可顺应性可了解性可了解性可修正性可修正性可测试性可测试性可了解性可了解性可修正性可修正性可移植性可移植性有效性有效性可靠性可靠性有效性有效性8.5.3 进展明确的质量保证审查进展明确的质量保证审查2验收检查验收检查验收检查是一个特殊的检查点验收检查是一个特殊的检查点的检查,是交付运用前的最后的检查,是交付运用前的最后一次检查,使软件投入运转之一次检查,使软件投入运转之前保证可维护性的最后时机。前保证可维护性的最后时机。它实践上是验收测试的一部分,它实践上是验收测试的一部分,只不过是从维护的角度提出验只不过是从维护的角度提出验收的条件和规范。收的条件和规范。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查最小验收规范最小验收规范1需求和规范规范需求和规范规范需求该当以可测试的术语进展书需求该当以可测试的术语进展书写,陈列优先次序的定义;写,陈列优先次序的定义;区分必需的、任选的、未来的需区分必需的、任选的、未来的需求;求;包括对系统运转时的计算机设备包括对系统运转时的计算机设备的需求;对维护、测试、操作以的需求;对维护、测试、操作以及维护人员的需求;对测试工具及维护人员的需求;对测试工具等的需求。等的需求。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查最小验收规范最小验收规范2设计规范设计规范程序应设计成分层的模块构造。程序应设计成分层的模块构造。每个模块应完成独一的功能,每个模块应完成独一的功能,并到达高内聚、低耦合;并到达高内聚、低耦合;经过一些知道预期变化的实例,经过一些知道预期变化的实例,阐明设计的可扩展性、可缩减阐明设计的可扩展性、可缩减性和可顺应性。性和可顺应性。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查最小验收规范最小验收规范3源代码规范源代码规范尽能够运用最高级的程序设计言尽能够运用最高级的程序设计言语,且只运用言语的规范版本;语,且只运用言语的规范版本;一切的代码都必需具有良好的构一切的代码都必需具有良好的构造;造;一切的代码都必需文档化,在注一切的代码都必需文档化,在注释中阐明它的输入、输出以及便释中阐明它的输入、输出以及便于测试再测试的一些特点与风于测试再测试的一些特点与风格。格。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查最小验收规范最小验收规范4文档规范:文档规范: 文档中应阐明程序的输文档中应阐明程序的输入输出、运用的方法算入输出、运用的方法算法、错误恢复方法、一切参法、错误恢复方法、一切参数的范围以及缺省条件等。数的范围以及缺省条件等。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查3周期性地维护复审周期性地维护复审软件在运转期间,为了纠正新发软件在运转期间,为了纠正新发现的错误或缺陷,为了顺应计算现的错误或缺陷,为了顺应计算环境的变化,为了响运用户新的环境的变化,为了响运用户新的需求,必需进展修正。因此会导需求,必需进展修正。因此会导致软件质量有变坏的危险,能够致软件质量有变坏的危险,能够产生新的错误,破坏程序概念的产生新的错误,破坏程序概念的完好性。因此,必需像硬件的定完好性。因此,必需像硬件的定期检查一样,每月一次或二月一期检查一样,每月一次或二月一次,对软件作周期性的维护审查,次,对软件作周期性的维护审查,以跟踪软件质量的变化。以跟踪软件质量的变化。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查3周期性地维护复审周期性地维护复审周期性维护审查实践上是开发阶周期性维护审查实践上是开发阶段检查点复查的继续,并且采用段检查点复查的继续,并且采用的检查方法、检查内容都是一样的检查方法、检查内容都是一样的。维护审查的结果可以同以前的。维护审查的结果可以同以前的维护审查的结果、以及以前的的维护审查的结果、以及以前的验收检查的内容和检查点检查的验收检查的内容和检查点检查的结果相比较,任何一种改动都阐结果相比较,任何一种改动都阐明在软件质量上或其他类型的问明在软件质量上或其他类型的问题上能够起了变化。题上能够起了变化。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查4对软件包进展检查对软件包进展检查软件包是一种规范化了的、软件包是一种规范化了的、可为不同用户运用的软件。可为不同用户运用的软件。软件包卖主思索到他的专利软件包卖主思索到他的专利权,普通不会提供应用户他权,普通不会提供应用户他的源代码和程序文档。因此,的源代码和程序文档。因此,对软件包的维护采取的方法对软件包的维护采取的方法不同。不同。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.3 进展明确的质量保证审查进展明确的质量保证审查4对软件包进展检查对软件包进展检查运用单位的维护人员首先要仔细运用单位的维护人员首先要仔细分析、研讨卖主提供的用户手册、分析、研讨卖主提供的用户手册、操作手册、培训教程、新版本阐操作手册、培训教程、新版本阐明、计算机环境要求书、未来特明、计算机环境要求书、未来特性表以及卖方提供的验收测试报性表以及卖方提供的验收测试报告等,在此根底上,深化了解本告等,在此根底上,深化了解本单位的希望和要求,编制软件包单位的希望和要求,编制软件包的检验程序。的检验程序。该检验程序检查软件包程序所执该检验程序检查软件包程序所执行的功能能否与用户的要求和条行的功能能否与用户的要求和条件相一致。为了建立这个程序,件相一致。为了建立这个程序,维护人员可以利用卖方提供的验维护人员可以利用卖方提供的验收测试实例,还可以本人重新设收测试实例,还可以本人重新设计新的测试实例。根据测试结果,计新的测试实例。根据测试结果,检查和验证软件包的参数或控制检查和验证软件包的参数或控制构造,以完成软件包的维护。构造,以完成软件包的维护。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.4 选择可维护的程序设计言选择可维护的程序设计言语语程序文语的选择,对程序的可程序文语的选择,对程序的可维护性影响很大。维护性影响很大。低级言语低级言语机器言语机器言语汇编言语汇编言语高级言语高级言语FORTRAN、COBOL 、PL/1 第四代言语第四代言语过程性言语过程性言语非过程性言语非过程性言语根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.4 选择可维护的程序设计言选择可维护的程序设计言语语程序设计言语对可维护性的影响程序设计言语对可维护性的影响根本概念软件维护程序修正可维护性本章小结逆向工程改善措施第一代第一代言语言语第二代第二代言语言语第三代第三代言语言语第四代第四代言语言语机器言语机器言语 汇编言语汇编言语高级言语:高级言语:FORTRAN、COBOL、PL/1 查询言语,查询言语,报表生成言语,报表生成言语,图象言语,图象言语,运用生成言语运用生成言语可维护性可维护性低低高高8.5.5 改良程序的文档改良程序的文档概述概述程序文档是对程序总目的、程序程序文档是对程序总目的、程序各组成部分之间的关系、程序设各组成部分之间的关系、程序设计战略、程序实现过程的历史数计战略、程序实现过程的历史数据等的阐明和补充。程序文档对据等的阐明和补充。程序文档对提高程序的可了解性有着重要作提高程序的可了解性有着重要作用。即使是一个非常简单的程序,用。即使是一个非常简单的程序,要想有效地、高效率地维护它,要想有效地、高效率地维护它,也需求编制文档来解释其目的及也需求编制文档来解释其目的及义务。而对于程序维护人员来说,义务。而对于程序维护人员来说,要想对程序编制人员的意图重新要想对程序编制人员的意图重新改造,并对今后变化的能够性进改造,并对今后变化的能够性进展估计,缺了文档也是不行的。展估计,缺了文档也是不行的。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.5.5 改良程序的文档改良程序的文档概述概述为了维护程序,人们必需阅读为了维护程序,人们必需阅读和了解文档。在软件维护阶段,和了解文档。在软件维护阶段,利用历史文档,可以大大简化利用历史文档,可以大大简化维护任务。维护任务。历史文档有三种:历史文档有三种:系统开发日志系统开发日志错误记载错误记载系统维护日志系统维护日志根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.6 逆向工程和再工程逆向工程和再工程逆向工程逆向工程逆向工程是经过调查产品的实践样逆向工程是经过调查产品的实践样品,导出该产品的一个或多个设计品,导出该产品的一个或多个设计与制造的规格阐明。公司作逆向工与制造的规格阐明。公司作逆向工程的程序,普通是本人的程序,有程的程序,普通是本人的程序,有些是多年以前开发出来的。这些程些是多年以前开发出来的。这些程序没有规格阐明,对它们的了解很序没有规格阐明,对它们的了解很模糊。模糊。因此,软件的逆向工程是分析程序,因此,软件的逆向工程是分析程序,力图在比源代码更高的笼统层次上力图在比源代码更高的笼统层次上建立程序表示的过程。逆向工程是建立程序表示的过程。逆向工程是设计恢复的过程。逆向工程工具可设计恢复的过程。逆向工程工具可以从已存在程序中抽取数据构造、以从已存在程序中抽取数据构造、体系构造和程序设计信息。体系构造和程序设计信息。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施再工程再工程re-engineering再工程也叫复壮修缮或再生。再工程也叫复壮修缮或再生。它不仅能从已存在的程序中重新它不仅能从已存在的程序中重新获得设计信息,而且还能运用这获得设计信息,而且还能运用这些信息改建或冲沟现有的系统,些信息改建或冲沟现有的系统,以改良它的综合质量。普通软件以改良它的综合质量。普通软件人员利用再工程重新实现已存在人员利用再工程重新实现已存在的程序,同时加进新的功能或改的程序,同时加进新的功能或改善它的性能。善它的性能。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.6 逆向工程和再工程逆向工程和再工程每每每每一一一一个个个个软软软软件件件件开开开开发发发发机机机机构构构构的的的的程程程程序序序序都都都都有有有有着着着着上上上上百百百百万万万万行行行行的的的的老老老老代代代代码码码码,它它它它们们们们都都都都是是是是逆逆逆逆向向向向工工工工程程程程和和和和再再再再工工工工程程程程的的的的能能能能够够够够对对对对象象象象。但但但但由由由由于于于于某某某某些些些些程程程程序序序序并并并并不不不不频频频频繁繁繁繁运运运运用用用用也也也也不不不不需需需需求求求求改改改改动动动动,而而而而且且且且逆逆逆逆向向向向工工工工程程程程和和和和再再再再工工工工程程程程的的的的工工工工具具具具还还还还处处处处于于于于摇摇摇摇篮篮篮篮时时时时代代代代,仅仅仅仅能能能能对对对对有有有有限限限限种种种种类类类类的的的的运运运运用用用用执执执执行行行行逆逆逆逆向向向向工工工工程程程程或或或或再再再再工工工工程程程程,代代代代价价价价又又又又非非非非常常常常昂昂昂昂贵贵贵贵,因因因因此此此此对对对对其其其其库库库库中中中中的的的的每每每每一一一一个个个个程程程程序序序序都都都都作作作作逆逆逆逆向向向向工工工工程程程程或或或或再工程是不现实的。再工程是不现实的。再工程是不现实的。再工程是不现实的。为为为为了了了了执执执执行行行行预预预预防防防防性性性性维维维维护护护护,软软软软件件件件开开开开发发发发组组组组织织织织必必必必需需需需选选选选择择择择在在在在最最最最近近近近的的的的未未未未来来来来能能能能够够够够变变变变卦卦卦卦的的的的程程程程序序序序,作作作作好好好好变变变变卦卦卦卦它它它它们们们们的的的的预预预预备备备备。逆逆逆逆向向向向工工工工程程程程和和和和再再再再工工工工程程程程可可可可用用用用于执行这种维护义务。于执行这种维护义务。于执行这种维护义务。于执行这种维护义务。根本概念软件维护程序修正可维护性本章小结逆向工程改善措施8.6 逆向工程和再工程逆向工程和再工程8.7 本章小结本章小结软件维护的概念软件维护的概念软件维护活动软件维护活动软件修正的步骤软件修正的步骤软件可维护性软件可维护性提高可维护性的方法提高可维护性的方法逆向工程和再工程逆向工程和再工程根本概念软件维护程序修正可维护性本章小结逆向工程改善措施谢谢!第八章第八章 软件维护软件维护根本概念软件维护程序修正可维护性本章小结逆向工程改善措施
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号