第1章 软件工程基础 1
1.1 计算机系统工程 1
1.1.1 硬件与硬件工程 2
1.1.2 软件与软件工程 3
1.1.3 人机工程 4
1.1.4 数据库工程 4
1.1.5 网络工程 5
1.2 软件工程 5
1.2.1 软件 5
1.2.2 软件工程的概念 8
1.2.3 软件生命周期 12
1.2.4 软件开发模型 13
1.3 软件生命周期模型 13
1.3.1 软件生命周期模型基础 13
1.3.2 瀑布模型 13
1.3.3 原型模型 14
1.3.4 螺旋模型 15
1.3.5 基于四代技术模型 16
1.3.6 喷泉模型 17
1.3.7 增量模型 18
1.4 软件开发方法 19
1.4.1 结构化方法 19
1.4.2 面向数据结构方法 20
1.4.3 面向对象方法 21
1.4.4 原型法 21
1.5 软件工程环境 22
1.5.1 软件工程环境的定义 22
1.5.2 软件开发环境的特点 22
1.6 小结 23
习题1 24
第2章 软件项目管理基础 25
2.1 软件项目管理概述 25
2.2 软件项目管理基本概念 28
2.2.1 任务和活动 28
2.2.2 工作产品,工作包和角色 28
2.2.3 工作分解结构 29
2.2.4 任务模型 29
2.2.5 技能矩阵 30
2.2.6 组织 31
2.2.7 呈现组织结构 31
2.2.8 软件项目管理计划 32
2.3 项目管理活动 32
2.3.1 计划项目 32
2.3.2 组织项目 34
2.3.3 控制项目 36
2.3.4 终结项目 39
2.4 项目计划案例 39
2.4.1 项目描述 39
2.4.2 初期项目计划 39
2.4.3 详细项目计划 40
2.4.4 用项目管理软件制定项目计划 41
2.5 小结 43
习题2 43
第3章 软件需求分析基础 45
3.1 需求分析的概念和原则 45
3.1.1 需求获取 46
3.1.2 需求分析 46
3.1.3 分析的原则 49
3.1.4 需求规格说明 51
3.1.5 评审 53
3.2 软件需求分析基础:以结构化分析方法为例 54
3.2.1 数据流图 55
3.2.2 数据字典 60
3.2.3 实体-关系图(E-R图) 62
3.2.4 状态转换图 63
3.3 小结 66
习题3 67
第4章 软件设计基础 68
4.1 软件设计的目标和任务 68
4.2 软件设计的基本概念 69
4.2.1 模块与模块化 69
4.2.2 抽象与逐步求精 71
4.2.3 信息隐藏 71
4.2.4 模块独立性 71
4.2.5 软件体系结构 77
4.3 软件设计原则 79
4.4 软件程序结构的启发式设计准则与优化 80
4.5 设计规格说明书与评审 82
4.5.1 软件设计规格说明书 83
4.5.2 设计复审 83
4.6 小结 84
习题4 85
第5章 软件体系结构设计 86
5.1 软件体系结构 86
5.1.1 软件体系结构的概念 87
5.1.2 软件体系结构的重要性 87
5.2 数据体系结构设计 88
5.3 软件体系结构风格 88
5.4 软件体系结构中的技术 97
5.4.1 软件体系结构的开发技术 97
5.4.2 软件分治策略 100
5.4.3 软件可变性和依赖性管理 101
5.4.4 集成策略 101
5.5 将需求映射到软件体系结构——结构化方法实例 101
5.5.1 变换流 102
5.5.2 事务流 103
5.6 面向数据流方法设计过程 104
5.6.1 变换映射 105
5.6.2 事务映射 109
5.6.3 设计求精后的文档撰写与评审 112
5.7 小结 113
习题5 113
第6章 人机交互界面设计 115
6.1 人机界面设计的历史、现状和未来 115
6.1.1 人机界面设计的历史 116
6.1.2 人机界面的现状 116
6.1.3 人机界面的未来 117
6.2 人类因素 118
6.2.1 人类感知基础 118
6.2.2 用户技巧 118
6.2.3 任务与用户的特殊要求 119
6.3 人机界面风格 120
6.4 人机界面设计过程 120
6.4.1 界面设计的模型 120
6.4.2 任务分析与建模 121
6.4.3 界面设计的一般问题 121
6.4.4 构造界面原型 124
6.4.5 界面设计的评估 125
6.5 人机界面设计的原则与标准 126
6.5.1 界面设计原则 126
6.5.2 界面设计标准 127
6.6 小结 127
习题6 127
第7章 构件级设计 128
7.1 构件级设计的任务 128
7.2 构件级设计的工具 128
7.2.1 图形描述工具 129
7.2.2 判定表工具 132
7.2.3 伪代码工具 132
7.3 程序设计语言的特性 133
7.3.1 心理特性 133
7.3.2 工程特性 134
7.4 程序设计语言的基本机制 134
7.5 程序设计风格 135
7.5.1 命名 135
7.5.2 表达式和语句 136
7.5.3 程序注释 136
7.5.4 输入与输出 137
7.6 程序设计语言的选择 137
7.6.1 程序设计语言的分类 137
7.6.2 程序设计语言的选择 140
7.6.3 程序设计支持环境 141
7.7 小结 141
习题7 142
第8章 面向对象中的概念、记号和过程 143
8.1 面向对象中的概念 143
8.1.1 项目参与者和角色 144
8.1.2 系统和模型 144
8.1.3 工作产品 145
8.1.4 活动、任务和资源 145
8.1.5 功能需求和非功能需求 146
8.1.6 记号、方法和方法学 146
8.1.7 对象概念 146
8.1.8 类及其他概念 147
8.2 面向对象建模中的记号 152
8.2.1 用例图 154
8.2.2 类图 157
8.2.3 交互图 157
8.2.4 状态图 157
8.2.5 活动图 160
8.2.6 部署图 160
8.3 面向对象软件开发过程 161
8.3.1 需求获取过程 161
8.3.2 需求分析过程 161
8.3.3 系统设计过程 162
8.3.4 对象设计过程 163
8.3.5 实现过程 163
8.3.6 测试过程 163
8.4 小结 163
习题8 164
第9章 面向对象的需求获取与分析方法 165
9.1 需求获取方法 166
9.1.1 需求获取概述 167
9.1.2 需求获取中的活动 170
9.1.3 需求获取中的管理方法 179
9.2 需求分析方法 181
9.2.1 需求分析概述 182
9.2.2 需求分析中的管理方法 193
9.3 小结 194
习题9 194
第10章 面向对象设计方法 196
10.1 系统设计方法 196
10.1.1 系统设计概述 197
10.1.2 系统设计中的概念 198
10.1.3 系统设计活动 200
10.2 系统设计中的设计目标实现 205
10.2.1 系统设计中的目标 205
10.2.2 系统设计活动概述 206
10.2.3 满足设计目标的系统设计活动 207
10.2.4 系统设计文档管理 214
10.3 对象设计方法 216
10.3.1 对象设计概述 217
10.3.2 软件重用中的概念 218
10.3.3 基于设计模式的设计活动 221
10.4 对象设计中的接口设计方法 223
10.4.1 接口规格说明概述 224
10.4.2 接口规格说明概念 225
10.4.3 接口规格说明活动 228
10.4.4 对象设计文档管理 230
10.5 小结 232
习题10 233
第11章 软件测试 235
11.1 软件测试概述 235
11.1.1 软件测试的意义 235
11.1.2 基本概念 235
11.1.3 软件测试的定义、目的、原则和研究对象 236
11.2 软件审查活动概述 239
11.2.1 审查过程 239
11.2.2 审查过程实施 241
11.3 软件质量度量 241
11.3.1 实施软件度量程序的策略 241
11.3.2 软件质量度量框架 241
11.3.3 有助于软件确认活动的度量 242
11.4 基本测试方法 245
11.4.1 静态测试 245
11.4.2 动态测试 252
11.4.3 测试用例设计 263
11.5 软件测试策略 268
11.5.1 单元测试 269
11.5.2 集成测试 271
11.5.3 确认测试 274
11.5.4 系统测试 275
11.5.5 验收测试 275
11.5.6 其他测试种类 276
11.5.7 排错 279
11.6 小结 282
习题11 282
第12章 软件维护 287
12.1 软件维护概述 287
12.1.1 软件维护及其特点 287
12.1.2 软件维护的类型 288
12.1.3 软件维护的成本 289
12.2 软件维护过程 290
12.3 软件的可维护性 293
12.3.1 决定软件可维护性的因素 293
12.3.2 软件可维护性的度量 294
12.3.3 提高软件可维护性的方法 295
12.4 程序修改的步骤 298
12.5 软件再工程 301
12.5.1 什么是软件再工程 301
12.5.2 软件再工程过程 301
12.5.3 软件再工程的方法 304
12.6 小结 304
习题12 304
参考文献 306