软件工程课件ch08软件维护.ppt

上传人(卖家):晟晟文业 文档编号:4907446 上传时间:2023-01-24 格式:PPT 页数:54 大小:695.50KB
下载 相关 举报
软件工程课件ch08软件维护.ppt_第1页
第1页 / 共54页
软件工程课件ch08软件维护.ppt_第2页
第2页 / 共54页
软件工程课件ch08软件维护.ppt_第3页
第3页 / 共54页
软件工程课件ch08软件维护.ppt_第4页
第4页 / 共54页
软件工程课件ch08软件维护.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

1、第8章 软件维护2023年1月24日第1页第第8章章 软件维护软件维护本章内容结构本章内容结构l本章引言本章引言l学习目标学习目标l教学内容教学内容l本章小结本章小结l思考和练习思考和练习l课堂讨论课堂讨论第8章 软件维护本章引言本章引言l软件系统开发完成交付用户使用后,就进入软件的运行维软件系统开发完成交付用户使用后,就进入软件的运行维护阶段。软件维护阶段是软件生存周期中时间最长的一个护阶段。软件维护阶段是软件生存周期中时间最长的一个阶段,所花费的精力和费用也是最多的一个阶段。阶段,所花费的精力和费用也是最多的一个阶段。l本章主要介绍软件维护的相关概念,包括定义、分类、特本章主要介绍软件维护

2、的相关概念,包括定义、分类、特点、软件维护的过程、可维护性等,以及软件维护中存在点、软件维护的过程、可维护性等,以及软件维护中存在的问题。最后简单介绍再工程和逆向工程的概念。的问题。最后简单介绍再工程和逆向工程的概念。2023年1月24日第2页第8章 软件维护2023年1月24日第3页学习目标学习目标l掌握软件维护的定义、分类和特点掌握软件维护的定义、分类和特点l熟悉软件维护的过程熟悉软件维护的过程l理解软件可维护性理解软件可维护性l理解软件维护中存在的问题理解软件维护中存在的问题l了解再工程和逆向工程了解再工程和逆向工程第8章 软件维护2023年1月24日第4页教学内容教学内容8.1 软件维

3、护概述软件维护概述8.2 软件维护的过程软件维护的过程8.3 软件可维护性软件可维护性8.4 软件维护中存在的问题软件维护中存在的问题8.5 再工程和逆向工程再工程和逆向工程8.6 本章小结和习题本章小结和习题 第8章 软件维护2023年1月24日第5页8.1 软件维护概述软件维护概述软件系统开发完成交付用户使用后,就进入软件的运软件系统开发完成交付用户使用后,就进入软件的运行维护阶段。行维护阶段。软件维护的工作量大,而且随着软件数量的增多和使软件维护的工作量大,而且随着软件数量的增多和使用寿命的延长,软件维护的工作量占整个软件开发用寿命的延长,软件维护的工作量占整个软件开发运行过程总工作量的

4、比例还在持续上升。运行过程总工作量的比例还在持续上升。8.1.1 软件维护的定义软件维护的定义8.1.2 软件维护的分类软件维护的分类8.1.3 软件维护的特点软件维护的特点第8章 软件维护2023年1月24日第6页8.1.1 软件维护的定义软件维护的定义软件维护软件维护:指软件系统交付使用以后,为了改正软件:指软件系统交付使用以后,为了改正软件运行错误,或者因满足新的需求而加入新功能的修运行错误,或者因满足新的需求而加入新功能的修改软件的过程。改软件的过程。软件维护与硬件维修不同,不是简单地将软件产品恢软件维护与硬件维修不同,不是简单地将软件产品恢复到初始状态,而是需要给用户提供一个经过修改

