第一篇 软件开发生命周期概念第1章 软件开发生命周期基本概念 3
1.1 软件的基本概念 3
1.1.1 软件定义 3
1.1.2 软件的特征 4
1.1.3 软件的分类 5
1.1.4 软件生产的发展 7
1.2 软件危机 7
1.2.1 软件危机的表现 7
1.2.2 软件危机的原因 8
1.2.3 软件危机的解决 11
1.3 软件开发生命周期 11
1.3.1 软件开发生命周期的定义 11
1.3.2 软件开发生命周期的基本原理 12
1.3.3 软件开发生命周期的作用 13
小结 14
常见问题与回答 15
习题 16
第2章 软件过程 17
2.1 软件过程的基本概念 17
2.1.1 软件过程的定义 17
2.1.2 软件过程的活动 18
2.2 软件开发生命周期 18
2.3 软件过程模型 21
2.3.1 瀑布模型 21
2.3.2 快速原型模型 23
2.3.3 增量模型 23
2.3.4 螺旋模型 24
2.3.5 喷泉模型 26
小结 27
常见问题与回答 27
习题 28
第二篇 软件过程的基本活动第3章 结构化分析 31
3.1 可行性分析 31
3.1.1 可行性分析的任务 31
3.1.2 可行性分析的步骤 33
3.1.3 系统流程图 34
3.2 需求分析 35
3.2.1 需求分析的任务与步骤 36
3.2.2 实体—关系图 41
3.2.3 数据流图 43
3.2.4 状态变迁图 49
3.2.5 数据字典 50
3.2.6 需求规格说明与评审 53
小结 54
习题 55
第4章 结构化设计 56
4.1 概要设计 57
4.1.1 概要设计的任务与步骤 57
4.1.2 概要设计的基本原理 58
4.1.3 概要设计的启发式规则 61
4.1.4 概要设计的方法 62
4.2 详细设计 65
4.2.1 详细设计的基本概念 65
4.2.2 详细设计的工具 66
小结 72
习题 72
第5章 结构化实现 73
5.1 编码 73
5.1.1 源程序的质量要求 73
5.1.2 源程序的编码风格 74
5.1.3 程序设计语言 79
5.2 测试 82
5.2.1 软件测试的基础 82
5.2.2 软件测试的方法 86
5.2.3 黑盒测试的用例设计 87
5.2.4 白盒测试的用例设计 91
5.2.5 测试策略 97
小结 106
常见问题与回答 107
习题 108
第6章 面向对象的概念 109
6.1 面向对象思想产生 109
6.1.1 传统方法存在的问题 109
6.1.2 产生问题的原因 110
6.1.3 面向对象的主要思想 110
6.2 基本概念 111
6.2.1 对象与类 111
6.2.2 其他概念 114
6.3 UML基本概念和描述元素 117
6.3.1 UML简介 117
6.3.2 UML组成及应用 118
6.3.3 类与对象的表示 118
6.4 面向对象建模 119
6.4.1 对象模型 119
6.4.2 动态模型 121
6.4.3 功能模型 122
6.4.4 三种模型之间的关系 123
小结 124
习题 124
第7章 面向对象的分析 125
7.1 概述 125
7.2 问题域建模 126
7.3 用例建模 135
7.3.1 用例图表示 135
7.3.2 用例分析 137
7.3.3 用例图和用例描述设计实例 139
小结 140
习题 141
第8章 面向对象设计 142
8.1 面向对象系统设计基础 142
8.1.1 面向对象设计的准则 142
8.1.2 面向对象设计的启发规则 143
8.2 子系统设计 144
8.2.1 问题域子系统的设计 145
8.2.2 设计人机交互子系统 145
8.2.3 应用控制子系统的设计 146
8.2.4 设计数据管理子系统 147
8.2.5 与问题域有关的设计 148
8.3 通过MVC设计模式设计 149
小结 150
习题 151
第9章 面向对象的实现 152
9.1 程序设计语言 152
9.1.1 面向对象语言特点 152
9.1.2 面向对象语言选择 153
9.1.3 实际因素 155
9.1.4 程序设计风格 155
9.2 测试策略及测试用例的设计 157
9.2.1 面向对象分析的测试 157
9.2.2 面向对象设计的测试 158
9.2.3 面向对象实现的测试 158
9.2.4 面向对象单元测试 159
9.2.5 面向对象集成测试 159
9.2.6 面向对象确认测试 160
小结 160
习题 160
第10章 软件维护 161
10.1 软件维护概述 161
10.2 软件维护的特点 162
10.2.1 结构化维护和非结构化维护 162
10.2.2 软件维护的成本 162
10.2.3 软件维护的副作用 163
10.3 软件维护活动 163
10.3.1 软件维护机构 163
10.3.2 软件维护报告 164
10.3.3 软件维护工作流程 164
10.3.4 软件维护档案记录 165
10.3.5 软件维护评价 165
小结 165
常见问题与回答 166
习题 166
第三篇 软件过程的保护性活动第11章 软件项目管理 169
11.1 软件项目管理概述 169
11.2 软件度量 170
11.2.1 软件代码行度量 171
11.2.2 功能度量 171
11.3 软件项目估算 174
11.3.1 软件项目估算概述 174
11.3.2 软件开发成本和工作量估算方法 175
11.4 软件项目风险 177
11.4.1 风险的分类 178
11.4.2 风险识别 179
11.4.3 风险估计与评价 180
11.4.4 风险缓解、监控和管理 181
11.5 软件项目进度 183
11.5.1 估算软件开发时间 184
11.5.2 进度安排和跟踪 184
11.6 软件项目组织及人员配备 186
11.6.1 软件项目组织 186
11.6.2 人员配备 188
小结 188
常见问题与回答 189
习题 190
第12章 软件配置管理 191
12.1 软件配置概述 191
12.1.1 软件配置项 192
12.1.2 基线 193
12.2 软件配置管理过程 194
12.2.1 配置标识 195
12.2.2 版本控制 195
12.2.3 变更控制 195
12.2.4 配置审计 197
12.2.5 配置状态报告 197
小结 198
常见问题与回答 198
习题 199
第13章 软件质量保证 200
13.1 软件质量的基本概念 200
13.2 软件质量的度量和评价 202
13.3 软件质量的保证方法 206
13.3.1 SQA活动 206
13.3.2 软件评审 206
小结 208
常见问题与回答 208
习题 209
第14章 软件过程管理 210
14.1 CMM基本概念 210
14.1.1 软件过程管理的概念 210
14.1.2 能力成熟度等级 211
14.1.3 能力成熟度模型的体系结构 212
14.1.4 成熟度提问单 214
14.2 CMM实施步骤 214
小结 216
常见问题与回答 217
习题 217
第四篇 软件文档编写指南第15章 软件文档的编写 221
15.1 《需求规格说明书》的撰写 221
15.2 《概要设计说明书》的撰写 224
15.3 《详细设计说明书》的撰写 226
15.4 《测试报告》的撰写 228
15.5 软件文档编写的注意事项 231
15.6 软件文档编写技巧 233
小结 234
常见问题与回答 234
习题 234
参考文献 235