《(19)--软件工程第八章软件工程.ppt》由会员分享,可在线阅读,更多相关《(19)--软件工程第八章软件工程.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1软件工程软件工程SoftwareEngineering2第八章第八章 软件维护软件维护8.1软件维护的定义软件维护的定义一、软件维护的定义和分类一、软件维护的定义和分类 软件维护是指在软件运行或维护阶段对软件维护是指在软件运行或维护阶段对软件产品所进行的修改。分为四类:软件产品所进行的修改。分为四类:3 改正性维护改正性维护(CorrectiveMaintenance)原因:原因:用户在使用软件过程中一旦发现错误,用户在使用软件过程中一旦发现错误,用户在使用软件过程中一旦发现错误,用户在使用软件过程中一旦发现错误,他们会向开发人员提出纠正性维护的请求。他们会向开发人员提出纠正性维护的请求。他
2、们会向开发人员提出纠正性维护的请求。他们会向开发人员提出纠正性维护的请求。在软件交付使用后,由于开发时测试得不在软件交付使用后,由于开发时测试得不彻底或不完全,在运行阶段会暴露一些开发时彻底或不完全,在运行阶段会暴露一些开发时未能测试出来的错误。为了识别和纠正软件错未能测试出来的错误。为了识别和纠正软件错误,改正软件性能上的缺陷,避免实施中的错误,改正软件性能上的缺陷,避免实施中的错误使用,应当进行的诊断和改正错误的过程,误使用,应当进行的诊断和改正错误的过程,这就是改正性维护。这就是改正性维护。4 适应性维护适应性维护(AdaptiveMaintenance)原因:原因:软件运行于一定的环境
3、软件运行于一定的环境(硬件、硬件、OS、网络等网络等)之上,运行环境发展很快。之上,运行环境发展很快。随着计算机技术的飞速发展和更新随着计算机技术的飞速发展和更新换代,软件系统所需的外部环境或数据换代,软件系统所需的外部环境或数据环境可能会更新和升级。为了使软件系环境可能会更新和升级。为了使软件系统适应这种变化,需要对软件进行相应统适应这种变化,需要对软件进行相应的修改,这种维护活动称为适应性维护。的修改,这种维护活动称为适应性维护。5扩充与完善性维护(扩充与完善性维护(PerfectiveMaintenance)原因:原因:在软件系统运行期间,用户可能要求增在软件系统运行期间,用户可能要求增
4、在软件系统运行期间,用户可能要求增在软件系统运行期间,用户可能要求增加新的功能、建议修改已有功能或提出其他改加新的功能、建议修改已有功能或提出其他改加新的功能、建议修改已有功能或提出其他改加新的功能、建议修改已有功能或提出其他改进意见。进意见。进意见。进意见。在软件的使用过程中,用户往往会在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种加工效率、提高软件的可维护性。这种情况
5、下进行的维护活动叫做完善性维护。情况下进行的维护活动叫做完善性维护。6 预防性维护预防性维护(PreventiveMaintenance)原因:原因:为进一步改善软件系统的可维护为进一步改善软件系统的可维护性和可靠性,为以后的软件改进奠定基性和可靠性,为以后的软件改进奠定基础的维护活动。础的维护活动。采用先进的软件工程方法,对需要维采用先进的软件工程方法,对需要维护的软件或软件中的某一部分重新进行设护的软件或软件中的某一部分重新进行设计、编制和测试。计、编制和测试。78软件维护策略软件维护策略针针对对以以上上几几种种类类型型的的维维护护,可可采采取取相相应应的的维维护护策策略略,以以提提高高维
6、维护护效效率率,降降低维护成本。低维护成本。、改正性维护策略、改正性维护策略开发过程中采用新技术,利用应用开发过程中采用新技术,利用应用软件包,提高系统结构化程度,进行周软件包,提高系统结构化程度,进行周期性维护审查等。期性维护审查等。9、适应性维护策略、适应性维护策略 对可能变化的因素进行配置管理,将对可能变化的因素进行配置管理,将因环境变化而必须修改的部分局部化,因环境变化而必须修改的部分局部化,即局限于某些程序模块等。即局限于某些程序模块等。、完善性维护策略、完善性维护策略除了可以使用前面两类维护的策略外,除了可以使用前面两类维护的策略外,还有使用功能强、使用方便的工具,采还有使用功能强
7、、使用方便的工具,采用原型化方法开发等,也可提高可维护用原型化方法开发等,也可提高可维护性。性。10、预防性维护策略、预防性维护策略常采用提前实现、软件重用等技术。常采用提前实现、软件重用等技术。11软件维护的特性软件维护的特性一、时间长、工作量大、成本高一、时间长、工作量大、成本高维护阶段是软件生存期中最长的一维护阶段是软件生存期中最长的一个阶段,软件维护的工作量占整个软件个阶段,软件维护的工作量占整个软件生存期的生存期的70以上,而且还在逐年增加。以上,而且还在逐年增加。因此,如何减少软件维护的工作量,降因此,如何减少软件维护的工作量,降低软件维护的成本,就成为提高软件维低软件维护的成本,
8、就成为提高软件维护效率和质量的关键。护效率和质量的关键。维护维护71%71%其余其余29%29%维护工作比例12二、软件维护的副作用二、软件维护的副作用u改动改动-新的错误新的错误u维护的副作用是指由于维护或者在维护过程中其他维护的副作用是指由于维护或者在维护过程中其他一些不期望的行为引入的错误一些不期望的行为引入的错误代码副作用代码副作用:如修改或者删除程序、修改或者删除语如修改或者删除程序、修改或者删除语句标号、修改逻辑符号等等。慎重,可通过回归测试句标号、修改逻辑符号等等。慎重,可通过回归测试发现发现数据副作用数据副作用:因修改信息结构而带来的不良后果,如因修改信息结构而带来的不良后果,
9、如局部和全局数据的再定义,记录或者文件格式的再定局部和全局数据的再定义,记录或者文件格式的再定义等义等 文档副作用文档副作用:由于在设计文档中未能准确反映软件修由于在设计文档中未能准确反映软件修改情况而带来的不良后果改情况而带来的不良后果 13三、软件维护的困难三、软件维护的困难由由于于软软件件维维护护工工作作通通常常并并不不由由软软件件的的设设计计和和开开发发人人员员来来完完成成,维维护护人人员员首首先先要要对对软软件件各各阶阶段段的的文文档档和和代代码码进进行行分分析析、理理解解。因因而而出出现现了了理理解解别别人人的的程程序序困困难难、文文档档不不齐齐等等问问题题,尤尤其其是是对对大大型
10、型、复复杂杂系系统统的的维维护护,更更加加困困难难和和复复杂杂,甚至是不可能的!甚至是不可能的!14、结构化维护与非结构化维护、结构化维护与非结构化维护非结构化维护非结构化维护 缺乏必要的文档说明,文缺乏必要的文档说明,文档缺少或者不一制,难于确定数据结构、系统档缺少或者不一制,难于确定数据结构、系统接口等特性,这样的维护工作令人生畏,事倍接口等特性,这样的维护工作令人生畏,事倍功半。功半。15结结构构化化维维护护 指指软软件件开开发发过过程程是是按按照照软软件件工工程程方方法法进进行行的的,开开发发各各阶阶段段的的文文档档齐齐全全,软软件件的的维维护护过过程程,有有一一整整套套完完整的方案、
11、技术、审定过程及文档。整的方案、技术、审定过程及文档。可可以以看看到到,维维护护工工作作的的难难度度及及工工作作量量的的大大小小,明明显显与与前前期期的的开开发发工工作作密密切切相关。相关。太累了!受不了啦!几万行程序怎么改哦?16二、影响维护工作量的因素二、影响维护工作量的因素 1)系统大小)系统大小2)程序设计语言)程序设计语言3)系统年龄)系统年龄4)数据库技术的应用)数据库技术的应用5)先进的软件开发技术)先进的软件开发技术6)其他。例如,应用的类型、数学模型、)其他。例如,应用的类型、数学模型、任务的难度、开关与标记、任务的难度、开关与标记、IF嵌套深度、嵌套深度、索引或下标数等。索
12、引或下标数等。178.2.2维护的代价高昂维护的代价高昂 维护活动分为维护活动分为生产性活动生产性活动和和非生产性活动非生产性活动。l生产性活动生产性活动:分析评价、修改设计和编写程序代码等;:分析评价、修改设计和编写程序代码等;l非生产性活动非生产性活动:理解程序代码功能、数据结构:理解程序代码功能、数据结构 、接口、接口特点和设计约束等。特点和设计约束等。说明:说明:M:维护工作总工作量:维护工作总工作量P:生产性工作量:生产性工作量K:经验常数:经验常数c:复杂度:复杂度d:对该软件熟悉程度的度量:对该软件熟悉程度的度量 188.2.3维护的问题很多维护的问题很多 n n(1)难以跟踪软
13、件版本的进化过程难以跟踪软件版本的进化过程,软件的软件的变化未在文档中反映出来变化未在文档中反映出来.n n(2)难以跟踪软件的创建过程难以跟踪软件的创建过程.n n(3)难以读懂他人程序难以读懂他人程序.n n(4)无文档或不全无文档或不全.n n(5)软件人员流动性大软件人员流动性大.n n(6)设计时未考虑修改需要设计时未考虑修改需要,修改困难修改困难.n n(7)维护工作无吸引力维护工作无吸引力,缺乏成就感缺乏成就感.19一、维护组织一、维护组织 8.3软件维护过程软件维护过程所有软件维护申请所有软件维护申请应按规定的方式提出。应按规定的方式提出。维护机构通常提维护机构通常提供供“维护
14、申请报告维护申请报告”,或称,或称“软件问题报软件问题报告告”,由申请维护的,由申请维护的用户填写。用户填写。维护机构内部要维护机构内部要写写“软件修改报告软件修改报告”2021必要的技术工作必要的技术工作修改软件需求说明修改软件需求说明修改软件设计修改软件设计设计评审设计评审对源程序做必要修改对源程序做必要修改单元测试单元测试集成测试(回归测集成测试(回归测试)试)确认测试确认测试软件配置评审等。软件配置评审等。二、软件维护工作流程二、软件维护工作流程22衡量软件质量的几个主要质量特性:衡量软件质量的几个主要质量特性:uu 可维护性可维护性可维护性可维护性 uu 可使用性可使用性可使用性可使
15、用性 uu 可靠性可靠性可靠性可靠性 一、软件可维护性的定义一、软件可维护性的定义指纠正软件系统出现的错误和缺陷,指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或以及为满足新的要求进行修改、扩充或压缩的容易程度。压缩的容易程度。8.4软件的可维护性软件的可维护性23u可理解性可理解性可理解性可理解性:人们通过阅读源代码和相关文档,了解:人们通过阅读源代码和相关文档,了解:人们通过阅读源代码和相关文档,了解:人们通过阅读源代码和相关文档,了解 程序功能及其如何运行的容易程度。程序功能及其如何运行的容易程度。程序功能及其如何运行的容易程度。程序功能及其如何运行的容易程度。u 可靠
16、性可靠性可靠性可靠性:表明一个程序按照用户的要求和设计目:表明一个程序按照用户的要求和设计目:表明一个程序按照用户的要求和设计目:表明一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概标,在给定的一段时间内正确执行的概标,在给定的一段时间内正确执行的概标,在给定的一段时间内正确执行的概率。率。率。率。u 可测试性可测试性可测试性可测试性:表明论证程序正确性的容易程度。:表明论证程序正确性的容易程度。:表明论证程序正确性的容易程度。:表明论证程序正确性的容易程度。u 可修改性可修改性可修改性可修改性:表明程序容易修改的程度。:表明程序容易修改的程度。:表明程序容易修改的程度。:表明
17、程序容易修改的程度。二、可维护性的度量(二、可维护性的度量(1)24u可移植性:可移植性:表明程序转移到一个新的计表明程序转移到一个新的计 算环境的可能性的大小。算环境的可能性的大小。u效率:效率:一个程序能执行预定功能而又不一个程序能执行预定功能而又不 浪费机器资源的程度。浪费机器资源的程度。u可使用性:可使用性:从用户观点出发,把可使用从用户观点出发,把可使用 性定义为程序方便、实用、及性定义为程序方便、实用、及 易于使用的程度。易于使用的程度。二、可维护性的度量(二、可维护性的度量(2)257个特性在各类维护中的侧重点个特性在各类维护中的侧重点 26l建立明确的软件质量目标和优先级建立明
18、确的软件质量目标和优先级相互促进的特性:相互促进的特性:相互促进的特性:相互促进的特性:可理解性和可测试性可理解性和可测试性可理解性和可测试性可理解性和可测试性 可理解性和可修改性可理解性和可修改性可理解性和可修改性可理解性和可修改性;相互抵触的特性:相互抵触的特性:相互抵触的特性:相互抵触的特性:效率和可移植性效率和可移植性效率和可移植性效率和可移植性 效率和可修改性效率和可修改性效率和可修改性效率和可修改性 各特性的相对重要性应随着程序的用途不各特性的相对重要性应随着程序的用途不各特性的相对重要性应随着程序的用途不各特性的相对重要性应随着程序的用途不 同、同、同、同、计算环境的不同而不同。
19、计算环境的不同而不同。计算环境的不同而不同。计算环境的不同而不同。l 使用提高软件质量的技术和工具使用提高软件质量的技术和工具如:模块化、详细的设计文档、结构化设如:模块化、详细的设计文档、结构化设如:模块化、详细的设计文档、结构化设如:模块化、详细的设计文档、结构化设 计、计、计、计、程序内部的文档和良好的高级程序设计语言程序内部的文档和良好的高级程序设计语言程序内部的文档和良好的高级程序设计语言程序内部的文档和良好的高级程序设计语言提高可维护性的方法提高可维护性的方法 27l进行明确的质量保证审查进行明确的质量保证审查检查点复审、验收检查、周期性地维护检查点复审、验收检查、周期性地维护审查
20、、对软件包进行检查。审查、对软件包进行检查。l选择可维护的程序设计语言选择可维护的程序设计语言l改进程序的文档改进程序的文档l开发软件时考虑到维护开发软件时考虑到维护28一、逆向工程一、逆向工程(reverseengineering)软件的逆向工程是分析程序,力图软件的逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序在比源代码更高的抽象层次上建立程序表示的过程,是表示的过程,是一个设计恢复的过程,一个设计恢复的过程,逆向工程工具可以从已有的程序中抽取逆向工程工具可以从已有的程序中抽取数据结构、体系结构和程序设计信息。数据结构、体系结构和程序设计信息。8.6软件再工程过程软件再工程过程
21、 29二、重构工程二、重构工程在逆向工程所获得信息的基础上修改在逆向工程所获得信息的基础上修改或者重构已有的系统,产生系统一个新版或者重构已有的系统,产生系统一个新版本的过程。本的过程。逆向工程和重构工程逆向工程和重构工程是是预防性维护预防性维护采采用的主要技术。用的主要技术。30正向工程(正向工程(ForwardEngineering)由抽象的、逻辑性的、不依存代码由抽象的、逻辑性的、不依存代码的设计逐步展开,直至具体代码实现的的设计逐步展开,直至具体代码实现的开发活动,即从需求规格设计到产品初开发活动,即从需求规格设计到产品初次发布的过程或子过程。次发布的过程或子过程。31逆向工程和重构工
22、程示意图逆向工程和重构工程示意图32软件再工程是一个工程过程,它将软件再工程是一个工程过程,它将软件再工程是一个工程过程,它将软件再工程是一个工程过程,它将逆向工程逆向工程逆向工程逆向工程、重构重构重构重构和和和和正向工程正向工程正向工程正向工程组合起来,旨在对现存的大量软组合起来,旨在对现存的大量软组合起来,旨在对现存的大量软组合起来,旨在对现存的大量软件系统进行挖掘、整理,重新获得设计信息,用件系统进行挖掘、整理,重新获得设计信息,用件系统进行挖掘、整理,重新获得设计信息,用件系统进行挖掘、整理,重新获得设计信息,用这些信息改建或重构现有的系统,以改进它的综这些信息改建或重构现有的系统,以
23、改进它的综这些信息改建或重构现有的系统,以改进它的综这些信息改建或重构现有的系统,以改进它的综合质量;合质量;合质量;合质量;或者得到有用的软件构件,对已有软件构件或者得到有用的软件构件,对已有软件构件或者得到有用的软件构件,对已有软件构件或者得到有用的软件构件,对已有软件构件进行维护以延长其生存期。进行维护以延长其生存期。进行维护以延长其生存期。进行维护以延长其生存期。再工程的基础是系统理解再工程的基础是系统理解再工程的基础是系统理解再工程的基础是系统理解,包括对运行系统、包括对运行系统、包括对运行系统、包括对运行系统、源代码、设计、分析、文档等的全面理解。但在源代码、设计、分析、文档等的全
24、面理解。但在源代码、设计、分析、文档等的全面理解。但在源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代很多情况下,由于各类文档的丢失,只能对源代很多情况下,由于各类文档的丢失,只能对源代很多情况下,由于各类文档的丢失,只能对源代码进行理解码进行理解码进行理解码进行理解,即程序理解。即程序理解。即程序理解。即程序理解。二、软件再工程(二、软件再工程(Re-engineering)33起源起源软件工程进入再工程时代的呼声起于软件工程进入再工程时代的呼声起于软件工程进入再工程时代的呼声起于软件工程进入再工程时代的呼声起于2020世纪世纪世纪世纪9090年代初年代初
25、年代初年代初,当时更多的提法是,当时更多的提法是,当时更多的提法是,当时更多的提法是软件重用软件重用软件重用软件重用(Reuse)(Reuse)。实际上可以说是用实际上可以说是用实际上可以说是用实际上可以说是用“重用重用重用重用”的旗帜为再工程开的旗帜为再工程开的旗帜为再工程开的旗帜为再工程开道。这样引出再工程,是软件工程理论先导的道。这样引出再工程,是软件工程理论先导的道。这样引出再工程,是软件工程理论先导的道。这样引出再工程,是软件工程理论先导的远见卓识,因为远见卓识,因为远见卓识,因为远见卓识,因为重用是软件工程的最高境界重用是软件工程的最高境界重用是软件工程的最高境界重用是软件工程的最
26、高境界。34再工程(再工程(Reengineering):也称再加工):也称再加工(Renovation)是对既存软件系统进行调查,并将其重构是对既存软件系统进行调查,并将其重构是对既存软件系统进行调查,并将其重构是对既存软件系统进行调查,并将其重构为新形式代码的开发过程。逆向过程从源代码为新形式代码的开发过程。逆向过程从源代码为新形式代码的开发过程。逆向过程从源代码为新形式代码的开发过程。逆向过程从源代码出发,旨在取得高一级抽象成果,再工程根据出发,旨在取得高一级抽象成果,再工程根据出发,旨在取得高一级抽象成果,再工程根据出发,旨在取得高一级抽象成果,再工程根据对对象系统更深层次的理解将其重
27、构为另一种对对象系统更深层次的理解将其重构为另一种对对象系统更深层次的理解将其重构为另一种对对象系统更深层次的理解将其重构为另一种形式的软件产品。形式的软件产品。形式的软件产品。形式的软件产品。即:即:即:即:再工程再工程再工程再工程=逆向工程逆向工程逆向工程逆向工程+正向工程正向工程正向工程正向工程。再工程。再工程。再工程。再工程这一用语也常用于这一用语也常用于这一用语也常用于这一用语也常用于业务过程再工程(业务过程再工程(业务过程再工程(业务过程再工程(BPRBPR),),),),有时为了与有时为了与有时为了与有时为了与BPRBPR相区分,通常将这里的再工程相区分,通常将这里的再工程相区分
28、,通常将这里的再工程相区分,通常将这里的再工程称为软件再工程(称为软件再工程(称为软件再工程(称为软件再工程(SoftwareReengineeringSoftwareReengineering)。)。)。)。再工程处于软件生存期的维护期再工程处于软件生存期的维护期再工程处于软件生存期的维护期再工程处于软件生存期的维护期。所以要。所以要。所以要。所以要研究再工程首先要研究软件维护研究再工程首先要研究软件维护研究再工程首先要研究软件维护研究再工程首先要研究软件维护(Software(SoftwareMaintenance)Maintenance)。35再工程的类型再工程的类型严格地说,再工程的潜
29、在需求尽管大得不严格地说,再工程的潜在需求尽管大得不严格地说,再工程的潜在需求尽管大得不严格地说,再工程的潜在需求尽管大得不可估量,但目前只能说是进入了再工程时代。可估量,但目前只能说是进入了再工程时代。可估量,但目前只能说是进入了再工程时代。可估量,但目前只能说是进入了再工程时代。其理由众所周知其理由众所周知其理由众所周知其理由众所周知:一是资金不足一是资金不足一是资金不足一是资金不足再工程需要再工程需要再工程需要再工程需要大量投资;大量投资;大量投资;大量投资;二是软件开发人员不足二是软件开发人员不足二是软件开发人员不足二是软件开发人员不足。所以除了。所以除了。所以除了。所以除了应付尚未实
30、施的一次软件工程外,可以有计划应付尚未实施的一次软件工程外,可以有计划应付尚未实施的一次软件工程外,可以有计划应付尚未实施的一次软件工程外,可以有计划地投入再工程的资源很有限。目前的再工程主地投入再工程的资源很有限。目前的再工程主地投入再工程的资源很有限。目前的再工程主地投入再工程的资源很有限。目前的再工程主要为三类:要为三类:要为三类:要为三类:36适应性维护的再工程适应性维护的再工程1.1.伴随硬件和操作系统更新换代的软件维护。伴随硬件和操作系统更新换代的软件维护。像小像小型机换成型机换成PCPC机、机、PCPC机换成机换成UnixUnix工作站、工作站、Win95Win95换成换成Win
31、XPWinXP所带来的软件维护。所带来的软件维护。2.2.业务环境变化带来的软件维护。业务环境变化带来的软件维护。譬如由于企业业譬如由于企业业务的发展和系统使用年限的增加,既存系统的存务的发展和系统使用年限的增加,既存系统的存储媒体和数据管理系统满足不了数据量及其种类储媒体和数据管理系统满足不了数据量及其种类剧增的要求,需要更新数据库系统;随外部条件剧增的要求,需要更新数据库系统;随外部条件变化而必须修改部分数据变量定义或算法,例如变化而必须修改部分数据变量定义或算法,例如征收消费税的法律修订、邮政编码位数改变、征收消费税的法律修订、邮政编码位数改变、20002000年问题等。年问题等。373
32、.3.系统运行环境变化带来的软件修正。系统运行环境变化带来的软件修正。如由主机如由主机方式变为客户方式变为客户/服务器方式,由客户服务器方式,由客户/服务器方服务器方式变为式变为WebWeb方式,这时的系统体系结构必须做方式,这时的系统体系结构必须做相应的改变。相应的改变。4.4.适应系统开发环境变化的软件维护。适应系统开发环境变化的软件维护。有一些软有一些软件,主要是定制软件,如件,主要是定制软件,如ERPERP软件等,其软件软件等,其软件再工程常伴随企业的再工程常伴随企业的BPRBPR发生,所以开发环境发生,所以开发环境也需随经常性的系统完善性再工程而更新,譬也需随经常性的系统完善性再工程
33、而更新,譬如如PowerBuilderPowerBuilder等开发环境的升级换代如同操等开发环境的升级换代如同操作系统一样频繁发生。作系统一样频繁发生。38 完善性维护的再工程完善性维护的再工程 增加或修改功能,以提高系统的安增加或修改功能,以提高系统的安全性、处理能力等性能。全性、处理能力等性能。39预防性维护的再工程预防性维护的再工程 为了提高可维护性而对系统进行优化(再为了提高可维护性而对系统进行优化(再结构化、再标准化等),对文档进行重构,对结构化、再标准化等),对文档进行重构,对数据进行重组。数据进行重组。40软件维护工具软件维护工具 辅助软件维护过程中的活动的软件称辅助软件维护过程中的活动的软件称为为“软件维护工具软件维护工具”,它辅助维护人员,它辅助维护人员对软件代码及其文档进行各种维护活动。对软件代码及其文档进行各种维护活动。软件维护工具主要有:软件维护工具主要有:、版本控制工具;、版本控制工具;、文档分析工具;、文档分析工具;、开发信息库工具;、开发信息库工具;、逆向工程工具;、逆向工程工具;、再工程工具、再工程工具