【文档说明】软件工程导论软件维护-课件.ppt,共(75)页,483.012 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44994.html
以下为本文档部分文字说明:
软件工程导论(8)——软件维护南京理工大学汪惠芬2004年10月30日软件工程导论2022/11/242第八章软件维护8.1软件维护的概念8.2软件维护活动8.3软件修改的步骤8.4软件可维护性8.5提高可维护性的方法8.6
逆向工程和再工程8.7本章小结基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2438.1软件维护的概念8.1.1软件维护的定义8.1.2影响维护工作量的因素8.1.3软件维护的策略基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/1
1/2448.1.1软件维护的定义改正性维护(correctivemaintenance)在软件交付后,由于开发时测试的不彻底、不完全,必然会有一部分隐藏的错误被带到运行阶段。这些隐藏下来的错误在某些特定的使用环境下会暴露出来。为
了识别和纠正错误、改正软件性能上的缺陷、排除实施中的误使用,应进行的诊断和改正错误的过程,是改正性维护。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2458.1.1软件维护的定义适应性维护(adaptivemaintenance)
随着计算机的飞速发展,外部环境(新的硬件、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程叫作适应性维护。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/1
1/2468.1.1软件维护的定义完善性维护(perfectivemaintenance)在软件使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。在这种情况下进行的维护活动
叫作完善性维护。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2478.1.1软件维护的定义预防性维护(preventivemaintenance)为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础,
需要进行预防性维护。预防性维护定义为:“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2488.1.1软件维护的
定义维护的工作量分配在整个软件维护阶段花费的全部工作量中,预防性维护只占很小的比例,而完善性维护占了几乎一半的工作量。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施适应性维护25%改正性维护20%完善性维护50%其它维护5%软件工程导论2022/11/
2498.1.1软件维护的定义维护的工作量分配软件维护活动花费的工作占整个生存期工作量的70%以上。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施维护70.8%软件工程导论2022/11/24108.1.2影响维
护工作量的因素在软件的维护过程中,需要花费大量的工作量,从而直接影响了软件维护的成本。因此,应当考虑有哪些因素影响软件维护的工作量,相应应该采取什么维护策略,才能有效地维护软件并控制维护的成本。基本概念软件维护程序修改可维护性本
章小结逆向工程改善措施软件工程导论2022/11/24118.1.2影响维护工作量的因素在软件维护中,影响维护工作量的程序特性有以下6种:系统大小程序设计语言系统年龄数据库技术的应用先进的软件开发技术其它基本概念软件维护程序修改可维护性本章小结逆向工程
改善措施软件工程导论2022/11/24128.1.1软件维护的策略1)改正性维护策略利用应用软件包,可开发出比由用户完全自己开发的系统可靠性更高的软件;使用结构化技术,开发的软件易于理解和测试;防错性程序设计;通过周期性维护
审查,在形成维护问题之前就可确定质量缺陷。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24138.1.1软件维护的策略2)适应性维护策略在配置管理时,把硬件、操作系统和其它
相关环境因素的可能变化考虑在内,可以减少某些适应性维护的工作量。把与硬件、操作系统,以及其它外围设备有关的程序归到特定的程序模块中。可把因环境变化而必须修改的程序局部于某些程序模块之中。使用内部程序列表、外部文件,以及处理的例行处理
包,可为维护时修改程序提供方便。使用面向对象技术,增强软件系统的稳定性,易于修改和移植。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24148.1.1软件维护的策略3)完善性维护策略利用前两类维护中列举的方法。利用
数据库管理系统、程序生成器、应用软件包,可减少系统或程序员的维护工作量。建立软件系统的原型,把它在实际系统开发之前提供给用户。用户通过研究原型,进一步完善它们的功能要求,可以减少以后完善性维护的需要。基本概念软件维护程序修改可维护性本
章小结逆向工程改善措施软件工程导论2022/11/24158.2软件维护活动8.2.1软件维护申请报告8.2.2软件维护工作流程8.2.3维护档案记录8.2.4维护评价基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件
工程导论2022/11/24168.2.1软件维护申请报告所有软件维护申请应按规定的方式提出。软件维护组织通常提供维护申请报告MRP(maintenancerequestform),或称软件问题报告,由申请维护的用户填写。如果遇到一个错误,用户必须完整地说明产生错误的情况,包括输入数
据、错误清单以及其他有关材料。如果申请的是适应性维护或完善性维护,用户必须提出一份修改说明书,列出所有希望的修改。维护申请报告将由维护管理员和系统监督员来研究处理。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24178.2.1软件维护申请报告维护申请
报告是由软件组织外部提交的文档,它是计划维护工作的基础。软件组织内部应相应地作出软件修改报告SCR(softwarechangereport),并指明:所需修改变动的性质;申请修改的优先级;为满足某个维护申请报告,所
需的工作量;预计修改后的状况。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24188.2.2软件维护工作流程软件维护工作流程确认维护要求;确认维护类型;按不同类型进行维护处理,包括修改软件需求说明、修改软件设计、设计评审、
对源程序作必要的修改、单元测试、集成测试(回归测试)、确认测试、软件配置评审等;维护任务完成后进行情况评审。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24198.2.2软件维护工作流程基本
概念软件维护程序修改可维护性本章小结逆向工程改善措施用户维护人员确定更改要求评价错误严重程度判明维护类型评价优先次序维护实施开始问题分析复审开始问题分析安排改正性维护把安排好的开发工作量列入计划把错误改正列入计划维护要求改正性不严重严重(救火)人员安排完善性适
应性低高人员安排修改过的软件通过并交付使用的软件理解程序分析原设计安排计划修改程序测试程序++++软件工程导论2022/11/24208.2.2软件维护工作流程情况评审内容:在目前情况下,设计、编码、测试中
的哪一方面可以改进?哪些维护资源应该有,但没有?工作中主要或次要的障碍是什么?从维护申请的类型来看是否应当有预防性维护?基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/
24218.2.3维护档案记录为了估计软件维护的有效程度,确定软件产品的质量,同时确定维护的实际开销,需要在维护过程中做好维护档案记录。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24228.2.3维护档案记录维护档案记录内
容:基本概念软件维护程序修改可维护性本章小结逆向工程改善措施•程序名称•源程序语句条数•机器代码指令调试•所用的程序设计语言•程序安装的日期•程序安装后的运行次数•与程序安装后运行次数有关的处理故障次数•程序改变的层次及名称•修改程序所增加的源程序语句条数•修改程序所减少的源程序语句条数•
每次修改所付出的“人时”数•修改程序的日期•软件维护人员的姓名•维护申请报告的名称•维护类型•维护开始时间和维护结束时间•花费在维护上的累积“人时”数•维护工作的净收益软件工程导论2022/11/24238.2.4维护评价维护
“性能”参考度量值:每次程序运行时的平均出错次数;花费在每类维护上的总“人时”数;每个程序、每种语言、每种维护类型的程序平均修改次数;因维护增加或减少每个源程序语句所花费的平均“人时”数;用于
每种语言的平均“人时”数;维护申请报告的平均处理时间;各类维护申请的百分比。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24248.3软件修改的步骤8.3.1分析和理解程序8.3.2修改程序8.3.3重新验证程序基本概念软件维护程序修改可维
护性本章小结逆向工程改善措施软件工程导论2022/11/24258.3.1分析和理解程序经过分析,全面、准确、迅速地理解程序是决定维护成败和质量好坏的关键。在这方面,软件的可理解性和文档的质量为常重要。基本概念软件维护程序修改可维护性本章小
结逆向工程改善措施软件工程导论2022/11/24268.3.1分析和理解程序必须做的工作:(1)研究程序的使用环境及有关资料,尽可能得到更多的背景资料;(2)理解程序的功能和目标;(3)掌握程序的结构信息,即从程序中细分出若干结构成分。如程序系统结构、控制
结构、数据结构和输入/输出结构等;基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24278.3.1分析和理解程序必须做的工作:(4)了解数据流信息,即所涉及到的数据来源何处,在哪里被使用;(5)了解控制流信息,即执行每条
路径的结果;(6)如果设计存在,则可利用它们来帮助画出结构图和高层流程图;(7)理解程序的操作(使用)要求。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24288.3.1分析和理解程序分析方法:1)分析程序结构图搜集并阅读所有
存储该程序的文件,即下它们所包含的过程名,建立一个包括这些过程名和文件名的文件;分析各个过程的源代码;分析各个过程的接口,估计更改的复杂性。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24298.3.1分析和理解
程序分析方法:2)数据跟踪建立各层次的程序级上的接口图,展示各模块或过程的调用方式和接口参数;利用数据流分析方法,对过程内部的一些变量进行跟踪;维护人员通过这种数据流跟踪,可获得有关数据在过程间如何传递,在过程内如何处理等信息。在跟踪的过程
中可在源程序中间插入自己的注释。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24308.3.1分析和理解程序分析方法:3)控制跟踪:控制流跟踪同样可在结构图基础上或源程序基础上进行。可采用符号执行或实际动态跟踪的方法,了解数据如何从一个输入源到
达输出点的。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24318.3.1分析和理解程序分析方法:4)在分析过程中,充分阅读和使用源程序清单和文档,分析现有文档的合理性
。5)充分使用由编译程序或汇编程序提供的交叉引用表、符号表以及其它有用的信息。6)如有可能,积极参加开发工作。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24328.3.2修改程序1)设计程序的修改计划修改计划内容:规格说明信息维护资源人员提供基
本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24338.3.2修改程序1)设计程序的修改计划修改计划设计工作:(1)研究程序的各个模块、模块的接口及数据库,从全局的观点提出修改计划。基
本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24348.3.2修改程序1)设计程序的修改计划修改计划设计工作:(2)依次把要修改的以及那些受修改影响的模块和数据结构分离出来,包括:基本概念软件维护程序修改可维护性本章小结逆向工程
改善措施•识别收修改影响的数据;•识别使用这些数据的程序模块;•对于上面程序模块,按照是产生数据、修改数据,还是删除数据进行分类;•识别这些数据元素的外部控制信息;•识别编辑和检查这些数据元素的地方;•隔离要修改的部分。软件工程导论2022/11/24358.3.2修改程序1)设计程序
的修改计划修改计划设计工作:(3)详细地分析要修改的以及那些受变更影响的模块和数据结构的内部细节,设计修改计划,标明新逻辑及要改动的现有逻辑。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24368.3.2修改程序1)设计程序的修改计划修改计划
设计工作:(4)向用户提供回避措施:在问题原因还未找到时,先就问题的现象提供回避的操作方法,可能的情况有:意外停机,系统完全不能工作——作为临时处理,消除特定的数据,插入临时代码(打补丁),以人工方式运行系统安装的期限到期——系统有时要延迟变更发现错误运行系统——人工查找错误并修
改之如果弄清了问题的原因,可通过临时修改或改变运行控制以回避在系统运行时产生的问题。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24378.3.2修改程序2)修改代码,以适应变化要求:(1)正确、有效地编写修改代码;(2)要谨慎地修改程序,尽量保持程序的
风格及格式,要在程序清单上注明改动的指令;(3)不要匆忙删除程序语句,除非完全肯定它是无用的;基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24388.3.2修改程序2)修改代码,以适应变化要求:(4)不要试图公用程序中已有的临时变量或工作
区,为了避免冲突或混淆用途,应自行设置自己的变量;(5)插入错误检测语句;(6)保持详细的维护活动和维护结果记录;(7)如果程序结构混乱,修改受到干扰,可抛弃程序重新编写。基本概念软件维护程序修改可维护性本章小结逆向工
程改善措施软件工程导论2022/11/24398.3.2修改程序3)修改程序的副作用(1)修改代码的副作用在使用程序设计语言修改源代码时,都可能引入错误。例如:基本概念软件维护程序修改可维护性本章小结逆向工程改
善措施•删除或修改一个子程序•删除或修改一个标号•删除或修改一个标识符•改变程序代码的时序关系•改变占用存储的大小•改变逻辑运算符•修改文件的打开或关闭•改进程序的执行效率•把设计上的改变翻译成代码的改变•为边界条
件的逻辑测试作出改变软件工程导论2022/11/24408.3.2修改程序3)修改程序的副作用(2)修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据的副作用是修改软件信息结构导致的结果。例如:基本概念软件维护程序
修改可维护性本章小结逆向工程改善措施•重新定义局部的或全局的常量•重新定义记录或文件的格式•增大或减小一个数组或高层数据结构的大小•修改全局或公共数据•重新初始化控制标痣或指针•重新排列输入/输出或子程序的参数软件工程导论2022/11/24418.
3.2修改程序3)修改程序的副作用(3)文档的副作用对数据流、软件结构、模块逻辑或任何其他有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配、缺省条件改变、新错误信息不正确等
错误。使得软件文档不能反映软件的当前状态。对于用户来说,软件事实上就是文档。如果对可执行软件的修改不反映在文档里,会产生文档的副作用。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/
11/24428.3.2修改程序3)修改程序的副作用控制修改副作用的措施:(1)按模块把修改分组;(2)自顶向下地安排被修改模块的顺序;(3)每次修改一个模块;(4)对于每个修改了的模块,在安排修改下一个模块之前,要确定这个修改的副作用。可以使用交叉引用表、存储映象表、执行流程跟踪
等。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24438.3.3重新验证程序1)静态确认修改软件,伴随着引起新的错误的危险。为了能够作出正确的判断,验证修改后的程序至少需要两个人参加。要检查:修改是否涉及到规格说明?修改结果是否符合规格说明?有没有歪
曲规格说明?程序的修改是否足以修正软件中的问题?源程序代码有无逻辑错误?修改时有无修补失误?修改部分对其它部分有无不良影响?基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24448.3.3重新验证程序2)计算机确认在充分进行了静态确
认的基础上,要用计算机对修改程序进行确认测试。几个注意点:确认测试顺序:对修改部分测试隔离修改部分,测试程序的未修改部分把两部分集成起来进行测试。准备标准的测试用例。充分利用软件工具帮助重新验证过程。
在重新确认过程中,需邀请用户参加。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24458.3.3重新验证程序3)维护后的验收在交付新软件之前,维护主管部门要检验:全部文档是否完备,并已更新;所有测试用例和测试结果
已经正确记载;记录软件配置所有副本的工作已经完成;维护工序和责任已经确定。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24468.3.3重新验证程序从维护角度来看所需测试种类基本概念软件维护程序修改可维护性本章小结逆向工程改善措施•对修改事务
的测试;•操作过程的测试;•使用过程的测试;•作业控制语言的测试;•对修改程序的测试;•后备/恢复过程的测试。•软件系统之间接口的测试;•应用系统运行过程的测试;•系统各部分之间接口的测试;•与系统软件接口
的测试;•安全性测试;软件工程导论2022/11/24478.4软件可维护性8.4.1软件可维护性的定义8.4.2可维护性的度量基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24488.4.1软件可维护性的定义概念所谓软件可维护性
,是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。软件的可维护性是软件开发阶段各个时期的关键目标。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24498.4.1软件可维护性的定义衡量程序可维护性的特性可理解性可测试性
可修改性可靠性可移植性可使用性效率基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24508.4.1软件可维护性的定义各类维护侧重的特性基本概念软件维护程序修改可维护
性本章小结逆向工程改善措施改正性维护使用性维护完善性维护可理解性√可测试性√可修改性√√可靠性√可移植性√可使用性√√效率√软件工程导论2022/11/24518.5提高可维护性的方法8.5.1建立明确的软件质量目标及优先级8.5.2使用提高软件质量的技术和工具8.5.3进行
明确的质量保证审查8.5.4选择可维护的程序设计语言8.5.5改进程序文档基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24528.5.1建立明确的软件质量目标及优先级基本概念软件维护程序修
改可维护性本章小结逆向工程改善措施一个可维护的程序应当是可理解的、可靠的、可测试的、可修改的、可移植的、效率高的可使用的。但要实现所有这些目标,需要付出很大的代价,而且也不一定行得通。尽管可维护性要求每一种质量特性都要得到满足,但它们的相对
重要性应随程序的用途及计算环境的不同而不同。因此,当对程序的质量特性,必须在提出目标的同时规定它们的优先级。这样有助于提高软件的质量,并对软件生存期的费用产生很大的影响。软件工程导论2022/11/24538.5.2使用提高软件质量的技术和工具1
)模块化模块化技术的优点是:如果需要改变某个模块的功能,则只要改变这个模块,对其它模块影响很小;如果需要增加程序的某些功能,则仅需增加完成这些功能的新的模块或模块层;程序的测试与重复测试比较容易;程序错误易于定位和纠正;容易提高程序效率。基本概念软件维
护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24548.5.2使用提高软件质量的技术和工具2)结构化程序设计结构化设计不仅使得模块结构标准化,而且将模块间的相互作用也标准化了。因而把模块化又向前推进了一步。采用结构化程序设计可以获得
良好的程序结构。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24558.5.2使用提高软件质量的技术和工具3)使用结构化程序设计技术,提高现有系统的可维护性采用备用件的方法采用自动重建结构和重新格式化的工具(结构更新
技术)改进现有程序的不完善的文档使用结构化程序设计方法实现新的子系统采用结构化小组基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24568.5.3进行明确的质量保证审查1)在检查点进行复
审保证程序质量的最佳方法是在软件开发的最初阶段就把质量要求考虑进去,并在开发过程每一阶段的终点,设置检查点进行检查。检查的目的是要证实,已开发的软件是否符合标准,是否满足规定的质量需求。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24578.5.3进行
明确的质量保证审查软件开发期间各检查点的检查重点基本概念软件维护程序修改可维护性本章小结逆向工程改善措施分析设计编码测试验收检查点检查点检查点检查点可靠性可适应性可理解性可修改性可测试性可理解性可修改性可移植性有效性可靠性有效性软件工程导论2022/11/24
588.5.3进行明确的质量保证审查2)验收检查验收检查是一个特殊的检查点的检查,是交付使用前的最后一次检查,使软件投入运行之前保证可维护性的最后机会。它实际上是验收测试的一部分,只不过是从维护的角度提出验收的条件和标准。基本概念软件维护程序修改可维护性本章小结逆向
工程改善措施软件工程导论2022/11/24598.5.3进行明确的质量保证审查最小验收标准(1)需求和规范标准需求应当以可测试的术语进行书写,排列优先次序的定义;区分必须的、任选的、将来的需求;包括对系统运行时的计算机设备的需求;对维护、测试、操作以
及维护人员的需求;对测试工具等的需求。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24608.5.3进行明确的质量保证审查最小验收标准(2)设计标准程序应设计成分层的模块结构。每个模块应完成唯一的功能,并达到高内聚、低耦合;通过一些知道预
期变化的实例,说明设计的可扩充性、可缩减性和可适应性。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24618.5.3进行明确的质量保证审查最小验收标准(3)源代码标准尽可能使用最高级
的程序设计语言,且只使用语言的标准版本;所有的代码都必须具有良好的结构;所有的代码都必须文档化,在注释中说明它的输入、输出以及便于测试/再测试的一些特点与风格。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软
件工程导论2022/11/24628.5.3进行明确的质量保证审查最小验收标准(4)文档标准:文档中应说明程序的输入/输出、使用的方法/算法、错误恢复方法、所有参数的范围以及缺省条件等。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件
工程导论2022/11/24638.5.3进行明确的质量保证审查3)周期性地维护复审软件在运行期间,为了纠正新发现的错误或缺陷,为了适应计算环境的变化,为了响应用户新的需求,必须进行修改。因此会导致软件质量有变坏的危险,可能产生新的错误,破坏程序概
念的完整性。因此,必须像硬件的定期检查一样,每月一次或二月一次,对软件作周期性的维护审查,以跟踪软件质量的变化。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2464
8.5.3进行明确的质量保证审查3)周期性地维护复审周期性维护审查实际上是开发阶段检查点复查的继续,并且采用的检查方法、检查内容都是相同的。维护审查的结果可以同以前的维护审查的结果、以及以前的验收检查的
内容和检查点检查的结果相比较,任何一种改变都表明在软件质量上或其他类型的问题上可能起了变化。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24658.5.3进行明确的质量保证审查
4)对软件包进行检查软件包是一种标准化了的、可为不同用户使用的软件。软件包卖主考虑到他的专利权,一般不会提供给用户他的源代码和程序文档。因此,对软件包的维护采取的方法不同。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11
/24668.5.3进行明确的质量保证审查4)对软件包进行检查使用单位的维护人员首先要仔细分析、研究卖主提供的用户手册、操作手册、培训教程、新版本说明、计算机环境要求书、未来特性表以及卖方提供的验收测试报告等,在此基础上,深入了解本单位的希望和要求,编制软件包的检
验程序。该检验程序检查软件包程序所执行的功能是否与用户的要求和条件相一致。为了建立这个程序,维护人员可以利用卖方提供的验收测试实例,还可以自己重新设计新的测试实例。根据测试结果,检查和验证软件包的参数或控制结构,以完成软件包的维护。
基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24678.5.4选择可维护的程序设计语言程序语言的选择,对程序的可维护性影响很大。低级语言机器语言汇编语言高级语言(FORTRAN、COBOL
、PL/1)第四代语言过程性语言非过程性语言基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24688.5.4选择可维护的程序设计语言程序设计语言对可维护性的影响基本概念软件维护程序修改可维护性本章小结逆向工程改善措施第一代语言第二代语言第三代语言第
四代语言机器语言汇编语言高级语言:FORTRAN、COBOL、PL/1查询语言,报表生成语言,图象语言,应用生成语言可维护性低高软件工程导论2022/11/24698.5.5改进程序的文档概述程序文档是对程序总目标、程
序各组成部分之间的关系、程序设计策略、程序实现过程的历史数据等的说明和补充。程序文档对提高程序的可理解性有着重要作用。即使是一个十分简单的程序,要想有效地、高效率地维护它,也需要编制文档来解释其目的及任务。而对于程
序维护人员来说,要想对程序编制人员的意图重新改造,并对今后变化的可能性进行估计,缺了文档也是不行的。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24708.5.5改进程序的文档概述为了维护程序,人们必须阅读和理解文档。在软件维护阶段
,利用历史文档,可以大大简化维护工作。历史文档有三种:系统开发日志错误记载系统维护日志基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/24718.6逆向工程和再工程逆向工程逆向工程是通过考察产品的实际样品,导出该产品的一个或多个设计与
制造的规格说明。公司作逆向工程的程序,一般是自己的程序,有些是多年以前开发出来的。这些程序没有规格说明,对它们的了解很模糊。因此,软件的逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序表示的过程。逆向工程是设计恢复的过程。逆向工程工具可以从已存在程序中抽取数据结构、体系结构和程序设
计信息。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2022/11/2472再工程(re-engineering)再工程也叫复壮(修理)或再生。它不仅能从已存在的程序中重新获得设计信息,而
且还能使用这些信息改建或冲沟现有的系统,以改进它的综合质量。一般软件人员利用再工程重新实现已存在的程序,同时加进新的功能或改善它的性能。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施8.6逆向工程
和再工程软件工程导论2022/11/2473每一个软件开发机构的程序都有着上百万行的老代码,它们都是逆向工程和再工程的可能对象。但由于某些程序并不频繁使用也不需要改变,而且逆向工程和再工程的工具还处于摇篮时代,仅能对有限种类的应用执
行逆向工程或再工程,代价又十分昂贵,因此对其库中的每一个程序都作逆向工程或再工程是不现实的。为了执行预防性维护,软件开发组织必须选择在最近的将来可能变更的程序,作好变更它们的准备。逆向工程和再工程可用于执行这种维护任务。基本概念软件维护程序修改可维护性本章小结逆向工程改善措施8.6逆向工程和再工程
软件工程导论2022/11/24748.7本章小结软件维护的概念软件维护活动软件修改的步骤软件可维护性提高可维护性的方法逆向工程和再工程基本概念软件维护程序修改可维护性本章小结逆向工程改善措施软件工程导论2
022/11/2475谢谢!第八章软件维护基本概念软件维护程序修改可维护性本章小结逆向工程改善措施