第一章 绪论 1
1.1 软件与软件危机 1
1.1.1 软件的定义 1
1.1.2 软件的特征 2
1.1.3 软件危机 2
1.2 软件工程学的范畴 4
1.2.1 软件开发方法学 5
1.2.2 软件工具 5
1.2.3 软件工程环境 6
1.2.4 软件工程管理 6
1.3 传统统计工程和面向对象软件工程 6
1.3.1 程序设计方法的两次飞跃 7
1.3.2 面向对象程序设计的优势 7
1.3.3 两类软件工程范型的简单比较 8
1.4 软件工程的应用 9
1.4.1 在各种规模软件开发中的应用 9
1.4.2 软件工程的成就与局限 10
1.5 软件工程的教学:本书导读 11
小结 13
习题 13
第二章 软件开发模型 15
2.1 转换生存周期 15
2.2 传统软件开发模型 17
2.2.1 瀑布模型 18
2.2.2 快速原型模型 19
2.3 软件演化模型 20
2.3.1 增量模型 20
2.3.2 螺旋模型 21
2.4 面向对象开发模型 22
2.4.1 面向对象的基本概念 23
2.4.2 构件集成模型 24
2.5 形式化方法模型 25
2.5.1 转换模型 25
2.5.2 净室模型 26
2.6 开发模型选用实例 27
2.6.1 瀑布模型实例:教材购销系统(面向过程软件) 27
2.6.2 螺旋模型实例:显像管生产监测系统(面向对象软件) 28
小结 29
习题 29
第三章 软件需求分析 30
3.1 需求分析的任务与步骤 30
3.1.1 需求分析的任务 30
3.1.2 需求分析的步骤 31
3.2 需求获取的常用方法 33
3.2.1 常规的需求获取方法 34
3.2.2 快速原型法在需求分析中的应用 35
3.3 分析建模 36
3.3.1 两种分析模型 36
3.3.2 分析模型的组成与描述工具 38
3.4 软件需求说明 53
3.5.1 画分层数据流图 54
3.5 结构化分析方法 54
3.5.2 确定数据定义与加工策略 57
3.5.3 需求分析的复审 58
3.6 面向对象分析方法 60
3.6.1 定义用例 60
3.6.2 领域分析 62
3.6.3 类/对象建模 63
3.6.4 建立对象-关系模型 66
3.6.5 建立对象-行为模型 67
小结 68
习题 68
第四章 软件设计概述 70
4.1 软件设计的任务 70
4.2 软件设计的基本概念 71
4.2.1 模块与构件 71
4.2.2 抽象与细化 71
4.2.3 信息隐藏 72
4.3 模块化设计 73
4.3.1 分解 73
4.2.4 软件复用 73
4.3.2 模块独立性 74
4.3.3 自顶向下与由底向上设计 78
4.4 其他设计问题的处理 79
4.4.1 协同设计 79
4.4.2 用户界面设计 79
4.4.3 并发系统设计 80
4.5 设计文档及其复审 81
4.5.1 软件设计说明书 81
4.5.2 设计复审 81
小结 84
习题 85
5.1 概述 86
5.1.1 面向数据流设计和面向数据设计 86
第五章 传统的设计方法 86
5.1.2 从分析模型导出设计模型 87
5.2 结构化设计方法 88
5.2.1 SC图 88
5.2.2 数据流图的类型与SD方法的步骤 89
5.2.3 变换映射 91
5.2.4 事务映射 95
5.2.5 结构设计的优化规则 97
5.2.6 教材购销系统的结构设计示例 100
5.3 过程设计 105
5.3.1 目的与任务 105
5.3.2 过程设计的原则与方法 106
5.3.3 常用的表达工具 109
5.3.4 过程设计示例 112
5.4 Jackson方法 116
5.4.1 Jackson表示法 116
5.4.2 Jackson方法的设计步骤 117
5.4.3 Jackson方法示例 118
习题 122
小结 122
第六章 面向对象设计方法 125
6.1 面向对象设计概述 125
6.1.1 面向对象设计的任务 125
6.1.2 面向对象的设计模型 126
6.2.1 系统设计过程 127
6.2.2 子系统设计 127
6.2 系统设计 127
6.2.3 人机交互设计 130
6.2.4 任务管理设计 131
6.2.5 数据管理设计 132
6.3 对象设计 133
6.3.1 对象描述 134
6.3.2 算法设计 136
6.3.3 程序构件与接口 137
6.4.1 领域对象的设计内容 138
6.4 领域对象设计 138
6.4.2 领域对象的设计模板 140
小结 141
习题 142
第七章 统一建模语言UML 143
7.1 UML的组成、特点与应用 143
7.1.1 UML的组成 144
7.1.2 UML的特点 148
7.1.3 UML的应用 148
7.2 静态建模 149
7.2.1 用例模型 149
7.2.2 类和对象模型 150
7.2.3 包 158
7.3 动态建模 158
7.3.1 消息 158
7.3.2 状态图和时序图 159
7.3.3 协作图和活动图 162
7.3.4 动态图的运用 164
7.4 物理架构建模 165
7.4.1 逻辑架构与物理架构 165
7.4.2 构件图与配置图 167
7.5 基于UML的统一建模过程——RUP 167
小结 169
习题 169
第八章 编码和语言选择 171
8.1 编码的目的 171
8.2 编码的风格 172
8.3 编码使用的语言 180
8.3.1 编码语言的发展 180
8.3.2 常用的编码语言 182
8.3.3 编码语言的选择 185
小结 186
习题 187
第九章 软件测试 188
9.1 测试的基本概念 188
9.1.1 目的与任务 188
9.1.2 测试的特性 189
9.1.3 测试的种类 190
9.1.4 测试的文档 191
9.2 黑盒测试 192
9.2.1 等价分类法 192
9.2.2 边界值分析法 193
9.2.3 错误猜测法 195
9.3 白盒测试 195
9.3.1 逻辑覆盖测试法 196
9.3.2 路径测试法 200
9.4 测试用例设计 205
9.4.1 黑盒测试用例设计 205
9.4.2 白盒测试用例设计 207
9.5.1 纠错的策略 210
9.5 软件的纠错 210
9.5.2 常用的纠错技术 212
9.5.3 纠错举例 215
9.6 多模块程序的测试策略 221
9.6.1 测试的层次性 221
9.6.2 程序错误的类型 222
9.6.3 单元测试 225
9.6.4 集成测试 226
9.6.5 确认测试 229
9.6.6 系统测试 230
9.6.7 终止测试的标准 230
9.7 面向对象系统的测试 230
9.7.1 面向对象软件的测试策略 231
9.7.2 面向对象软件测试用例设计 232
小结 235
习题 235
10.1.1 软件复用的定义 238
10.1 软件复用的基本概念 238
第十章 软件复用 238
10.1.2 软件复用的重要性 239
10.1.3 软件复用的粒度 240
10.2 领域工程 241
10.2.1 领域工程的活动内容 241
10.2.2 实施领域分析 242
10.2.3 开发可复用构件 242
10.2.4 建立可复用构件库 245
10.3.1 构件集成的过程 246
10.3 基于构件的软件开发 246
10.3.2 应用系统工程 247
10.4 面向对象与软件复用 247
10.4.1 面向对象方法对软件复用的支持 248
10.4.2 复用技术对面向对象方法的支持 249
小结 251
习题 251
11.1 软件维护的种类 252
第十一章 软件维护 252
11.2 软件可维护性 253
11.3 软件维护的实施 256
11.4 软件维护的管理 258
11.5 软件再工程 260
小结 262
习题 262
第十二章 软件项目计划 264
12.1 问题定义 265
12.2 可行性研究 266
12.3 软件风险分析 270
12.4 项目实施计划 273
小结 274
习题 275
第十三章 软件工程管理 276
13.1 管理的目的与内容 276
13.2.1 资源估算模型 277
13.2 软件估算模型 277
13.2.2 COCOMO模型 279
13.3 软件成本估计 281
13.4 人员的分配与组织 287
13.5 项目进度安排 290
13.6 软件知识产权保护 294
13.6.1 软件著作权 294
13.6.2 软件侵权及法律保护 295
13.6.3 软件工程师的职业道德规范 296
小结 299
习题 300
第十四章 软件质量管理 301
14.1 从质量保证到质量认证 301
14.2 质量保证 302
14.2.1 软件的质量属性 302
14.2.2 质量保证的活动内容 303
14.3.1 可靠性的定义和分级 304
14.3 软件可靠性 304
14.3.2 可靠性模型 306
14.3.3 软件容错技术 308
14.4 程序正确性证明 311
14.5 CMM软件能力成熟度模型 313
14.5.1 CMM的基本概念 313
14.5.2软件能力成熟度等级 314
14.5.3 CMM的应用 315
14.5.4 CMM评估的实施 316
14.5.5 软件过程评估的SPICE国际标准 316
14.6 ISO 9000国际标准 317
14.6.1 ISO 9001和ISO 9000-3 317
14.6.2 ISO 9000标准对软件企业的重要性 318
14.6.3 怎样在软件企业实施ISO 9000标准 318
14.7 软件度量 319
14.7.1 项目度量 319
14.7.2 过程度量 321
小结 322
习题 323
第十五章 软件工程环境 324
15.1 什么是软件工程环境 324
15.1.1 软件开发环境的特点 324
15.1.2 理想环境的模型 326
15.2 CASE环境的组成与结构 327
15.2.1 CASE的组成构件 327
15.1.3 CASE环境 327
15.2.2 CASE的一般结构 329
15.3 CASE环境实例 331
15.3.1 SUITE企业开发环境 331
15.3.2 青岛系统 336
小结 337
习题 337
附录 缩略语中英文对照表 338
参考文献 340