第1章 软件工程概述 1
1.1 软件概述 1
1.1.1 软件与软件的组成 1
1.1.2 软件的特点 1
1.1.3 软件的分类 2
1.1.4 软件的发展历史 3
1.1.5 软件危机 4
1.1.6 软件工程 5
1.2 软件开发方法 6
1.3 CASE工具及环境 7
1.3.1 计算机辅助软件工程 7
1.3.2 CASE工具 7
1.3.3 集成化的CASE环境 8
1.4 习题 9
第2章 过程和生命周期的建模 10
2.1 过程的含义 10
2.2 软件过程模型 11
2.2.1 瀑布模型 11
2.2.2 原型化模型 14
2.2.3 渐进式模型 15
2.2.4 过程的迭代 16
2.2.5 V模型 18
2.3 软件开发标准 18
2.3.1 国内外软件开发标准的概述 18
2.3.2 软件工程标准的层次 20
2.4 习题 22
3.1 软件度量 23
第3章 软件项目管理 23
3.1.1 度量、测量和估算 24
3.1.2 面向过程软件度量 24
3.1.3 面向对象软件度量 26
3.2 软件项目估算 28
3.2.1 功能点估算 28
3.2.2 COCOMO(COnstructive COst MOde)模型 29
3.3 软件质量度量 30
3.3.1 软件质量定义及三层次度量模型 30
3.3.2 软件质量要素 31
3.4 软件复杂性度量 33
3.4.1 软件复杂性及度量原则 33
3.4.2 结构复杂性度量 34
3.4.3 基于UML的类复杂性度量 35
3.5.1 软件可靠性的概念 36
3.5 软件可靠性度量 36
3.5.2 软件可靠性估算 37
3.6 软件开发过程的管理 37
3.6.1 风险分析 37
3.6.2 进度安排 38
3.6.3 软件开发人员的组织与分工 39
3.6.4 软件项目的开发过程管理 40
3.7 软件能力成熟度模型 40
3.7.1 概述 40
3.7.2 能力成熟度模型CMM 43
3.7.3 能力成熟度集成模型CMMI 53
3.7.4 我国软件能力评估标准的制定与实施 56
3.8 习题 57
4.1 需求分析各阶段的基本概念 58
第4章 需求分析基础 58
4.2 问题分析阶段 59
4.2.1 初步需求获取技术 59
4.2.2 需求建模方法 60
4.3 需求描述阶段 61
4.4 需求评审阶段 66
4.5 习题 67
第5章 面向数据流的需求分析 68
5.1 结构化分析概述 68
5.2 数据流图 70
5.2.1 数据流图的基本成分 70
5.2.2 由外向里画数据流图 72
5.2.3 分层数据流图 73
5.2.4 自顶向下画分层数据流图 75
5.2.5 数据流图的改进 77
5.3 数据词典 80
5.3.1 词典条目的各种类型 80
5.3.2 词典条目的实例 83
5.4 小说明 84
5.4.1 加工的描述 84
5.4.2 结构化语言 85
5.4.3 判定表 87
5.4.4 判定树 88
5.4.5 词典的实现 88
5.5 SA方法小结 89
5.6 习题 90
6.1.1 面向对象方法概述 91
6.1 面向对象软件工程方法简介 91
第6章 面向对象的需求分析 91
6.1.2 面向对象软件开发方法 92
6.1.3 面向对象开发方法中的基本概念 94
6.2 统一建模语言UML 98
6.2.1 UML简介 98
6.2.2 UML模型 99
6.2.3 UML软件分析与开发步骤 103
6.3 面向对象需求分析 104
6.3.1 面向对象需求分析过程简介 104
6.3.2 对象与类的识别 106
6.3.3 属性的识别 110
6.3.4 服务的识别 111
6.3.5 定义结构 114
6.3.6 对象间通信 120
6.3.7 实例关联 122
6.4 习题 125
第7章 软件设计基础 126
7.1 软件设计概述 126
7.1.1 软件设计的任务和步骤 126
7.1.2 概要设计的基本概念 126
7.1.3 详细设计的基本概念 127
7.2 模块化设计 130
7.2.1 模块概述 130
7.2.2 块间联系和块内联系 132
7.3 结构图的改进 138
7.4 详细设计的描述方式 141
7.5 习题 146
8.1 基本概念和设计步骤 147
第8章 面向数据流的设计方法 147
8.2 变换分析 149
8.3 事务分析 151
8.5 综合设计 152
8.6 SD方法小结 152
8.7 软件设计文档 153
8.7.1 概要设计说明书 153
8.7.2 详细设计说明书 156
8.8 其他设计方法 157
8.9 习题 159
第9章 面向对象的设计方法 160
9.1 面向对象设计的基础概念 160
9.2 面向对象设计 161
9.3 面向对象设计的子系统设计 163
9.4 用例分析实例 168
9.4.1 用例图 168
9.4.2 用例模板 168
9.4.3 一个用例模板示例 169
9.4.4 用例的七个要点 170
9.5 习题 172
第10章 程序设计语言和编码 173
10.1 程序设计语言 173
10.1.1 语言类别 173
10.1.2 语言选择 175
10.2 SP方法与编程 176
10.3 程序内部文档 177
10.4.1 编码原则 178
10.4 编程风格 178
10.4.2 编程风格 180
10.5 程序的效率 183
10.6 程序设计自动化 185
10.7 习题 185
第11章 检验和测试方法 186
11.1 检验的基本概念 186
11.1.1 概述 186
11.1.2 软件检验手段 187
11.2 软件评审 188
11.2.1 评审过程 188
11.2.2 评审条款 190
11.3 测试的基本概念 191
11.4.1 概述 192
11.4 白盒法 192
11.4.2 语句覆盖 193
11.4.3 判定覆盖 195
11.4.4 条件覆盖 195
11.4.5 判定/条件覆盖 195
11.4.6 条件组合覆盖 196
11.5 黑盒法 196
11.5.1 等价分类法 197
11.5.2 边缘值分析法 199
11.5.3 因果图法 200
11.5.4 错误推测法 201
11.6 综合策略 202
11.7 测试过程 203
11.8 单元测试 204
11.8.1 单元测试概述 204
11.8.2 单元测试的方法 205
11.9 整体测试 206
11.10 有效性测试 209
11.11 系统测试 209
11.12 综合测试文档 210
11.13 习题 212
第12章 软件维护 213
12.1 维护的基本概念 213
12.2 维护的种类 214
12.3 维护的步骤与工作 215
12.3.1 维护步骤 215
12.3.2 维护工作 216
12.4 可维护性 217
12.4.1 影响软件可维护性的因素 217
12.4.2 可维护性复审 219
12.5 维护工作的管理 220
12.5.1 维护的管理和组织 220
12.5.2 维护报告 220
12.6 维护的副作用 222
12.7 软件维护文档 223
12.8 习题 227
第13章 软件重用技术 228
13.1 软件重用 228
13.1.1 软件重用的概念 228
13.1.2 软件重用的发展历史和重用过程 228
13.1.3 软件重用的层次和要素 229
13.2 软构件技术 231
13.2.1 构件技术的概念 231
13.2.3 JavaBeans构件模型 232
13.2.2 可复用构件的设计准则 232
13.3 域工程 233
13.3.1 域工程概述 233
13.3.2 域分析 234
13.3.3 域模型 235
13.3.4 域分析方法 235
13.3.5 域分析过程 236
13.3.6 域分析过程的UML描述 238
13.3.7 域设计 238
13.3.8 域实现 238
13.4 软构件库的开发 239
13.4.1 构件库的基本概念 239
13.4.2 构件库设计与实现 239
13.5 面向对象的软件重用技术 243
13.6 软件重用度量 244
13.7 习题 245
附录A 文档格式 246
A.1 用户手册 246
A.2 操作手册 249
A.3 C程序编程工程化约束 252
附录B 课程实习项目文档实例 257
B.1 可行性研究报告 257
B.2 项目开发计划任务书 260
B.3 需求规格说明书 262
B.4 概要设计说明书 264
B.5 详细设计说明书 271
B.6 用户操作手册 275
参考文献 277