5、复到初始状态,而是需要给用户提供一个经过修改的软件新产品。软件维护活动需要改正现有错误,的软件新产品。软件维护活动需要改正现有错误,修改、改进现有软件以适应新环境。修改、改进现有软件以适应新环境。软件维护不像软件开发一样从零做起,需要在现有软软件维护不像软件开发一样从零做起,需要在现有软件结构中引入修改,并且要考虑代码结构所施加的件结构中引入修改,并且要考虑代码结构所施加的约束,此外,软件维护所允许的时间通常只是很短约束,此外,软件维护所允许的时间通常只是很短的一段时间。的一段时间。第8章 软件维护2023年1月24日第7页8.1.2 软件维护的分类软件维护的分类软件维护活动可以归结为以下四类

6、:软件维护活动可以归结为以下四类:v 改正性维护;改正性维护;v 适应性维护;适应性维护;v 完善性维护;完善性维护;v 预防性维护。预防性维护。第8章 软件维护 8.1 软件维护的分类软件维护的分类 在软件交付使用后,因开发时测试的不彻底、不完全,在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。必然会有部分隐藏的错误遗留到运行阶段。u 这些隐藏下来的错误在某些特定的使用环境下就会暴这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。露出来。u 为了识别和纠正软件错误、改正软件性能上的缺陷,为了识别和纠正软件错误、改正软件性能上的缺陷,而进行诊断和改正错

