《软件工程软件维护方案ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程软件维护方案ppt课件.ppt(27页珍藏版)》请在三一办公上搜索。
1、第九章软件维护,9.1 软件维护基础,定义软件维护是在软件交付使用之后,为了改正错误或满足新的需求而修改软件的过程。这个概念中两个重要的关键词:一个是“修改”,维护就是修改软件;另一个是“过程”,过程暗喻不是单一的活动,是活动的集合和活动的有序组合,过程就需要管理。,意义软件维护是软件生命周期的最后一个阶段。通过软件维护达到的目标是:使软件更好用、功能更强大、寿命更长远。对软件不实施维护就相当放弃软件的生存支持。软件维护是软件生命周期中时间最长、费用最高、越来越难的活动。软件维护技术不像开发技术那样成熟和规范,消耗的工作量比较多,其工作量占整个生存周期的70%以上。,9.2软件维护的类型,软件
2、维护的类型维护类别的意义:一方面用于决策层的维护决策;另一方面可划分责任界限。软件维护主要三类是:纠错性维护(Corrective Maintenance)、适应性维护(Adaptive Maintenance )、改善性维护(Perfective Maintenance )预防性维护。,纠错性维护:是在软件交付后,纠正哪些在运行中发现的残留错误,也称改正性维护 。适应性维护:为适应软件运行环境(软件生态环境)的变化而修改软件的活动 。改善性维护:根据用户在软件使用过程中提出的建设性意见(需求变化)而进行的维护活动。 纠错性维护对开发方是无条件的维护。适应性和改善性维护需要供需双方协商解决,9
3、.2软件维护的类型,大部分维护工作是改变和加强软件,而不是纠错。改正性维护占全部维护量的比率已从80年代初的20%大幅度下降, 90年代初一些公司的产品差错率已接近于零。,9.3 软件可维护性,软件维护的困难维护的副作用就是指由于维护或在维护过程中其他一些不期望的行为引入的错误。引起副作用的维护修改可分三类:代码副作用;数据副作用;文档副作用。维护的困难1)现场维护人员的压力很大。 2)维护人员不知所措,不知怎样进行修改。 3)维护人员理解别人的程序非常困难。 4)由于维护阶段持续时间很长,造成了维护的困难。 5)维护人员更为困惑的是,有的软件的错误不是程序本身的问题,可能是分析和设计的缺陷。
4、,9.3 软件可维护性,结构化维护与非结构化维护的区别,9.3 软件可维护性,非结构维护的问题具有如下特点的维护属于非结构化维护: 软件的配置中只有源代码。 由于没有分析和设计文档,无法对程序的功能进行反向追踪,理解别人的代码是很痛苦的事情。由于配置中没有测试文档,所以维护后的代码无法进行回归测试。因而导致程序的结构化被不断的破坏,维护的质量无法得到保证。,9.3 软件可维护性,结构化维护是真正的维护结构化维护具有下列特点:待维护的软件的配置是完整的。用户提出的维护申请用正向追踪很容易从分析设计文档追踪直至代码中,从而使维护人员很容易定位代码的维护点。所以这种维护不会破坏软件的结构。结构化维护
5、不仅能减少维护的工作量,还能提高维护的质量。,9.4 软件维护的实施,维护的组织与流程维护组织内的角色一般由维护员,维护管理员,系统管理员,决策机构,配置管理员组成。,组织内角色间协调关系图,9.4 软件维护的实施,实施过程用户的维护请求;将请求交给系统管理员;并提交给决策机构进行;通知配置管理员进行配置登记;组织维护员执行该次维护;提交维护结果及审核报告;,9.4 软件维护的实施,维护实施的工作内容用户的维护请求激发了一次维护活动,用户将维护申请提交给维护管理员;维护管理员将该维护请求交给系统管理员对维护活动可能引起的软件修改进行评估,并将评估结果反馈给维护管理员;维护管理员按照维护请求单制
6、定软件修改报告单并提交给修改决策机构进行维护决策。修改决策机构根据情况决定采取的行动(拒绝请求还是接收请求),并把结果反馈给维护管理员;如果允许维护,维护管理员将通知维护员执行该次维护,同时通知配置管理员准备相关文档。维护管理员将通知并组织维护员执行该次维护;维护的内容要从配置管理员处获取并提交维护结果,一次维护过程结束要提交审核报告。,9.4 软件维护的实施,9.4 软件维护的实施,维护报告,用户提出维护申请变更性:MRF(Maintenance Request Form) 纠错性:SPR(Software Problem Report),维护管理员制定SCR(Software Change
7、 Report),维护人员填写维护记录SMR(Software Maintenance Record),维护组织进行维护活动的评价,配置管理人员进行可维护性复审,申请与审批,维护进行中,维护结束后,9.5 配置管理,配置管理软件配置是一个软件产品在生存期各个阶段以不同形式、不同载体记录下的特定信息,它包括不同版本的程序、文档及相关数据的集合,也就是软件产品的工件。配置的概念始于制造业,类似材料清单(BOM:Bill of Materials)。如今在软件行业,配置管理越来越收到重视,是现代软件工程的重要组成内容。,9.5 配置管理,软件配置管理每一个软件项目都必须经历需求分析、系统设计、编码实
8、现、集成测试、部署、交付、维护和支持的过程。在这个过程中,将生成各种各样不同的工件,包括文档、源程序、可执行代码、支持库。更重要的是软件需求在不断变化,为适应变化而出现的变更是不可避免。面向如此庞大且不断变动的信息集,要做到“动而不乱”,保证各种文档的一致性,就需有一套管理办法和活动原则,这就是软件配置管理。,9.5 配置管理,软件配置管理简称SCM(Software Configuration Management),就是管理软件的变化,它贯穿整个软件生命周期,通常由相应的工具、过程和方法学组成。配置管理在软件开发过程中具有管理团队并行开发、多平台开发的作用;在软件维护过程中它支持版本控制、
9、变更管理等功能。SCM使软件产品和过程的变更变为受控的和可预见的。可以做到:谁做的变更?变更什么?什么时间做的变更?为何要变更?,9.5 配置管理,通过以下手段提高软件可靠性和质量标识软件配置中各种对象,在整个软件的生命周期中提供标识和控制文档、源代码、接口定义和数据库等工件的机制;进行配置审计,配置报告评估,控制对软件的修改。提供满足需求、符合标准、适合项目管理及其它组织策略的软件维护的方法和过程;为管理和产品发布提供支持信息,如基线的状态,变更控制、测试、发布、审计等等;,9.5 配置管理,软件配置项SCI(software Configuration Item)IEEE定义:配置项是处于
10、配置管理之下的软件或/和硬件的集合体。这个集合体在配置管理过程中作为一个实体出现。SCI包括:项目计划、需求文档、设计文档、源代码、测试文档、数据库、用户手册、引用标准、也包括维护本身的软件配置管理等等文档。标识软件配置中各种对象所有SCI都应按面向对象的方式命名并组织起来。对象命名是为了能够根据名称提取对象;而通过组织对象并描述其间的关系则着眼于在对象变更时能够清楚地了解变更的影响范围。基本对象在分析、设计、编码或测试阶段由开发人员创建的某个“文本单元”(unit of text)。每个配置对象都拥有名字、描述、资源列表和实际存在体四个部分。,9.5 配置管理,基线(baseline)的原意
11、是棒球场的边线,在软件开发过程中,为了有效地控制变动,软件配置管理引入基线的概念。IEEE(IEEE Std 610.12-1990)定义:已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能通过正式的变更控制过程来改变。,9.5 配置管理,软件配置管理的内容软件配置管理的功能包括版本控制、开发过程管理、工作空间管理、并行开发、异地开发、变更请求等众多管理功能。本讲义仅介绍最核心的两个功能:版本控制变更管理。,9.5 配置管理,版本控制版本控制是所有配置管理系统的核心功能。配置管理系统的其它功能大都建立在版本控制功能之上。 版本控制的对象是软件开发过程中涉及的所有文件
12、系统对象,包括文件、目录和链接。可定版本的文件包括源代码、可执行文件、位图文件、需求文档、设计说明、测试计划、和一些ASCII 和非ASCII 文件等等。 版本控制的目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本。版本控制是实现团队并行开发、提高开发效率的基础。,9.5 配置管理,变更管理变更请求管理是软件配置管理的又一个重要组成部分,变更请求管理记录、跟踪和报告针对软件系统的任何变更,其核心是一个适合软件开发组织的变更处理流程,典型的变更处理流程涉及如何提交变更请求,如何对变更请求进行复审以便决定是否实施,由谁实施,如何实施,如何确定变更请求准确实
13、施完成等方面。变更管理一般流程如下: (1)(获得)提出变更请求;(2)由配置控制委员会CCB(Configuration Control Board) 审核并决定是否批准;(3)(被接受)分配请求,修改人员提取配置项,进行修改;(4)复审变化;(5)提交修改后的配置项;(6)建立测试基线并测试;(7)重建软件的适当版本;(8)复审(审计)所有配置项的变化;(9)发布新版本。,配置管理工具元老CCC、SCCS、RCS中坚Rational ClearCase新秀Hansky Firefly开源奇葩CVS小工作组级Merant PVCS入门级Microsoft Visual Source SafeCVS的新版SVN,人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。,