第1章 软件工程概述 1
1.1软件与软件危机 1
1.1.1软件的发展 1
1.1.2软件的特征 2
1.1.3软件危机 3
1.2软件工程 4
1.2.1软件工程的概念 4
1.2.2软件工程的基本原理 4
1.2.3软件工程的基本目标 6
1.3软件生存周期 6
1.4软件开发模型 8
1.4.1瀑布模型 8
1.4.2快速原型模型 9
1.4.3增量模型 10
1.4.4螺旋模型 11
1.4.5喷泉模型 13
1.4.6形式化方法模型 13
1.5软件开发方法和软件开发工具 15
1.5.1软件开发方法的概念 15
1.5.2软件开发的基本方法 16
1.5.3软件开发工具 17
1.6传统软件工程和面向对象软件工程 17
1.6.1传统的软件工程 17
1.6.2面向对象的软件工程 18
习题 19
第2章 软件需求分析 22
2.1软件需求分析概述 22
2.1.1实例分析 22
2.1.2软件需求分析的任务 25
2.1.3软件需求分析的步骤 26
2.2软件需求获取的方法 27
2.2.1常规的软件需求获取的方法 27
2.2.2快速原型法在软件需求分析中的应用 29
2.3分析建模 30
2.3.1分析模型 30
2.3.2分析建模的描述工具 31
2.4软件需求说明 38
2.5结构化分析方法 40
2.5.1画出分层数据流图 40
2.5.2确定数据定义与加工策略 44
2.5.3复审 45
2.6需求验证 45
2.7软件需求规格说明书书写范例 46
习题 48
第3章 总体设计 51
3.1总体设计的任务和步骤 51
3.1.1总体设计的任务 51
3.1.2总体设计的步骤 51
3.2总体设计的概念与原则 52
3.2.1模块化 53
3.2.2抽象 54
3.2.3信息隐蔽 54
3.2.4模块独立性 55
3.2.5结构设计准则 57
3.3面向数据流的设计方法 59
3.3.1系统结构图(SC图) 59
3.3.2数据流图的类型 60
3.3.3设计过程 61
3.3.4变换分析 62
3.3.5事务分析 63
3.3.6设计优化 64
3.3.7教材购销系统的结构设计示例 65
3.4总体设计规格说明书与评审 70
3.5总体设计文档写作范例 71
习题 73
第4章 详细设计 75
4.1详细设计的任务与原则 75
4.1.1详细设计的任务 75
4.1.2详细设计的原则 76
4.2详细设计的方法 76
4.2.1详细设计的工具 76
4.2.2 Jackson图 80
4.2.3详细设计示例 84
4.3详细设计规格说明与评审 87
4.3.1详细设计说明书 87
4.3.2详细设计复审 87
4.4详细设计文档写作范例 87
4.4.1详细设计文档的编写 87
4.4.2详细设计文档的实例 89
习题 91
第5章 软件的编码与测试 94
5.1编码设计的目的 94
5.2程序设计语言 95
5.2.1程序设计语言的分类 95
5.2.2程序设计语言的选择 97
5.3编码风格 98
5.3.1使用好程序内部的文档 98
5.3.2数据说明原则 99
5.3.3语句结构的规则 99
5.3.4输入/输出规则 100
5.3.5高效率的原则 100
5.4软件测试 101
5.4.1软件测试目标 101
5.4.2软件测试的原则 102
5.4.3软件测试的方法 103
5.4.4软件测试的过程 104
5.4.5软件测试与开发各阶段的关系 105
5.5测试用例的设计 105
5.5.1逻辑覆盖 105
5.5.2等价分类法 108
5.5.3边界值分析法 109
5.5.4错误猜测法 110
5.5.5实用综合测试策略 110
5.6测试步骤 110
5.6.1单元测试 111
5.6.2集成测试 114
5.6.3验收测试 115
5.6.4系统测试 116
5.7调试技术 117
5.7.1调试过程 117
5.7.2调试技术 117
5.7.3调试原则 118
习题 119
第6章 面向对象方法学引论 122
6.1面向对象方法学概述 122
6.1.1面向对象方法的发展历程 122
6.1.2面向对象方法学的优点 123
6.1.3面向对象方法学的不足 125
6.2面向对象的基本概念 126
6.2.1对象 126
6.2.2类和实例 127
6.2.3消息和方法 128
6.3面向对象的基本特征 129
6.3.1继承性(inheritance) 129
6.3.2封装性(encapsulation) 131
6.3.3多态性(polymorphism)和重载(overloading) 131
6.4面向对象的软件工程 132
6.5面向对象的建模 135
6.5.1面向对象的建模概述 135
6.5.2对象模型 136
6.5.3动态模型 136
6.5.4功能模型 137
6.6面向对象的开发方法 137
6.6.1 Booch方法 138
6.6.2 Coad方法 138
6.6.3 OMT方法 139
6.6.4 Jacobson方法 140
习题 140
第7章 面向对象的分析 144
7.1面向对象的分析 144
7.1.1概述 144
7.1.2对象模型的层次 145
7.1.3需求陈述 145
7.2对象模型 147
7.2.1确定类-&-对象 147
7.2.2确定关联 149
7.2.3确定主题 151
7.2.4确定属性 151
7.2.5对象模型的精化 152
7.3动态模型 154
7.3.1概述 154
7.3.2编写系统交互式活动的脚本 154
7.3.3构造交互过程的用户界面 155
7.3.4构造事件跟踪图 156
7.3.5构造系统对象的状态图 157
7.3.6动态模型的合并和精化 158
7.4功能模型 158
7.4.1基本系统模型 159
7.4.2功能级数据流图 159
7.4.3描述处理框功能 160
7.4.4类和对象中服务的定义 160
习题 161
第8章 面向对象设计 163
8.1面向对象设计的概念 163
8.1.1面向对象设计的准则 163
8.1.2面向对象设计应遵循的原则 164
8.1.3面向对象设计的内容 165
8.2问题域部分的设计 166
8.3人-机交互子系统的设计 168
8.3.1界面系统的设计原则 168
8.3.2分类用户和描述用户 169
8.3.3界面元素及命令层次的设计 169
8.4任务管理子系统设计 170
8.5数据管理子系统设计 171
8.5.1数据存储管理的3种模式 171
8.5.2数据管理子系统的设计内容 172
8.5.3类中提供的服务的设计 173
习题 173
第9章 统一建模语言UML 175
9.1 UML概述 175
9.1.1 UML的产生和发展 175
9.1.2 UML的主要内容 176
9.1.3 UML的主要特点 177
9.1.4 UML的应用 178
9.2 UML静态建模机制 178
9.2.1用例图 178
9.2.2类图和对象图 182
9.2.3包 187
9.2.4构件图 188
9.2.5配置图 189
9.3 UML动态建模机制 189
9.3.1消息 190
9.3.2顺序图 190
9.3.3协作图 191
9.3.4状态图 192
9.3.5活动图 194
9.4统一建模过程 195
习题 196
第10章 面向对象的实现 198
10.1程序设计语言 198
10.1.1面向对象的语言与非面向对象的语言 198
10.1.2面向对象的语言的技术支持 199
10.1.3选择面向对象语言的原则 201
10.2面向对象程序设计风格 202
10.2.1提高可重用性 202
10.2.2提高可扩充性 203
10.2.3提高稳健性 203
10.3测试策略 204
10.3.1面向对象测试概述 204
10.3.2测试OOA、 OOD模型 205
10.3.3面向对象测试策略 205
10.4设计测试用例 206
10.4.1设计类测试用例 207
10.4.2测试类间测试用例 208
习题 208
第11章 软件维护 210
11.1软件维护的种类 210
11.2软件维护的特点 212
11.2.1软件维护面临的困难 212
11.2.2产生软件维护问题的根源 212
11.2.3非结构化维护 213
11.2.4结构化维护 213
11.3软件维护的实施 213
11.3.1维护机构 213
11.3.2软件维护申请报告 214
11.3.3软件维护工作流程 214
11.3.4维护档案记录 216
11.3.5维护评价 216
11.4软件的可维护性 216
11.4.1影响可维护性的因素 216
11.4.2软件可维护性的度量 217
11.4.3提高可维护性的方法 219
11.5软件维护的副作用 222
习题 223
第12章 软件项目的计划和成本估计 225
12.1软件的目标与项目计划 225
12.1.1软件开发项目的特点 225
12.1.2项目计划目的与作用 226
12.1.3项目计划制定的原则 227
12.1.4项目计划的内容 227
12.1.5项目计划编制过程 229
12.1.6项目计划内容确定 231
12.2成本估算 233
11.2.1成本估算的方法 233
12.2.2成本估算的经验模型 235
12.3进度计划 237
12.3.1进度安排的制定过程 237
12.3.2任务的并行性 238
12.3.3进度安排的方法 238
习题 240
第13章 控制管理 242
13.1软件配置管理 242
13.1.1软件管理的危机 242
13.1.2软件配置管理 243
13.1.3软件配置管理活动 243
13.2软件质量管理 246
13.2.1软件质量的定义 246
13.2.2软件质量要素 246
13.2.3软件质量评价准则 247
13.2.4软件质量度量 248
13.2.5全面质量管理 248
13.3软件风险管理 250
13.3.1什么是风险 250
13.3.2风险管理 251
13.3.3风险识别 251
13.3.4风险估计 253
13.3.5风险评估 254
13.3.6风险管理策略 256
13.3.7风险驾驭和监控 256
习题 257
第14章 组织与文档技术 259
14.1人员分配 259
14.1.1组织结构 259
14.1.2人员配备 260
14.1.3团队管理 260
14.2软件工程文档 262
14.2.1软件工程文档的分类 262
14.2.2软件工程文档的作用 263
14.2.3编制规范的软件工程文件 264
14.3软件工程标准化 266
14.3.1软件工程标准化的意义 266
14.3.2软件工程标准的层次 267
14.3.3我国的软件工程标准化工作 268
习题 269
参考文献 271