第一章 什么是软件配置管理 1
1.1 SCM的最佳经验 2
1.1.1 统一标识工件并存入安全的存储池 3
1.1.2 控制和审计工件的变更 3
1.1.3 将工件组织为具有版本的构件 4
1.1.4 在项目的里程碑建立相应的基线 5
1.1.5 记录和跟踪变更请求 5
1.1.6 通过活动组织和集成一致的版本集合 5
1.1.7 维护稳定而一致的工作空间 7
1.1.8 支持对工件和构件的同步变更 8
1.1.9 及早和经常地集成 8
1.1.10 确保有能力重现软件的构建过程 9
1.2 SCM工具和流程 9
1.2.1 SCM工具 9
1.2.2 SCM流程 10
第二章 找到你的SCM解决方案 11
2.1 应对不断变化的项目需求 11
2.1.1 软件系统的复杂性增长 12
2.1.2 项目环境的复杂性增长 13
2.1.3 变化的生命周期阶段 15
2.1.4 流程和人员的变化 15
2.2 SCM工具的发展 16
2.2.1 五种类型的项目团队 18
2.2.2 如果没有SCM工具 19
2.2.3 早期SCM工具的支持 22
2.2.4 现代SCM工具支持 27
2.2.5 高级的SCM工具支持 34
2.3 小结 35
第三章 统一变更管理模型概述 37
3.1 什么是UCM? 37
3.2 什么是ClearCase? 38
3.3 ClearCase UCM过程概述 39
3.3.1 系统构架师(The Architect) 40
3.3.2 配置经理(The Configuration Manager) 40
3.3.3 项目经理(The Project Manager) 40
3.3.4 开发人员(The Developer) 41
3.3.5 集成员(The Integrator) 41
3.4 系统构架师:定义实施模型(Implementation Model) 41
3.4.1 ClearCase构件 42
3.4.2 UML中的构件 42
3.5 配置经理:建立SCM环境 44
3.6 项目经理:管理项目 44
3.7 开发人员:加入项目并进行开发 45
3.8 集成员:集成. 构建和发布 46
3.8.1 发布构件 46
3.8.2 系统集成 46
3.8.3 发布系统 47
3.9 基线+变更模型 47
第四章 ClearCase对象功能概述 51
4.1 存储池:版本对象库 51
4.2 工作空间:快照视图和动态视图 53
4.2.1 快照视图 54
4.2.2 动态视图 54
4.2.3 快照视图和动态视图的差异 57
4.3 项目管理:项目. 工作流和活动 58
4.3.1 项目(Project) 58
4.3.2 工作流 59
4.3.3 活动 60
4.4 版本对象:元素, 分支和版本 62
4.4.1 目录版本 63
4.4.2 元素类型 64
4.5 构件管理:构件和基线 65
4.6 过程:标签. 属性. 超链. 触发器 66
4.6.1 标签(Label) 66
4.6.2 属性(Attribute) 67
4.6.3 超链(Hyperlink) 67
4.6.4 触发器(Trigger) 67
4.6.5 创建和管理类型 68
4.7 构建:clearmake. 派生对象. 配置记录 69
4.7.1 构建审计 69
4.7.2 对象共享 69
4.7.3 并行和分布的构建 69
4.7.4 Clearmake同传统make比较 70
第五章 建立初始的SCM环境 71
5.1 ClearCase构架基础配置 71
5.1.1 许可证服务进程和注册服务进程 72
5.1.2 VOB服务进程和视图服务进程 72
5.1.3 ALBD服务器和客户端进程 74
5.1.4 多版本文件系统(Multiversion File System) 74
5.1.5 硬件配置举例 75
5.2 ClearCase硬件资源要求 78
5.2.1 内存要求 78
5.2.2 磁盘I/O要求 79
5.2.3 网络带宽(Bandwidth)和可靠性(Reliability) 79
5.2.4 CPU 80
5.2.5 其他建议 80
5.2.6 用户. VOB和视图限制 82
5.2.7 VOB规模的考虑 82
5.3 定义实施模型(Implementation Model) 83
5.4 创建VOB 84
5.4.1 使用命令行界面创建PVOB 84
5.4.2 使用图形用户界面创建PVOB 85
5.4.3 使用管理型VOB 86
5.4.4 使用命令行界面创建VOB和构件 88
5.4.5 使用图形化用户界面创建VOB和构件 88
5.4.6 导入现存源代码 90
5.5 基线晋升级别(Promotion Level) 91
第六章 使用ClearCase的项目管理 93
6.1 ClearCase项目是什么 93
6.1.1 谁在做变更 93
6.1.2 什么在变更 94
6.1.3 如何进行变更 94
6.1.4 变更如何流转并被集成 94
6.2 创建ClearCase项目 95
6.2.1 识别项目经理 95
6.2.2 识别构件和基线 95
6.2.3 定义项目制度 96
6.2.4 为项目选择存储位置 101
6.2.5 创建项目 101
第七章 协调多个项目组以及其他场景 105
7.1 组织大型的多项目开发工作 105
7.1.1 面向构架的项目团队 105
7.1.2 面向特性的项目团队 106
7.2 协调合作的项目:独立的构件 107
7.2.1 项目创建 107
7.2.2 迭代计划(Iteration Plan) 107
7.2.3 集成(Integration) 108
7.3 协调合作的项目:共享的构件 109
7.3.1 项目创建 110
7.3.2 迭代计划 110
7.3.3 集成 111
7.4 协调多个并行的发布版本 112
7.4.1 接续项目 112
7.4.2 主线项目 113
7.5 协调IS/IT开发项目 116
7.5.1 选择要开发的特性 118
7.5.2 贯彻审批流程 118
7.5.3 执行紧急修复Bug 118
7.5.4 计划一个主发布版本 119
7.6 协调文档项目或者小项目组 119
7.6.1 项目创建 120
7.6.2 加入一个项目 120
7.6.3 交付变更 120
7.6.4 更新工作空间 121
7.6.5 创建基线 121
7.7 脱离基于活动的SCM使用UCM 121
第八章 使用ClearCase UCM模型进行开发 123
8.1 开发人员的UCM视角 123
8.2 加入一个项目 124
8.3 进行变更 126
8.3.1 用活动来组织工作 126
8.3.2 修改文件及目录 127
8.3.3 通过命令行进行工作 128
8.4 交付变更 129
8.4.1 检入所有未完成的检出元素 129
8.4.2 变基到项目最新的推荐基线 131
8.4.3 执行ClearCase交付命令 131
8.4.4 对交付结果进行构建并测试 132
8.4.5 完成或撤消交付 133
8.5 变基你的开发流 133
8.5.1 运行变基操作 134
8.5.2 构建并测试 135
8.5.3 结束或撤消变基 135
8.6 处理变更冲突 135
8.6.1 交付场景1(没有冲突) 135
8.6.2 交付场景2(没有冲突) 136
8.6.3 交付场景3(有冲突) 136
8.6.4 变基场景1(没有冲突) 137
8.6.5 变基场景2(有冲突) 137
8.6.6 ClearCase合并工具 138
第九章 集成. 构建与发布 141
9.1 软件集成 141
9.1.1 合并集成 141
9.1.2 组装集成 142
9.1.3 不同规模开发组的集成情况 142
9.2 使用ClearCase进行隔离和集成 145
9.2.1 共享视图——无隔离开发 145
9.2.2 分支/最新开发——最大化集成 146
9.2.3 使用分支来进行隔离和集成 149
9.2.4 使用UCM的集成 151
9.3 使用ClearCase UCM来构建和建立基线 154
9.3.1 锁住集成流 155
9.3.2 为软件构件建立基线 156
9.3.3 构建软件构件 157
9.3.4 执行冒烟测试 158
9.3.5 提升软件构件基线 158
9.3.6 将集成流解锁 158
9.3.7 夜间构建过程的自动化 159
9.3.8 在项目之间移动变更 159
9.4 进阶(staging)和版本发布 159
9.4.1 商业软件 160
9.4.2 嵌入式系统 160
9.4.3 互联网站 161
9.4.4 内部软件构件 162
第十章 地域上分布的开发 163
10.1 分布式开发的挑战 163
10.1.1 组织 164
10.1.2 通信 164
10.1.3 技术 165
10.2 ClearCase如何支持分布式开发 166
10.2.1 远程访问 166
10.2.2 Web访问 167
10.2.3 断网使用 168
10.2.4 本地访问 168
10.2.5 什么是ClearCase MultiSite 169
10.3 多开发组:生产者/使用者模式 170
10.3.1 支持生产者/使用者开发组 173
10.3.2 UCM如何支持生产者/使用者模型 173
10.3.3 基本ClearCase(Base ClearCase)如何支持生产者/使用者模型 173
10.3.4 总结 175
10.4 多开发组:共享源代码 175
10.4.1 UCM如何支持共享代码 177
10.4.2 基本ClearCase如何支持共享代码使用方式 178
10.4.3 总结 179
10.5 单一开发组:分布式成员 179
10.5.1 UCM模型如何支持本地访问 180
10.5.2 基本ClearCase如何支持本地使用 180
10.5.3 基于活动的分支 183
10.5.4 总结 184
10.6 ClearCase MultiSite的其他用途 184
10.6.1 使用MultiSite来进行备份 184
10.6.2 使用MultiSite来进行交付 185
10.6.3 使用MultiSite进行跨平台互操作 185
第十一章 变更请求管理和ClearQuest 187
11.1 什么是变更请求管理 187
11.2 什么是变更请求? 188
11.3 变更请求管理过程 188
11.3.1 提交 189
11.3.2 评估 189
11.3.3 决策 190
11.3.4 实现 190
11.3.5 验证 191
11.3.6 完成 191
11.4 什么是ClearQuest? 191
11.5 我怎样使用ClearQuest的数据? 193
11.5.1 查询 194
11.5.2 报告 195
11.5.3 图表 195
11.6 ClearQuest如何支持UCM? 198
词汇表 201
参考文献 215