7、误的过程就叫做改正性维护。而进行诊断和改正错误的过程就叫做改正性维护。第8章 软件维护 8.1 软件维护的分类软件维护的分类 改正性维护中的主要维护策略改正性维护中的主要维护策略:开发过程中采用新技术开发过程中采用新技术 利用应用软件包利用应用软件包 提高系统结构化程度提高系统结构化程度 进行周期性维护审查等进行周期性维护审查等第8章 软件维护 8.1 软件维护的分类软件维护的分类 在使用过程中,在使用过程中,p 外部环境(新的硬、软件配置)外部环境(新的硬、软件配置)p 数据环境(数据库、数据格式、数据输入数据环境(数据库、数据格式、数据输入/输出方输出方式、数据存储介质)可能发生变化式、数

8、据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。应性维护。第8章 软件维护8.1 软件维护的分类软件维护的分类 适应性维护中的主要维护策略适应性维护中的主要维护策略对可能变化的因素进行配置管理对可能变化的因素进行配置管理将因环境变化而必须修改的部分局部化,即局限于某将因环境变化而必须修改的部分局部化,即局限于某些程序模块等。些程序模块等。第8章 软件维护8.1 软件维护的分类软件维护的分类 u 在软件的使用过程中,用户往往会对软件提出新的功能与性在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。能要求

9、。u 为了满足这些要求,需要修改或再开发软件,以扩充软件功为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。能、增强软件性能、改进加工效率、提高软件的可维护性。u 这种情况下进行的维护活动叫做完善性维护。这种情况下进行的维护活动叫做完善性维护。第8章 软件维护8.1 软件维护的分类软件维护的分类 u 实践表明,在几种维护活动中,完善性维护所占的比重实践表明,在几种维护活动中,完善性维护所占的比重最大。即大部分维护工作是改变和加强软件,而不是纠错。最大。即大部分维护工作是改变和加强软件,而不是纠错。u 完善性维护不一定是救火式的紧急维修,而可

10、以是有计完善性维护不一定是救火式的紧急维修,而可以是有计划、有预谋的一种再开发活动。划、有预谋的一种再开发活动。第8章 软件维护8.1 软件维护的分类软件维护的分类完善性维护中的主要维护策略完善性维护中的主要维护策略尽量采用功能强尽量采用功能强使用方便的工具,采用原型化的开发方法等使用方便的工具,采用原型化的开发方法等第8章 软件维护8.1 软件维护的分类软件维护的分类 为了改进未来的可维护性或可靠性,或为了给未来的为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。改进奠定更好的基础而修改软件。u 也可以定义为:也可以定义为:“把今天的方法学用于昨天的系统以满把今天的

11、方法学用于昨天的系统以满足明天的需要足明天的需要”。即该类维护工作需要采用先进的软件工。即该类维护工作需要采用先进的软件工程方法,对需要维护的软件或软件中的某一部分(重新)程方法,对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。进行设计、编码和测试。第8章 软件维护8.1 软件维护的分类软件维护的分类 预防性维护中的主要维护策略预防性维护中的主要维护策略采用提前实现采用提前实现软件重用等技术软件重用等技术第8章 软件维护8.1 软件维护的分类软件维护的分类第8章 软件维护2023年1月24日第18页8.1.3 软件维护的特点软件维护的特点软件维护工作有以下特点。软件维护工作有以

12、下特点。软件维护是软件生存周期中延续时间最长、工作量最大软件维护是软件生存周期中延续时间最长、工作量最大的一个阶段。的一个阶段。软件维护不仅工作量大、任务重,而且维护不当的话,软件维护不仅工作量大、任务重,而且维护不当的话,还会产生一些意想不到的副作用,甚至引起新的错误。还会产生一些意想不到的副作用,甚至引起新的错误。软件维护活动实际上是一个修改和简化了的软件开发活软件维护活动实际上是一个修改和简化了的软件开发活动。动。尽管软件维护需要的工作量很大,但是长期以来,软件尽管软件维护需要的工作量很大,但是长期以来,软件维护工作却一直未受到软件设计者们的足够重视。维护工作却一直未受到软件设计者们的足

13、够重视。第8章 软件维护2023年1月24日第19页8.2 软件维护的过程软件维护的过程软件维护是一件复杂而困难的事情,必须在相应的技术指软件维护是一件复杂而困难的事情,必须在相应的技术指导下,按照一定的步骤进行。导下,按照一定的步骤进行。一般地,软件维护活动首先要建立一个维护组织,然后建一般地,软件维护活动首先要建立一个维护组织,然后建立维护活动的登记、申请制度及对维护方案的审批制度,立维护活动的登记、申请制度及对维护方案的审批制度,规定复审的评价标准。规定复审的评价标准。8.2.1 结构化维护与非结构化维护结构化维护与非结构化维护8.2.2 维护组织维护组织8.2.3 维护工作的流程维护工

14、作的流程8.2.4 维护工作的组织管理维护工作的组织管理第8章 软件维护2023年1月24日第20页8.2.1 结构化维护非结构化维护结构化维护非结构化维护8.2 维护与维护与8.2.2 维护组织维护组织8.2.3 维护工作的流程维护工作的流程8.2.4 维护工作的组织管理维护工作的组织管理第8章 软件维护8.2.1 结构化维护与非结构化维护结构化维护与非结构化维护u结构化维护结构化维护 指软件开发过程是按照软件工程指软件开发过程是按照软件工程方法进行的,开发各阶段的文档齐全,软件的维方法进行的,开发各阶段的文档齐全,软件的维护过程,有一整套完整的方案、技术、审定过程护过程,有一整套完整的方案

15、、技术、审定过程及文档。因此易于维护。及文档。因此易于维护。u非结构化维护非结构化维护 软件配置的惟一成分是程序代码软件配置的惟一成分是程序代码,缺乏必要的文档说明,文档缺少或者不一制,难缺乏必要的文档说明,文档缺少或者不一制,难于确定数据结构、系统接口等特性,这样的维护于确定数据结构、系统接口等特性,这样的维护工作令人生畏,事倍功半。因此非结构化维护需工作令人生畏,事倍功半。因此非结构化维护需要付出很大代价。要付出很大代价。第8章 软件维护8.2 软件维护的特点软件维护的特点维护申请维护申请软件系统软件系统文档全否文档全否?计划维护方法计划维护方法分析原设计分析原设计修改设计修改设计重新编程

16、重新编程经复审经复审,还还有问题吗有问题吗?无无有有分析源程序分析源程序修改源程序修改源程序经复审经复审,还还有问题吗有问题吗?无无交付使用交付使用结构化维护与非结构化维护的对比结构化维护与非结构化维护的对比是是否否有有有有第8章 软件维护2023年1月24日第23页8.2.2 维护组织维护组织对于大型软件系统,建立一个专门的维护组织机构对于大型软件系统,建立一个专门的维护组织机构是必须的。较小的软件系统,也有必要委派一个是必须的。较小的软件系统,也有必要委派一个专人负责软件维护工作。专人负责软件维护工作。在维护活动开始之前,必须明确维护活动的审批制在维护活动开始之前,必须明确维护活动的审批制

17、度。每个维护要求都要通过维护管理员转交给系度。每个维护要求都要通过维护管理员转交给系统管理员去评价。系统管理员对维护申请做出评统管理员去评价。系统管理员对维护申请做出评价后,由主管部门决定是否进行软件修改。维护价后,由主管部门决定是否进行软件修改。维护小组在接到通过审批的维护申请报告后,将维护小组在接到通过审批的维护申请报告后,将维护任务下达给指定的维护人员,并监控维护活动的任务下达给指定的维护人员,并监控维护活动的开展。开展。第8章 软件维护2023年1月24日第24页8.2.2 维护组织维护组织第8章 软件维护2023年1月24日第25页8.2.3 维护工作的流程维护工作的流程概括地说,软

18、件维护过程是:概括地说,软件维护过程是:建立维护机构建立维护机构编写软件维护申请报告编写软件维护申请报告确定软件确定软件维护工作流程维护工作流程整理软件维护文档整理软件维护文档评价软件维评价软件维护性能。护性能。第8章 软件维护2023年1月24日第26页8.2.3 维护工作的流程维护工作的流程1、一个典型的维护机构包括:维护管理员、修改批、一个典型的维护机构包括:维护管理员、修改批准人员、系统管理员、配置管理员和维护人员。准人员、系统管理员、配置管理员和维护人员。2、维护申请报告将由维护管理员和系统管理员共同、维护申请报告将由维护管理员和系统管理员共同研究和处理,相应地做出软件变更报告(研究

19、和处理,相应地做出软件变更报告(Software Change Report,SCR)。)。SCR 的内容的内容包括:所需修改变动的性质;申请修改的优先级包括:所需修改变动的性质;申请修改的优先级;为满足该维护申请报告所需的工作量(人员数;为满足该维护申请报告所需的工作量(人员数、时间数等);预计修改后的结果等。、时间数等);预计修改后的结果等。第8章 软件维护2023年1月24日第27页8.2.3 维护工作的流程维护工作的流程3、具体执行软件维护、具体执行软件维护工作时,主要的步骤工作时,主要的步骤包括:包括:确认维护类型;确认维护类型;实施相应维护;实施相应维护;维护评审。维护评审。4、整

20、理软件维护文档;、整理软件维护文档;5、评价软件维护性能。、评价软件维护性能。第8章 软件维护2023年1月24日第28页8.2.4 维护工作的组织管理维护工作的组织管理软件维护工作的复杂性决定了软件维护不仅软件维护工作的复杂性决定了软件维护不仅需要技术性工作,还需要大量的管理工作需要技术性工作,还需要大量的管理工作与之相配合,才能保证维护工作的质量和与之相配合,才能保证维护工作的质量和效率。效率。第8章 软件维护2023年1月24日第29页8.2.4 维护工作的组织管理维护工作的组织管理第8章 软件维护2023年1月24日第30页8.3 软件可维护性软件可维护性8.3.1 软件可维护性的定义

21、软件可维护性的定义8.3.2 软件可维护性的度量软件可维护性的度量8.3.3 提高软件可维护性的方法提高软件可维护性的方法第8章 软件维护2023年1月24日第31页8.3.1 软件可维护性的定义软件可维护性的定义u是指纠正软件系统出现的错误和缺陷,以是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩及为满足新的要求进行修改、扩充或压缩的容易程度。的容易程度。u 是软件开发阶段各个时期的关键目标。是软件开发阶段各个时期的关键目标。第8章 软件维护 8.3.1 软件可维护性的定义软件可维护性的定义 各类维护中的侧重点各类维护中的侧重点改正性维护改正性维护适应性维护适应性维护

22、完善性维护完善性维护可理解性可理解性可测试性可测试性可修改性可修改性可靠性可靠性可移植性可移植性可使用性可使用性效率效率第8章 软件维护 8.3.1 软件可维护性的定义软件可维护性的定义可理解性:维护人员通过阅读源代码和相关文档,理解可理解性:维护人员通过阅读源代码和相关文档,理解软件的结构、接口、功能和内部过程的难易程度。软件的结构、接口、功能和内部过程的难易程度。可测试性:指证实程序正确性的难易程度。程序越简单,可测试性:指证实程序正确性的难易程度。程序越简单,证明其正确性就越容易,好的文档资料对诊断和测试至证明其正确性就越容易,好的文档资料对诊断和测试至关重要。关重要。可修改性:指修改程

23、序的难易程度。一个可修改的程序可修改性:指修改程序的难易程度。一个可修改的程序往往是可理解的、通用的、灵活的和简明的。往往是可理解的、通用的、灵活的和简明的。第8章 软件维护 8.3.1 软件可维护性的定义软件可维护性的定义可靠性:一个程序按照用户的要求和设计目标,在给定的可靠性:一个程序按照用户的要求和设计目标,在给定的一段时间内正确执行的概率。度量标准主要有平均失效时一段时间内正确执行的概率。度量标准主要有平均失效时间间隔、间间隔、平均修复时间平均修复时间和和有效性有效性。可移植性:指程序从一个计算机环境移到另一计算机环境可移植性:指程序从一个计算机环境移到另一计算机环境的适应能力,亦即程

24、序在不同计算机环境下能够有效地运的适应能力,亦即程序在不同计算机环境下能够有效地运行的程度。行的程度。第8章 软件维护 8.3.1 软件可维护性的定义软件可维护性的定义可使用性:从用户观点出发,把可使用性定义为程序方便、可使用性:从用户观点出发,把可使用性定义为程序方便、实用、及易于使用的程度。实用、及易于使用的程度。效率:一个程序能执行预定功能而又不浪费机器资源的程效率:一个程序能执行预定功能而又不浪费机器资源的程度。这些机器资源包括内存容量、外存容量、通道容量和度。这些机器资源包括内存容量、外存容量、通道容量和执行时间。执行时间。第8章 软件维护 8.3.2 软件可维护性的度量软件可维护性

25、的度量u 度量一个可维护的程序的七种特性时常用的方法就是质度量一个可维护的程序的七种特性时常用的方法就是质量检查表、质量测试和质量标准。量检查表、质量测试和质量标准。u 质量检查表是用于测试程序中某些质量特性是否存在的一质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单。评价者针对检查表上的每个问题,依据自己的个问题清单。评价者针对检查表上的每个问题,依据自己的定性判断,回答定性判断,回答“是是”或者或者“否否”。u 质量测试和质量标准则用于定量分析和评价程序的质量。质量测试和质量标准则用于定量分析和评价程序的质量。第8章 软件维护8.3.3 提高软件可维护性的方法提高软件可维护性的

26、方法 需要从以下五个方面着手:需要从以下五个方面着手:建立明确的软件质量目标和优先级建立明确的软件质量目标和优先级 使用提高软件质量的技术和工具使用提高软件质量的技术和工具 选择便于维护的程序设计语言选择便于维护的程序设计语言 采取明确的、有效的质量保证审查措施采取明确的、有效的质量保证审查措施 完善程序的文档完善程序的文档 第8章 软件维护2023年1月24日第38页8.4 软件维护中存在的问题软件维护中存在的问题8.4.1 软件维护困难的表现软件维护困难的表现8.4.2 软件维护的副作用软件维护的副作用8.4.3 软件维护的代价软件维护的代价第8章 软件维护2023年1月24日第39页8.

27、4.1 软件维护困难的表现软件维护困难的表现软件维护的困难主要表现在以下几个方面。软件维护的困难主要表现在以下几个方面。(1)读懂别人的程序是很困难的,而文档的不足更增)读懂别人的程序是很困难的,而文档的不足更增加了这种难度;加了这种难度;(2)文档的不一致性是软件维护困难的又一个因素,)文档的不一致性是软件维护困难的又一个因素,解决方法就是要加强开发工作中文档的版本管理;解决方法就是要加强开发工作中文档的版本管理;(3)软件开发和软件维护在人员和时间上存在差异;)软件开发和软件维护在人员和时间上存在差异;(4)软件维护不是一件吸引人的工作。)软件维护不是一件吸引人的工作。第8章 软件维护20

