实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章 软件维护

上传人:E**** 文档编号:89451750 上传时间:2019-05-25 格式:PPT 页数:52 大小:311KB
返回 下载 相关 举报
实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章  软件维护_第1页
第1页 / 共52页
实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章  软件维护_第2页
第2页 / 共52页
实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章  软件维护_第3页
第3页 / 共52页
实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章  软件维护_第4页
第4页 / 共52页
实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章  软件维护_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章 软件维护》由会员分享,可在线阅读,更多相关《实用软件工程教程 教学课件 ppt 作者 陈雄峰 第10章 软件维护(52页珍藏版)》请在金锄头文库上搜索。

1、第10章 软件维护,教学要点:本章重点介绍软件维护的分类、组织、过程和提高可维护性的方法。要求理解软件维护是持续时间很长的一个阶段,需要建立规范的组织和过程,才能保证提高维护工作的效率;必须在整个软件开发过程中严格遵循软件工程的方法,才能提高软件的可维护性;另外,对原来不是按规范开发的但可能还会使用较长时间的软件,可使用软件再工程的方法重新建立文档、数据和程序,以便提高软件的可维护性、复用性和演化性。有时在进行软件再工程之前,可能需要进行业务过程再工程。 重点掌握:软件维护分类、组织和过程;提高软件可维护性的方法;业务过程再工程和软件再工程的过程。,10.1 软件维护过程,10.1.1 软件维

2、护的定义 什么是软件维护 是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程 国标GB/T 11457-95给出如下定义 在一软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其它属性,或使产品适应改变了的环境 四类维护活动: 改正性维护 适应性维护 完善性维护 预防性维护,四类维护的定义,改正性维护:为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护 适应性维护:为了使软件适应内部或外部环境变化,而去修改软件的过程 改善性维护:满足使用过程中用户提出增加新功能或修改已有功能的建议维护 预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步

3、改进软件打下良好基础而修改软件的活动,开发和维护者不应等待用户的维护申请, 可先选择以下类型程序作为预防性维护对象: (1)预计若干年内将继续使用的程序 (2)当今正成功使用的程序 (3)最近的将来要进行大修改和完善的 程序,四类维护所占比例:,其它维护 5 %,适应性 维 护 25%,改正性 维 护 20%,扩充与完 善性维护 50%,改正性维护占全部维护量的比率已从80年代初的20%大幅度下降, 90年代初一些公司的产品差错率已接近于零,各类维护活动的根本目的是延长软件生存期,其它维护 4 %,软件 生存 周期,软件诞生,计 划,分 析,设 计,编 码,测 试,运行和维护(简称维护),改善

4、期 稳定期 陈旧期,1年-10年,2个月-2年,重构,软件工程周期,10.1.2 软件维护的特点,M,P+K,e,=,(c-d ),M : 维护工作总工作量 P : 生产性工作量 K : 经验常数 c : 复杂度 d : 对该软件熟悉程度的度量 维护的工作可划分成: 生产性活动 如,分析评价、修改设计、编写程序代码等; 非生产性活动 如,程序代码功能理解、数据结构解释、接口特点和性能界限分析等。,1.维护的成本,2.维护中的典型问题,(1)难以跟踪软件版本的进化过程, 软件的变化未在文档中反映出来. (2)难以跟踪软件的创建过程. (3)难以读懂他人程序. (4)无文档或不全. (5)软件人员

5、流动性大. (6)设计时未考虑修改需要,修改困难. (7)维护工作无吸引力,缺乏成就感.,10.1.3 软件维护的过程,修改 决策控制机构,维护申请,系统监督员,配置管理员,1.建立维护组织,维护人员,维护管理员,系统监督员、修改控制决策机构、维护管理员、维护人员和配置管理员等均代表维护工作的某个职责范围。 系统监督员一般都是对程序的某一部分特别熟悉的技术人员,系统监督员可以有其他职责,但应具体分管某一个软件包。 在维护人员对程序进行修改的过程中, 由配置管理员应严格把关,控制修改的范围,对软件配置进行审计。 修改控制决策机构、维护管理员可以是指定的某个人,也可以是一个包括管理人员、高级技术人

