资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第6章 软件配置管理,Software Configuration Management,2024/11/3,1,6.1 概述,配置的概念来源于制造系统管理,目标是识别和管理组成复杂系统的各个局部工件,随着软件复杂性的大幅提升,将软件看作单一产品面临许多无法解决的问题,而将其分解为子系统、模块、构件等“工件并实施配置管理是富有成效和现实的技术,2024/11/3,2,IEEE将SCM定义为:,软件配置管理由适于所有软件开发工程的最正确工程实践组成,通过以下手段来提高软件的可靠性和质量:,在整个软件生命周期中提供标识和控制文档、源代码、接口定义和数据库等工件机制,提供满足需求、符合标准、适应工程管理及其他组织策略的软件开发和维护的方法学,为管理和产品发布提供支持信息,如基线状态、变更控制、测试、发布、审计等,2024/11/3,3,实施SCM的目的,目的是在软件生命周期内建立和维护软件产品的完整性,保证团队的有效协作,目标是标识变更、控制变更、确保变更正确实现并向其他人员报告变更,SCM要解决的问题,多人同时修改程序或文档,人员流动,软件维护中的历史重现,控制软件的复杂性,影响工程进度的特殊因素,已修复的错误仍然存在,协同开发中的工作重复,2024/11/3,4,SCM的益处,可以解决一些常见的问题,可以节约用户资金 复用和共享 增强沟通能力,可以提高软件开发管理的水平 管理和改进过程,提高成熟度等级 管理工作空间,实现变更控制 管理工作量 管理沟通,可以保护企业的知识财富建立完善的知识管理体系:代码、经验、平安性、可靠性,2024/11/3,5,所有在软件过程中产生的信息,总称为软件配置项Software Configuration Item,SCI,主要包括:,计算机程序源代码和可执行程序,描述计算机程序的文档针对开发者和用户,数据包含在程序内部或外部,6.2 配置项SCI,2024/11/3,6,配置项的内容,配置项,包含内容,项目管理过程文档,项目任务书,个人日报和周报,项目计划,项目会议纪要,项目周报,培训记录和培训文档,QA,过程文档,QA,不符合报告,QA,周报,评审记录,工作产品,需求文档,测试文档,设计文档,软件说明书和手册,代码,第三方产品,例如:,Oracle,Java,等,2024/11/3,7,软件配置控制,配置控制是配置管理的核心工作,主要包括:,存取控制:设定软件开发人员对软件基准库的存取权限,保证软件开发过程及软件产品的平安性,版本控制:是配置管理的根本要求,使得组织在任何时刻都可以获得配置项的任何一个版本,变更控制:为软件产品变更提供一个明确的流程,要求任何进行配置管理的软件产品变更都要经过相应的授权与批准才能实施,产品发布:保证提交给客户的软件产品是完整的、正确的,2024/11/3,8,配置项标识,软件配置项标识是管理配置的前提。,标识包括文件名和版本。,确定配置项:软件工程在开发过程中会产生成千上百个配置项,那么确定配置项是很重要的,明确配置项标识的要求:工程组人员按照标识规那么对配置项进行标识,最后提交给配置管理员纳入配置库统一管理,配置项命名:,(1)唯一性:在一个工程内不能出现重名,(2)可追溯性:名字应能表达相邻配置项之间的关系,2024/11/3,9,命名实例,程序实体的标识,程序名.扩展名:DataVerified.java,文档的标识:必须统一,工程管理PM,立项说明PM-prj,开发方案PM-plan,工程设计PD,需求说明PD-req,概要设计PD-prldsg,详细设计PD-dtldsg,2024/11/3,10,6.3,基线,baseline,IEEE关于软件基线的定义,基线是已经通过正式技术评审的某种产品,可以作为进一步开发的根底,并且只能通过正式的变更控制而改变,基线是工程库中每个工件的版本快照snapshot,基线标识软件过程阶段的里程碑milestone,2024/11/3,11,常用软件基线,系统工程,需求分析,软件设计,代码,测试,系统规格说明书,软件需求规格说明书,设计规格说明书,源代码,测试方案,过程,/,数据,可操作的系统,2024/11/3,12,基线的属性,通过正式评审过程建立,存在于基线库,对基线的变更接受更高权限的控制,基线是进一步开发和修改的基准和出发点,进入基线前,不对变化进行管理;进入基线后,对变化进行有效管理,不会变化的内容不纳入基线,变化对其它无影响的也不纳入基线,基线具有名称、标识符、版本、日期等属性,交付给客户的基线成为一个,Release,,内部开发用的基线为一个,Build,2024/11/3,13,基线的优点,重现性当更新不稳定或不可信时,基线提供一种取消变更的方法,可追溯性建立工程工件之间的前后继承关系,版本隔离,新工程与随后对原始工程所进的变更进行隔离,2024/11/3,14,基线的种类,功能基线,(Functional Baseline),系统分析、软件定义阶段的系统规格说明,指派基线,(Allocated Baseline),软件需求分析阶段的需求规格说明,产品基线,(Production Baseline),组装和测试阶段有关产品的规格说明,其他基线,2024/11/3,15,软件过程中的配置基线,需求分析,设计,编码,测试,方案,基线,需求,基线,设计,基线,编码,基线,测试,基线,方案,工程开发方案,用户手册,需求规格分析,详细设计说明书,概要设计说明书,源代码,测试报告,2024/11/3,16,6.4,版本控制,版本控制是对系统不同版本进行标识和跟踪管理的过程,是SCM的核心,版本控制的对象是软件开发过程中涉及的所有文件系统对象,如文件、目录、链接等,版本控制的目的在于跟踪控制对象的变更,防止丧失,提供访问授权,实现并行开发,2024/11/3,17,版本的控制与同步控制,版本的访问控制,工作区中的源文件是从库中恢复得到的一个复制文件。一般有两种工作模式:,在工作区域一旦有“读请求,就做一次恢复操作,获得复制文件,当“读操作结束,该复制文件被删除,仅当软件库中的内容发生更改时,才发生交互,而不是每次“读操作都与软件库中的文件发生交互,版本的同步控制,检入Checkin:将软件配置项从用户的工作环境存入到软件配置库的过程,检出Checkout:将软件配置项从软件配置库中取出的过程,2024/11/3,18,软件,工程师,软件配置库,检入,检出,访问控制,配置对象,修改版本,配置对象,基线版本,审计信息,解锁,拥有者信息,加锁,配置对象,基线版本,配置对象,提取版本,访问和同步控制的流程图,2024/11/3,19,版本分支和合并,版本分支,人工方法是从主版本复制一份文件,做上标记。实行版本控制之后,版本的分支是一份复制文件,复制过程和标记动作由版本系统自动完成,版本合并,版本合并通过对文件的比较来进行,有两种途径:,将版本A的内容附加到版本B中,合并A和B的内容,形成新的C,后一种途径更容易理解,也符合软件开发的思路,2024/11/3,20,版本的历史记录,文件和目录的版本演化的历史可以形象的表示为图形化的版本树,版本树由版本依次连接形成,每个结点代表一个版本,根结点是初始版本,叶结点代表最新的版本,典型的软件系统包含多个文件和目录,每个文件和目录都有自己的版本树,版本的历史记录有助于对软件配置项进行审计,有助于追踪问题的来源,版本的历史记录应该包含版本号、修改时间、修改者、修改描述等内容,2024/11/3,21,版本树,最简单的版本树只有一个分支,就是版本树的枝干;复杂的版本树除了主干外,还可以包含很多的分支,分支可以进一步包含子分支。,V1.0,V1.1,V1.2,V1.3,V2.0,V1.4,V2.1,V1.1.1,V1.1.2,2024/11/3,22,6.5 变更控制,软件开发过程中会产生很多变更,如配置项、配置、基线、构建的版本、发布的版本等,变更控制是一种机制,以保证所有变更都是可控的、可跟踪的和可重现的,对变更进行控制的机构称为CCBChange Control Board,变更控制委员会,CCB定期开会对近期产生的变更进行分析、整理,并作出决定,2024/11/3,23,变更机制,变更请求,CCB,评估,修改,测试或验证,关闭变更请求,接受,提交,拒绝,2024/11/3,24,功能变更,功能变更是为了增加或者删除某些功能、或者为了完成某个功能的方法而需要的变更;这类变更必须经过某种正式的变更评价过程,以估计变更需要的本钱和其对软件系统其他局部的影响,缺陷变更,缺陷修补是为了修复漏洞需要进行的变更。在工程前期,它是必须进行的,通常不需要从管理角度对这类变更进行审查和批准。在工程后期,如果发现错误的阶段在造成错误的阶段的后面,那么必须遵照标准的变更控制过程来进行,变更类型,2024/11/3,25,批准变,更请求,?,拒绝,记录变更请求,批准,指派给相应的开发人员,检出,变更请求评估,评估,向,SCM,提交并验证变更请求,验证,相关责任人提出变更请求,请求,变更实现,实现,验证正确的变更请求,检入,验证,变更请求关闭,关闭,通知相关责任人,关闭,变更需求,软件增强,缺陷,变更请求管理,2024/11/3,26,变更请求提交,识别变更需求,提交并记录变更申请,变更请求接收,必须建立接收提交的变更请求并进行跟踪的机制。指定接收和处理变更请求的责任人,确认变更请求,变更请求评估,评估变更风险,确定优先等级,变更请求决策,制定变更方案,变更管理的实施步骤,2024/11/3,27,变更请求实现,增强性变更需要更多的设计工作,而缺陷修复需要建立一个环境,在该环境中可以对缺陷进行重现并测试相应的解决方案,变更请求验证,增强请求的测试通常涉及验证所做变更是否满足该增强请求的需要。缺陷测试那么简单的验证开发人员的修复是否真正消除了该缺陷。,变更请求完成,由提交请求的原有请求者中止这一循环过程,2024/11/3,28,6.6 软件配置管理系统,软件配置管理系统功能:,并行开发支持:同时更改同一模块,修订版管理:跟踪变更的时间、原因、责任人,以加快问题解决,版本控制:版本重现,产品发布管理,构建管理:构建过程自动化,过程控制:实施访问平安、开发规那么,变更请求管理,代码共享,2024/11/3,29,软件配置标准,EIA Standard IS-649 National Consensus Std for Configuration Management,Aug.1995给出根本的CM规那么和业界最好的实践经验来指导标识产品配置并进行高效、有条理的软硬件产品管理,IEEE Std 1042-1987,Guide to Software Configuration Management(ANSI)描述CM规那么在软件工程工程中的应用,IEEE Std 828-1990,Standard for Software Configuration Management Plans(ANSI)是IEEE Std 1042-1987的补充,IEEE/EIA 12207.0-1996,Industry Implementation of International Standard ISO/IEC 12207:1995(ISO/IEC 12207)Standard for Information Technology Software Lifecycle Processes,Mar 1998用明确的术语定义了软件生命周期的一个公共框架,2024/11/3,30,IEEE/EIA 12207.1-1996,Lifecycle data,April 1998给出了在IEEE/EIA 12207.01996中的活动和任务执行过程中哪些数据可以记录的指导,IEEE/EIA 12207.2-1996,Implementa
展开阅读全文