28、23年1月24日第40页8.4.2 软件维护的副作用软件维护的副作用维护的副作用是指由于修改软件而导致新的错误的维护的副作用是指由于修改软件而导致新的错误的出现或者新增加一些不希望发生的情况。一般维出现或者新增加一些不希望发生的情况。一般维护产生的副作用主要有如下护产生的副作用主要有如下3 种。种。1修改代码的副作用修改代码的副作用2修改数据的副作用修改数据的副作用3修改文档的副作用修改文档的副作用第8章 软件维护l影响维护工作量的因素主要有以下六种:影响维护工作量的因素主要有以下六种:系统的大小系统的大小程序设计语言:语言的功能越强,生成程序的模块化和程序设计语言:语言的功能越强,生成程序的

29、模块化和结构化程度越高,所需的指令数就越少,程序的可读性结构化程度越高,所需的指令数就越少,程序的可读性越好。越好。系统年龄:系统使用时间越长,所进行的修改就越多,系统年龄:系统使用时间越长,所进行的修改就越多,而多次修改可能造成系统结构变得混乱。而多次修改可能造成系统结构变得混乱。8.4.3 软件维护的代价软件维护的代价第8章 软件维护 数据库技术的应用:可以简单而有效地管理和存储用户数据库技术的应用:可以简单而有效地管理和存储用户程序中的数据,减少生成用户报表应用软件的维护工作量。程序中的数据,减少生成用户报表应用软件的维护工作量。先进的软件开发技术先进的软件开发技术:可减少大量的维护工作