6、员在内的小组。 所有人员既然可以是专职的也可以兼职的。,2.维护过程,维护过程图,(1)维护报告 维护申请报告和软件修改报告 维护申请报告(表)即软件问题报告,该报告(表)由要求一项维护活动的用户填写。对改正性维护,用户需要将错误出现的现场信息详细描述出来,包括输入数据、错误清单以及其它有关材料。对适应性维护或改善性维护,应该给出一个简短的需求规格说明书。维护申请被批准后,维护申请报告就成为外部文档,作为本次维护的依据。 软件修改报告指明为满足维护申请报告提出的需求所需的工作量、本次维护活动的类别、本次维护请求的优先级、本次修改的背景数据。在拟定进一步维护计划前,软件修改报告要提交给修改决策机

7、构,供进一步规划维护活动使用。,(2)保存维护记录,维护过程中作应记录的数据 程序标识 源程序语句数目 机器代码指令条数 . . 以收集的数据为基础构造维护数据库, 供维护评价使用.,(3)评价维护活动,如果已经开始保存维护记录,可以对维护工作做一些定量度量,至少可以从如下7方面进行评价: 每次程序运行平均失败的次数; 用于每一类维护活动的总人时数; 平均每个程序、每种语言、每种维护类型所必需的程序变动数; 维护过程中增加或删除源语句平均花费的人时数; 维护每种语言平均花费的人时数; 一张维护请求表的平均周转时间; 不同维护类型所占的比例。,10.2 可维护性 10.2.1 决定可维护性的因素

8、,软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。 决定可维护性的几个因素: 可理解性 可测试性 可修改性 可移植性 可重用性 文档,可理解性指理解软件的结构、接口、功能和内部过程的难易程度。提高软件可理解性的措施包括:采用模块化的程序结构;书写详细正确的文档;采用结构化程序设计;书写源程序的内部文档;使用良好的编程语言;保证具有良好的程序设计风格等。 可测试性指指测试和诊断软件(主要指程序)中错误的难易程度。提高软件可测试性的措施包括:采用良好的程序结构;书写详细正确的文档;使用测试工具和调试工具;保存以前的测试过程和测试用例等。,可修改性指修

9、改软件(主要指程序)的难易程度。要注意到在修改软件时经常会发生这样的情况,即修改了程序中某个错误的同时又产生新的错误(由程序的修改引起的),或者在程序中增加了某个功能后,导致原先的某些功能不能正常执行。 可移植性指的是程序转移到一个新的计算环境的难易程度。影响软件可移植性的因素有信息隐蔽原则、模块独立、模块化、高内聚低耦合、良好的程序结构和不用标准文本以外的语句等。一个可移植的程序应具有结构良好、灵活、不依赖于某一具体计算机或操作系统的性能。,可维护性的度量,度量程序可维护性的7个特性在各类维护中的侧重点 改正性维护 适应性维护 完善性维护 可理解性 可测试性 可修改性 可靠性 可移植性 可使

10、用性 效率 ,10.2.2提高可维护性的方法,建立明确的软件质量目标和优先级 使用提高软件质量的技术和工具 进行明确的质量保证审查 选择可维护的程序设计语言 改进程序的文档 开发软件时考虑到维护,确定质量管理目标和优先级要求一个可维护的程序应该是可理解的,可修改的和可测试的。但是要实现所有这些目标,需要付出很大的代价,因为有些维护属性之间是相互促进的,例如,可理解性和可测试性、可理解性和可修改性,另外一些属性之间则是相互抵触的,如可重用性和可测试性。在程序的开发阶段就应保证软件具有可理解性、可修改性和可测试性。在软件开发的每一个阶段都应尽力考虑软件的可维护性。 使用提高软件质量的技术与工具要求

