第1章 概述 1
1.1 软件的概念和特征 1
1.1.1 软件的概念 1
1.1.2 软件的分类 2
1.1.3 软件的发展 3
1.2 软件危机 5
1.2.1 软件危机的主要表现 5
1.2.2 产生软件危机的原因 6
1.2.3 解决软件危机的途径 8
1.3 软件工程 8
1.3.1 软件工程的定义 8
1.3.2 软件工程的目标 9
1.3.3 软件工程的研究内容 10
1.3.4 软件工程的基本原理 11
本章小结 12
思考题和习题 13
第2章 软件开发模型 14
2.1 软件工程过程 14
2.1.1 软件过程定义 15
2.1.2 软件过程的基本活动 15
2.2 软件生存周期 16
2.2.1 软件生存周期定义 16
2.2.2 软件生存周期的基本任务 17
2.3 软件生存周期模型 18
2.3.1 瀑布模型 18
2.3.2 原型模型 19
2.3.3 螺旋模型 20
2.3.4 增量模型 21
2.3.5 喷泉模型 22
2.3.6 形式化方法模型 22
2.3.7 基于组件的开发模型 23
2.4 软件开发方法 23
2.4.1 结构化开发方法 24
2.4.2 面向数据结构的方法 25
2.4.3 面向对象方法 26
2.4.4 原型法 27
本章小结 28
思考题和习题 28
第3章 需求分析 29
3.1 需求分析概述 29
3.1.1 需求分析的特点 29
3.1.2 需求分析的原则 29
3.1.3 需求分析的任务 30
3.1.4 需求分析的方法 31
3.2 需求开发过程 32
3.2.1 需求的获取 32
3.2.2 需求分析 34
3.2.3 编写需求规格说明书 34
3.2.4 需求验证 35
3.3 需求的层次与种类 37
3.3.1 业务需求 37
3.3.2 用户需求 38
3.3.3 功能需求 38
3.3.4 非功能需求 38
3.4 需求管理 39
本章小结 40
思考题和习题 41
第4章 结构化分析与结构化设计基础 42
4.1 结构化分析 42
4.1.1 结构化分析策略 42
4.1.2 数据流图(DFD) 43
4.1.3 数据词典 47
4.1.4 数据加工逻辑 48
4.1.5 实体关系图 51
4.1.6 结构化分析实例 53
4.2 结构化设计 58
4.2.1 结构化设计概述 58
4.2.2 软件设计的基本原理 59
4.2.3 软件设计采用的工具 65
4.2.4 面向数据流的设计方法 68
4.2.5 概要设计说明书 69
本章小结 70
思考题和习题 71
第5章 构件级设计与实现 72
5.1 详细设计 72
5.1.1 详细设计概述 72
5.1.2 详细设计工具 73
5.1.3 程序复杂性度量 77
5.1.4 详细设计文档及设计复审 79
5.2 编码 81
5.2.1 程序设计语言特性 81
5.2.2 程序设计语言的选择 82
5.2.3 程序设计的风格 85
本章小结 87
思考题和习题 88
第6章 面向对象方法及UML建模语言 89
6.1 面向对象技术的发展历史 89
6.2 面向对象的基本概念 89
6.2.1 对象 89
6.2.2 类 90
6.2.3 消息 90
6.2.4 封装性 90
6.2.5 继承性 90
6.2.6 多态性 91
6.3 面向对象的开发方法 91
6.4 UML统一建模语言简介 92
6.4.1 UML的发展历史 93
6.4.2 UML的特点 93
6.4.3 UML用于软件的开发 94
6.5 UML的语言基础 94
6.6 用例图 95
6.6.1 用例图描述 95
6.6.2 建立用例模型 96
6.6.3 用例图示例 97
6.7 静态图 97
6.7.1 类图 97
6.7.2 对象图 100
6.7.3 包图 101
6.8 行为图 103
6.8.1 状态图 103
6.8.2 活动图 105
6.9 交互图 107
6.9.1 顺序图 108
6.9.2 合作图 110
6.10 实现图 111
6.10.1 构件图 111
6.10.2 配置图 112
本章小结 114
思考题和习题 114
第7章 面向对象分析 115
7.1 面向对象分析概述 115
7.1.1 面向对象分析的3个模型与5个层次 115
7.1.2 问题陈述 116
7.2 建立对象模型 118
7.2.1 标识类-对象 118
7.2.2 确定关联 119
7.2.3 定义属性 122
7.2.4 标识主题 123
7.2.5 识别结构 124
7.2.6 优化对象模型 124
7.3 建立动态模型 126
7.3.1 编写脚本 127
7.3.2 事件跟踪图 127
7.3.3 状态图 129
7.3.4 优化动态模型 129
7.4 建立功能模型 131
7.5 定义服务 132
本章小结 133
思考题和习题 133
第8章 面向对象的设计 134
8.1 面向对象设计准则 134
8.1.1 设计准则 134
8.1.2 设计策略 135
8.1.3 系统分解与组织 137
8.2 问题域子系统设计 139
8.3 人机交互子系统设计 140
8.4 任务管理子系统设计 142
8.5 数据管理子系统设计 144
8.5.1 选择数据存储管理模式 145
8.5.2 设计数据管理子系统 146
8.6 服务与关联的设计 148
8.6.1 设计服务 148
8.6.2 设计关联 149
8.7 面向对象设计的优化 150
本章小结 154
思考题和习题 154
第9章 软件测试 155
9.1 软件测试基本理论 155
9.1.1 软件测试的概念 155
9.1.2 软件测试的原则 155
9.2 软件测试方法和类型 156
9.2.1 静态测试和动态测试 156
9.2.2 白盒测试 157
9.2.3 黑盒测试 157
9.3 软件测试策略 161
9.3.1 单元测试 161
9.3.2 集成测试 162
9.3.3 确认测试 164
9.3.4 系统测试 165
9.4 面向对象软件测试 165
9.4.1 面向对象测试模型(Object-OrientTestModel) 166
9.4.2 面向对象分析的测试(OOATest) 167
9.4.3 面向对象设计的测试(OODTest) 169
9.4.4 面向对象编程的测试(OOPTest) 170
9.4.5 面向对象的单元测试(00UnitTest) 171
9.4.6 面向对象的集成测试(00IntegrateTest) 172
9.4.7 面向对象的系统测试(00SystemTest) 173
本章小结 174
思考题和习题 174
第10章 软件维护 176
10.1 软件维护概述 176
10.1.1 软件维护分类 176
10.1.2 软件维护成本 177
10.2 软件维护过程 178
10.2.1 软件维护活动 178
10.2.2 软件维护技术 181
10.3 软件可维护性 182
10.3.1 软件的可维护性 182
10.3.2 软件可维护性度量 183
10.3.3 提高可维护性的方法 183
10.4 软件维护的副作用 184
10.4.1 代码的副作用 185
10.4.2 数据副作用 185
10.4.3 文档副作用 185
10.5 软件再工程 186
10.5.1 软件再工程概述 186
10.5.2 软件再工程过程 186
10.5.3 软件再工程方法 188
本章小结 188
思考题和习题 188
第11章 软件工程管理 189
11.1 软件项目管理 189
11.1.1 软件项目管理的特点 189
11.1.2 软件项目管理活动 190
11.1.3 软件项目计划 191
11.2 软件风险管理 202
11.2.1 风险识别 202
11.2.2 风险分析 205
11.2.3 风险规划 207
11.2.4 风险控制 207
11.3 软件质量管理 208
11.3.1 软件质量基础 208
11.3.2 软件质量控制 208
11.4 软件配置管理 209
11.4.1 软件配置管理概述 210
11.4.2 软件配置管理过程 211
11.5 软件过程管理 212
11.5.1 ISO90000体系 212
11.5.2 能力成熟度模型 213
本章小结 215
思考题和习题 215
第12章 基于构件的软件开发 216
12.1 软件复用概述 216
12.1.1 软件复用的定义 217
12.1.2 软件复用的形式和级别 217
12.1.3 软件复用的过程 219
12.1.4 软件复用的意义 220
12.2 构件与构件技术 221
12.2.1 构件的定义及基本特征 221
12.2.2 构件技术的产生与基本思想 222
12.3 构件与构件系统 223
12.3.1 对可复用构件的要求 223
12.3.2 构件模型及系统 224
12.3.3 构件的分类模式 226
12.3.4 构件库的管理 227
12.4 领域工程 228
12.4.1 领域工程过程 228
12.4.2 领域工程实施 230
12.4.3 组织机构 230
12.4.4 相关技术 231
12.5 基于构件的软件开发 231
12.5.1 CBSE/CBD概述 231
12.5.2 CBSE过程 233
12.5.3 基于构件的系统的开发 234
12.5.4 构件构造 234
12.5.5 软件构件技术规范 235
12.6 CBD与传统的软件开发方法比较 238
本章小结 239
思考题和习题 240
第13章 Web工程 241
13.1 基于Web的系统和应用特点 241
13.2 Web工程的层次 242
13.2.1 过程 243
13.2.2 方法 243
13.2.3 工具和技术 244
13.3 Web分析 244
13.3.1 内容分析模型 244
13.3.2 交互分析模型 244
13.3.3 功能分析模型 245
13.3.4 配置分析模型 245
13.3.5 关系导航分析模型 246
13.4 Web设计 246
13.4.1 界面设计 247
13.4.2 美学设计 248
13.4.3 内容设计 249
13.4.4 体系结构设计 249
13.4.5 导航设计 250
13.4.6 构件设计 251
13.5 Web测试 251
13.5.1 内容测试 251
13.5.2 界面测试 252
13.5.3 构件级测试 253
13.5.4 导航测试 253
13.5.5 配置测试 254
13.5.6 安全性测试 255
13.5.7 性能测试 255
13.6 Web的项目管理 256
13.6.1 Web队伍 256
13.6.2 项目管理 257
13.6.3 配置管理 258
本章小结 259
思考题和习题 259
参考文献 260