第1章 导论 1
1.1 软件 1
1.1.1 软件的发展 2
1.1.2 软件的类型 3
1.1.3 软件质量特性 4
1.2 软件工程概述 6
1.2.1 软件危机 6
1.2.2 软件工程 7
1.2.3 软件过程 8
1.3 软件工程方法 10
1.3.1 结构化分析和设计方法 10
1.3.2 面向对象软件工程方法 11
1.3.3 用例驱动的软件开发方法 13
1.4 CASE工具与集成化的软件开发环境 13
1.5 软件工程知识体系 15
本章小结 16
习题 17
第2章 软件过程 18
2.1 软件过程概述 18
2.2 软件过程模型 18
2.2.1 瀑布模型 19
2.2.2 演化式开发模型 20
2.2.3 形式化变换模型 21
2.2.4 面向复用的开发 21
2.2.5 增量开发 22
2.2.6 螺旋模型 23
2.3 Rational统一过程 24
2.4 敏捷开发过程 26
2.5 面向方面的软件开发 29
本章小结 30
习题 31
第3章 面向对象系统建模 32
3.1 面向对象基本概念 32
3.1.1 对象 32
3.1.2 类 33
3.1.3 封装 33
3.1.4 继承 34
3.1.5 消息 34
3.1.6 关联 35
3.1.7 聚合和组合 35
3.1.8 多态性 35
3.2 统一建模语言UML 36
3.2.1 UML的特点及组成 36
3.2.2 UML事物 37
3.2.3 UML关系 39
3.2.4 UML图 40
3.3 4+1视图 46
3.4 软件系统模型 47
3.4.1 上下文(Context)模型 48
3.4.2 体系结构(Architectural)模型 49
3.4.3 数据流模型 49
3.4.4 数据模型 50
3.5 面向对象系统模型 51
3.5.1 对象结构模型 52
3.5.2 对象行为模型 53
3.6 软件建模工具Rational Rose 54
本章小结 56
习题 57
第4章 需求工程 58
4.1 软件需求 58
4.1.1 用户需求和系统需求 59
4.1.2 功能性需求和非功能性需求 60
4.2 需求工程过程 62
4.3 可行性研究 62
4.4 需求获取和分析 63
4.4.1 用户交流 64
4.4.2 基于用例的需求获取 65
4.4.3 原型化方法 66
4.4.4 需求分析 67
4.5 需求定义 68
4.5.1 需求描述方式 68
4.5.2 软件需求规格说明 69
4.6 需求验证 71
4.7 案例 72
本章小结 73
习题 74
第5章 面向对象的分析 75
5.1 面向对象分析的概念 75
5.1.1 分析类 75
5.1.2 用例实现 78
5.1.3 分析包 78
5.1.4 分析模型 78
5.2 基于UML的需求分析 79
5.2.1 确定分析类 79
5.2.2 建模分析对象问的交互 81
5.2.3 构建分析类图 83
5.3 案例 87
本章小结 88
习题 88
第6章 软件设计 90
6.1 软件设计过程 90
6.2 软件设计原则 91
6.2.1 模块化和信息隐蔽 91
6.2.2 内聚和耦合 92
6.2.3 抽象和求精 94
6.2.4 复用 94
6.3 体系结构设计 95
6.3.1 什么是体系结构 95
6.3.2 体系结构设计策略 97
6.3.3 管道-过滤器结构 98
6.3.4 分层体系结构 100
6.3.5 仓库系统结构 100
6.3.6 客户/服务器模式 101
6.3.7 MVC模式 101
6.4 控制模型 102
6.4.1 集中式控制 102
6.4.2 事件驱动的控制 103
6.5 模块分解 104
6.6 体系结构设计案例 105
本章小结 105
习题 106
第7章 面向对象的设计 107
7.1 设计模型 107
7.2 类的设计 107
7.2.1 识别设计类 108
7.2.2 识别类的方法 109
7.2.3 识别属性 110
7.2.4 识别关联和聚合 110
7.3 设计交互 112
7.4 接口描述 114
7.5 设计变更 115
7.6 用户界面设计 115
7.6.1 用户界面设计的原则 115
7.6.2 Web界面的设计 116
7.6.3 帮助系统的设计 117
7.7 iricher系统的设计 120
本章小结 124
习题 124
第8章 分布式系统体系结构 126
8.1 分布式系统体系结构概述 126
8.2 Client/Sever结构 126
8.2.1 胖客户机和瘦客户机模型 127
8.2.2 B/S模型和多层C/S模型 128
8.3 分布式对象体系结构 128
8.3.1 RMI 129
8.3.2 CORBA 129
8.3.3 DCOM 130
8.4 Peer-to-Peer体系结构 131
8.5 基于Web的应用程序体系结构 132
8.5.1 Web Services体系 132
8.5.2 Web Services协议栈 133
8.6 J2EE框架 134
本章小结 138
习题 139
第9章 面向复用的设计 140
9.1 软件复用的概念 140
9.2 基于组件的开发 141
9.2.1 组件 141
9.2.2 组件模型 142
9.2.3 中间件 143
9.2.4 基于组件的软件工程过程 144
9.2.5 企业应用系统集成(EAI) 144
9.3 设计模式 146
9.3.1 设计模式概念 146
9.3.2 Composite模式 148
9.3.3 Abstract Factory模式 152
9.3.4 Chain of Responsibility模式 154
本章小结 155
习题 155
第10章 形式化方法 157
10.1 软件过程中的形式化描述 157
10.1.1 对象类的描述 159
10.1.2 行为描述 160
10.1.3 模型检查 163
10.2 Z语言 165
10.2.1 Z语言语法简介 165
10.2.2 Z语言示例 168
10.3 Petri网 171
10.3.1 Petri网定义 171
10.3.2 Petri网示例 174
本章小结 174
习题 174
第11章 软件实现 176
11.1 程序设计语言 176
11.1.1 程序设计语言的特性 177
11.1.2 程序设计语言的选择 178
11.2 编码风格 179
11.2.1 命名 179
11.2.2 注释 182
11.2.3 源代码版式 184
11.2.4 异常处理 186
11.3 程序的效率 187
本章小结 190
习题 190
第12章 软件验证和确认 192
12.1 验证和确认 192
12.2 软件审查 194
12.2.1 程序审查 194
12.2.2 自动静态分析 196
12.3 软件测试 198
12.3.1 软件测试的目的和原则 198
12.3.2 单元测试 199
12.3.3 集成测试 202
12.3.4 系统测试 204
12.3.5 确认测试 205
12.4 软件测试方法 205
12.4.1 白盒测试方法 206
12.4.2 黑盒测试方法 210
12.5 面向对象的测试 213
12.5.1 对象类的测试 214
12.5.2 对象集成测试 214
12.6 IBM Rational Functional Tester 215
本章小结 217
习题 217
第13章 软件演化 219
13.1 软件演化的动态特性 219
13.1.1 软件的本质特性 219
13.1.2 遗留系统问题 220
13.2 软件维护 221
13.2.1 软件维护内容 221
13.2.2 软件维护过程 223
13.3 软件再工程 226
13.3.1 再工程活动 226
13.3.2 源代码转换 228
13.3.3 逆向工程 229
13.3.4 程序结构改善 230
13.3.5 程序模块化 232
13.3.6 数据再工程 233
本章小结 235
习题 235
第14章 软件计划管理 236
14.1 软件项目管理 236
14.1.1 软件项目的特点 236
14.1.2 软件项目管理活动 237
14.1.3 软件计划和进度安排 238
14.2 成本估算 243
14.2.1 软件规模估算 243
14.2.2 软件成本估算方法 244
14.2.3 专家判定技术 244
14.2.4 COCOMO模型 246
14.2.5 面向对象项目的估算 248
14.3 软件配置管理 248
14.3.1 基线和配置项 249
14.3.2 软件配置活动 250
14.4 IBM Rational软件配置管理工具 253
本章小结 253
习题 254
第15章 软件过程改善 255
15.1 软件过程类型 255
15.2 过程改善活动 256
15.2.1 过程改善 256
15.2.2 过程分析和建模 257
15.3 能力成熟度模型CMM 258
15.3.1 CMM成熟度等级 259
15.3.2 关键过程域 261
本章小结 263
习题 263
第16章 净室软件工程 264
16.1 净室方法基础 264
16.1.1 函数理论 265
16.1.2 统计理论 265
16.1.3 净室开发小组活动 266
16.2 净室技术 266
16.2.1 基于统计过程控制下的增量开发 267
16.2.2 基于函数的定义(Specification)、设计和验证 267
16.2.3 统计测试和软件认证 269
16.3 盒子行为和结构 269
16.3.1 黑盒行为 270
16.3.2 状态盒行为 271
16.3.3 明盒行为 272
16.3.4 盒子结构层次 272
16.3.5 盒子结构的开发过程 273
本章小结 274
习题 274
参考文献 275