11、在进行软件设计时,采用如本书前面所述的模块化程序设计、结构化程序设计等程序设计方法。在软件开发过程中,采用结构化小组,建立主程序小组,实现严格的组织化管理,职能分工,规范标准。在对程序的质量进行检测时,也可以采用分工合作的方法,这些方法会有效地提高软件质量和检测效率,进而提高软件的可维护性。,选择较好的程序设计语言对软件维护有很大的影响。低级语言(如机器代码或汇编语言)程序是一般人很难掌握和理解的,因而很难维护。高级语言比低级语言容易理解,具有更好的可维护性。在高级语言中,一些语言可能比另外一些语言更容易理解。例如,COBOL语言比FORTRAN语言更容易理解,因为COBOL的变量接近英语;P

12、L/1比COBOL更容易理解,因为PL/1有更丰富、更强的语言集等。 程序文档对提高程序的可理解性有着重要的作用。即使是一个相对简单的程序,要想有效地,迅速对它进行维护,也需要编制文档对它的目的和任务进行解释。而对于程序的维护人员来说,要想对程序编制人员的意图进行重新修改,并对今后可能出现的变化估计,缺少文档的帮助也将很难实现。另一方面,对于程序文档一定要能及时反映程序的变化,否则将对后续维护人员产生误导。,进行质量保证审查要求除了保证软件得到适当的质量外,审查还可以用来检测在开发和维护阶段内发生的质量变化。一旦检测出问题来,就可以采取措施来纠正,以控制不断增长的软件维护成本,延长软件系统的有

13、效生命期。 为了保证软件的可维护性,有四种类型的软件审查:在检查点进行复审、验收检查、周期性地维护审查、对软件包进行检查。在进行设计评审时,要从易于维护和提高设计总体质量的角度全面评审数据设计、总体结构设计、过程设计和界面设计;在进行代码评审时,要强调编程风格和内部文档;在进行测试时应指出软件正式交付前应进行的预防性维护;在维护活动完成后也要进行评审。,10.3 再工程,什么是再工程? 再工程(Software Reengineering)指在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本 。 再工程是一类软件工程活动,是一个工程过程,它将逆向工程、重构和正向工程组合起来,

14、将现存系统重新构造为新的形式。 再工程的基础是系统理解,包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下,由于各类文档的丢失,只能对源代码进行理解,即程序理解。 它能够使我们: 增进对软件的理解; 提高软件自身的可维护性、复用性或演化性.,为什么要实施软件再工程? 再工程可帮助降低软件演化风险 再工程可帮助补偿软件投资 再工程可使得软件易于进一步变更 再工程有广阔市场 再工程扩大了CASE工具集 再工程是推动自动软件维护的动力,在软件复用中,有问题是与现有系统密切相关的 例如: 现有软件系统如何适应当前技术的发展及需求的变化,采用更易于理解的、适应变化的、可复用的系统软件构

15、架并提炼出可复用的软件构件? 现存大量的遗产软件系统(Legacy Software)由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘、整理,得到有用的软件构件? 已有的软件构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期,充分利用这些可复用构件? 软件再工程正是解决上述问题的主要技术手段。,再工程的概念,通常再工程包含:业务过程再工程、软件再工程 业务过程再工程(BPRBusiness Process Re-engineering,也称业务过程重组)定义业务目标、标示并评估现有的业务过程以及修订业务过程以更好满足业务目标,这一部分通常由咨询公司的业务专家完成 软

16、件再工程包含库存目录分析、文档重构、逆向工程、程序和数据重构以及正向工程。这一部分通常由软件工程师完成,1.业务过程再工程,Michael Hammer的是业务过程和计算管理革命的奠基性文章,Hammer在文章中大力呼吁使用业务过程再工程技术。不过,到21世纪初,对于业务过程再工程的宣传已经不太常见,但是这种过程已经在很多公司中得到使用。 业务过程是一组“逻辑相关的任务,它们被执行以达到符合预定义的业务结果”。,业务过程再工程(续),每个系统都是由不同的子系统构成,而子系统还可以再细分为更细的子系统,从而整个业务呈现一种层次结构,业务 业务系统 业务过程 业务子过程,业务层次,业务过程再工程(续),在理想情况下,BPR应该自顶向下地进行,从标示主要的业务目标或子目标开始,而以生成业务(子)过

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号