图1-1 配置管理的层次 1
第1章 概述 1
1.1 什么是软件配置管理 2
1.1.1 配置管理 3
1.1.2 软件配置管理 3
1.2 软件配置管理的发展 5
1.2.1 软件配置管理的过去 5
1.2.2 软件配置管理的现在 6
1.2.3 软件配置管理的未来 9
图1-2 CM服务模型 11
图1-3 PDM和SCM过程支持 12
1.3.1 程序员的问题 13
1.3 配置管理能解决的问题 13
图1-4 SCM和PDM功能 13
1.3.2 项目经理的问题 15
1.3.3 公司老板的问题 16
1.4 实施配置管理的益处 17
1.5 小结 18
第2章 软件配置管理的主要内容 19
2.1 基本概念 19
2.1.1 软件配置项 19
图2-1 基线(里程碑) 20
2.1.2 基线 20
2.1.3 版本 21
图2-2 配置项的演变过程 22
图2-4 版本树、变种和修订版 23
图2-3 版本的串行和并行演变 23
2.1.4 版本标识 23
图2-5 数字顺序型版本标识命名规则 24
图2-7 对象池在不同方向上的映射 25
图2-6 对象和对象池 25
图2-8 对象池在某两个方向上的映射 26
2.1.5 软件配置库 26
2.1.6 配置状态报告 27
表格2-1 CSA数据报告 28
2.1.7 配置审计 29
2.2.1 版本的访问与同步控制 31
2.2 版本控制 31
2.2.2 版本分支和合并 32
图2-9 访问和同步控制的流程 32
2.3 变更控制 33
2.2.4 发行管理 33
2.2.3 版本的历史记录 33
图2-10 修补变更与系统功能变更的交叉发行 33
2.3.1 变更类型 34
图2-11 变更的波及面 34
表格2-2 变更请求表格 35
2.3.2 变更请求 35
2.3.3 变更许可 35
图2-12 变更控制过程 36
2.3.4 变更实施 36
2.3.5 变更机制 36
2.3.6 未实行变更管理的历史教训 37
2.4 过程支持 38
图2-13 过程驱动下的线性工作流 39
2.4.1 组织的过程和CM的应用 39
2.4.2 CM过程和软件生命周期 40
图2-14 集成数据流的含义 41
图2-15 工具和生命周期重叠 42
图2-16 同级集成 43
2.4.3 过程模型表示法的影响 43
2.5 小结 44
2.4.4 过程发展进化 44
3.1 在开发组织中成立SCCB 45
第3章 软件配置管理快速入门 45
3.2 在开发组织中应用SCM 45
3.2.1 获取足够的管理权 46
3.2.2 评估当前过程 46
图3-1 SCM应用的功能块 46
3.2.3 分析需求 46
3.2.4 选定角色并创建一个SCM小组 46
表格3-1 风险控制的6个不同的活动 47
3.2.5 控制SCM的风险 47
表格3-4 技术风险 48
表格3-3 人员有关的风险 48
表格3-2 商业风险 48
3.2.7 书写正式的SCM计划 49
3.2.6 记录SCM过程 49
3.3 软件配置管理方案 50
图3-2 软件配置管理解决方案涉及的内容 50
3.3.1 软件配置管理方案的构造 51
表格3-5 配置管理规范的制订 55
3.4 自动软件配置管理 56
3.3.2 软件配置管理方案的实施 56
表格3-6 进行变化时所面对的复杂问题 57
图3-3 SCM自动化过程 58
3.4.1 准备和计划 58
3.4.3 工具评估 59
3.4.2 过程定义 59
3.4.4 试验项目实现 60
3.4.5 向其他项目初次展示 60
表格3-7 试验项目的实现 60
表格3-8 配置管理模版列表 61
3.5 配置管理模版 61
3.4.6 提高捕获和通信能力 61
表格3-9 定制/裁剪计划模版 62
表格3-10 配置标识模版 62
3.5.2 配置标识模版 62
3.5.1 定制/裁剪计划模版 62
表格3-11 配置控制模版 63
3.5.3 配置控制模版 63
3.5.4 配置状态报告模版 64
3.5.5 配置审计模版 64
表格3-13 配置审计模版 64
表格3-12 配置状态报告模版 64
3.5.7 向产品过渡的模版 65
表格3-15 向产品过渡的模版 65
3.5.6 产品和支持模版 65
表格3-14 产品和支持模版 65
表格3-16 软件/固件模版 66
表格3-17 问题和决议模版 66
3.5.8 软件/固件模版 66
3.5.9 问题和决议模版 66
表格3-18 自动化CM模版 67
3.5.10 自动化CM模版 67
3.6 小结 68
表格4-1 配置管理相关的标准和指南 69
4.1 软件配置管理的相关标准 69
第4章 软件配置管理的衡量尺度 69
表格4-2 基本的度量 71
4.2 软件配置管理的度量和度量准则 71
图4-2 软件剩余问题(没有加权的) 74
图4-3 剩余变更和错误密度 74
图4-1 累计的软件变化(加权的) 74
4.3 软件配置管理与SW-CMM1.1 75
4.3.1 SW-CMM1.1简介 75
图4-4 CMM结构 76
表格4-3 CMM的成分 76
图4-5 CMM等级 77
4.3.2 软件配置管理在SW-CMM1.1中位置 77
4.4.1 软件配置管理 78
4.4 软件配置管理和ISO 9001 78
4.4.2 ISO 9001 79
4.4.3 ISO 9001和CM 80
4.4.4 ISO 9001和配置管理的总结 83
表格4-4 ISO9001条款中与CM实践有关的内容 83
4.5 软件配置管理和IEEE1074 84
表格4-5 IEE1074的软件配置管理 84
4.6 小结 85
第5章 软件配置管理方法论 86
5.1 CM机制 87
5.1.1 对象 87
5.1.2 版本化的对象 88
5.1.3 配置对象 89
5.1.4 版本化对象的管理 90
5.1.5 绝缘/隔离 91
5.1.6 对象的生命周期 92
5.1.8 安全和存取控制 93
5.1.7 配置组装 93
5.2.1 阶梯方法论 94
5.2 CM方法论 94
5.1.9 对象和方法 94
图5-1 源代码的生命周期 95
图5-2 阶梯方法论所定义的配置 96
5.2.3 变化跟踪方法论 97
5.2.2 变更集合方法论 97
图5-3 变更请求对象的生命周期 97
图5-4 变化跟踪方法论所定义的配置 98
5.2.5 过程改编 99
5.2.4 并行开发模型 99
5.3 小结 100
第6章 典型的配置管理模型 101
6.1.1 CICO模型的概念 102
6.1 CICO模型 102
图6-1 检入/检出操作模型 103
图6-2 版本图中的分支和归并 103
图6-3 合并语义 105
6.1.2 CICO模型的使用 106
6.1.3 CICO模型的总结 108
6.2.1 组织模型中的概念 109
图6-4 变更的提升 109
6.2 组织模型 109
图6-5 构件版本选择 110
6.2.2 组织模型的使用 112
6.2.3 关于组织模型的总结 114
6.3 长事务模型 114
图6-7 配置版本选择 115
图6-6 一个配置的版本历史 115
6.3.1 长事务模型中的概念 115
图6-8 具有本地历史的工作空间 116
图6-9 作为任务的事务处理 117
图6-10 透明的配置访问 118
图6-11 两个事务处理的开放并发 120
6.3.2 长事务模型的使用 121
图6-12 作为开发路径的事务 121
6.3.3 长事务模型总结 123
6.4 变更集模型 123
6.4.1 变更集的概念 124
图6-13 一个变更集 124
图6-14 累积的变更 125
图6-15 配置版本图和其对应的变更集 125
6.4.2 变更集模型的使用 127
6.5 统一CM模型:版本集模型 128
6.4.3 变更集模型总结 128
6.5.1 版本集模型的概念 129
表格6-1 特征术语的语法 130
图6-16 在版本集中进行选择 131
6.5.2 版本集模型与传统的CM模型 132
图6-17 进化图和结果版本集 133
图6-18 作为版本集的工作空间 135
6.5.3 版本集模型应用实例 135
6.5.4 版本集模型使用经验 137
6.5.5 版本集模型的总结 137
表格6-2 商业CM工具/环境所使用的CM模型 138
6.6 小结 138
7.1 面向过程的配置管理系统CCC/HARVEST 140
第7章 实用配置管理系统 140
7.1.1 CCC/HARVEST的重要概念 140
表格7-1 CCC/HARVEST过程列表 142
图7-1 CCC/HARVEST典型生命周期示意图 143
图7-2 CCC/AHRVEST检入和检出的控制 144
图7-3 包的运动和视图的关系 145
图7-5 表单编辑器——应用程序 147
图7-4 一个典型的表单编辑器 147
图7-6 表单编辑器——请求 147
图7-8 表单编辑器——开发 148
图7-7 表单编辑器——调查结果 148
图7-9 表单编辑器——测试 148
图7-11 一个典型的软件配置管理系统结构 149
7.1.2 建立CCC/HARVEST模型 149
图7-10 CCC/HARVEST对象间的关系 149
图7-12 Release模型的生命周期 150
表格7-2 Release模型各状态所能进行的过程 151
图7-13 开发视图和测试视图 153
图7-14 Release模型下的并发开发方法1 154
图7-15 Release模型下的并发开发方法2 154
图7-16 Release模型下的并发开发方法3 155
7.2 基于构件复用的配置管理系统JBCM 155
图7-17 JBCM软件开发模式 155
7.2.1 配置管理控制下的软件开发基本过程 155
图7-18 JBCM系统的结构 156
7.2.2 JBCM系统的结构及功能 156
图7-19 JBCM系统的主要功能层次结构 157
7.2.3 JBCM的软件开发模型——项目/构件结构 157
7.2.4 项目/构件结构 158
表格7-3 构件划分方法 159
图7-20 JBCM项目内部结构 159
图7-22 JBCM中构件的版本树 161
图7-23 JBCM中文件的版本树 161
图7-21 JBCM中版本的演变 161
7.2.5 用户控制 162
表格7-4 用户权限 162
7.2.6 JBCM用户权限控制 163
表格7-5 Context文件——一张表格 163
表格7-6 JBCM系统中文件的几种操作模式 164
表格7-8 推荐的配置文件操作模式 164
表格7-7 用户对文件的操作方式 164
7.2.7 JBCM系统的数据(信息)分类 164
7.3 并发版本系统CVS 165
7.3.1 CVS概述 165
7.3.2 构建CVS服务器 166
表格7-9 CVSROOT中一系列文件的用途 168
7.3.3 CVS服务器与应用实例 171
7.3.4 管理中的相关技术 174
表格7-10 cvs status命令报告文件的状态的类别列表 179
7.3.5 简易命令集 183
7.3.6 通过匿名CVS获取源代码 185
7.4 CM系统用户的问题 186
图7-24 CM系统用户的问题 187
7.4.1 角色与需求 187
图7-25 CM功能需求 188
7.4.2 何时开始使用CM系统 189
7.4.3 配置管理控制的不同层次 189
7.4.4 过程与产品支持的区别 190
7.4.5 配置管理自动化的程度 190
7.4.6 配置管理系统的功能 190
7.5 小结 190
8.1 开发某编译系统的SCM支持环境 192
8.1.1 开发工作的特点 192
第8章 软件配置管理实践 192
图8-2 HPCC软件配置管理环境的逻辑结构 193
图8-1 HPCC软件配置管理环境物理结构 193
表格8-1 HPCC的SCM环境定制——用户 194
8.1.2 CM环境定制 194
表格8-2 HPCC的SCM环境定制——用户组 195
图8-3 HPCC的SCM环境定制——生命周期 195
表格8-3 HPCC的SCM环境定制——生命周期中某一状态的过程 196
8.1.3 CM环境的优化 197
表格8-4 HPCC的SCM环境定制——工作空间定制的基本命令 197
表格8-5 HPCC的SCM环境定制——CM环境优化之一 198
表格8-6 HPCC的SCM环境定制——CM环境优化之二 199
表格8-7 HPCC的SCM环境定制——CM环境优化之三 199
8.1.4 与自动测试的结合 199
图8-4 层层跟进调试方法 200
8.1.5 基于配置管理系统的测试定位系统 200
图8-5 手工版本定位调试方法 201
图8-7 版本定位后改正错误的方法 202
图8-6 自动版本定位调试方法 202
图8-8 多测试包的测试 205
8.2 利用NSE的工具版本管理 206
8.2.1 问题 206
图8-9 影响输出数据的因素 207
8.2.2 网络软件环境技术 208
图8-10 一个配置的线性版本历史 209
图8-12 作为开发路径的环境 210
图8-11 作为工作区和事务处理的环境 210
图8-14 派生对象选择 211
图8-13 配置版本的同时访问 211
图8-15 环境、Execset和工具 213
图8-16 可执行工具集的家族 214
8.2.3 工具版本的组织和选择 214
8.2.4 工具配置的稳定性 218
8.2.5 对工具应用环境的管理 219
8.2.6 结论 220
8.3 C130J软件配置管理环境 220
8.3.1 C130飞机综述 221
8.3.3 有效实现SCM的特征 221
8.3.2 C130飞机软件种类 221
图8-17 C130J CSCI层次结构 222
图8-18 C130J变更过程的层次结构 223
8.3.4 C130J SCM观点 223
8.4 小结 224
8.3.6 C130J SCM改善计划 224
8.3.5 C130J SCM获得的好处 224
9.1.2 市场分析 226
9.1.1 需求分析 226
9.1 计划 226
第9章 配置管理工具评估/选择过程 226
9.2.1 厂商演示 227
9.2 对配置管理工具/厂商的评估 227
9.2.3 第三方工具 228
9.2.2 亲手评估 228
9.2.5 顾问 229
9.2.4 工具定制和集成商 229
9.3.1 工作陈述 230
9.3 SCM/PDM支持和工具采购 230
9.3.2 认可测试计划 230
9.3.3 分阶段地采购 231
9.3.4 许可证供应 231
表格9-1 配置管理工具评估/选择模版 232
9.3.5 长期支持 232
9.4 配置管理工具评估/选择模板 232
表格9-2 配置管理厂商评估/选择模版 234
9.5 配置管理厂商评估/选择模板 234
9.6 小结 236
表格10-1 配置管理工具 237
第10章 软件配置管理工具 237
10.1 CCC/HARVEST 237
表格10-2 CCC/HARVEST内置模型 238
10.2 ClearCase 239
10.3 PVCS 240
表格10-3 PVCS功能模块 240
10.5 RCS 242
10.4 SCCS 242
10.7 VSS 243
10.6 CVS 243
10.8 Perforce 245
10.9 TrueChange 247
10.10 JBCM 247
10.11 MKS Source Integrity 248
10.12 小结 250
第11章 计算机软件部署 251
11.1 软件部署生命周期 251
图11-1 软件部署生命周期 252
11.2 软件部署系统分类 253
11.3 目前的部署解决方案 253
表格11-1 对软件部署生命周期支持的覆盖程度的评估 254
表格11-2 抽象和协调能力的评估 254
11.4 Colorado大学的研究进展 255
11.4.1 SRM:软件发行管理器 255
11.4.2 Software Dock:软件部署体系结构 255
11.5 小结 256
图11-2 Software Dock结构 256
结束语 257
附录A 术语和缩写词 258
附录B 计算机软件配置管理计划规范GB/T 12505-90 271
附录C SW-CMM1.1软件配置管理 279
附录D SCM工具/厂商的详细列表 289
参考文献 298