30、量。:可减少大量的维护工作量。其它一些因素,如应用的类型、数学模型、任务的难度、其它一些因素,如应用的类型、数学模型、任务的难度、开关与标记、开关与标记、IF嵌套深度、索引或下标数等,对维护工作嵌套深度、索引或下标数等,对维护工作量也有影响。量也有影响。8.4.3 软件维护的代价软件维护的代价第8章 软件维护有形的软件维护成本是花费了多少钱,而其他非直接的成本有形的软件维护成本是花费了多少钱,而其他非直接的成本有更大的影响。例如,无形的成本可以是:有更大的影响。例如,无形的成本可以是:(1)一些看起来是合理的修复或修改请求不能及时安排,)一些看起来是合理的修复或修改请求不能及时安排,使得客户不

31、满意;使得客户不满意;(2)变更的结果把一些潜在的错误引入正在维护的软件,)变更的结果把一些潜在的错误引入正在维护的软件,使得软件整体质量下降;使得软件整体质量下降;(3)当必须把软件人员抽调到维护工作中去时,就使得软)当必须把软件人员抽调到维护工作中去时,就使得软件开发工作受到干扰。件开发工作受到干扰。维护工作量可以分成生产性活动(如分析和评价、设计修改维护工作量可以分成生产性活动(如分析和评价、设计修改和实现)和和实现)和“轮转轮转”活动(如力图理解代码在做什么、试活动(如力图理解代码在做什么、试图判明数据结构、接口特性、性能界限等)图判明数据结构、接口特性、性能界限等)8.4.3 软件维

