软件配置管理概述
软件配置管理(SCM——Software Configuration Management)是ISO9001和CMM Level2中的重要组成元素,它在软件产品开发的生命周期中,提供了结构化的、有序化的、产品化的管理软件工程的方法,是软件开发和维护的基础。
SCM是指通过技术及行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施和过程,它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理。SCM可以协调软件开发使得混乱减到最小,是一种标识、组织和控制修改的技术,目的是使错误达到最小并最有效地提高生产效率。
一、SCM使软件产品变为受控的和可预见的,它控制这样几个问题:
1. 谁做的变更?->WHO
2. 软件有什么变更?->WHAT
3. 什么时间做的变更?->WHEN
4. 为何要变更?->WHY
通过实施SCM,可以达到可重用过程制度化,包括:满足组织的政策方针、计划和过程描述文档化、分配适当资源(包括资金,人员和工具)、确定责任和权限、培训相关人员、通过不同级别的管理方法和纠正活动检测状态。
置于SCM之下的工作产品包括发送给用户的软件产品(如软件需求文档,软件代码),用于内部使用的软件工作产品(如过程描述),和用于创建工作产品的工具等(如操作系统、数据库、开发工具)。
SCM还用于建立和维护软件工作产品基线。基线是由配置项及相关实体组成的,包括组成软件产品的相关版本、设计、代码、用户文档等。它是软件生命周期中各开发阶段末尾的特定点,即里程碑。通过正式的技术评审而得到的软件配置的正式文本才能成为基线,它的作用是使各个阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检验和肯定阶段成果。基线是配置项继续发展的一个固定基础。
实施SCM不论是对软件开发者、测试者、项目经理、QA人员,还是客户都将会获得很多好处:有助于规范团队各个角色的行为,同时又为各个角色之间的任务传递和交流提供无缝的接合;能帮助项目经理更好地了解项目的进度、开发人员的负荷、工作效率和产品质量状况、交付日期等信息。
二、SCM分为四大功能领域:配置标识、变更控制、配置状态统计、配置审核。
配置标识包括标识软件系统的结构,标识独立部件,并使它们是可访问的。配置标识的目的,是在整个生命周期中标识系统各部件并提供对软件及其软件产品的跟踪能力。(SPLM系统中的编码系统)
配置变更控制包括在软件生命周期中控制软件产品的发布和变更,目的是建立确保软件产品质量的机制。它回答:什么是受控的?受控产品怎样变更?谁控制变更?何时接受,恢复,验证变更?(SPLM系统中的变更流程,基于CMII)
配置状态统计包括记录和报告变更过程,目标是不间断记录所有基线项的状态和历史,并进行维护,它解决以下问题:系统已经做了什么变更?此问题将会对多少个文件产生影响?(SPLM系统中的流程查看,需要完善)
配置审核将验证软件产品的构造是否符合需求、标准、或合同的要求,目的是根据SCM的过程和程序,验证所有的软件产品已经产生并有正确标识和描述,所有的变更需求都已解决。它回答:系统和需求是否吻合?是否所有变更都是在版本控制下?(SPLM系统中的评审过程,通过表单和质量小组实现)
三、SCM从应用层次上可以从低到高分为三级:版本控制、以开发者为中心、过程驱动。
版本控制主要应用于个人独立开发或小组开发,它可以控制任何文件的版本、实现分支和归并功能、进行文本比较、标记注释和版本报告信息,主要工具有我们目前用到的Visual SourceSafe及Intersolv PVCS。(PLM已经应用微软的VSS,SPLM系统没有这个功能)
以开发者为中心主要应用于部门级开发,它可用于软件维护、不断增加的开发任务、并行开发、QA及测试,它面向大型团队、利于交流、能最大限度地利用人力资源,主要工具为Rational ClearCase及MKS Source Integrity。(SPLM系统中的功能基本都有,需要不断测试完善,特别加上强壮的建模能力和流程系统,与ClearCase等产品竞争是有技术优势的)
过程驱动主要使用于企业级开发,着重解决新的工具引入、IT审核、管理报告、复杂的生命周期、应用工具包、集成解决方案、资料库等问题,实现真正规范的团队开发,主要工具为Platinum Technology CCC/Harvest。(SPLM系统在这方面没有进行实践,需要应用并总结,比如对英泰各个事业部的软件资源管理,其他相关资料库等)
四、不同软件配置工具的特色比较。
根据IDC1的1999年SCM工具市场调查,排名第一的正是Rational ClearCase,第二位则是CA公司的CCC/Harvest,第三位就是MERANT公司的PVCS系列,微软排名第六.Visual Source Safe不能算是一个完整的软件配置管理工具,只是版本控制做的很好,当然对于国内目前大多数的软件工程实践而言已经足够.而pvcs和 clearcase是比较完整意义上的SCM软件,称为full-fledged SCM Tools.
此外配置管理工具比较流行的还有: CCC/HARVEST, Continuus, Change Man,
Source Integrity, TRUEchange, TeamConnect等. 对于PVCS的配置管理工具叫 PVCS Process Manager. 当然上面列的是一些可运行于WINDOWS/NT平台的工具, 在UNIX下还有一些.
VSS只是一个版本管理的工具, 如果用于做配置管理的话, 有些勉为其难。
比如说, 我们无法在VSS中输出有关的配置报告, 不易做到对变更的审查及控制. 当然如果你另外再制定一套完善的配置管理制定, 并将相应的文档用VSS统统管理起来也是可以的.做为版本管理工具而言, VSS还是很不错的, 我们一直都用它, 它也有象分支, 版本合并, Multi-checkout等功能.
PVCS有两个版本, 一个也是与VSS相同的, 用于进行版本管理 另一个是"Process Management"的版本,是一个配置管理的工具.
Rational ClearCase应当算是配置管理工具了, 配置管理中的基本功能都有,但觉得好象输出报告的能力不是很强.