第1章 软件工程概论 1
1.1 软件和软件工程的概念 1
1.1.1 软件的概念 1
1.1.2 软件危机 2
1.1.3 软件工程的概念 3
1.2 软件工程方法 4
1.2.1 面向过程方法 4
1.2.2 面向对象方法 5
1.2.3 形式化方法 6
1.3 软件过程与软件生存周期 6
1.3.1 软件生存周期 6
1.3.2 软件过程 7
1.4 软件过程模型 8
1.5 软件工具概述 15
小结 18
复习要点 18
第2章 面向对象的基本概念与UML 20
2.1 面向对象系统的基本概念 20
2.1.1 面向对象系统的概念 20
2.1.2 对象 21
2.1.3 类与封装 21
2.1.4 继承 22
2.1.5 多态与动态绑定 23
2.1.6 消息通信 23
2.2 统一建模语言UML概述 23
2.2.1 UML的产生和发展 24
2.2.2 UML的特点 24
2.3 UML的模型元素 24
2.3.1 UML的事物 24
2.3.2 UML中的关系 26
2.4 UML中的图 29
2.4.1 外部视图 29
2.4.2 内部视图 31
小结 34
复习要点 34
第3章 软件需求分析 36
3.1 系统工程的概念 36
3.1.1 基于计算机的系统 36
3.1.2 计算机系统工程 37
3.1.3 可行性研究 37
3.2 软件需求分析的任务和原则 38
3.2.1 软件需求的定义和层次 39
3.2.2 软件需求分析的任务 40
3.2.3 需求分析的原则 40
3.3 软件需求获取 41
3.3.1 需求获取的任务和原则 41
3.3.2 需求获取的过程 42
3.3.3 需求的表达 43
3.4 结构化分析方法 43
3.4.1 数据建模 44
3.4.2 功能建模 45
3.4.3 行为建模 48
3.4.4 数据字典 48
3.4.5 基本加工逻辑说明 49
3.5 面向对象的分析方法 51
3.5.1 面向对象分析概述 51
3.5.2 识别类或对象 52
3.5.3 识别关系(结构) 53
3.5.4 标识类的属性和服务 54
3.6 需求规格说明和需求评审 55
3.6.1 软件需求规格说明的目标 55
3.6.2 软件需求规格说明编制原则 55
3.6.3 软件需求规格说明模板 56
3.6.4 软件需求评审 57
小结 58
复习要点 58
第4章 软件设计 60
4.1 软件设计的任务和原则 60
4.1.1 软件设计的概念 60
4.1.2 软件设计的任务 60
4.1.3 软件设计的过程 61
4.1.4 软件设计的原则 61
4.2 结构化设计方法 65
4.2.1 结构化设计与结构化分析的关系 65
4.2.2 软件结构及表示工具 65
4.2.3 结构化设计的过程 67
4.2.4 变换流映射 67
4.2.5 事务流映射 68
4.2.6 软件模块结构改进 69
4.2.7 接口设计 70
4.3 软件的过程设计 70
4.3.1 部署设计 70
4.3.2 算法设计 71
4.3.3 处理过程的描述 71
4.4 面向对象的系统设计 73
4.4.1 系统设计的目标和准则 73
4.4.2 子系统分解 73
4.4.3 问题域部分的设计 74
4.4.4 人机交互部分的设计 75
4.4.5 任务管理部分的设计 76
4.4.6 数据管理部分的设计 77
4.5 体系结构设计 79
4.5.1 体系结构的概念 79
4.5.2 体系结构的4+1视图 80
4.5.3 常用的体系结构风格 81
4.5.4 分布式系统体系结构 84
4.6 对象设计 86
4.6.1 使用模式设计对象 86
4.6.2 接口规格说明设计 87
4.6.3 重构对象设计模型 87
4.6.4 优化对象设计模型 87
4.7 软件设计规格说明与评审 88
4.7.1 软件设计规格说明 88
4.7.2 软件概要设计评审 89
4.7.3 软件详细设计评审 90
小结 90
复习要点 91
第5章 程序实现 93
5.1 程序实现的任务 93
5.2 结构化程序设计方法 94
5.2.1 自顶向下和逐步求精 94
5.2.2 使用基本控制结构构造程序 94
5.3 面向对象的程序设计方法 94
5.4 程序设计风格与编码规范 96
5.5 编程语言的选择 99
5.5.1 编程语言特性的比较 100
5.5.2 编程语言的分类 101
5.5.3 编程语言的选择 103
5.6 程序复杂性 104
5.6.1 代码行度量法 104
5.6.2 McCabe度量法 105
5.7 程序调试 106
5.7.1 程序调试的步骤 106
5.7.2 几种主要的调试方法 107
5.7.3 程序调试的原则 109
小结 110
复习要点 110
第6章 软件测试 112
6.1 软件测试的任务 112
6.2 软件测试方法 116
6.2.1 白盒测试方法 116
6.2.2 黑盒测试方法 120
6.2.3 其他测试方法 122
6.3 软件测试的策略 123
6.3.1 软件测试活动 123
6.3.2 单元测试 123
6.3.3 集成测试 124
6.3.4 系统测试 127
6.3.5 验收测试 128
6.4 人工测试 129
6.4.1 桌上检查 129
6.4.2 代码检查 130
6.4.3 走查 131
小结 132
复习要点 132
第7章 软件维护 134
7.1 软件维护的任务 134
7.1.1 软件维护的定义 134
7.1.2 软件维护的类型 134
7.2 软件维护的活动 135
7.2.1 维护机制 135
7.2.2 软件维护申请报告 136
7.2.3 软件维护过程模型 136
7.2.4 GB/T 20157—2006软件维护过程 137
7.2.5 维护记录文档 138
7.3 程序修改的步骤及修改的副作用 138
7.3.1 分析和理解程序 139
7.3.2 评估修改范围 139
7.3.3 修改程序 140
7.3.4 修改程序的副作用及其控制 140
7.3.5 重新验证程序 141
7.4 软件可维护性 141
7.4.1 可维护性的定义 142
7.4.2 软件可维护性度量 142
7.5 软件演进与再工程 143
7.5.1 遗留系统的演化 143
7.5.2 软件再工程 144
7.5.3 遗留系统的现代化改造过程 145
7.5.4 重构与逆向工程 146
小结 147
复习要点 147
第8章 软件过程 149
8.1 软件过程的概念 149
8.2 软件过程的建模 150
8.2.1 软件生存周期过程模型 150
8.2.2 生存周期的基本过程 151
8.2.3 生存周期的支持过程 151
8.2.4 生存周期的组织过程 152
8.3 软件过程成熟度模型 153
8.3.1 软件过程成熟度 153
8.3.2 CMM与CMMI 154
8.3.3 CMMI的分级表示 155
8.3.4 CMMI的连续表示 158
8.3.5 CMMI的模型构件 159
8.3.6 CMMI评估 161
8.4 软件过程改进 162
8.4.1 软件过程改进的IDEAL模型 162
8.4.2 软件过程改进框架 164
8.4.3 有效的软件过程 165
小结 165
复习要点 166
第9章 软件项目管理 167
9.1 软件项目与项目管理概述 167
9.1.1 项目和项目管理的概念 167
9.1.2 项目管理的定义 168
9.1.3 过程与项目管理 168
9.2 软件项目计划与项目集成管理 169
9.2.1 项目集成管理的概念 169
9.2.2 项目计划制订的过程 169
9.2.3 项目计划的执行和控制 172
9.3 软件项目度量与工作量估算 174
9.3.1 软件度量的概念 174
9.3.2 软件范围管理 176
9.3.3 软件项目中的资源 177
9.3.4 软件项目的工作量估算 178
9.4 项目的成本管理 178
9.4.1 项目成本的概念 178
9.4.2 项目成本管理的过程 179
9.5 项目的进度管理 180
9.5.1 项目进度管理的概念 180
9.5.2 项目进度管理的过程 181
9.6 项目人员与沟通管理 182
9.6.1 项目人员管理的概念 182
9.6.2 项目的组织规划 182
9.6.3 项目的人员组织 185
9.6.4 项目团队的组织与建设 186
9.6.5 项目冲突及管理 188
9.6.6 项目沟通管理 189
9.7 项目风险管理 190
9.7.1 风险与风险管理的概念 190
9.7.2 项目风险管理的过程 192
9.8 软件配置管理 196
9.8.1 软件配置管理的概念 196
9.8.2 软件配置管理的过程 198
9.9 需求管理 200
9.9.1 需求管理的概念 200
9.9.2 需求管理的任务 200
9.9.3 需求变更请求的管理 203
小结 205
复习要点 206
第10章 软件质量管理 208
10.1 软件质量与质量模型 208
10.1.1 软件质量的概念 208
10.1.2 软件质量特性 209
10.1.3 软件质量模型 209
10.2 软件质量度量和度量模型 212
10.2.1 软件质量的度量 212
10.2.2 软件质量度量模型 213
10.2.3 软件质量度量方法 214
10.2.4 软件质量评价 215
10.3 软件质量计划 217
10.3.1 软件质量计划编制的目的 217
10.3.2 软件质量计划的内容 218
10.4 软件质量保证 218
10.4.1 软件质量保证的概念 218
10.4.2 软件质量保证的过程 219
10.4.3 软件质量保证的任务 220
10.4.4 质量保证体系与ISO 9000标准 220
10.4.5 国际标准ISO 90003 221
10.5 验证与确认 222
10.5.1 软件验证和确认的概念 222
10.5.2 生存周期中的验证和确认工作 222
10.6 软件评审 224
10.6.1 软件评审的概念 224
10.6.2 软件评审的作用 225
10.6.3 软件评审的实施 225
10.6.4 评审的方法和技术 227
10.7 审核 229
小结 231
复习要点 232
第11章 软件工程标准化与软件文档 233
11.1 标准和标准化 233
11.1.1 标准与标准化的概念 233
11.1.2 软件工程标准的制定与实施 234
11.2 软件工程标准的分类和分级 235
11.3 软件文档的作用和分类 238
11.4 软件工程文档的概要 240
11.5 对文档编制的质量要求 243
小结 244
复习要点 245
附录1 全国计算机等级考试四级软件工程考试大纲(2013年版) 246
附录2 全国计算机等级考试四级软件工程样题及参考答案 249
参考文献 252