32、护的代价软件维护的代价第8章 软件维护Belady 和和Lehman 提出一个软件维护工作量的模型如下:提出一个软件维护工作量的模型如下:M=P+K*exp(C-D)其中,其中,M 表示维护中消耗的总工作量;表示维护中消耗的总工作量;P 表示上面描述的生产表示上面描述的生产性活动工作量;性活动工作量;K 是一个经验是一个经验常数;常数;C 表示由非结构化维护表示由非结构化维护(缺乏好的设计和文档)而引起的程序复杂性的度量;(缺乏好的设计和文档)而引起的程序复杂性的度量;D 表表示示对维护软件熟悉程度的度量。对维护软件熟悉程度的度量。由上式可以发现,由上式可以发现,C 越大,越大,D 越小,那么

33、维护工作量就成指越小,那么维护工作量就成指数数的增加。的增加。也就是说,如果使用了不好的软件开发方法(未按软件工程也就是说,如果使用了不好的软件开发方法(未按软件工程要求做),原来参加开发的人员或小组不能参加维护的话,要求做),原来参加开发的人员或小组不能参加维护的话,则维护工作量(及成本)将按指数级增加。则维护工作量(及成本)将按指数级增加。8.4.3 软件维护的代价软件维护的代价第8章 软件维护8.5 软件再工程软件再工程软件再工程旨在对现存的大量软件系统进行挖掘、整理以得到有软件再工程旨在对现存的大量软件系统进行挖掘、整理以得到有用的软件组件,或对已有软件组件进行维护以延长其生存期。用的

