2019/9/71第八章软件项目的配置管理2019/9/728.1软件配置及其管理的概念8.2配置管理活动和流程8.3配置管理需求8.4版本管理8.5变更管理8.6配置状态监测与报告8.7基于配置管理的软件项目管理8.8配置管理的技术手段和工具第八章•目录2019/9/738.1软件配置及其管理的概念8.2配置管理活动和流程8.3配置管理需求8.4版本管理8.5变更管理8.6配置状态监测与报告8.7基于配置管理的软件项目管理8.8配置管理的技术手段和工具第八章•目录2019/9/748.1.1CMM2的配置管理概念8.1.2IEEE的配置管理定义8.1.3配置管理概述8.1.4配置管理活动的作用8.1软件配置及其管理的概念2019/9/75配置的概念配置的概念来自硬件软件工程师是如何处理接口的?广而言之:软件的变化可以发生在一秒钟内软件的变化可以发生在每一秒钟软件开发过程下一秒钟是不确定的情况将会怎样?怎么办?2019/9/76软件项目开发管理的新需求你在一家小公司做软件工程师,开始的时候,你只有一个人,配了2个助手。你们研究了一种算法(例如:图象压缩、数据加密等),编写了一个实现模块。有一天老板看到了你的演示,认为很有市场潜力,可以结合进公司正在给某行业用户正在准备开发的系统中,成为该系统的核心技术或一个别人没有的卖点。下一周,你的队伍增加到14(你的老板准备就此豪赌一把了),与你3个人的小组不同的是,公司从其他部门为你配备了系统分析师,还有文档编制员、测试员。你的核心模块已经被大量的用户功能所包装,成为一个行业应用系统,并开始给用户试用,这是你的系统的第一版。3个月后,公司决定把系统升级到第二版,除增加了许多新的功能外,公司决定支持多平台,同时,为了提高系统的性能和效率,准备采用第三方厂家的中间件,取代自己做的接口。第一版的缺陷修改,也要反映到第二版中。第2版经过2个多月的开发,最终推向了市场。公司的这个产品不但被用户所欢迎,也被一家大公司所看中(就像IBM收购了Lotus和Rational、Informix一样),你们的产品,正好可以填补这家大公司产品线的空缺,你所在的公司被这家公司买去了。2019/9/77公司为你的项目组派来了产品经理、项目经理。公司决定这个产品的测试,由公司总部独立的测试部门承担。同时,公司决定把项目组增加到50人,其中有20多人并不在你所在的城市。在新公司里,产品管理、项目管理、测试、质量等等,都与你过去的环境和做法不同,特别不同的是,公司准备开发的第3版系统与公司原有的产品要进行融合,使他们看上去是一家出来的不同的兄弟和姐妹。与软件的第1版、第2版相比,你的项目管理有什么不同?随着这个产品的演变,项目发生了四个变化:(1)系统的复杂性发生了很大变化;(2)用于开发该系统的项目环境发生了很大变化;(3)在不同的项目生命周期内,项目控制本身的要求和力度发生了很大变化;(4)由于组织的变化,管理流程、人员、方式发生了很大变化。前二类变化要求项目的组织和管理适应系统扩展的需要,后二种变化则要求项目管理具有适应性和灵活性。2019/9/78缺乏管理所造成的问题软件开发人员之间缺乏必要的交流产品升级和维护所必需的程序和文档非常混乱开发过程中的人员流动经常发生因管理不善致使未经测试的软件加入到产品中项目开发状态不清楚软件生产达不到规模化2019/9/79软件配置管理SCM(SoftwareConfigurationManagement)软件配置管理(SCM)是指在开发过程中各阶段,管理计算机程序演变的学科,它作为软件工程的关键元素,已经成为软件开发和维护的重要组成部分……SCM提供了结构化的,有序化的,产品化的管理软件工程的方法。它涵盖了软件生命周期的所有领域并影响所有数据和过程。配置管理是指用于控制系统一系列变化的学科。通过一系列技术,方法和手段来维护产品的历史,鉴别和定位产品独有的版本,并在产品的开发和发布阶段控制变化。通过有序管理和减少重复性工作,配置管理保证了生产的质量和效率。2019/9/710SCM通过以下方法,强化软件的可靠性和质量:(1)提供用于识别和控制文档、代码、接口、数据库的结构框架,适用于软件开发生命周期的所有阶段;(2)全面支撑某一特定开发及维护工作方法,能够适应各种类型的需求、标准、政策、组织机构以及相关的管理策略;(3)针对特定的基线状态、变更控制、测试、发布版本或审查活动,生成相应的管理信息和产品信息。因此,从某种意义上讲,SCM本质上是变更的管理。SCM使软件产品和过程的变更变为受控的和可预见的,它要求并在适当的工具支持下能够做到这样几点:(1)谁做的变更?(2)软件有什么变更?(3)什么时间做的变更?(4)为何要变更?2019/9/711软件项目的配置管理在软件开发过程中,变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。因此,从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。不懂软件项目的配置管理,就不懂软件开发管理不对软件项目进行配置管理,就没有进行软件项目开发管理2019/9/712软件配置管理是CMM2中6个关键过程域的第6个关键域。CMM2认为,SCM的目的是为了建立和维护软件开发过程中各种制品的完整性和一致性,包括以下内容:对软件产品配置的标志和识别系统地控制对处于配置管理下的各种软件制品的修改和更新维护软件开发过程中的各种制品的一致性和可跟踪性8.1.1CMM2的配置管理概念2019/9/713SCM的目标目标1:软件配置管理活动被定义和计划目标2:软件开发过程中的制品被识别、控制和管理目标3:对于处于配置管理下的软件制品的修改被控制目标4:与软件制品相关的项目组和成员应该被通知制品的目前状态和被修改的信息从对配置目的的定义可以看出,CMM2的配置管理应包括这样一些活动:标识给定时间点的软件配置(即所选择的工作产品及其描述),系统地控制这些配置的更改,并在软件生命周期中保持这些配置的完整性和可跟踪性。CMM2认为,受控于配置管理的工作产品,包括交付给用户的软件产品(如:代码等),以及生成软件产品所需要的有关项(如:项目管理文件)。CMM2的配置管理活动最主要的内容是:建立软件基线库,该库存储开发的软件基线。通过软件配置管理的更改控制和配置审核功能,系统地控制基线变更和由软件基线库生成的软件产品版本。2019/9/714要达到CMM规定的SCM要求所需具备的能力1.具有对软件基线产品有管理权限的组织已经建立,例如:软件配置管理委员会;2.协调和实现软件配置管理的组织已经建立;3.为进行软件配置管理所需要的各项资源已经分配;4.软件配置管理组织里的成员已经接受了软件配置目标、流程、方法方面的培训;5.软件项目组或是其他的相关的部门经过培训,可以执行他们的软件配置管理活动;2019/9/715CMM中对SCM规定的活动1.根据文档化的流程,项目软件配置管理计划已准备完毕;2.文档化的已获批准的软件配置管理计划可用作以后软件配置管理活动的基础;3.软件配置管理库已经创建,并可用作进入基线的软件制品的存贮库;4.处于软件配置管理下的软件制品被标志和识别;5.对于配置项的变更请求和问题报告被初始化、计划、评审、批准并根据文化化的流程对其进行跟踪;2019/9/7166.对于进入基线的制品的修改必须遵循文档化的流程;7.发布的产品必须从软件配置库中取出,并且产品发布的流程须依照文档化的流程和规定;8.根据文档化的流程和规定,软件配置项的状态被记录和跟踪;9.记录软件配置管理活动和软件基线内容的报告被建立,并通知受到影响的项目组和个人;10.根据文档化的流程进行软件制品基线的评审;CMM中对SCM规定的活动2019/9/717组织规定和相关责任项目级配置管理项目配置经理(ProjectConfigurationManager)与软件配置管理计划变更控制委员会(ChangeControlBoard)组织级配置管理组织配置管理库(OrganizationalConfigurationManagementCell)1.负责项目完成后的软件配置管理活动2.管理组织级的文档2019/9/718IEEE标准729-1983就配置管理的内容进行了规范的定义:(1)标识:识别产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。(2)控制:通过建立产品基线,控制软件产品的发布和在整个软件生命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。(3)状态统计:记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文件的问题。(4)审计和审查:确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。(5)生产:对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。(6)过程管理:确保软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。(7)小组协作:控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程序员所做的修改都已被加入到新版本的产品中的问题。8.1.2IEEE的配置管理定义2019/9/719配置标识或者又称为配置需求,包括标识软件系统的结构,标识独立部件,并使它们是可访问的。配置标识的目的,是在整个生命周期中标识系统各部件并提供对软件过程及其软件产品的跟踪能力。它回答:什么是受控的?配置变更控制包括在软件生命周期中控制软件产品的发布和变更,目的是建立确保软件产品质量的机制。它回答:受控产品怎样变更?谁控制变更?何时接受,恢复,验证变更?配置状态统计包括记录和报告变更过程,目标是不间断记录所有基线项的状态和历史,并进行维护,它解决以下问题:系统已经做了什么变更?此问题将会对多少个文件产生影响?配置变更控制是针对软件产品,状态统计针对软件过程。因此,二者的统一就是对软件开发(产品、过程)的变更控制。配置审核将验证软件产品的构造是否符合需求、标准、或合同的要求,目的是根据SCM的过程和程序,验证所有的软件产品已经产生并有正确标识和描述,所有的变更需求都已解决。它回答:系统和需求是否吻合?是否所有变更都是在版本控制下?8.1.3SCM的四大功能领域2019/9/720SCM从应用层次上可以从低到高分为三级:版本控制、以开发者为中心、过程驱动。版本控制主要应用于个人独立开发或小组开发,它可以控制任何文件的版本、实现分支和归并功能、进行文本比较、标记注释和版本报告信息,主要工具有MS的VisualSourceSafe及IntersolvPVCS。以开发者为中心主要应用于部门级开发,它可用于软件维护、不断增加的开发任务、并行开发、QA及测试,它面向大型团队、利于交流、能最大限度地利用人力资源,主要工具为RationalClearCase及MKSSourceIntegrity。过程驱动主要使用于企业级开发,着重解决新的工具引入、IT审核、管理报告、复杂的生命周期、应用工具包、集成解决方案、资料库等问题,实现真正规范的团队开发,主要工具为PlatinumTechnologyCCC/Harvest。SCM的三个应用层次2019/9/721SCM中的专业术语配置(Configuration)与配置项(ConfigurationItem)在软件开发过程中生成各种制品的总和叫做这个项目的软件配置[RogerS.Pressman,1997]计算机程序,包括源代码和可执行程序与计算机程序相对应的各种文档计算机数据,包括计算机程序中包含的数据和系统初始化数据2019/9/722SCM中的专业术语基线