软件配置管理(Software configuration management,SCM)是指在开发过程中各阶段,通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。

SCM过程分解为若干个过程元素,分别是制定软件配置管理计划、配置项入库和基线发布、配置审计、产品构造与发布、变更控制、管理SCM工作、配置库建立及使用。配置管理活动与软件生命周期关联如下图所示:

图:配置管理活动与软件生命周期关联图

1、配置管理的意义

1)多重维护问题:解决多个用户对同一文件进行修改所引起的版本不一致问题;

2)同时修改问题:解决多个用户对同一文件同时进行修改所引起的资源冲突问题;

3)丢失版本或不知版本问题:即要明确保留哪个版本,销毁哪个版本。

2、配置管理的主要内容

制定配置管理计划、配置项识别、建立配置管理系统、基线化、建立配置库、变更控制、配置状态统计、配置审计

2、制定配置管理计划

制订配置管理计划的主要步骤如下:

(1)建立并维护配置管理的组织方针

(2)确定配置管理需使用的资源

(3)分配责任

(4)培训计划

(5)确定“配置管理”的项目干系人,并确定其介入时机

(6)制订识别配置项的准则

(7)制订配置项管理表

(8)确定配置管理软硬件资源

(9)制订基线计划

(10)制订配置库备份计划

(11)制订变更控制流程

(12)制订审批计划

3、配置识别和建立基线

配置识别:

确定需要纳入配置管理的配置项

确定配置项的获取时间和所有者

为识别的配置项分配唯一的标识

配置项:项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例

基线:指一个配置项在其生存周期的某一特定时间,被正式标明、固定并经正式批准的

版本。

可看作是一个相对稳定的逻辑实体,其组成部分不能被任何人随意修改

对于配置管理,有以下三种基线:分配基线(需求)、功能基线(设计)和产品基线(测试)。

分配基线(Allocated Baseline)

分配基线指在软件需求分析阶段结束时,经过正式评审和批准的软件需求规格说明。分配基线是最初批准的分配配置标识。

功能基线(Functional Baseline)

功能基线指在系统分析与软件定义阶段结束时,在经过正式评审和批准的系统设计规格说明书中对开发系统的规格说明;或是指在经过项目委托单位和项目承办单位双方签字同意的协议书或合同中,所规定的对开发软件系统的规格说明;或是由下级申请并经上级同意或直接由上级下达的项目任务书中所规定的对开发软件系统的规格说明。功能基线是最初批准的功能配置标识。

产品基线(Product Baseline)

产品基线指在软件组装与系统测试阶段结束时,经过正式评审和批准的有关软件产品的全部配置项的规格说明。产品基线是最初批准的产品配置标识。

4、建立配置管理系统(SVN、VSS、CVS、配置库)

配置库:记录配置项有关的所有信息,存放受控的配置项

动态库、开发库、程序员库、工作库

受控库、主库、系统库

静态库、软件仓库、软件产品库

备份库

建库模式:按配置项类型分类建库、按任务建库

配置库权限的定义和设置

R(Read)

C(Check Out/CheckIn)

A(Add/Rename/Delete)

D(Destory)

5、版本管理

配置项状态:草稿、正式(评审后)、修改

配置项版本号规则

配置项的版本号与配置项的状态紧密相关。

处于“草稿”状态的配置项的版本号格式为:0.YZ

随着草稿的不断完善,YZ的取值应递增。YZ的初值和增幅由开发者自己把握。

处于“正式发布”状态的配置项的版本号格式为:X.Y

X为主版本号,取值范围为1~9,Y为此版本号,取值范围为1~9

配置项第一次“正式发布”时,版本号为1.0

如果配置项的版本升级幅度比较小,一般只增大Y值,X值保持不变。只有当配置项版本升级幅度比较大时,才允许增大X值

处于“正在修改”状态的配置项的版本号格式为:X.Y.Z

配置项上在修改时,一般只增大Z值,X.Y值保持不变

当配置项修改完毕时,状态重新成为“正式发布”时,将二值设置为0,增加X.Y值

6、变更控制

变更申请:变更申请人

变更评估(CCB)

变更实施:CM工程师、变更实施人

变更验证与确认(CCB)

变更的发布(配置管理员)

基线的变更 :基线以内的。不用走。基线外要走变更流程

7、配置状态报告:通用CASE工具自动生成

能够及时、准备地给出配置项的当前状况,加强配置管理工作

What:发生了什么事?

Who:谁做的此事?

When:此事是什么时候发生的?

Why:为什么做此事?

报告所有配置项以及变更请求的状态

8、配置审计(配置审核)

变更控制的补充手段,来确保某一变更需求已被切实实现

配置项审计包括功能配置审计和物理配置审计。

配置审计内容包括:

(1)评估基线的完整性

(2)检查配置记录是否正确反映了配置项的配置情况

(3)审核配置项的结构完整性

(4)对配置项进行技术评审

(5)验证配置项的完备性和正确性

(6)验证是否符合配置管理标准和规程

配置审核的任务便是验证配置项对配置标识的一致性。配置审核的实施是为了确保项目配置管理的有效性,体现配置管理的最根本要求,不允许出现任何混乱现象,如:

(1)防止出现向用户提交不适合的产品,如交付了用户手册的不正确版本。

(2)防止不完善的实现,如开发出不符合初始规格说明或未按变更请求实施变更。

(3)找出各配置项间不匹配或不相容的现象。

(4)确认配置项已在所要求的质量控制审核之后作为基线入库保存。

(5)确认记录和文档保持着可追溯性。

软件工程知识——软件配置管理相关推荐

  1. 软件工程之软件配置管理

    1 基本概念 1 软件配置项(software configuration item) - 与合同,计划,过程,产品有关的文档和数据 - 源代码,目标代码和可执行代码 - 相关产品,包括软件工具,库内 ...

  2. SWEBOK软件工程知识体系 - 1.软件需求

    软件需求( SOFTWARE REQUIREMENTS) 软件需求知识领域与软件需求的启发,分析,规范和验证以及软件产品整个生命周期中的需求管理有关. 在研究人员和行业从业人员,当与需求相关的活动执行 ...

  3. 【软件工程】六、软件配置管理

    1. 了解软件配置项.版本.基线的概念 2. 掌握配置管理的要点和方法 3. 掌握配置管理工具GitHub的使用 软件配置管理 1.定义:软件配置管理是一种标识.组织和控制修改的技术,它作用于整个软件 ...

  4. 软件工程导论—软件与软件工程

    文章目录 1. 软件与软件危机 1.1. 软件的概念和特点 1.2. 软件规模的分类与发展阶段 1.3. 软件危机 1.3.1. 软件危机的表现 1.3.2. 软件危机产生的原因 1.3.3. 软件危 ...

  5. [分享] 软件配置管理经典面试题

    1你为什么要申请配置管理工程师这个职位 我们公司已经通过了CMMI3,我在现在的公司就是做配置管理工程师的,我熟悉配置管理,并喜爱这份工作,希望能继续从事该工作. 2你觉得自己能否胜任这个职位 能胜任 ...

  6. SWEBOK软件工程知识体系 - 10.软件质量

    软件质量(SOFTWARE QUALITY) 什么是软件质量,为什么它如此重要以至于它包含在SWEBOK指南的许多知识领域(KA)中? 其中一个原因是软件质量这个术语过载了.软件质量可以是指:软件产品 ...

  7. 【软件工程(一)】软件工程概述+软件生命周期模型

    文章目录 软件工程概述 软件的定义 软件的分类 软件工程要素.目标和原则 软件工程知识体系知识域 软件生命周期模型 工程过程 传统模型种类 瀑布模型 演化模型 增量模型 喷泉模型 V模型和W模型 螺旋 ...

  8. 『软件工程2』详解软件工程和软件过程模型

    文章目录 一.软件工程的定义 1.Fritz Bauer在NATO上给出的定义 2.Barry Boehm 3.IEEE在软件工程术语汇编中的定义 二.软件工程的层次 1.软件工程三个要素 2.软件工 ...

  9. 软件配置管理(Software Configuration Management,SCM)

    随着软件产业的崛起,软件工程技术正吸引着越来越多关注的目光.特别是以CMM为代表的先进的软件工程理念在国内也正日益受到业界广泛的重视. 软件配置管理(Software Configuration Ma ...

最新文章

  1. 关于在linux下清屏的几种技巧
  2. 网页制作的中的一些工具代码
  3. 大山深处,有一所希望学校
  4. C语言试题二十八之编写函数function功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
  5. Python 数据分析三剑客之 Matplotlib(五):散点图的绘制
  6. HDOJ 1753 明朝A+B
  7. Python3.6全栈开发实例[022]
  8. html本地修改浏览器自动更新,更改html代码后网页不更新
  9. 系统背景描述_多元化多功能会议室报告厅智能控制系统方案
  10. Scrum 敏捷开发 笔记
  11. 共探机遇 2018中国产业互联网化纤创新者大会华丽启幕...
  12. 解决百度网盘超过4G限制,
  13. 华为p8刷linux系统,普通安卓手机如何刷鸿蒙系统?
  14. 一文读懂什么是EPP、EDR、CWPP、HIDS及业内主流产品
  15. MSP430学习心得
  16. 谈谈几种去中心化币币交易所的优缺点
  17. 如何配置nginx服务器中access_log日志分析?
  18. MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)
  19. oh-my-zsh国内镜像安装和更新方法
  20. js获取美国太平洋标准时间PST

热门文章

  1. 33 Java语言基础控制跳转语句标号
  2. C# 泛型的协变和逆变
  3. 找不到visual studio模板信息 解决方法
  4. Xshell6突然连不上K8S所在的虚拟机
  5. 大数据可视化案例分析_Tableau数据可视化分析案例
  6. matlab cell向量匹配向量,根据2个cell格式数据中的某二列进行匹配并合并
  7. mysql optimizer组件_MySQL Optimizer
  8. gson解析php,php,android_关于 Gson 解析JSON数据。。。,php,android - phpStudy
  9. Java并发修改异常的源码解析
  10. 最优化学习笔记(十九)——拟牛顿法(5)BFGS算法