34、软件组件,或对已有软件组件进行维护以延长其生存期。软件再工程的基础是系统理解,包括对运行系统、源代码、设计、软件再工程的基础是系统理解,包括对运行系统、源代码、设计、分析和文档等的全面理解,但在很多情况下,由于各类文档的丢分析和文档等的全面理解,但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。失,只能对源代码进行理解,即程序理解。软件再工程和逆向工程是目前预防性维护采用的主要技术,是走软件再工程和逆向工程是目前预防性维护采用的主要技术,是走向自动维护的必经之路。向自动维护的必经之路。第8章 软件维护2023年1月24日第46页8.5 再工程和逆向工程再工程和逆向工程8.5

35、.1 再工程与逆向工程的概念再工程与逆向工程的概念8.5.2 为什么要实施软件再工程为什么要实施软件再工程8.5.3 软件再工程技术软件再工程技术第8章 软件维护2023年1月24日第47页8.5.1 再工程与逆向工程的概念再工程与逆向工程的概念 软件再工程软件再工程:是一类软件工程活动,它能够使我们:是一类软件工程活动,它能够使我们:增进对软件的理解增进对软件的理解;准备或直接提高软件的可维护性、复用性或演化性。准备或直接提高软件的可维护性、复用性或演化性。软件的逆向工程软件的逆向工程:是分析程序,力图在比源代码更高的抽象层次上建立程序表是分析程序,力图在比源代码更高的抽象层次上建立程序表示

36、的过程。示的过程。第8章 软件维护逆向工程过程逆向工程过程理解处理理解处理理解界面理解界面理解数据理解数据分析语句分析语句分析模式分析模式分析模块分析模块分析程序分析程序分析系统分析系统重构代码重构代码提取抽象提取抽象求精与简化求精与简化结构化源代码结构化源代码初始规格说明初始规格说明最终的规格说最终的规格说明明非结构化源代非结构化源代码码逆向工程过程逆向工程过程第8章 软件维护8.5.2 为什么要实施软件再工程为什么要实施软件再工程实施软件再工程所带来的好处实施软件再工程所带来的好处 :再工程可帮助软件机构降低软件演化的风险再工程可帮助软件机构降低软件演化的风险 再工程可帮助软件机构补偿软件

