资源描述
软件工程,任课教师:程丽计算机与信息学院,第六章软件维护,6.1软件维护的内容6.2软件维护的特点6.3软件维护的实施6.4软件可维护性,第六章软件维护,课程的任务、目的和基本要求熟悉软件维护的内容、特点、实施了解如何提高软件的可维护性,1.什么是软件维护?软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。,第六章软件维护,2.软件维护的原因在运行中发现了在测试阶段未能发现的软件错误和设计缺陷;需要改进设计,以增强软件的功能,提高软件的性能;要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备等的工作环境,或是要求适应已变动的数据或文件;为使投入运行的软件与其它相关的程序有良好的接口,以利于协同工作;为使运行软件的应用范围得到必要的扩充。,第六章软件维护,3.软件维护的意义软件维护处于软件生命期的最后阶段,也是最长的一个阶段,提高软件的可维护性,可减少维护的工作量和费用纠正软件开发过程未发现的错误,增强、改进和完善软件的功能和性能,适应软件的发展,延长软件的寿命,发挥其效益,第六章软件维护,第六章软件维护6.1软件维护的内容,1.软件维护的类型按照不同的维护原因,维护工作可分成四类。校正性维护适应性维护完善性维护预防性维护,2.什么是校正性维护对在测试阶段未能发现,而在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程,称为校正性维护。,第六章软件维护6.1软件维护的内容,3.适应性维护计算机的软件环境、硬件环境、数据环境在不断的变化,使运行的软件能适应运行环境或者数据的变动而修改软件的过程称为适应性维护。,第六章软件维护6.1软件维护的内容,4.完善性维护扩充原有系统的功能,提高系统的性能,提高软件运行的效率,满足用户的实际需要而进行的维护活动称为完善性维护。,第六章软件维护6.1软件维护的内容,5.预防性维护为了进一步改善软件的可靠性和可维护性,或者为可预见的将来的软件的运行和维护打下更好的基础,而对软件进行的维护活动称为预防性维护。,第六章软件维护6.1软件维护的内容,6.各种维护所占的比例,第六章软件维护6.1软件维护的内容,第六章软件维护6.2软件维护的特点,6.2.1非结构化维护和结构化维护6.2.2维护的困难性6.2.3软件维护的费用,非结构化维护缺乏必要的文档说明,或者文档说明不一致,难于确定数据结构、系统接口等特性。结构化维护按照软件工程方法开发软件,各阶段文档齐全,易于理解和掌握软件功能、性能、软件结构、数据结构、系统接口和设计约束。,第六章软件维护6.2.1非结构化维护和结构化维护,1、读懂别人的程序带来的困难2、文档不一致带来的困难3、软件开发与维护人员不一致带来的困难4、软件开发与维护时间上的差异带来的困难,第六章软件维护6.2.2维护的困难性,软件维护费用一般要占到整个开发费用的60%70%,而且逐年上涨。只有减少软件维护的工作量才能有效降低维护成本,而减少维护工作量就要分析影响软件维护的各种因素。,第六章软件维护6.2.3软件维护的费用,1.影响软件维护的因素系统的大小:系统越大,功能越复杂,维护工作量就越大。程序设计语言:语言的功能越强,生成程序所需要的指令(程序)越少,而且程序的可读性也越好,维护工作量也就越小。系统年龄:系统越老,修改维护的次数就越多,结构也就越乱,维护工作量也就越大。软件开发新技术的应用:使用先进的分析和设计技术,以及程序设计技术,如:面向对象技术、构件技术、可视化程序设计技术等,可减少维护工作量。,第六章软件维护6.2.3软件维护的费用,2.软件维护的工作量模型维护活动分为生产性活动和非生产性活动生产性活动包括分析评价、修改设计和编写程序代码等。非生产性活动包括理解程序代码、解释数据结构、接口特点和设计约束等。,第六章软件维护6.2.3软件维护的费用,Belady和Lehman提出软件维护工作模型:M=P+K*exp(C-D)其中:M维护工作的总工作量P生产性活动的工作量K经验常数C程序复杂度D对维护软件熟悉程度的度量显然,若越大,越小,则维护工作量成指数增长,为此,必须防止出现非结构化维护并尽可能由熟悉软件的原开发人员参加维护。,第六章软件维护6.2.3软件维护的费用,第六章软件维护6.3软件维护的实施,6.3.1维护的组织6.3.2维护的流程,临时维护小组维护机构长期维护小组,第六章软件维护6.3.1维护的组织,1.临时维护小组非正式机构,执行特殊或临时的维护任务,如:对程序排错的检查、检查完善性维护的设计、进行质量控制的复审。采用“同事复审”、“同行复审”的方法。,第六章软件维护6.3.1维护的组织,2.长期维护小组组长:有经验的系统分析员,向上级汇报维护工作副组长:协调部门、小组、用户之间长期维护小组的关系维护负责人:负责维护小组人事管理工作维护程序员:分析程序改变要求并修改,第六章软件维护6.3.1维护的组织,1、制定维护申请报告2、审查申请报告并批准3、进行维护并做详细记录4、复审,第六章软件维护6.3.2维护的流程,1.制定维护申请报告维护申请报告也称软件问题报告,由申请维护的用户填写,完整说明导致错误的环境,对于适应性或完善性的维护要求,要提交一份简要的维护规格说明。,第六章软件维护6.3.2维护的流程,2.软件维护的过程一个维护申请经过评审后,首先要确定维护的类型,还要分辨错误的严重程度或修改优先级的高低,再分别处理,如下图所示。,第六章软件维护6.3.2维护的流程,1.软件维护的技术包括:面向维护的技术-涉及到软件开发的所有阶段。维护支援技术-支持软件维护阶段的技术。,第六章软件维护6.3.3维护技术,2.面向维护的技术在需求分析阶段:对用户的需求进行严格的分析定义,使之没有矛盾和易于理解,可以减少软件中的错误。在设计阶段:划分模块时充分考虑将来改动或扩充的可能性。在编码阶段:采用灵活的数据结构,使程序相对独立于数据的物理结构,养成良好的程序设计风格。在测试阶段:尽可能多发现错误,保存测试用例和测试数据等。以上这些技术方法都能够减少软件错误,提高软件的可维护性,第六章软件维护6.3.3维护技术,3.维护支援技术维护支援技术则是在软件维护阶段用来提高维护作业的效率和质量的技术。,第六章软件维护6.3.3维护技术,3.维护支援技术信息收集:收集有关系统在运行过程中的各种问题错误原因分析:分析所收集到的信息,分析出错的原因软件分析与理解:只有对需要维护的软件进行认真的理解,才保证软件维护正确进行维护方案评价:在进行维护修改前,要确定维护方案,并由相关的组织进行评审通过后才能执行代码与文档修改:实施维护方案修改后的确认:经过修改的软件,需要重新进行测试远距离的维护:对于网络系统,可以通过远程控制进行维护。,第六章软件维护6.3.3维护技术,维护的副作用是指由于修改程序而导致新的错误或者新增加一些不必要的活动,包括:编码副作用数据副作用文档副作用,第六章软件维护6.3.4维护的副作用,、编码副作用在修改源代码时,可能引起的错误。、数据副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。、文档副作用对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序功能不匹配、缺省条件改变等错误,产生文档的副作用。,第六章软件维护6.3.4维护的副作用,第六章软件维护6.4软件可维护性,6.4.1可维护性定义6.4.2可维护性的度量,软件可维护性是指软件能够被理解、校正、适应及变化功能的容易程度。软件的可维护性是软件开发阶段各个时期的关键目标。,第六章软件维护6.4.1软件可维护性定义,度量一个软件的可维护性常用的方法有:质量检查表、质量测试、质量标准。,第六章软件维护6.4.2可维护性的度量,质量检查表是用于测试程序中某些质量特性是否存在的一个问题清单。评测者针对检查表上的每一个问题,依据自己的定性判断,回答“Yes”或者“No”。,第六章软件维护6.4.2可维护性的度量,使用七种特性衡量程序的可维护性,对于不同类型的维护,其侧重点也不相同,如下所示:,第六章软件维护6.4.2可维护性的度量,软件的可维护性对于延长软件的生存期具有决定的意义,因此必须考虑如何才能提高软件的可维护性,为此,需从以下几个方面考虑:1、建立明确的软件质量目标2、使用先进的软件开发技术和工具3、建立明确的质量保证4、选择可维护的程序设计语言5、改进程序的文档,第六章软件维护6.4.3提高可维护性的方法,建立明确的质量保证质量保证是指为提高软件质量所做的各种检查工作,包括1、在检查点进行检查2、验收检查3、周期性的维护检查4、对软件包的检查。,第六章软件维护6.4.3提高可维护性的方法,选择可维护的语言程序设计语言的选择,对程序的可维护性影响很大。低级语言,很难理解,很难掌握,因此很难维护。高级语言比低级语言容易理解,具有更好的可维护性,如下图所示。,第六章软件维护6.4.3提高可维护性的方法,
展开阅读全文