《第10章 软件维护.ppt》由会员分享,可在线阅读,更多相关《第10章 软件维护.ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 第10章 软件维护2目录页软件维护第十章本章本章要点要点n 理解软件维护的类型和特点;n 掌握软件
2、维护的一般过程;n 理解软件的可维护性及提高可维护性的方法;n 理解软件维护的副作用;n 了解软件的再生工程。3目录页10.1 软件维护的类型与策略第10章软件维护是指已完成开发工作,并交付用户使用以后,对软件产品所进行的一些软件工软件维护是指已完成开发工作,并交付用户使用以后,对软件产品所进行的一些软件工程活动。软件维护是软件生存周期中时间最长的阶段,也是花费精力和费用最多的阶段。程活动。软件维护是软件生存周期中时间最长的阶段,也是花费精力和费用最多的阶段。实践表明,在开发阶段结束后,在软件运行过程中仍然有必要对软件进行变动,主要原实践表明,在开发阶段结束后,在软件运行过程中仍然有必要对软件
3、进行变动,主要原因如下:因如下:(1)改正在运行中新发现的错误和设计上的缺陷,这些错误和缺陷在开发后期的测试)改正在运行中新发现的错误和设计上的缺陷,这些错误和缺陷在开发后期的测试阶段未被发现。阶段未被发现。(2)改进设计,以便增强软件的功能,提高软件的性能。)改进设计,以便增强软件的功能,提高软件的性能。(3)要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备等的工作环境,)要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备等的工作环境,或者要求适应已变动的数据或文件等。或者要求适应已变动的数据或文件等。(4)为使已运行的软件与其他相关的软件有良好的接口,以利于协同工作。)为
4、使已运行的软件与其他相关的软件有良好的接口,以利于协同工作。(5)为扩充软件的应用范围。)为扩充软件的应用范围。10.1.1 软件维护工作的必要性软件维护工作的必要性4目录页10.1 软件维护的类型与策略第10章1改正性维护改正性维护改正性维护是改正在系统开发阶段已发生的而系统测试阶段尚未发现的错误。改正性维护是改正在系统开发阶段已发生的而系统测试阶段尚未发现的错误。2适应性维护适应性维护为适应软件运行环境的变化而进行的维护称适应性维护。为适应软件运行环境的变化而进行的维护称适应性维护。3完善性维护完善性维护为扩充软件的功能或用户提出的新需为扩充软件的功能或用户提出的新需求而进行的维护称完善性
5、维护。求而进行的维护称完善性维护。4预防性维护预防性维护为改进软件效率、可靠性、可维修性为改进软件效率、可靠性、可维修性而进行的维护称预防性维护。而进行的维护称预防性维护。10.1.2 软件维护的类型软件维护的类型5目录页10.1 软件维护的类型与策略第10章1改正性维护改正性维护使用新技术可产生更可靠的代码,从而大大提高软件的可靠性,并减少改正性维护的需使用新技术可产生更可靠的代码,从而大大提高软件的可靠性,并减少改正性维护的需要。这些新技术包括:要。这些新技术包括:数据库管理系统;数据库管理系统;软件开发环境;软件开发环境;程序自动生成系统;程序自动生成系统;高级(第四代)语言。高级(第四
6、代)语言。10.1.3 软件维护的策略软件维护的策略6目录页10.1 软件维护的类型与策略第10章2适应性维护适应性维护这一类维护不可避免,但可以控制。这一类维护不可避免,但可以控制。(1)在配置管理时,把硬件、操作系统和其他相关环境因素的可能变化考虑在内,可)在配置管理时,把硬件、操作系统和其他相关环境因素的可能变化考虑在内,可以减少某些适应性维护的工作量。以减少某些适应性维护的工作量。(2)把与硬件、操作系统以及其他外围设备有关的程序归结到特定的程序模块中,可)把与硬件、操作系统以及其他外围设备有关的程序归结到特定的程序模块中,可把因环境变化而必须修改的程序局部于某些程序模块中。把因环境变
7、化而必须修改的程序局部于某些程序模块中。(3)使用内部程序列表、外部文件以及处理的例行程序包,为维护时修改程序提供方)使用内部程序列表、外部文件以及处理的例行程序包,为维护时修改程序提供方便。便。(4)使用面向对象技术,增强软件系统的稳定性,并使之易于修改和移植。)使用面向对象技术,增强软件系统的稳定性,并使之易于修改和移植。10.1.3 软件维护的策略软件维护的策略7目录页10.1 软件维护的类型与策略第10章3完善性维护完善性维护利用前两类维护中列举的方法,也可以减少这一类维护。特别是使用数据库管理系统、利用前两类维护中列举的方法,也可以减少这一类维护。特别是使用数据库管理系统、程序生成器
8、、应用软件包等可以减少维护工作量。程序生成器、应用软件包等可以减少维护工作量。此外,建立软件系统的原型并在开发实际系统之前提供给用户,用户通过运行原型,进此外,建立软件系统的原型并在开发实际系统之前提供给用户,用户通过运行原型,进一步完善他们的功能要求,可以减少以后完善性维护的需要。一步完善他们的功能要求,可以减少以后完善性维护的需要。10.1.3 软件维护的策略软件维护的策略8目录页10.2 软件维护的特点第10章1非结构化维护和结构化维护非结构化维护和结构化维护软件的开发过程对软件的维护有较大影响。如果不采用软件工程方法开发软件,则软件软件的开发过程对软件的维护有较大影响。如果不采用软件工
9、程方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是非结构化维护。如果采用软件工程方法开发软只有程序而无文档,维护工作非常困难,这是非结构化维护。如果采用软件工程方法开发软件,则各阶段都有相应的文档,容易进行维护工作,这是结构化维护。件,则各阶段都有相应的文档,容易进行维护工作,这是结构化维护。(1)非结构化维护)非结构化维护因为只有源程序,没有文档或文档很少,维护活动只能从阅读、理解和分析源程序代码因为只有源程序,没有文档或文档很少,维护活动只能从阅读、理解和分析源程序代码开始,而这是相当困难的。开始,而这是相当困难的。(2)结构化维护)结构化维护运用软件工程思想开发的软件具有各个
10、阶段的文档,这对于理解、掌握软件功能、性能、运用软件工程思想开发的软件具有各个阶段的文档,这对于理解、掌握软件功能、性能、软件结构、数据结构、系统接口和设计约束有很大作用。软件结构、数据结构、系统接口和设计约束有很大作用。9目录页10.2 软件维护的特点第10章2软件维护的困难性软件维护的困难性软件维护的困难性主要是由于软件需求分析和开发方法的缺陷造成的。在软件生存周期软件维护的困难性主要是由于软件需求分析和开发方法的缺陷造成的。在软件生存周期中的前两个时期没有采用严格而科学的管理和规划,必然会引起软件运行时的维护困难。这中的前两个时期没有采用严格而科学的管理和规划,必然会引起软件运行时的维护
11、困难。这种困难表现在如下几方面:种困难表现在如下几方面:(1)难以读懂他人的程序。)难以读懂他人的程序。(2)无文档或文档不一致。无文档或文档不一致。(3)软件开发和软件维护在人员和时间上的差异)软件开发和软件维护在人员和时间上的差异(4)维护工作毫无吸引力,缺乏成就感。)维护工作毫无吸引力,缺乏成就感。(5)难以追踪软件的建立过程。)难以追踪软件的建立过程。(6)通过多种版本的发行,难以追踪软件版本的演化过程。)通过多种版本的发行,难以追踪软件版本的演化过程。(7)软件在设计时未考虑修改需要。)软件在设计时未考虑修改需要。10目录页10.3 软件维护的过程与组织第10章1维护机构维护机构维护
12、机构通常以维护小组形式出维护机构通常以维护小组形式出现。维护小组分为临时维护小组和长期现。维护小组分为临时维护小组和长期维护小组。临时维护小组是非正式机构,维护小组。临时维护小组是非正式机构,它执行一些特殊的或临时的维护任务;它执行一些特殊的或临时的维护任务;对于长期运行的复杂系统一般需要一个对于长期运行的复杂系统一般需要一个长期稳定的维护小组。但除了较大的软长期稳定的维护小组。但除了较大的软件开发公司外,通常在软件维护方面,件开发公司外,通常在软件维护方面,并不需要建立一个正式的组织机构。维并不需要建立一个正式的组织机构。维护工作往往是在没有计划的情况下进行护工作往往是在没有计划的情况下进行
13、的。的。11目录页10.3 软件维护的过程与组织第10章维护机构中的人员与职责如下:维护机构中的人员与职责如下:(1)维护负责人。)维护负责人。(2)维护管理员。)维护管理员。(3)系统监督员。)系统监督员。(4)配置管理员。)配置管理员。(5)维护人员。)维护人员。12目录页10.3 软件维护的过程与组织第10章2制定维护文档制定维护文档所有软件维护申请都应按规定的方式提出。软件维护组织通常提供维护申请报告所有软件维护申请都应按规定的方式提出。软件维护组织通常提供维护申请报告(Maintenance Request Report, MRR)或称软件问题报告,由申请维护的用户填写。如果发)或称
14、软件问题报告,由申请维护的用户填写。如果发现了软件的错误,用户必须完整地说明产生错误的情况,包括输入数据、错误清单以及其他现了软件的错误,用户必须完整地说明产生错误的情况,包括输入数据、错误清单以及其他有关材料。如果维护申请属于适应性维护或完善性维护,用户必须提出一份简要的维护规格有关材料。如果维护申请属于适应性维护或完善性维护,用户必须提出一份简要的维护规格说明书,列出所有希望的修改。维护申请报告将由维护管理员和系统监督员来研究处理。说明书,列出所有希望的修改。维护申请报告将由维护管理员和系统监督员来研究处理。13目录页10.3 软件维护的过程与组织第10章3.维护流程维护流程14目录页10
15、.3 软件维护的过程与组织第10章4维护记录维护记录在维护阶段需要记录一些与维护有关的信息,这些信息可作为估计维护有效程度,确在维护阶段需要记录一些与维护有关的信息,这些信息可作为估计维护有效程度,确定软件产品的质量,估算维护费用等工作的原始依据。定软件产品的质量,估算维护费用等工作的原始依据。5维护评价维护评价根据维护文档记录,可以对维护工作做一些度量。根据维护文档记录,可以对维护工作做一些度量。15目录页10.4 软件的可维护性 第10章1可理解性可理解性指维护人员通过阅读程序代码和相关文档,了解程序的结构、功能及其如何运行的难指维护人员通过阅读程序代码和相关文档,了解程序的结构、功能及其
16、如何运行的难易程度。易程度。2可测试性可测试性表明预建立的测试准则对软件可进行测试的程度。表明预建立的测试准则对软件可进行测试的程度。3可修改性可修改性指软件容易修改,而不至于产生副作用的程度。指软件容易修改,而不至于产生副作用的程度。4可移植性可移植性指一个软件系统从一个计算机环境移植到另一个计算机环境的容易程度。指一个软件系统从一个计算机环境移植到另一个计算机环境的容易程度。10.4.1 决定软件可维护性的因素决定软件可维护性的因素 16目录页10.4 软件的可维护性 第10章1明确软件的质量目标和优先级明确软件的质量目标和优先级如果要程序满足可维护性的七种特性的全部要求,那是不现实的。因
17、为,有些特性是如果要程序满足可维护性的七种特性的全部要求,那是不现实的。因为,有些特性是相互促进的,而有些特性则是相互矛盾的。相互促进的,而有些特性则是相互矛盾的。每一种质量特性的相对重要性不但因维护类型而不同,而且因程序的用途和计算环境每一种质量特性的相对重要性不但因维护类型而不同,而且因程序的用途和计算环境而不同。因此,在提出质量目标的同时还必须规定它们的优先级,这样有助于提高软件的质而不同。因此,在提出质量目标的同时还必须规定它们的优先级,这样有助于提高软件的质量,减少软件生存周期的费用。量,减少软件生存周期的费用。2使用先进的软件开发技术和工具使用先进的软件开发技术和工具为了改善软件可
18、维护性,应及时学习并尽量使用能提高软件质量的技术和工具。例如,为了改善软件可维护性,应及时学习并尽量使用能提高软件质量的技术和工具。例如,模块化技术、结构化程序设计技术、面向对象等先进的软件开发技术。模块化技术、结构化程序设计技术、面向对象等先进的软件开发技术。10.4.2 提高软件可维护性的方法提高软件可维护性的方法 17目录页10.4 软件的可维护性 第10章3质量保证审查质量保证审查要提高软件可维护性,必须要进行质量保证审查。质量保证审查可分为四种类型。要提高软件可维护性,必须要进行质量保证审查。质量保证审查可分为四种类型。(1)在检查点检查。)在检查点检查。(2)验收检查。)验收检查。
19、(3)周期性维护检查。)周期性维护检查。(4)对软件包检查。)对软件包检查。10.4.2 提高软件可维护性的方法提高软件可维护性的方法 18目录页10.4 软件的可维护性 第10章4选择可维护的程序设计语言选择可维护的程序设计语言编码所使用的程序设计语言对软件的可维护性影响很大。低级语言很难理解,因此也编码所使用的程序设计语言对软件的可维护性影响很大。低级语言很难理解,因此也很难维护。高级语言比低级语言容易理解,有更好的可维护性。某些高级语言可能比另一些很难维护。高级语言比低级语言容易理解,有更好的可维护性。某些高级语言可能比另一些更容易理解。尤其是第四代语言更容易理解,更容易编程,因此更容易
20、维护。更容易理解。尤其是第四代语言更容易理解,更容易编程,因此更容易维护。5改进程序的文档改进程序的文档程序文档对提高程序的可理解性有着重要作用。规范、完整、一致的文档是建立可维程序文档对提高程序的可理解性有着重要作用。规范、完整、一致的文档是建立可维护性的基本条件。在软件生存周期的每个阶段的技术复审和管理复审中,都应对文档进行检护性的基本条件。在软件生存周期的每个阶段的技术复审和管理复审中,都应对文档进行检查,对可维护性进行复审。查,对可维护性进行复审。10.4.2 提高软件可维护性的方法提高软件可维护性的方法 19目录页10.5 软件维护的副作用 第10章1代码副作用代码副作用最危险的副作
21、用是修改软件源程序而产生的。在修改源代码时,最容易引入下列错误:最危险的副作用是修改软件源程序而产生的。在修改源代码时,最容易引入下列错误:(1)删除或修改子程序、语句标号()删除或修改子程序、语句标号(LABEL)和标识符。)和标识符。(2)改变程序的执行效率。)改变程序的执行效率。(3)改变程序代码的时序关系、改变占用存储的大小。)改变程序代码的时序关系、改变占用存储的大小。(4)修改逻辑运算符。)修改逻辑运算符。(5)修改文件的打开或关闭操作。)修改文件的打开或关闭操作。(6)由设计变动引起的代码修改。)由设计变动引起的代码修改。(7)为边界条件的逻辑测试而做出的修改。)为边界条件的逻辑
22、测试而做出的修改。20目录页10.5 软件维护的副作用 第10章2数据副作用数据副作用在修改数据结构时,有可能造成软件设计与数据结构的不匹配,因而导致软件错误。在修改数据结构时,有可能造成软件设计与数据结构的不匹配,因而导致软件错误。数据副作用是指修改软件信息结构导致的不良后果,主要有以下几种:数据副作用是指修改软件信息结构导致的不良后果,主要有以下几种:(1)局部变量或全局变量的重新定义,记录或文件格式的重新定义。)局部变量或全局变量的重新定义,记录或文件格式的重新定义。(2)增加或减少一个数组或其他复杂数据结构的大小。)增加或减少一个数组或其他复杂数据结构的大小。(3)修改全局或公共数据。
23、)修改全局或公共数据。(4)重新初始化控制标志或指针。)重新初始化控制标志或指针。(5)重新排列输入)重新排列输入/输出或函数(子程序)的参数。输出或函数(子程序)的参数。21目录页10.5 软件维护的副作用 第10章3文档副作用文档副作用在软件维护过程中应统一考虑整个软件配置,必须对相关技术文档进行相应修改,不在软件维护过程中应统一考虑整个软件配置,必须对相关技术文档进行相应修改,不仅仅是源代码。否则会导致文档与程序不匹配,使文档不能反映软件当前的状态,这比没有仅仅是源代码。否则会导致文档与程序不匹配,使文档不能反映软件当前的状态,这比没有文档更麻烦。文档更麻烦。一次维护完成后,在再次交付软
24、件之前应仔细复审整个软件配置,以减少文档副作用。一次维护完成后,在再次交付软件之前应仔细复审整个软件配置,以减少文档副作用。事实上,某些维护申请的提出只是由于用户文档不够清楚。这时,只需对文档维护即可,并事实上,某些维护申请的提出只是由于用户文档不够清楚。这时,只需对文档维护即可,并不需要修改软件设计或源程序。不需要修改软件设计或源程序。为了控制因修改而引起的副作用,要做到:按模块把修改分组;自顶向下的安排被修为了控制因修改而引起的副作用,要做到:按模块把修改分组;自顶向下的安排被修改模块的顺序;每次只修改一个模块;对每个修改了的模块,在安排修改下一个模块前,要改模块的顺序;每次只修改一个模块
25、;对每个修改了的模块,在安排修改下一个模块前,要确定这个修改的副作用,可使用交叉引用表、存储映像表、执行流程跟踪等。确定这个修改的副作用,可使用交叉引用表、存储映像表、执行流程跟踪等。22目录页10.6 软件逆向工程与再生工程第10章逆向工程与再生工程是目前预防性维护采用的主要技术。逆向工程与再生工程是目前预防性维护采用的主要技术。逆向工程术语源于硬件制造业,相互竞争的公司为了了解对方设计和制造工艺的机密,逆向工程术语源于硬件制造业,相互竞争的公司为了了解对方设计和制造工艺的机密,在得不到设计和制造说明书的情况下,通过拆卸实物获取信息。软件的逆向工程也基本相似,在得不到设计和制造说明书的情况下
26、,通过拆卸实物获取信息。软件的逆向工程也基本相似,不过通常不过通常“解剖解剖”的不仅是竞争对手的程序,而且还包括本公司多年前的产品,此时得不到的不仅是竞争对手的程序,而且还包括本公司多年前的产品,此时得不到设计设计“机密机密”的主要障碍是缺乏文档。因此,所谓软件的逆向工程就是对已有的程序,寻求的主要障碍是缺乏文档。因此,所谓软件的逆向工程就是对已有的程序,寻求比源代码更高级的抽象表达形式。一般认为,凡是在软件生存周期内,将软件某种形式的描比源代码更高级的抽象表达形式。一般认为,凡是在软件生存周期内,将软件某种形式的描述转换为更抽象形式的活动都可称为逆向工程。与之相关的概念是重构、设计恢复和再生
27、工述转换为更抽象形式的活动都可称为逆向工程。与之相关的概念是重构、设计恢复和再生工程。程。23目录页10.6 软件逆向工程与再生工程第10章重构,指在同一抽象级别上转换系统描述形式。重构,指在同一抽象级别上转换系统描述形式。设计恢复,指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计设计恢复,指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息。的信息。再生工程,也称修复和改造工程,它是在逆向工程所获信息的基础上修改或再生已有再生工程,也称修复和改造工程,它是在逆向工程所获信息的基础上修改或再生已有的系统,产生系统的一个新版本。的系统,产生系统的一个新版本。E-mail:网址网址:http:/地址:大连市软件园路地址:大连市软件园路80号号大连理工大学出版社谢谢观看