第1篇 软件开发方法 3
第1章 软件工程概述 3
1.1 软件与软件危机 3
1.1.1 计算机软件概念 3
1.1.2 计算机软件的发展 4
1.1.3 软件危机 5
1.2 软件工程 6
1.2.1 软件工程定义 6
1.2.2 软件工程的内容 6
1.2.3 软件工程基本原理 7
1.2.4 软件开发方法 8
1.3 软件生命周期 9
1.3.1 软件生命周期的划分 9
1.3.2 各阶段的基本任务 9
1.4 软件开发模型 11
1.4.1 瀑布模型 11
1.4.2 快速原型模型 12
1.4.3 增量模型 13
1.4.4 螺旋模型 14
1.4.5 喷泉模型 16
1.5 应用实例 16
1.6 小结 17
习题 17
第2章 可行性研究 19
2.1 可行性研究的任务 19
2.2 可行性研究的过程 20
2.3 系统流程图 21
2.4 成本/效益分析 23
2.4.1 成本估算 23
2.4.2 成本/效益分析方法 24
2.5 可行性研究报告 25
2.6 软件立项和合同 26
2.6.1 立项方法和立项文档 26
2.6.2 签订合同方法和合同文档 27
2.7 项目开发计划 29
2.8 小结 31
习题 31
第3章 需求分析 32
3.1 需求分析概述 32
3.1.1 需求分析的任务 32
3.1.2 需求分析的步骤 33
3.2 图形工具 34
3.2.1 数据流图 34
3.2.2 数据字典 37
3.2.3 实体-联系图 38
3.2.4 其他图形工具 39
3.3 结构化分析 41
3.3.1 结构化分析的步骤 41
3.3.2 应用实例 42
3.3.3 软件需求规格说明书 43
3.4 验证软件需求 44
3.5 小结 45
习题 46
第4章 总体设计 47
4.1 总体设计的过程和任务 47
4.2 软件结构设计概念和原理 48
4.2.1 模块和模块化 48
4.2.2 抽象 49
4.2.3 信息隐藏 50
4.2.4 模块独立 50
4.3 软件结构设计优化 53
4.4 图形工具 55
4.4.1 层次图和HIPO图 55
4.4.2 结构图 56
4.5 结构化设计 57
4.5.1 结构化设计概述 57
4.5.2 结构化设计的过程 58
4.5.3 变换分析和事务分析 60
4.6 总体设计说明书 61
4.7 小结 62
习题 62
第5章 详细设计 64
5.1 任务和原则 64
5.2 结构化程序设计 64
5.3 过程设计的工具 65
5.3.1 程序流程图 65
5.3.2 N-S图 66
5.3.3 PAD图 68
5.3.4 PDL语言 69
5.3.5 判定树 70
5.3.6 判定表 71
5.4 面向数据结构的设计方法 72
5.4.1 逻辑数据结构 72
5.4.2 Jackson图和图解逻辑 73
5.4.3 应用实例 76
5.5 程序复杂程度的度量 80
5.6 人机界面设计 81
5.7 小结 85
习题 85
第2篇 面向对象开发方法 91
第6章 面向对象方法学引论 91
6.1 面向对象方法学概述 91
6.1.1 面向对象的基本概念 92
6.1.2 面向对象软件过程模型 95
6.2 面向对象方法学的优点 96
6.3 面向对象建模 98
6.3.1 对象模型 98
6.3.2 动态模型 99
6.3.3 功能模型 99
6.3.4 三种模型之间的关系 100
6.4 小结 100
习题 101
第7章 面向对象分析与设计 102
7.1 面向对象分析 102
7.1.1 面向对象分析过程 102
7.1.2 需求陈述 103
7.1.3 建立对象模型 104
7.1.4 建立动态模型 107
7.1.5 建立功能模型 110
7.1.6 应用实例 111
7.2 面向对象设计 115
7.2.1 面向对象设计的准则 116
7.2.2 问题域子系统设计 120
7.2.3 人机交互子系统设计 120
7.2.4 任务管理子系统设计 120
7.2.5 数据管理子系统设计 121
7.2.6 应用实例 122
7.3 小结 126
习题 127
第8章 UML统一建模语言 128
8.1 UML概述 128
8.1.1 UML的产生及发展目标 128
8.1.2 UML的组成及主要内容 129
8.1.3 UML的应用领域 131
8.2 UML静态建模 131
8.2.1 用例图 131
8.2.2 类图 133
8.2.3 对象图 136
8.2.4 构件图 137
8.2.5 实施图 137
8.3 UML动态建模 138
8.3.1 顺序图 138
8.3.2 协作图 139
8.3.3 状态图 140
8.3.4 活动图 140
8.4 基于UML的软件开发过程 141
8.5 小结 143
习题 143
第9章 Rational Rose工具 144
9.1 Rose建模功能及特点 144
9.2 Rose操作界面 144
9.2.1 Rose的主界面 144
9.2.2 Rose的基本操作 146
9.3 Rose的模型视图 148
9.3.1 用例图的创建、删除和设计 148
9.3.2 模型元素的添加 149
9.3.3 工具栏按钮的添加 152
9.4 Rose的双向工程 154
9.5 小结 158
习题 158
第3篇 软件工程质量保证与管理 161
第10章 软件测试 161
10.1 软件测试概述 161
10.1.1 软件测试的概念 162
10.1.2 软件测试的分类 163
10.1.3 软件测试的基本步骤 163
10.2 白盒测试 166
10.2.1 逻辑覆盖 167
10.2.2 路径测试 167
10.3 黑盒测试 169
10.3.1 等价分类法 169
10.3.2 边界值分析法 170
10.3.3 错误推测法 170
10.4 测试用例 170
10.4.1 测试用例概念 170
10.4.2 应用实例 171
10.5 调试 172
10.6 面向对象的测试 173
10.7 软件测试的发展趋势 175
10.8 小结 176
习题 176
第11章 软件维护 179
11.1 软件维护的概念 179
11.2 软件维护的工作量 181
11.3 软件维护过程 181
11.4 软件可维护性 184
11.5 软件再工程 185
11.5.1 软件再工程的概念 186
11.5.2 软件重构 187
11.6 应用实例 188
11.7 小结 188
习题 189
第12章 软件工程管理 190
12.1 软件工程管理的目标 190
12.2 软件项目管理 190
12.2.1 软件项目管理的目标和过程 191
12.2.2 软件项目失控的原因 192
12.3 软件配置管理 192
12.3.1 软件配置管理的定义 192
12.3.2 软件配置管理的任务 193
12.4 软件质量管理 195
12.4.1 软件质量的概述 195
12.4.2 软件质量管理的主要活动 196
12.4.3 软件质量保证 198
12.4.4 软件质量保证体系及认证 199
12.4.5 软件过程能力评估的模型 200
12.5 软件风险管理 202
12.5.1 软件项目风险的概念 202
12.5.2 软件风险管理过程及风险驾驭 203
12.6 软件项目人力资源管理 205
12.7 应用实例 206
12.8 小结 206
习题 207
缩略语 208
参考文献 209