配置管理漫漫谈之SCM基本知识

毫无疑问,配置管理是所有软件公司,无论是低成熟度公司还是高成熟度公司都有的管理行为,尽管执行的力度和质量不一致。
 
【配置管理起源】
早在七十年代初期加利福利亚大学的Leon Presser教授就撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为SoftTool的公司,开发了自己的配置管理工具:CCC,这也是最早的配置管理工具之一。之后,随着软件开发规模的逐渐增大,越来越多的公司和团队意识到了软件配置管理的重要性,而相应的软件配置管理工具也如雨后春笋一般,纷纷涌现,比较有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),这两种工具对日后的配置管理工具的发展做出了重大的贡献,目前绝大多数广泛使用的配置管理工具基本上都是基于这两者的设计思想和体系架构。
 
【为什么要做配置管理?】
随着软件规模越来越大,需求越来越多,变更越来越频发,缺少对开发过程输出物的合理的标识和管理已经是很多项目失败的重要原因。
 
【什么是配置管理?】
在整个项目生命周期内对所选定的中间工作产品、产品组件以及产品进行唯一标识、受控存储、变更控制和状态报告以及实施配置审计进行检查。
配置管理周期:整个项目生命周期
配置管理范围:中间工作产品、产品组件、产品
配置管理活动:标识、存储、变更控制、状态报告、配置审计
 
【配置管理基本概念】
  • 工作产品:项目生命周期中产生任何工作成果、包括文档、代码等
  • 产品:交付给客户的工作产品
  •  
  • 配置项:配置管理的对象,一个或者多个工作产品的组合
  •  
  • 基准:经过正式评审和认可的一组配置项,它们作为进一步开发的基础,并且只有经过正式的变更控制流程才能被更改
  • 基线:包含了若干不同类型基准对应版本的集合,但在部分组织中认为基线等同于基准,因此一般可视为两者相同
  •  
  • SCM:Software Configuration Management,软件配置管理
  • CME:Configuration Management Engineer,配置管理工程师
  • CCB:Change Control Board,变更控制委员会
  • QA:Quality Assurance,质量保证工程师
  • PM:Project Manager,项目经理
 
【配置管理功能】
  • 并行开发支持:因开发和维护的原因,要求能够实现开发人员同时在同一个软件模块上工作,同时对同一个代码部分作不同的修改,即使是跨地域分布的开发团队也能互不干扰,协同工作,而又不失去控制  
  • 版本控制:跟踪每一个变更的创造者、时间和原因,从而加快问题和缺陷的确定,能够简单、明确地重现软件系统的任何一个历史版本
  • 产品发布管理:管理、计划软件的变更,与软件的发布计划、预先定制好的生命周期或相关的质量过程保持一致;项目经理能够随时清晰地了解项目的状态 
  • 建立管理:基于软件存储库的版本控制功能,实现建立(build)过程自动化 
  • 过程控制:贯彻实施开发规范,包括访问权限控制、开发规则的实施等
  • 变更请求管理:跟踪、管理开发过程中出现的缺陷(Defect)、功能增强请求(RFE)或任务(Task),加强沟通和协作,能够随时了解变更的状态  
  • 代码共享:提供良好的存储和访问机制,开发人员可以共享各自的开发资源
 
【配置管理涉及角色及职责】
  • CME:制定配置管理计划,建立并维护项目配置库,实施基线建立/基线变更/产品发布,协调/实施配置审计,维护CM工作记录,发布配置状态报告;
  • CCB:批准基线的建立和变更,批准从基线区建立产品;CCB可分多级,每级CCB负责一种或者多种类型的基线,在项目策划时确定CCB成员和职责;一般来说,最高一级的CCB成员由PM,QA,测试负责人组成,必要时由高级管理者和客户代表参与
  • 项目经理:参与识别配置项,向CME提供接受配置管理的工作产品,参与创建基线和产品,负责产品的发布
  • 项目组/项目成员:向CME提供接受配置管理的工作产品,配合项目/组织CM的工作要求完成相应的活动
  • QA:审计和评审SCM活动和工作产品
 
【配置管理的三种层次】
第一层次、存档控制:对于一次性使用的工作产品如会议记录、项目报告等,在配置库中存放工作的电子版本
第二层次、版本控制:对于需要维护的管理性和支持性工作产品如代码、项目计划等,在配置库中存放每个工作产品的每个生效副本
第三层次、基准控制:在版本控制的基础上,通过标识、变更控制、状态记录和审计,确保基准的完整性、一致性和正确性
 
这三种层次在日常配置管理中同时存在。
 
【配置库结构层次】
配置库一般由动态库(开发库、受控库)、静态库(产品库)组成。
开发库:项目成员的工作环境,保存正处于开发/变更的工作产品(文档/源代码)。开发库内的工作产品处于存档控制/版本控制之下,其信息可能进行频繁的修改
受控库:保存开发过程中某个阶段工作结束时释放的阶段产品,即配置项的基准版本。受控库的配置项处于基准控制下
产品库:保存对内/对外发布的产品,等待外部测试组测试,或者等待用户安装和验收,产品库的配置项处于基准控制下
 
对于配置库更具体的构成请参见笔者的文章《配置管理漫漫谈之典型配置库结构》 。
 

你可能感兴趣的:(项目管理)