软件配置管理原理
流程中引入配置管理员角色用于管理配置变更

什么是配置
工具的引入能够帮助配置管理员自动化处理,工具应该具备下面的特征:
Ø维护一个文件库
Ø创建和存放文件的多个版本
Ø提供权限锁定的机制
Ø能够标识一组文件的版本
Ø从配置库中提取/找回文件的版本
概念
一套应用技术上和管理上的指导和监督的方法。
用来:
识别和记录配置项的功能特征和物理特征
控制这些特征的变更
记录和执行变更的处理和执行的状态
以及验证其是否符合特定的需求。
简单讲,配置管理就是通过对在软件生命周期的不同的时间点上的软件配置进行标识,并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的 完整性和可溯性的过程。
CMMI中的配置管理
CMMI 2级(可重复级/受管理级)
建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先 类似应用项目取得的成功经验。
CMMI的5级定义
初始级
可重复级
已定义级
已管理级
优化级
常用术语
常用术语
配置
在技术文档中明确说明并最终组成软件产品的功能或物理属性。
包括即将受控的所有产品特性,及其内容及相关文档,软件版本,变更文档,软件运行的支持数 据,以及其他一切保证软件一致性的组成要素。
配置项
配置项是一组软件功能或者物理属性的组合,在配置管理过程中,配置项被作为一个单一的实体对待。
一个系统包括的配置项的数目是一个与设计密切相关的问题。
| 配置项 | 分类 |
|---|---|
| 合同类文档 | 建议书、用户意向书、用户需求、工作任务书、合同 |
| 计划类文档 | 包括各类项目相关计划,比如项目过程手册、项目计划,配置管理计划等 |
| 工程类文档 | 包括需求规格文档、测试计划(含测试用例)、设计文档、需求跟踪矩阵等 |
| 程序代码 | 所有开发的源代码,包括各类支持数据,二进制文件 |
| 第三方程序代码 | 由供应商提供的源代码,并接受供应商的维护 |
| 工具 | 支持软件开发、建立、维护的工具管理,比如语言开发工具,编译工具,测试工具,配 置管理工具等 |
| 用户文档 | 包括用户手册,安装指南等 |
| 运行环境 | 包含系统运行环境的相关内容,比如系统运行平台,环境设置要求等 |
基线
基线就是配置项在其生命周期的不同时间点上通过评审而进入正式受控的一种状态,而这个过程被称为“基线化” 。每一个基线都是其下一步开发的基准。
基线具有以下属性:
•通过正式的评审过程建立
•基线存在于配置库中,基线的变更由变更控制委员会(CCB-Change Control Board)控制
•基线是进一步开发和修改的基准
版本和版本标识
版本是表示一个配置项具有一组定义的功能的一种标识。
随着功能的增加,修改或删除,配置项的版本随之演变。
版本以版本号进行标识。
| 号码 | 发布类型 | 典型描述 |
|---|---|---|
| XX | 主版本号 | 增加了一个大的特性-可能导致与原先版本不兼容 |
| YY | 次版本号 | 增加了一个小的特性-保持与原先版本兼容 |
| ZZ | 维护版本号 | 可以包含一些更改,并且包含自上一次版本发布以后所有的补丁。一般地,这个版本要 根据保证和/或支持/维护协议主动提交给所有的用户 |
| PP | 补丁版本号 | 包含对客户或测试组发现和报告的一个或多个问题的解决。此版本只发布给报告问题的 客户或测试组。解决一次问题发布一个补丁版本给报告问题的客户或测试组。补丁也可 能只是一种优化 |
主干与分支
为何需要分支:
团队协作的本质是分头工作并且相互配合。
分支可实现并行工作,多头前进,最后汇合,减少等待和阻塞。
分支可保证团队人员之间适当隔离,不可长期隔离。
分支也可保证团队人员之间适当共享。

配置库
配置管理活动需要在特定的数据库中完成,这个特定的数据库被称为软件配置库 。
从广义上讲,软件配置库可以包括开发库,受控库和产品库。
从狭义上讲,软件配置库专指受控库 。
常用工具
代码相关
svn、git
文档相关
wiki
构建相关
make、ant、maven、gradle
Bug相关
jira、禅道、bugfree、Bugzilla
持续集成相关
Jenkins、Bamboo、GitLab CI、Circle CI
环境部署相关
puppet
文档相关
wiki
构建相关
make、ant、maven、gradle
Bug相关
jira、禅道、bugfree、Bugzilla
持续集成相关
Jenkins、Bamboo、GitLab CI、Circle CI
环境部署相关
puppet
本文介绍软件配置管理原理,流程中引入配置管理员管理变更,工具应具备维护文件库等特征。还阐述CMMI中的配置管理,包括其5级定义和常用术语,如配置、配置项、基线等。此外,说明了主干与分支的作用,配置库的概念,以及代码、文档等方面的常用工具。
374

被折叠的 条评论
为什么被折叠?



