第一部分 绪论 2
第1章 TSPi简介 2
1.1 TSPi是什么 2
工程小组为何需要过程 3
1.2 TSPi原则 3
1.3 TSPi的设计 3
1.3.1 在个体软件过程(PSP)的基础上提供一个简单的框架 4
1.3.2 在几个周期内开发产品 4
1.3.3 建立标准的质量和绩效度量 5
1.3.4 为团队和学生提供精确的度量 5
1.3.5 进行角色和团队评阶 5
1.3.6 需要过程规范 5
1.3.7 提供团队问题的指导 6
1.4 TSPi的结构和流程 6
周期性开发策略 6
1.5 TSpi过程 7
1.6 本书结构和流程 10
1.7 小结 10
第2章 团队软件过程的基本原理 11
2.1 项目为何失败 11
处理压力 12
2.2 常见的团队问题 12
2.2.1 无效的领导力 12
2.2.2 不能做出妥协安排或不善于合作 13
2.2.3 缺少参与 13
2.2.4 拖拉与缺乏信心 13
2.2.5 质量低劣 13
2.2.6 功能多余 13
2.2.7 无效的组员互评 14
2.3 团队是什么 14
2.3.1 团队规模 14
2.3.2 具有凝聚力的团队(jelled team) 14
2.3.3 团队协作的基本条件 15
2.4 建设高效团队 15
2.4.1 团队凝聚力 15
2.4.2 挑战性的目标 15
2.4.3 反馈 16
2.4.4 共同的工作框架 16
2.5 团队如何发展 16
团队如何成为具有凝聚力的团队 17
2.6 TSPi如何建设团队 17
2.6.1 目标 17
2.6.2 角色 18
2.6.3 计划 18
2.6.4 沟通 18
2.6.5 外部沟通 19
2.7 小结 19
2.8 参考文献 19
第二部分 TSPi过程 22
第3章 启动一个团队项目 22
3.1 为什么需要团队启动过程 22
3.2 团队目标 23
3.2.1 设定目标需要考虑的因素 23
3.2.2 设定团队目标 24
3.2.3 TSPi的目标设定 24
3.3 团队成员目标 25
设定团队成员目标 25
3.4 角色目标 26
3.4.1 团队领导目标 26
3.4.2 开发经理目标 26
3.4.3 计划经理目标 27
3.4.4 质量和过程经理目标 27
3.4.5 支持经理目标 27
3.5 TSPi启动脚本 27
3.5.1 学生信息 31
3.5.2 产品目标 33
3.5.3 团队分工 33
3.5.4 团队目标 33
3.5.5 团队会议与第一次团队会议 33
3.5.6 数据需求 37
3.5.7 项目开始 38
3.5.8 项目资料库 38
3.5.9 TSPi支持工具 38
3.6 小结 38
第4章 开发策略 39
4.1 计划先行 39
4.1.1 承诺之前先计划 39
4.1.2 为本课程制定计划 40
4.2 策略是什么 40
4.3 概念设计 41
4.4 风险管理 41
管理风险 42
4.5 复用策略 42
4.6 策略脚本 43
4.6.1 入口准则 45
4.6.2 建立策略评判准则 45
4.6.3 完成概念设计 46
4.6.4 选择开发策略 46
4.6.5 完成初步规模估算 48
4.6.6 完成初步时间估算 48
4.6.7 评估风险 49
4.6.8 建立策略文档 49
4.6.9 更新开发策略 49
4.6.10 制定配置管理计划 49
4.6.11 出口准则 50
4.7 小结 50
第5章 开发计划 51
5.1 计划的必要性 51
5.1.1 为什么制定计划 51
5.1.2 平衡的计划 52
5.1.3 对照计划跟踪进展 52
5.1.4 详细计划 53
5.1.5 处理未计划任务 54
5.1.6 估算级别 54
5.1.7 实现计划 55
5.2 TSPi计划过程 56
5.3 TSPi支持工具 57
5.4 开发计划脚本 57
5.4.1 入口准则 60
5.4.2 项目计划步骤2.1 60
5.4.3 项目计划步骤2.2 60
5.4.4 项目计划步骤3.1 63
5.4.5 项目计划步骤3.2 63
5.4.6 项目计划步骤4.1 66
5.4.7 项目计划步骤4.2 66
5.4.8 项目计划步骤5 67
5.4.9 项目计划步骤6 72
5.4.10 项目计划步骤7 72
5.4.11 最后的计划步骤 73
5.4.12 出口准则 77
5.5 跟踪工作情况 77
5.5.1 项目跟踪步骤1 78
5.5.2 项目跟踪步骤2 78
5.5.3 项目跟踪步骤3 78
5.5.4 项目跟踪步骤4 79
5.5.5 项目跟踪步骤5 79
5.5.6 项目跟踪步骤6 79
5.5.7 项目跟踪步骤7 79
5.5.8 项目跟踪步骤8 79
5.6 质量计划 80
5.6.1 概要比率 80
5.6.2 零缺陷率(PDF) 81
5.6.3 每页缺陷数 81
5.6.4 缺陷数/KLOC 82
5.6.5 缺陷比率 83
5.6.6 开发时间比率 83
5.6.7 A/FR 83
5.6.8 评审速率和审查速率 84
5.6.9 缺陷注入率 84
5.6.10 缺陷排除率 85
5.6.11 阶段收益 86
5.6.12 过程收益 86
5.6.13 处理低质量部件 86
5.6.14 出口准则 87
5.7 小结 87
5.8 参考文献 87
第6章 定义需求 88
6.1 需求是什么 88
6.2 为什么需要需求 89
6.3 需求变更 89
需求提取 90
6.4 软件需求规格说明书 90
6.4.1 需求可追溯性 91
6.4.2 平衡工作量 92
6.5 TSPi需求脚本 92
6.5.1 入口准则 95
6.5.2 要求陈述评审 95
6.5.3 要求陈述澄清 96
6.5.4 需求任务分配 96
6.5.5 需求文档 96
6.5.6 系统测试计划 96
6.5.7 需求和系统测试计划审查 97
6.5.8 需求更新 97
6.5.9 用户SRS评审 97
6.5.10 需求基线 97
6.5.11 出口准则 98
6.6 小结 98
6.7 参考文献 98
第7章 与团队一起设计 99
7.1 设计原则 100
7.2 在团队中设计 100
7.2.1 利用整个团队 100
7.2.2 设计研究 101
7.2.3 利用所有团队成员的才智 101
7.3 设计标准 102
7.3.1 设计表达标准 102
7.3.2 用例或PSP操作场景 103
7.3.3 状态机分析 103
7.3.4 产生精确的设计 103
7.4 复用性设计 104
7.4.1 可复用接口标准 104
7.4.2 可复用文档标准 104
7.4.3 可复用部件质量 105
7.4.4 应用支持 105
7.5 可用性设计 105
7.6 可测试性设计 106
黑盒测试与白盒测试 106
7.7 设计评审和审查 106
审查的其他好处 107
7.8 TSPi设计脚本 107
7.8.1 入口准则 110
7.8.2 高层设计 110
7.8.3 设计标准 110
7.8.4 产品总体结构 110
7.8.5 设计任务分配 112
7.8.6 设计规格说明书 113
7.8.7 集成测试计划 113
7.8.8 设计审查 113
7.8.9 设计更新 113
7.8.10 设计基线 114
7.8.11 出口准则 114
7.9 小结 114
7.10 参考文献 115
第8章 产品实现 116
8.1 设计完成准则 116
8.1.1 设计级别 116
8.1.2 平行实现 117
8.2 实现标准 117
8.2.1 标准评审 117
8.2.2 编码标准 118
8.2.3 规模标准 118
8.2.4 度量其他类型产品的规模 119
8.2.5 缺陷标准 119
8.2.6 缺陷预防 120
8.3 实现策略 121
8.3.1 实现策略:评审 121
8.3.2 实现策略:复用 122
8.3.3 实现策略:测试 122
8.4 评审和审查 122
8.4.1 随机缺陷 122
8.4.2 对测试的影响 123
8.4.3 完全测试的困难 123
8.4.4 源程序的设计审查 123
8.5 IMP脚本 124
8.5.1 入口准则 127
8.5.2 实现计划 127
8.5.3 详细设计与设计评审 127
8.5.4 测试开发 128
8.5.5 详细设计审查 128
8.5.6 编码及代码评审 128
8.5.7 代码审查 129
8.5.8 单元测试 129
8.5.9 组件质量评审 129
8.5.10 组件发布 133
8.5.11 出口准则 133
8.6 小结 133
8.7 参考文献 134
第9章 集成与系统测试 135
9.1 测试原则 135
9.2 TSPi测试策略 136
9.3 构建和集成策略 137
9.3.1 大爆炸策略 137
9.3.2 一次一个策略 137
9.3.3 测试群策略 137
9.3.4 扁平系统策略 138
9.4 系统测试策略 138
可选系统测试策略 138
9.5 测试计划 139
9.6 跟踪与度量测试 140
9.6.1 测试日志 140
9.6.2 缺陷易发模块 141
9.6.3 模块缺陷数据 142
9.6.4 跟踪缺陷数据 142
9.7 文档 143
9.7.1 文档的重要性 143
9.7.2 文档设计 143
9.7.3 文档提纲 144
9.7.4 书写风格 144
9.7.5 文档评审 145
9.8 TSPi测试脚本 145
9.8.1 入口准则 149
9.8.2 测试开发 149
9.8.3 构建 149
9.8.4 集成 150
9.8.5 系统测试 150
9.8.6 回归测试 151
9.8.7 文档 151
9.8.8 出口准则 151
9.9 小结 151
9.10 参考文献 152
第10章 结项总结 153
10.1 为什么要进行结项总结 153
10.2 结项总结能为你做什么 153
10.3 过程改进建议 154
10.4 TSPi结项总结脚本 154
10.4.1 入口准则 157
10.4.2 评审过程数据 157
10.4.3 质量评审 158
10.4.4 角色评估 158
10.4.5 准备周期报告 159
10.4.6 周期报告 159
10.4.7 角色报告 159
10.4.8 工程师个人报告 160
10.4.9 撰写报告 160
10.4.10 角色评估 160
10.4.11 角色评估建议 162
10.4.12 出口准则 162
10.5 小结 163
10.6 参考文献 163
第三部分 团队角色 167
第11章 团队领导角色 167
11.1 团队领导的目标 167
11.1.1 团队成员的共同目标 167
11.1.2 团队领导的目标1 168
11.1.3 团队领导的目标2 168
11.1.4 团队领导的目标3 168
11.1.5 团队领导的目标4 169
11.1.6 团队领导的目标5 169
11.2 有用的团队领导的技能和能力 169
11.2.1 有拥护者的领导 170
11.2.2 领导需要表现 170
11.2.3 领导需要面对困境 172
11.2.4 领导处理人际关系 172
11.3 团队领导的主要活动 172
11.3.1 团队领导的主要活动1 173
11.3.2 团队领导的主要活动2 176
11.3.3 团队领导的主要活动3 176
11.3.4 团队领导的主要活动4 176
11.3.5 团队领导的主要活动5 177
11.3.6 团队领导的主要活动6 178
11.3.7 团队领导的主要活动7 181
11.3.8 团队领导的主要活动8 181
11.4 团队领导的项目工作 181
11.5 小结 181
第12章 开发经理角色 183
12.1 开发经理的目标 183
12.1.1 团队成员的共同目标 184
12.1.2 开发经理的目标1 184
12.1.3 开发经理的目标2 184
12.2 对开发经理有益的技能和能力 185
12.3 开发经理的主要活动 187
12.3.1 开发经理的主要活动1 187
12.3.2 开发经理的主要活动2 188
12.3.3 开发经理的主要活动3 188
12.3.4 开发经理的主要活动4 189
12.3.5 开发经理的主要活动5 189
12.3.6 开发经理的主要活动6 190
12.3.7 开发经理的主要活动7 191
12.3.8 开发经理的主要活动8 191
12.3.9 开发经理的主要活动9 193
12.3.10 开发经理的主要活动10 194
12.3.11 开发经理的主要活动11 194
12.4 开发经理的项目活动 194
12.5 小结 194
第13章 计划经理角色 196
13.1 计划经理的目标 196
13.1.1 团队成员的共同目标 196
13.1.2 计划经理的目标1 197
13.1.3 计划经理的目标2 197
13.2 对计划经理有益的技能和能力 198
13.3 计划经理的主要活动 198
13.3.1 计划经理的主要活动1 199
13.3.2 计划经理的主要活动2 201
13.3.3 计划经理的主要活动3 201
13.3.4 计划经理的主要活动4 204
13.3.5 计划经理的主要活动5 207
13.3.6 计划经理的主要活动6 208
13.4 计划经理的项目活动 208
13.5 小结 208
第14章 质量和过程经理角色 209
14.1 质量和过程经理的目标 209
14.1.1 团队成员的共同目标 209
14.1.2 质量和过程经理的目标1 210
14.1.3 质量和过程经理的目标2 210
14.1.4 质量和过程经理的目标3 211
14.1.5 质量和过程经理的目标4 212
14.2 对质量和过程经理有益的技能和能力 212
14.3 质量和过程经理的主要活动 213
14.3.1 质量和过程经理的主要活动1 214
14.3.2 质量和过程经理的主要活动2 214
14.3.3 质量和过程经理的主要活动3 214
14.3.4 质量和过程经理的主要活动4 215
14.3.5 质量和过程经理主要活动5 215
14.3.6 质量和过程经理的主要活动6 216
14.3.7 质量和过程经理的主要活动7 218
14.3.8 质量和过程经理的主要活动8 218
14.3.9 质量和过程经理的主要活动9 218
14.4 质量和过程经理的项目活动 219
14.5 小结 220
第15章 支持经理角色 221
15.1 支持经理的目标 221
15.1.1 团队成员的共同目标 221
15.1.2 支持经理的目标1 222
15.1.3 支持经理的目标2 222
15.1.4 支持经理的目标3 222
15.1.5 支持经理的目标4 223
15.2 对支持经理有益的技能和能力 223
15.3 支持经理的主要活动 223
15.3.1 支持经理的主要活动1 223
15.3.2 支持经理的主要活动2 224
15.3.3 支持经理的主要活动3 224
15.3.4 支持经理的主要活动4 225
15.3.5 支持经理的主要活动5 225
15.3.6 支持经理的主要活动6 226
15.3.7 支持经理的主要活动7 227
15.3.8 支持经理的主要活动8 227
15.4 支持经理的项目活动 227
15.5 小结 229
第四部分 使用TSPi 232
第16章 管理自我 232
16.1 责任心 232
16.1.1 一个失败的项目 232
16.1.2 履行责任 233
16.1.3 决不放弃 233
16.1.4 面对现实 234
16.1.5 负责任所带来的风险 234
16.1.6 陈述事实 234
16.1.7 事实往往是可以争议的 235
16.2 目标导向性 235
16.2.1 着眼于日程表 235
16.2.2 目标提供了工作重点和优先级 236
16.2.3 你想让我做什么? 236
16.3 原则性 237
16.3.1 不与团队中其他人合作 237
16.3.2 如何遵循处事的几个原则 237
16.4 小结 240
16.5 参考文献 240
第17章 在团队中工作 241
17.1 具有凝聚力的团队 241
17.2 团队工作的责任 242
17.3 团队成员间的沟通 242
17.3.1 可见性 242
17.3.2 聆听 242
17.3.3 协商 243
17.3.4 为什么有原则的协商是有效的 244
17.3.5 花费足够的时间 245
17.4 作出和履行承诺 245
17.4.1 负责的承诺 245
17.4.2 做出承诺 246
17.5 参与团队活动 246
17.5.1 勇于发表自己的看法 246
17.5.2 支持坚持己见的人 247
17.5.3 唤起别人的注意 247
17.5.4 对他人的意见要给予关注 247
17.6 团队建设的责任 248
17.7 接受并承担团队所分配的角色 248
17.8 建立并努力完成团队目标 249
17.9 建立和维护团队 249
17.9.1 难以相处的团队成员 250
17.9.2 院校团队的问题 250
17.9.3 寻求帮助 251
17.9.4 支持 251
17.10 小结 251
17.11 参考文献 252
第18章 团队工作 253
附录A TSPi采样练习的要求说明 256
A.1 目的 256
A.2 “变化计数器”功能要求说明 256
A.3 “程序分析器”功能要求说明 259
A.4 参考文献 260
附录B 软件配置管理 261
B.1 软件配置管理问题 261
B.2 软件配置管理概要 262
不需要的项 262
B.3 SCM计划 262
B.3.1 配置标识计划 262
B.3.2 配置控制规程 263
B.3.3 配置控制委员会 263
B.3.4 变更申请表 263
B.4 系统基线 265
B.4.1 基线提交 265
B.4.2 备份规程 266
B.4.3 配置状态报告 266
B.5 SCM过程自动化 267
B.6 软件配置管理过程 267
B.6.1 第一步:制定SCM计划 269
B.6.2 第二步:管理系统基线 269
B.6.3 第三步:管理变更 270
B.6.4 第四步:报告SCM状态 271
附录C 软件审查 272
C.1 什么是审查 272
C.1.1 审查是如何进行的 272
C.1.2 评审的时机 272
C.1.3 使用规定的审查程序 273
C.2 什么使审查有效 273
C.2.1 审查整个程序 273
C.2.2 集思广益 273
C.2.3 采取不同的视角 273
C.2.4 提供发现错误的机会 274
C.2.5 全面测试的重要性 274
C.2.6 只审查经个人评审过的产品 274
C.3 审查方法 274
C.3.1 检查单 275
C.3.2 视角 275
C.3.3 产品侧重点 275
C.3.4 审查实践 276
C.4 审查数据 276
C.4.1 审查速率 276
C.4.2 评审占开发比率 276
C.4.3 审查收益 277
C.5 审查报告:INS表 277
C.6 估算遗留的缺陷数 280
C.6.1 估算总数 280
C.6.2 估算程序中的缺陷数 280
C.6.3 软件审查中的捕获-重捕获方法 280
C.6.4 2个工程师的估算范例 281
C.6.5 3个工程师的估算范例 282
C.6.6 注意 284
C.6.7 一些改进 284
C.7 具有高个人审查收益的重要性 285
C.8 安排审查时间 285
C.9 TSPi审查脚本 286
C.9.1 入口准则 287
C.9.2 计划审查工作 287
C.9.3 召开审查介绍会 288
C.9.4 评审产品 288
C.9.5 召开审查会议 288
C.9.6 遍历产品 288
C.9.7 估算遗留缺陷数 289
C.9.8 总结审查会议 289
C.9.9 修改产品,验证缺陷修复 289
C.9.10 出口准则 289
C.10 参考文献 290
附录D TSPi脚本 291
附录E 角色脚本 319
附录F TSPi表格及其使用说明 333
附录G TSPi标准与规格说明 379