37、的投资再工程可帮助软件机构补偿软件的投资 再工程可使得软件易于进一步变更再工程可使得软件易于进一步变更 再工程有着广阔的市场再工程有着广阔的市场 第8章 软件维护 再工程相关的技术再工程相关的技术再工程课题再工程课题相关技术相关技术改进软件改进软件重构、文档重写、加注释更新文档、复用工程、重重构、文档重写、加注释更新文档、复用工程、重新划分模块、数据再工程、业务过程再工程、可维新划分模块、数据再工程、业务过程再工程、可维护性分析、业务分析、经济分析护性分析、业务分析、经济分析理解软件理解软件浏览、分析并度量逆向工程、设计恢复浏览、分析并度量逆向工程、设计恢复获取、保存及扩充软件的获取、保存及扩

38、充软件的知识知识分解、逆向工程设计恢复、对象恢复、程序理解、分解、逆向工程设计恢复、对象恢复、程序理解、知识库及变换知识库及变换8.5.3 软件再工程技术软件再工程技术第8章 软件维护2023年1月24日第51页本章小结本章小结软件系统开发完成,经测试达到可靠性指标后,就交给用户,软件系统开发完成,经测试达到可靠性指标后,就交给用户,进入软件生存周期的中时间最长的一个阶段,也是所花费精进入软件生存周期的中时间最长的一个阶段,也是所花费精力和费用最多的软件维护阶段。有力和费用最多的软件维护阶段。有4 种类型,即改正性、适种类型,即改正性、适应性、完善性和预防性维护。软件维护过程需要建立相应的应性

39、、完善性和预防性维护。软件维护过程需要建立相应的维护组织,按照一定的维护流程进行结构化维护工作。维护组织,按照一定的维护流程进行结构化维护工作。软件可维护性是衡量软件质量的重要指标,主要通过可理解性软件可维护性是衡量软件质量的重要指标,主要通过可理解性、可测试性、可修改性等、可测试性、可修改性等7 个特性来度量,提高软件可维护个特性来度量,提高软件可维护性需要从性需要从5 个方面入手完善维护工作。软件维护工作本身的个方面入手完善维护工作。软件维护工作本身的特性决定了软件维护工作的困难,同时软件维护也可能带来特性决定了软件维护工作的困难,同时软件维护也可能带来修改代码、数据和文档等方面的副作用,

40、因此,维护人员更修改代码、数据和文档等方面的副作用,因此,维护人员更应遵守软件维护的流程。应遵守软件维护的流程。第8章 软件维护2023年1月24日第52页本章小结(续)本章小结(续)软件维护阶段还有一个重要工作是进行软件再工程,实施软件软件维护阶段还有一个重要工作是进行软件再工程,实施软件再工程首先需要理解系统,此外还会涉及软件再工程的一些再工程首先需要理解系统,此外还会涉及软件再工程的一些相关技术。相关技术。第8章 软件维护习题习题1.1.为什么软件需要维护?维护有哪几种类型?简述它们的维护为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。过程。2.2.什么是软件可维护性什么是软件

41、可维护性?可维护性度量的特性是什么可维护性度量的特性是什么?提高可维提高可维护性的方法有哪些护性的方法有哪些?3.3.改正性维护与改正性维护与“排错排错”是否是一回事?为什么?是否是一回事?为什么?4.4.软件维护困难的原因是什么软件维护困难的原因是什么?提高可维护性的方法有哪些提高可维护性的方法有哪些?5.5.什么是程序修改的副作用?程序修改的副作用有哪几种?试什么是程序修改的副作用?程序修改的副作用有哪几种?试举例说明?举例说明?第8章 软件维护习题习题6.6.在软件计划中是否应该把维护费用计划在内?实际情况在软件计划中是否应该把维护费用计划在内?实际情况如何?如何?7.7.什么是软件再工程?软件再工程的意义是什么?软件再什么是软件再工程?软件再工程的意义是什么?软件再工程的相关技术有哪些?工程的相关技术有哪些?

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程课件ch08软件维护.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|