1、软件配置管理软件配置管理软件配置管理软件配置管理什么是软件配置管理什么是软件配置管理 软件配置管理软件配置管理(Software Configuration Management, SCM)是指通过执行版本控制、变更)是指通过执行版本控制、变更控制等规程,以及使用合适的配置管理软件,来保控制等规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。证所有配置项的完整性和可跟踪性。配置管理是对配置管理是对工作成果的一种有效保护。工作成果的一种有效保护。v软件配置管理软件配置管理(SCM)(SCM)是贯穿于整个软件过程中的是贯穿于整个软件过程中的保护保护性活动性活动。vSCMSCM目
2、的是保证软件项目生成的产品在软件生命周期目的是保证软件项目生成的产品在软件生命周期中的中的完整性和一致性完整性和一致性. .v因为变化可能发生在任意时间,因为变化可能发生在任意时间,SCM SCM 活动被设计来活动被设计来: : (1) (1)标识变化标识变化; ; (2) (2)控制变化控制变化; ; (3) (3)保证变化被适当地实现保证变化被适当地实现; ; (4) (4)向其他可能有兴趣的人员报告变化。向其他可能有兴趣的人员报告变化。v软件配置管理使改进变化可以更容易地被适应,并软件配置管理使改进变化可以更容易地被适应,并减少当变化必须发生时所需花费的工作量减少当变化必须发生时所需花费
3、的工作量。v明确地区分明确地区分软件维护软件维护和和软件配置管理软件配置管理是很重要的。是很重要的。v维护维护是发生在软件已经被交付给客户,并投入运行是发生在软件已经被交付给客户,并投入运行后的一系列软件工程活动,而后的一系列软件工程活动,而软件配置管理软件配置管理则是当则是当软件项目开始时就开始,并且仅当软件退出运行后软件项目开始时就开始,并且仅当软件退出运行后才终止的一组跟踪和控制活动。才终止的一组跟踪和控制活动。配置管理与配置管理与任何一位项目成员任何一位项目成员都有关系,因都有关系,因为每个人都会产生工作成果。为每个人都会产生工作成果。配置管理是否有成效取决于三个要素:配置管理是否有成
4、效取决于三个要素:人、人、规范、工具规范、工具 软件配置管理是软件配置管理是CMM2CMM2中中6 6个关键过程域的第个关键过程域的第6 6个关键域个关键域。CMM2CMM2认为,认为,SCM SCM 的目的是为了建的目的是为了建立和维护软件开发过程中各种制品的完整性立和维护软件开发过程中各种制品的完整性和一致性,包括以下内容:和一致性,包括以下内容:对软件产品配置的标志和识别对软件产品配置的标志和识别系统地控制对处于配置管理下的各种软系统地控制对处于配置管理下的各种软件制品的修改和更新件制品的修改和更新维护软件开发过程中的各种制品的一致维护软件开发过程中的各种制品的一致性和可跟踪性性和可跟踪
5、性CMM2的配置管理概念的配置管理概念 SCM 的目标的目标v 目标目标1: 软件配置管理活动被定义和计划软件配置管理活动被定义和计划v 目标目标2: 软件开发过程中的制品被识别、控制软件开发过程中的制品被识别、控制和管理和管理v 目标目标3: 对于处于配置管理下的软件制品的修对于处于配置管理下的软件制品的修改被控制改被控制v 目标目标4: 与软件制品相关的项目组和成员应该与软件制品相关的项目组和成员应该被通知制品的目前状态和被修改的信息被通知制品的目前状态和被修改的信息 SCM SCM 的目标的目标 要达到要达到 CMM CMM 规定的规定的 SCMSCM要求所需具备的能力要求所需具备的能力
6、:1.1.具有对软件基线产品有具有对软件基线产品有管理管理权限的权限的组织组织已经已经建立,例如:软件配置管理委员会;建立,例如:软件配置管理委员会;2.2.协调和实现协调和实现软件软件配置管理配置管理的组织已经建立;的组织已经建立;3.3.为进行软件配置管理所需要的各项为进行软件配置管理所需要的各项资源资源已经已经分配;分配;4.4.软件软件配置管理配置管理组织里的成员已经接受了软件组织里的成员已经接受了软件配置目标、流程、方法方面的配置目标、流程、方法方面的培训培训;5.5.软件软件项目组项目组或是其他的相关的部门经过或是其他的相关的部门经过培训培训,可以执行他们的软件配置管理活动;可以执
7、行他们的软件配置管理活动;CMM CMM 中对中对SCM SCM 规定的活动规定的活动1.1.根据文档化的流程,根据文档化的流程,项目软件配置管理计项目软件配置管理计划划已准备完毕;已准备完毕;2.2.文档化的文档化的已获批准已获批准的软件配置管理计划可的软件配置管理计划可用作以后软件配置管理活动的基础;用作以后软件配置管理活动的基础;3.3.软件配置管理库软件配置管理库已经创建,并可用作进入已经创建,并可用作进入基线的软件制品的存贮库;基线的软件制品的存贮库;4.4.处于软件配置管理下的软件制品处于软件配置管理下的软件制品被标志和被标志和识别识别;5.5.对于配置项的对于配置项的变更请求和问
8、题报告变更请求和问题报告被初始被初始化、计划、评审、批准并根据文化化的流化、计划、评审、批准并根据文化化的流程对其进行跟踪;程对其进行跟踪;6. 对于对于进入基线的制品的修改进入基线的制品的修改必须遵循文档化的必须遵循文档化的流程;流程;7. 发布发布的产品必须从软件配置库中取出,并且产的产品必须从软件配置库中取出,并且产品发布的流程须依照文档化的流程和规定;品发布的流程须依照文档化的流程和规定;8. 根据文档化的流程和规定,根据文档化的流程和规定,软件配置项的状态软件配置项的状态被记录和跟踪;被记录和跟踪;9. 记录软件配置管理活动和软件基线内容的记录软件配置管理活动和软件基线内容的报告报告
9、被建立,并通知受到被建立,并通知受到影响影响的项目组和个人;的项目组和个人;10.根据文档化的流程进行软件制品根据文档化的流程进行软件制品基线的评审基线的评审;CMM CMM 中对中对SCM SCM 规定的活动规定的活动组织规定和相关责任组织规定和相关责任v项目级配置管理项目级配置管理项目配置经理项目配置经理(Project Configuration Manager) 与软件配置管理计划与软件配置管理计划变更控制委员会变更控制委员会(Change Control Board)v组织级配置管理组织级配置管理组织配置管理库组织配置管理库(Organizational Configuration
10、Management Cell)1. 负责项目完成后的软件配置管理活动负责项目完成后的软件配置管理活动2. 管理组织级的文档管理组织级的文档IEEEIEEE标准标准729-1983729-1983就配置管理的内容进行了规范的定义:就配置管理的内容进行了规范的定义:(1 1)标识:标识:识别产品的结构、产品的构件及其类型,为其分配唯一的识别产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。标识符,并以某种形式提供对它们的存取。(2 2)控制:控制:通过建立产品基线,控制软件产品的发布和在整个软件生通过建立产品基线,控制软件产品的发布和在整个软件生命周期中对软件产
11、品的修改。例如,它将解决哪些修改会在该产品的命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。最新版本中实现的问题。(3 3)状态统计:状态统计:记录并报告构件和修改请求的状态,并收集关于产品记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文件的问题。件的问题。(4 4)审计和审查:审计和审查:确认产品的完整性并维护构件间的一致性,即确保确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件集合。例如,它将解决目前发布的产品所产品是一
12、个严格定义的构件集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。用的文件的版本是否正确的问题。(5 5)生产:生产:对产品的生产进行优化管理。它将解决最新发布的产品应对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。由哪些版本的文件和工具来生成的问题。(6 6)过程管理:过程管理:确保软件组织的规程、方针和软件周期得以正确贯彻确保软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。(7 7)小组协作:小组协作:控制开发统一产品的
13、多个开发人员之间的协作。例如,控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程序员所做的修改都已被加入到新版本的产品它将解决是否所有本地程序员所做的修改都已被加入到新版本的产品中的问题。中的问题。IEEEIEEE的配置管理定义的配置管理定义 CMM2CMM2的定义比较抽象,的定义比较抽象,IEEEIEEE的定义比较具体。结的定义比较具体。结合各体系的定义和要求,我们下面具体来讨论配合各体系的定义和要求,我们下面具体来讨论配置管理的概念。置管理的概念。 配置管理功能概述配置管理功能概述 配置标识配置标识或者又称为配置需求,包括标识软件系统的结构,标识独立或者又称为配置需求,
14、包括标识软件系统的结构,标识独立部件,并使它们是可访问的。配置标识的目的,是在整个生命周期中部件,并使它们是可访问的。配置标识的目的,是在整个生命周期中标识系统各部件并提供对软件过程及其软件产品的跟踪能力。标识系统各部件并提供对软件过程及其软件产品的跟踪能力。它回答:它回答:什么是受控的?什么是受控的? 配置变更控制配置变更控制包括在软件生命周期中控制软件产品的发布和变更,目包括在软件生命周期中控制软件产品的发布和变更,目的是建立确保软件产品质量的机制。的是建立确保软件产品质量的机制。它回答:受控产品怎样变更?谁它回答:受控产品怎样变更?谁控制变更?何时接受,恢复,验证变更?控制变更?何时接受
15、,恢复,验证变更?配置状态统计配置状态统计包括记录和报告变更过程,目标是不间断记录所有基线包括记录和报告变更过程,目标是不间断记录所有基线项的状态和历史,并进行维护,项的状态和历史,并进行维护,它解决以下问题:系统已经做了什么它解决以下问题:系统已经做了什么变更?此问题将会对多少个文件产生影响?变更?此问题将会对多少个文件产生影响?配置变更控制是针对软件配置变更控制是针对软件产品,状态统计针对软件过程。因此,二者的统一就是对软件开发产品,状态统计针对软件过程。因此,二者的统一就是对软件开发(产品、过程)的变更控制。(产品、过程)的变更控制。配置审核配置审核将验证软件产品的构造是否符合需求、标准
16、、或合同的要求,将验证软件产品的构造是否符合需求、标准、或合同的要求,目的是根据目的是根据SCM的过程和程序,验证所有的软件产品已经产生并有正的过程和程序,验证所有的软件产品已经产生并有正确标识和描述,所有的变更需求都已解决。确标识和描述,所有的变更需求都已解决。它回答:系统和需求是否它回答:系统和需求是否吻合?是否所有变更都是在版本控制下?吻合?是否所有变更都是在版本控制下? SCMSCM的四大功能领域的四大功能领域SCMSCM从应用层次上可以从低到高分为三级:版本控制、以开从应用层次上可以从低到高分为三级:版本控制、以开发者为中心、过程驱动。发者为中心、过程驱动。版本控制版本控制主要应用于
17、个人独立开发或小组开发,它可以控主要应用于个人独立开发或小组开发,它可以控制任何文件的版本、实现分支和归并功能、进行文本比较、制任何文件的版本、实现分支和归并功能、进行文本比较、标记注释和版本报告信息,主要工具有标记注释和版本报告信息,主要工具有MSMS的的Visual Visual SourceSafeSourceSafe及及Intersolv PVCSIntersolv PVCS。 以开发者为中心以开发者为中心主要应用于部门级开发,它可用于软件维主要应用于部门级开发,它可用于软件维护、不断增加的开发任务、并行开发、护、不断增加的开发任务、并行开发、QAQA及测试,它面向及测试,它面向大型团
18、队、利于交流、能最大限度地利用人力资源,主要大型团队、利于交流、能最大限度地利用人力资源,主要工具为工具为Rational ClearCaseRational ClearCase及及MKS Source IntegrityMKS Source Integrity。过程驱动过程驱动主要使用于企业级开发,着重解决新的工具引入、主要使用于企业级开发,着重解决新的工具引入、ITIT审核、管理报告、复杂的生命周期、应用工具包、集成审核、管理报告、复杂的生命周期、应用工具包、集成解决方案、资料库等问题,实现真正规范的团队开发,主解决方案、资料库等问题,实现真正规范的团队开发,主要工具为要工具为Platin
19、um Technology CCC/HarvestPlatinum Technology CCC/Harvest。SCMSCM的三个应用层次的三个应用层次 SCM SCM 中的专业术语中的专业术语v 配置配置(Configuration)与与配置项配置项(Configuration Item)v 在软件开发过程中生成各种制品的总和叫做这个在软件开发过程中生成各种制品的总和叫做这个项目的软件配置项目的软件配置 Roger S. Pressman, 1997计算机程序,包括源代码和可执行程序计算机程序,包括源代码和可执行程序与计算机程序相对应的各种文档与计算机程序相对应的各种文档计算机数据,包括计
20、算机程序中包含的数据和计算机数据,包括计算机程序中包含的数据和系统初始化数据系统初始化数据v基线基线项目开发过程的制品经过正式评审并被相关人员项目开发过程的制品经过正式评审并被相关人员一致同意,可以作为以后项目开发的基础一致同意,可以作为以后项目开发的基础。对已。对已经确定为基线的制品的修改必须要通过正式的变经确定为基线的制品的修改必须要通过正式的变更控制流程。更控制流程。在软件工程环境中,基线是指在软件开发过程中在软件工程环境中,基线是指在软件开发过程中的里程碑,这些里程碑的标志是一项或多项经过的里程碑,这些里程碑的标志是一项或多项经过正式的技术评审并一致认同的软件制品的提交。正式的技术评审
21、并一致认同的软件制品的提交。v配置数据库配置数据库(软件制品基线库)(软件制品基线库) 项目建立和访问软件制品库,这个制品库主项目建立和访问软件制品库,这个制品库主要用来对保存配置项和一些与软件配置管理要用来对保存配置项和一些与软件配置管理相关的记录。相关的记录。 目前比较好的配置管理工具:目前比较好的配置管理工具:Clearcase Clearcase (Rational), Notes/Domino (Lotus), PVCS (Rational), Notes/Domino (Lotus), PVCS (Merant) and VSS (Microsoft).(Merant) and V
22、SS (Microsoft).配置管理的商业理念配置管理的商业理念 u企业的商业需求决定了配置管理的力度,企业的商业需求决定了配置管理的力度,我们不必追求完美无缺的配置管理,而是我们不必追求完美无缺的配置管理,而是让开发团队恰好够用就行让开发团队恰好够用就行,并将为配置管,并将为配置管理所付出的代价控制在预算之内。理所付出的代价控制在预算之内。 u富有成效的配置管理的特征:富有成效的配置管理的特征: 1.1. 任何项目成员任何项目成员都要对其工作成果进行配置管都要对其工作成果进行配置管理,应当养成良好的习惯。不必付出过多的理,应当养成良好的习惯。不必付出过多的精力,最低要求是保证重要工作成果不
23、发生精力,最低要求是保证重要工作成果不发生混乱。混乱。 2.2. 配置管理规范配置管理规范应当清晰明了,便于执行,不应当清晰明了,便于执行,不必在细节方面要求太多,不给项目人员添加必在细节方面要求太多,不给项目人员添加过多的负担,不使人厌烦。过多的负担,不使人厌烦。 最大的麻烦是工作成果被覆盖。最大的麻烦是工作成果被覆盖。如果不采用配置管理软件来保存工作成果如果不采用配置管理软件来保存工作成果的历史版本的话,人们在同一个文件上修改内的历史版本的话,人们在同一个文件上修改内容,保存之后,那么新的内容覆盖了老的内容。容,保存之后,那么新的内容覆盖了老的内容。如果没有软件配置管理,将有什么坏处?如果
24、没有软件配置管理,将有什么坏处?多数情况下新的内容比老的内容好多数情况下新的内容比老的内容好,覆盖了也没关系。但是总有不少意,覆盖了也没关系。但是总有不少意外,例如外,例如程序员修改了老程序员之后程序员修改了老程序员之后,突然发现新程序是错误的,而老程,突然发现新程序是错误的,而老程序却是对的,可是老程序被新程序覆序却是对的,可是老程序被新程序覆盖了,再也无法恢复。盖了,再也无法恢复。怎么办呢?还能怎么办,怎么办呢?还能怎么办,只好重新写老只好重新写老程序再覆盖新程序,可是过一阵子又发程序再覆盖新程序,可是过一阵子又发现新程序也又可取之处,这时却无法恢现新程序也又可取之处,这时却无法恢复新程序
25、了,只好重新写新程序再覆盖复新程序了,只好重新写新程序再覆盖老程序老程序,如果你经常碰到这样的事情如果你经常碰到这样的事情,你会发疯的。,你会发疯的。为了避免成果被覆盖,很多人采用最原为了避免成果被覆盖,很多人采用最原始的始的手工管理版本手工管理版本的方式,例如给文件加后的方式,例如给文件加后缀缀“-01”、“-02”以表示版本。天长日久,以表示版本。天长日久,工作目录下就会有一堆带数字后缀的文件,工作目录下就会有一堆带数字后缀的文件,而且你自己也忘记了数字后缀代表什么内容,而且你自己也忘记了数字后缀代表什么内容,管理起来非常麻烦。管理起来非常麻烦。 u最直接的好处是最直接的好处是工作成果的所
26、有版本工作成果的所有版本都被保留着,不会丢失也不会被覆盖都被保留着,不会丢失也不会被覆盖,你不会气得发疯了。你不会气得发疯了。 使用软件配置管理,将有什么好处?使用软件配置管理,将有什么好处?u如今硬盘的存储空间价格低廉,用于如今硬盘的存储空间价格低廉,用于保存历史版本的存储空间的成本可以忽保存历史版本的存储空间的成本可以忽略不计。略不计。u如果你保存了工作成果的如果你保存了工作成果的100个历史个历史版本,哪怕版本,哪怕99版本都是版本都是“垃圾垃圾”,只有,只有一个版本里有一个版本里有“黄金黄金”,那也值了。,那也值了。u所以你尽管放心保存历史版本好了,所以你尽管放心保存历史版本好了,累的
27、是计算机又不是你,你怕什么。累的是计算机又不是你,你怕什么。间接的好处是,间接的好处是,项目的所有工作成果被项目的所有工作成果被完整地保留下来,这是企业的知识财富,可以完整地保留下来,这是企业的知识财富,可以被人们很好地分享利用。而且减少了人员辞职被人们很好地分享利用。而且减少了人员辞职造成的损失,企业老板可以放心很多了造成的损失,企业老板可以放心很多了。因为如果没有配置管理的话,人走了,因为如果没有配置管理的话,人走了,即使他把成果刻录成光盘交给接收者,即使他把成果刻录成光盘交给接收者,别人也搞不清楚那些成果的演化过程。别人也搞不清楚那些成果的演化过程。 事在人为事在人为 u配置管理的方法是
28、成熟的,而且相配置管理的方法是成熟的,而且相应的软件工具也是成熟的,基本上应的软件工具也是成熟的,基本上不存在看不懂、不会用的问题。不存在看不懂、不会用的问题。u配置管理的执行效果如何,完全应配置管理的执行效果如何,完全应了中国的一句老话了中国的一句老话“事在人为事在人为”啊啊。 妨碍配置管理的主要问题是人们妨碍配置管理的主要问题是人们“嫌麻烦嫌麻烦”(还有侥幸心理)。(还有侥幸心理)。在没有出乱子的情况下,执行版本在没有出乱子的情况下,执行版本控制看起来有些麻烦。控制看起来有些麻烦。 每次修改工作成果的时候,总是每次修改工作成果的时候,总是先先check outcheck out,然后再修改
29、,最后还要,然后再修改,最后还要check incheck in,多了前后两步。,多了前后两步。其实其实check outcheck out和和check incheck in两步操作两步操作只需花费几秒钟,而且不费脑子,凭良心只需花费几秒钟,而且不费脑子,凭良心说根本没有添加麻烦,仅仅是个人感觉不说根本没有添加麻烦,仅仅是个人感觉不爽快而已。爽快而已。然而不执行版本控制的话,万一发生然而不执行版本控制的话,万一发生工作成果被覆盖或丢失等问题,那么麻烦工作成果被覆盖或丢失等问题,那么麻烦就大了。就大了。 配置项配置项 u软件研发和管理过程中会产生许许多多的工作软件研发和管理过程中会产生许许多多
30、的工作成果,例如文档、程序和数据等,它们都应当被成果,例如文档、程序和数据等,它们都应当被妥善地保管起来,以便查阅和修改。妥善地保管起来,以便查阅和修改。u如果把所有文件一股脑地塞进计算机里,那么如果把所有文件一股脑地塞进计算机里,那么使用起来肯定很麻烦。使用起来肯定很麻烦。u毫无疑问,人们应当将文件毫无疑问,人们应当将文件分门别类分门别类、有条理、有条理地保存起来。地保存起来。u凡是纳入配置管理范畴的工作成果统称为凡是纳入配置管理范畴的工作成果统称为配置项(配置项(Configuration ItemConfiguration Item,CICI)。u软件配置项软件配置项(Software
31、Configuration Items(Software Configuration Items,SCI)SCI)u配置项主要有两大类:配置项主要有两大类:1.1.属于产品组成部分的属于产品组成部分的工作成果工作成果,例如源代码、需,例如源代码、需求文档、设计文档、测试用例等等求文档、设计文档、测试用例等等2.2.在管理在管理过程中产生的文档过程中产生的文档例如各种计划、监控报例如各种计划、监控报告等等,这些文档虽然不是产品的组成部分,但告等等,这些文档虽然不是产品的组成部分,但是值得保存。是值得保存。标识软件配置项标识软件配置项v软件配置项分为基本对象和复合对象软件配置项分为基本对象和复合对
32、象:v基本对象:分析基本对象:分析设计设计编码编码测试时所建立的测试时所建立的”文文档单元档单元”,如如,需求规格说明中的一节、一个模块的需求规格说明中的一节、一个模块的源代码、一组测试用例。源代码、一组测试用例。v复合对象:基本对象或其他复合对象的一个集合。复合对象:基本对象或其他复合对象的一个集合。如,如,“设计规格说明书设计规格说明书”是一个复合对象、一些基是一个复合对象、一些基本对象,如本对象,如“数据模型数据模型”、“模块模块N”的集合。的集合。v每个配置项可用一组信息来唯一地标识它。每个配置项可用一组信息来唯一地标识它。每个配置项的每个配置项的主要属性主要属性有:有:名称、标识符、
33、文件状态、版本、作者、名称、标识符、文件状态、版本、作者、日期等。日期等。所有配置项都被保存在配置库里,确保不所有配置项都被保存在配置库里,确保不会混淆、丢失。会混淆、丢失。配置项及其历史记录反映了软件的演化过配置项及其历史记录反映了软件的演化过程。程。基线基线 u由正式技术评审而得到的软件配置项的正式文由正式技术评审而得到的软件配置项的正式文本构成了基线本构成了基线。u基线(基线(BaselineBaseline)由一组配置项组成,这些配由一组配置项组成,这些配置项构成了一个相对稳定的逻辑实体置项构成了一个相对稳定的逻辑实体。u基线中的配置项被基线中的配置项被“冻结冻结”了,不能再被任何了,
34、不能再被任何人随意修改(见变更控制规程)。人随意修改(见变更控制规程)。u其作用是使连续的工作在这些点上断开,以便其作用是使连续的工作在这些点上断开,以便于检查和肯定阶段成果。于检查和肯定阶段成果。u基线需要定期审核,以验证与文档的一致性。基线需要定期审核,以验证与文档的一致性。基线通常对应于开发过程中的基线通常对应于开发过程中的里程碑里程碑(MilestoneMilestone),一个产品可以有多个基线,也可,一个产品可以有多个基线,也可以只有一个基线。以只有一个基线。基线的主要属性有:基线的主要属性有:名称、标识符、版本、日期等。名称、标识符、版本、日期等。u通 常 将 交 付 给 客 户
35、 的 基 线 称 为 一 个通 常 将 交 付 给 客 户 的 基 线 称 为 一 个“ReleaseRelease”,为内部开发用的基线则称为一个为内部开发用的基线则称为一个“BuildBuild”。 v 以下的以下的SCI SCI 成为配置管理技术的目标并形成成为配置管理技术的目标并形成一组基线一组基线:v 1.1.系统规约系统规约v 2.2.软件项目计划软件项目计划v 3.3.软件需求规约软件需求规约: : a. a.图形分析模型图形分析模型; b.; b.处理规约处理规约;c.;c.原型原型;d.;d.数学规约数学规约v 4.4.初步的用户手册初步的用户手册v 5.5.设计规约设计规约
36、: : a. a.数据设计描述数据设计描述; b.; b.体系结构设计描述体系结构设计描述; ; c. c.模块设计描述模块设计描述; d.; d.界面设计描述界面设计描述 e.e.对象描述对象描述( (如果使用面向对象技术如果使用面向对象技术) )v 6.6.源代码清单源代码清单v 7.7.测试规约测试规约 a.a.测试计划和过程测试计划和过程 b.b.测试用例和结果记录测试用例和结果记录v 8.8.操作和安装手册操作和安装手册v 9.9.可执行程序可执行程序 a.a.模块的可执行代码模块的可执行代码 b.b.链接的模块链接的模块v 10.10.数据库描述数据库描述 a.a.模式和文件结构模
37、式和文件结构 b.b.初始内容初始内容v 11.11.联机用户手册联机用户手册v 12.12.维护文档维护文档 a.a.软件问题报告软件问题报告 b.b.维护请求维护请求 c.c.工程变化命令工程变化命令v 13.13.软件工程的标准和规程软件工程的标准和规程v 14.14.特定版本的编辑器、编译器和其他特定版本的编辑器、编译器和其他CASE CASE 工具等工具等角色角色 u为了提高配置管理的效率和安全性,项目应当为了提高配置管理的效率和安全性,项目应当设有设有配置管理员配置管理员这个角色。这个角色。u配置管理员的主要工作是为配置管理员的主要工作是为项目制定配置管理项目制定配置管理计划,创建
38、和维护配置库计划,创建和维护配置库等。等。对于大型的项目,鉴于配置管理的重要性和复对于大型的项目,鉴于配置管理的重要性和复杂性,机构应当设立杂性,机构应当设立配置控制委员会(配置控制委员会(Configuration Control Board,CCB)。CCB是个虚拟小组,对配置管理各项活动拥有是个虚拟小组,对配置管理各项活动拥有决策权(例如审批计划,审批变更请求等)。决策权(例如审批计划,审批变更请求等)。对于对于配置管理而言,配置管理而言,CCB是决策者,而配置管是决策者,而配置管理员是执行者理员是执行者。对于普通的小型软件项目而言,对于普通的小型软件项目而言,CCBCCB这这个概念难以
39、落实,我们就不要玩虚的了,让个概念难以落实,我们就不要玩虚的了,让项目经理或者配置管理员做决定就行了。项目经理或者配置管理员做决定就行了。流程流程RUP描述的配置管理的主要活动如下图所示:描述的配置管理的主要活动如下图所示:对于一个软件项目组来说,开展一个项目组的配置管理,大致可以分为以下步骤:配置项的标识和控制配置项的标识和控制 所有配置项都应按照相关规定所有配置项都应按照相关规定统一编号统一编号,按照相,按照相应的模板生成,并在文档中的规定章节(部分)应的模板生成,并在文档中的规定章节(部分)记录对象的标识信息。在引入软件配置管理工具记录对象的标识信息。在引入软件配置管理工具进行管理后,这
40、些配置项都应以一定的目录结构进行管理后,这些配置项都应以一定的目录结构保存在配置库中。保存在配置库中。所有配置项的所有配置项的操作权限操作权限应由配置管理员严格管理,应由配置管理员严格管理,基本原则是:基线配置项向软件开发人员开放读基本原则是:基线配置项向软件开发人员开放读取权限;非基线配置项向项目经理、配置控制委取权限;非基线配置项向项目经理、配置控制委员会及相关人员开放。员会及相关人员开放。工作空间管理工作空间管理 在引入了软件配置管理工具之后,所有开发人在引入了软件配置管理工具之后,所有开发人员都会被要求把工作成果存放到由软件配置管理员都会被要求把工作成果存放到由软件配置管理工具所管理的
41、配置库(存储池)中去,或是直接工具所管理的配置库(存储池)中去,或是直接工作在软件配置管理工具提供的环境之下(根据工作在软件配置管理工具提供的环境之下(根据配置管理构架提供的控制方式不同而不同)。配置管理构架提供的控制方式不同而不同)。 每个开发人员按照任务的要求,在不同的开发每个开发人员按照任务的要求,在不同的开发阶段,工作在不同的工作空间上。阶段,工作在不同的工作空间上。 比较理想的情况是把整个配置库视为一个统一的比较理想的情况是把整个配置库视为一个统一的工作空间,然后再根据需要把它划分为个人(私工作空间,然后再根据需要把它划分为个人(私有)、团队(集成)和全组(公共)这三类工作有)、团队
42、(集成)和全组(公共)这三类工作空间(分支),从而更好的支持将来可能出现的空间(分支),从而更好的支持将来可能出现的并行开发的需求。并行开发的需求。 版本控制版本控制 版本控制版本控制是软件配置管理的核心功能。所有置于配置库是软件配置管理的核心功能。所有置于配置库中的元素都应自动予以版本的标识,并保证版本命名的中的元素都应自动予以版本的标识,并保证版本命名的唯一性。版本在生成过程中,自动依照设定的使用模型唯一性。版本在生成过程中,自动依照设定的使用模型自动分支、演进。除了系统自动记录的版本信息以外,自动分支、演进。除了系统自动记录的版本信息以外,为了配合软件开发流程的各个阶段,我们还需要定义、
43、为了配合软件开发流程的各个阶段,我们还需要定义、收集一些元数据来记录版本的辅助信息和规范开发流程,收集一些元数据来记录版本的辅助信息和规范开发流程,并为今后对软件过程的度量做好准备。当然如果选用的并为今后对软件过程的度量做好准备。当然如果选用的工具支持的话,这些辅助数据将能直接统计出过程数据,工具支持的话,这些辅助数据将能直接统计出过程数据,从而方便我们从而方便我们软件过程改进软件过程改进(Software Process Software Process ImprovementImprovement,SPISPI)活动的进行。)活动的进行。 对于配置库中的各个基线控制项,应该根据其基线的位对
44、于配置库中的各个基线控制项,应该根据其基线的位置和状态来设置相应的访问权限。一般来说,对于基线置和状态来设置相应的访问权限。一般来说,对于基线版本之前的各个版本都应处于被锁定的状态,如需要对版本之前的各个版本都应处于被锁定的状态,如需要对它们进行变更,则应按照变更控制的流程来进行操作。它们进行变更,则应按照变更控制的流程来进行操作。 变更控制变更控制 变更管理变更管理的一般流程是:的一般流程是:(1 1)(获得)提出变更请求;)(获得)提出变更请求;(2 2)由)由CCBCCB审核并决定是否批准;审核并决定是否批准;(3 3)(被接受)分配请求,修改人员提取配置项,进行)(被接受)分配请求,修
45、改人员提取配置项,进行修改;修改;(4 4)复审变化;)复审变化;(5 5)提交修改后的配置项;)提交修改后的配置项;(6 6)建立测试基线并测试;)建立测试基线并测试;(7 7)重建软件的适当版本;)重建软件的适当版本;(8 8)复审(审计)所有配置项的变化;)复审(审计)所有配置项的变化;(9 9)发布新版本。)发布新版本。 在这样的流程中,配置管理员通过软件配置管理在这样的流程中,配置管理员通过软件配置管理工具来进行访问控制和同步控制,而这两种控制则是工具来进行访问控制和同步控制,而这两种控制则是建立在前面所描述的版本控制和分支策略的基础上的。建立在前面所描述的版本控制和分支策略的基础上
46、的。 状态报告状态报告 配置状态报告配置状态报告应该包括下列主要内容:应该包括下列主要内容: (1)(1)配置库结构和相关说明;配置库结构和相关说明; (2)(2)开发起始基线的构成;开发起始基线的构成; (3)(3)当前基线位置及状态;当前基线位置及状态; (4)(4)各基线配置项集成分支的情况;各基线配置项集成分支的情况; (5)(5)各私有开发分支类型的分布情况;各私有开发分支类型的分布情况; (6)(6)关键元素的版本演进记录;关键元素的版本演进记录; (7)(7)其它应报告的事项。其它应报告的事项。 配置审计配置审计 配置审计配置审计的主要作用是作为变更控制的补充手段,来确的主要作用
47、是作为变更控制的补充手段,来确保某一变更需求已被切实实现。在某些情况下,它被作保某一变更需求已被切实实现。在某些情况下,它被作为正式的技术复审的一部分,但当软件配置管理是一个为正式的技术复审的一部分,但当软件配置管理是一个正式的活动时,该活动由正式的活动时,该活动由SQASQA人员单独执行。人员单独执行。总之,软件配置管理的对象是软件研发活动中的全部开总之,软件配置管理的对象是软件研发活动中的全部开发资产。所有这一切都应作为配置项纳入管理计划统一发资产。所有这一切都应作为配置项纳入管理计划统一进行管理,从而能够保证及时的对所有软件开发资源进进行管理,从而能够保证及时的对所有软件开发资源进行维护
48、和集成。因此,行维护和集成。因此,软件配置管理的主要任务软件配置管理的主要任务也就归也就归结为以下几条:结为以下几条: (1 1)制定项目的配置计划;)制定项目的配置计划; (2 2)对配置项进行标识;)对配置项进行标识; (3 3)对配置项进行版本控制;)对配置项进行版本控制; (4 4)对配置项进行变更控制;)对配置项进行变更控制; (5 5)定期进行配置审计;)定期进行配置审计; (6 6)向相关人员报告配置的状态。)向相关人员报告配置的状态。 项目经理的配置管理流程项目经理的配置管理流程 项目经理的工作是:项目经理的工作是:(1 1)确定项目配置)确定项目配置管理策略管理策略 (2 2
49、)确定用于控制)确定用于控制产品变更的策略和产品变更的策略和流程流程 (3 3)在配置管理计)在配置管理计划(是软件开发计划(是软件开发计划的一部分)中记划的一部分)中记录此信息录此信息 配置管理策略配置管理策略 软件配置管理策略软件配置管理策略是指能够确定、保护和报告已是指能够确定、保护和报告已经批准用于项目中的工件的能力。通过正确的标经批准用于项目中的工件的能力。通过正确的标注来实现确定操作。对项目工件的保护是通过归注来实现确定操作。对项目工件的保护是通过归档、建立基线和报告等操作而得以实现的。档、建立基线和报告等操作而得以实现的。 使用标准的、已记录下来的使用标准的、已记录下来的变更控制
50、流程的目的变更控制流程的目的是:确保项目中所做的变更保持一致,并将产品是:确保项目中所做的变更保持一致,并将产品的状态、对其所做的变更以及这些变更所耗费的的状态、对其所做的变更以及这些变更所耗费的成本及对时间表的影响通知给有关的涉众。成本及对时间表的影响通知给有关的涉众。 软件软件配置管理计划配置管理计划说明在产品说明在产品/ /项目生命周期中要项目生命周期中要执行的所有与配置管理相关的活动。它记录如何执行的所有与配置管理相关的活动。它记录如何计划、实施、控制和组织与产品相关的配置管理计划、实施、控制和组织与产品相关的配置管理活动。活动。 配备人员配备人员 配置管理人员的选择和配备,是软件项目