1作业布置情况与上节回顾2第5讲配置管理与变更管理涉及教材内容:第12章配置管理;概要:1.什么是软件配置项?软件配置项主要有几类?分别包含哪些内容?2.基线的概念是什么?3.在实施阶段配置管理主要包括哪些活动?4.目前配置管理工具分为哪几个级别?3内容提要5.2软件项目配置管理过程5.3配置管理组织与实施5.1软件项目配置管理概念配置管理跟踪控制项目结束项目执行控制项目计划项目初始45.1软件项目配置管理概念配置的概念来自硬件,例如,计算机系统的CPU、磁盘以及外设配置等等配置管理(Configurationmanagement)是指用于控制系统一系列变化的学科。通过一系列技术,方法和手段来维护产品的历史,鉴别和定位产品独有的版本,并在产品的开发和发布阶段控制变化…通过有序管理和减少重复性工作,配置管理保证了生产的质量和效率。5软件领域引入配置的原因随着计算机软件的发展,软件开发已由最初的“程序设计阶段”——〉“软件系统阶段”——〉“软件工程阶段”。软件的复杂性日益增大,软件项目开发中可能会遇到如下问题:①开发人员使用错误的版本修改程序②开发人员未经授权修改代码或文档,或修改的结果不能及时反映到各个相关部分;5.1软件项目配置管理概念6软件领域引入配置的原因-2②人员流动,交接工作不彻底造成软件关键部件遗失;③已修复的Bug在新版本中出现④找不到某个文件的历史版本;⑤无法重新编译某个历史版本,使维护工作十分困难;⑥因协同开发或者异地开发,版本变更混乱导致整个项目失败;……5.1软件项目配置管理概念7软件领域引入配置的原因-3随着软件团队人员的增加,软件版本不断变化,开发时间的紧迫以及多平台开发环境的使用,使得软件开发面临越来越多的问题。解决这些问题的唯一途径是加强管理,配置管理是有效管理变更的手段,它是软件开发管理的核心。软件配置管理是软件项目运作的一个支撑平台,这种支撑贯穿着几乎软件的整个生命周期。人们越来越重视软件配置的管理工作。5.1软件项目配置管理概念8软件配置管理作为支撑平台5.1软件项目配置管理概念9实例:软件项目开发管理的新需求你在一家小公司做软件工程师,开始的时候,你只有一个人,配了2个助手。你们研究了一种算法(例如:图象压缩、数据加密等),编写了一个实现模块。有一天老板看到了你的演示,认为很有市场潜力,可以结合进公司正在给某行业用户正在准备开发的系统中,成为该系统的核心技术或一个别人没有的卖点。下一周,你的队伍增加到14(你的老板准备就此豪赌一把了),与你3个人的小组不同的是,公司从其他部门为你配备了系统分析师,还有文档编制员、测试员。你的核心模块已经被大量的用户功能所包装,成为一个行业应用系统,并开始给用户试用,这是你的系统的第一版。5.1软件项目配置管理概念10实例:软件项目开发管理的新需求-13个月后,公司决定把系统升级到第二版,除增加了许多新的功能外,公司决定支持多平台,同时,为了提高系统的性能和效率,准备采用第三方厂家的中间件,取代自己做的接口。第一版的缺陷修改,也要反映到第二版中。第2版经过2个多月的开发,最终推向了市场。公司的这个产品不但被用户所欢迎,也被一家大公司所看中(就像IBM收购了Lotus和Rational、Informix、Visio一样),你们的产品,正好可以填补这家大公司产品线的空缺,你所在的公司被这家公司买去了。5.1软件项目配置管理概念11实例:软件项目开发管理的新需求-2公司为你的项目组派来了产品经理、项目经理。公司决定这个产品的测试,由公司总部独立的测试部门承担。同时,公司决定把项目组增加到50人,其中有20多人并不在你所在的城市。在新公司里,产品管理、项目管理、测试、质量等等,都与你过去的环境和做法不同,特别不同的是,公司准备开发的第3版系统与公司原有的产品要进行融合,使他们看上去是一家出来的不同的兄弟和姐妹。与软件的第1版、第2版相比,你的项目管理有什么不同?5.1软件项目配置管理概念12实例:软件项目开发管理的新需求-3随着这个产品的演变,项目发生了四个变化:①系统的复杂性发生了很大变化;②用于开发该系统的项目环境发生了很大变化;③在不同的项目生命周期内,项目控制本身的要求和力度发生了很大变化;④由于组织的变化,管理流程、人员、方式发生了很大变化。前二类变化要求项目的组织和管理适应系统扩展的需要,后二种变化则要求项目管理具有适应性和灵活性。5.1软件项目配置管理概念13软件配置管理概念软件配置管理(SoftwareConfigurationManagement,SCM)是对产品进行标志、存储和控制,以维护其完整性、可追溯性以及正确性,它为软件开发提供了一套管理办法和活动原则。SCM提供了结构化的,有序化的,产品化的管理软件工程的方法。它涵盖了软件生命周期的所有领域并影响所有数据和过程。5.1软件项目配置管理概念14软件配置管理的目的它是一种标识、组织和控制修改的技术,目的是记录软件产品的演化过程确保软件开发者在软件生命周期中的各个阶段都能得到精确的产品配置。最终保证软件产品的完整性、一致性、追朔性、可控性使错误达到最小并最有效地提高生产效率。5.1软件项目配置管理概念15软件配置管理的目标SCM活动的目标是为了:①标识变更;②控制变更;③确保变更正确地实现;④向其他有关的人员报告变更。在软件工程过程中产生的所有信息项(文档、报告、程序、表格、数据)构成了软件配置。5.1软件项目配置管理概念16软件配置管理的主要功能版本管理变更管理其它(过程管理)5.1软件项目配置管理概念软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,支持和控制着整个软件生命周期。若要有效地实施软件配置管理,除了培养软件开发者的管理意识外,更重要的是使用优秀的软件配置管理工具。17配置管理给项目组带来的好处-2造成项目周期拖延或费用超过预算的原因很多,但没有好的阶段和里程碑划分无疑是其中最重要的原因。5.1软件项目配置管理概念18内容提要5.2软件项目配置管理过程5.3配置管理组织与实施5.1软件项目配置管理概念配置管理跟踪控制项目结束项目执行控制项目计划项目初始195.2软件项目配置管理过程配置管理过程围绕配置管理的5项活动进行软件项目配置的基本活动配置审计状态统计配置标识变更控制配置管理过程①配置项标识、跟踪②配置管理环境建立③基线变更管理④基线审核⑤配置状态统计⑥配置管理计划20配置项标识、跟踪——配置项的概念软件配置项(SoftwareConfigurationItem,SCI)——凡是纳入配置管理范畴的工作成果统称为配置项。以下包含了所有在软件过程中产生的信息的工作成果总称为软件配置项:①计算机程序(源代码和可执行程序)②描述计算机程序的文档(针对技术开发者和用户)③数据(包含在程序内部或外部)。④项目管理的有关文件、信息记录等。软件配置管理的对象就是软件配置项(SCI)。5.2软件项目配置管理过程21配置项标识、跟踪——软件配置项的类型及属性配置项主要有两大类:属于产品组成部分的工作成果,即软件产品,例如源代码、需求文档、设计文档、测试用例等等。在管理过程中产生的文档,例如各种计划、状态报告等等,这些文档虽然不是产品的组成部分,但是值得保存。每个配置项的主要属性有:名称、标识符、文件状态、版本、作者、日期等。所有配置项都被保存在配置库里,确保不会混淆、丢失;配置项及其历史记录反映了软件的演化过程。5.2软件项目配置管理过程22配置项标识、跟踪——软件配置项的状态变迁配置项的状态有三种:“草稿”(Draft)、“正式发布”(Released)和“正在修改”(Changing)。配置项刚建立时其状态为“草稿”;配置项通过评审(或审批)后,其状态变为“正式发布”;此后若更改配置项,必须依照“变更控制流程”执行,其状态变为“正在修改”。当配置项修改完毕并重新通过评审(或审批)时,其状态又变为“正式发布”,如此循环。5.1软件项目配置管理概念23配置项标识、跟踪——软件部件分解图配置标识就是查询、识别和确定配置管理对象。配置管理对象呈现为一种层次结构,因此,为了标识配置管理的对象,我们需要对软件系统进行分解。5.2软件项目配置管理过程24配置项标识、跟踪——配置项标识的主要任务将软件项目中需要进行控制的部分拆分成软件配置项。对所有配置项都应按照相关规定建立唯一的标识。建立相互间的对应关系,进行系统的跟踪和版本控制,以确保项目过程中的产品与需求和规格的要求相一致。在引入软件配置管理工具进行管理后,这些配置项都应以一定的目录结构保存在配置库中。最终可根据要求将配置项组合生成适用于不同应用环境的正确的软件产品评估版本。5.2软件项目配置管理过程25配置项标识、跟踪——配置项的拆分例子设计规格说明书数据设计描述总体结构设计描述模块设计描述界面设计描述界面设计1界面设计2……对象描述(某医疗网站)需求规格SCI辅助功能.doc性能.doc产品目录.doc医务管理.doc医疗专业区.doc首页.doc5.2软件项目配置管理过程26最基本的配置项管理——文档软件产品比较容易标识,而文档相对比较复杂。开发文档——文档在软件开发人员、软件管理人员、维护人员、用户以及计算机之间,起到了多种的桥梁作用。软件开发人员在软件生命的各个阶段中,以文档作为前阶段工作成果的体现和后阶段工作的依据,这个作用是显而易见的。管理文档或项目文档——软件开发过程中软件开发人员需制定一些工作计划或工作报告,这些计划和报告都要提供给管理人员,并得到必要的支持。管理人员则可通过这些文档了解软件开发项目安排、进度、资源使用和成果等。用户文档——软件开发人员需为用户了解软件的使用、操作和维护提供详细的资料。5.2软件项目配置管理过程27文档分类5.2软件项目配置管理过程文档用户文档用户手册操作手册维护修改建议软件需求(规格)说明书开发文档软件需求(规格)说明书数据要求说明书概要设计说明书详细设计说明书可行性研究报告项目开发计划管理文档项目开发计划测试计划测试报告开发进度月报开发总结报告28文档的生成阶段5.2软件项目配置管理过程阶段文档可行性研究与计划需求分析设计代码编写测试运行与维护可行性研究报告项目开发计划软件需求说明数据要求说明概要设计说明详细设计说明测试计划用户手册操作手册测试分析报告开发进度月报项目开发总结维护修改建议29配置管理环境建立建立配置管理库,简称配置库。软件配置管理库是用来存储所有基线配置项及相关文件的等内容的系统,是在软件产品的整个生存期中建立和维护软件产品完整性的主要手段。开发库开发周期的某个阶段,存放与该阶段工作有关系的信息;开发库也称为工作空间受控库开发周期的某个阶段结束时,存放做为该阶段产品及其相关的信息,配置管理对其中的信息进行管理,也称配置库产品库存放最终产品的软件库5.2软件项目配置管理过程30配置管理环境建立——受控操作配置库是集中控制的文件库,提供对所存储文件的版本控制。从受控库导出的文件自动被锁定直到文件重新被导入,一个版本号自动与新版本文件相关联。配置库中文件不能更改,任何更改都被视为创建了一个新版本文件。文件的所有配置管理信息和文件的内容都存储在配置库中。5.2软件项目配置管理过程31版本与版本控制——概念、目的版本与版本控制——软件的每一个版本都是源代码、文档、数据以及相关的系统环境的一个收集,且各个版本都可能由不同的变种组成。版本控制的目的是按照一定的规则保存配置项的所有版本,避免发生版本丢失或混淆等现象,并且可以快速准确地查找到配置项的任何版本。版本控制是SCM的基础,它管理并保护开发者的软件资源。使混乱的开发状态变得有序!5.2软件项目配置管理过程32版本与版本控制——版本控制规则处于“草稿”状态的配置项的版本号格式为:0.YZYZ数字范围为01-99。随着草稿的不断完善,“YZ”的取值应递增。