第1章 软件工程的基本概念 1
1.1软件的定义、特征和分类 1
1.1.1软件的定义 1
1.1.2软件的特征 1
1.1.3软件的分类 2
1.2软件的发展和软件危机 3
1.2.1软件的发展历程 3
1.2.2软件危机的表现、产生的原因和解决方法 4
1.3软件工程方法学 6
1.3.1软件工程的基本概念 6
1.3.2软件工程的要素 6
1.3.3软件工程的基本原理 7
1.3.4软件工程的基本目标 8
1.3.5软件工程的基本原则 9
1.3.6两种主要的软件工程方法 9
1.4软件的生命周期 10
1.4.1生命周期的种类 10
1.4.2生命周期的阶段划分 11
1.5软件过程的模型 12
1.5.1瀑布模型 13
1.5.2原型模型 13
1.5.3增量模型 14
1.5.4螺旋模型 15
1.5.5变换模型 16
1.5.6喷泉模型 16
1.5.7智能模型 17
1.5.8第4代技术模型 17
1.5.9基于构件的开发模型 18
1.6本章小结 19
习题1 19
第2章 需求分析与需求设计 21
2.1可行性研究 22
2.1.1问题的定义 22
2.1.2可行性分析的内容 24
2.2需求分析的任务 26
2.3获取需求的方法 30
2.4需求分析的原理 31
2.4.1需求分析的原则 31
2.4.2需求分析的过程 32
2.5分析建模 33
2.5.1分析模型 33
2.5.2数据建模(E-R图) 34
2.5.3功能建模(数据流图) 36
2.5.4行为建模(状态迁移图) 43
2.5.5数据字典 45
2.5.6加工说明的描述工具 48
2.6需求规格说明书 50
2.7需求验证 52
2.8本章小结 53
习题2 53
第3章 软件设计 55
3.1软件设计的原理 56
3.1.1软件设计的过程 56
3.1.2软件设计的原则 57
3.1.3软件体系结构 60
3.1.4模块化设计的方法 63
3.2结构化设计方法 68
3.2.1系统结构图中的模块 68
3.2.2变换流与变换型系统结构 69
3.2.3事务流与事务型系统结构图 70
3.2.4变换分析与映射 70
3.2.5事务分析与映射 71
3.2.6软件体系结构优化的方法 72
3.2.7“黑箱”技术的使用 73
3.3数据设计 75
3.3.1数据设计的原则 75
3.3.2文件设计的过程 75
3.3.3数据库设计 76
3.3.4数据库设计的技巧 84
3.4详细设计 86
3.4.1详细设计的任务 86
3.4.2详细设计的原则 87
3.4.3过程设计 87
3.4.4界面设计 93
3.4.5在线帮助的信息设计 95
3.4.6提示信息的信息设计 96
3.5设计规格说明与设计评审 98
3.5.1软件设计规格说明书 98
3.5.2软件设计的评审 99
3.6本章小结 99
习题3 99
第4章 面向对象方法学 102
4.1面向对象概述 102
4.1.1面向对象基本概念 103
4.1.2面向对象基本特征 104
4.2面向对象开发方法概述 107
4.2.1软件开发过程 107
4.2.2传统开发方法存在的问题 108
4.2.3面向对象开发方法的特点 109
4.2.4 Booch方法 110
4.2.5 Coda/Yourdon方法 110
4.2.6 OMT方法 111
4.2.7 OOSE方法 114
4.3统一建模语言UML 115
4.3.1 UML概述 115
4.3.2 UML内容 116
4.4本章小结 118
习题4 118
第5章 面向对象分析 120
5.1面向对象分析概述 120
5.1.1面向对象分析模型 120
5.1.2面向对象分析过程 121
5.2需求陈述 122
5.3建立静态模型 124
5.3.1寻找类与对象 125
5.3.2确定关联 129
5.3.3确定属性 132
5.3.4识别主题 133
5.3.5识别结构 134
5.3.6定义服务 136
5.3.7完善对象模型 136
5.4建立动态模型 137
5.4.1准备脚本 138
5.4.2确定事件 139
5.4.3.准备事件跟踪图 139
5.4.4构造状态机图 140
5.4.5完善动态模型 142
5.5建立功能模型 143
5.5.1确定基本系统模型图 143
5.5.2细化数据流图 143
5.5.3功能描述 144
5.6面向对象分析实例 145
5.7本章小结 148
习题5 148
第6章 面向对象设计 150
6.1面向对象设计概述 150
6.1.1面向对象设计模型 152
6.1.2面向对象设计准则 152
6.1.3面向对象设计启发规则 156
6.2系统设计 157
6.2.1系统分解 158
6.2.2设计问题域子系统 161
6.2.3设计人机交互子系统 163
6.2.4设计任务管理子系统 165
6.2.5设计数据管理子系统 168
6.2.6全局资源管理 172
6.2.7控制流机制 172
6.2.8边界条件 173
6.2.9评审 173
6.3对象设计 173
6.3.1设计内部结构 173
6.3.2设计关联 174
6.3.3设计接口 175
6.3.4设计类中的服务 175
6.3.5选择复用构件 177
6.3.6优化对象设计 179
6.4面向对象设计实例 183
6.4.1分析阶段 183
6.4.2设计阶段 184
6.5本章小结 187
习题6 188
第7章 代码设计 190
7.1程序设计语言 190
7.1.1程序设计语言的基本成分 190
7.1.2程序设计语言的分类 191
7.1.3程序设计语言的选择 192
7.2程序设计风格 193
7.2.1源程序的文档化 194
7.2.2数据说明 195
7.2.3语句构造 195
7.2.4输入与输出 196
7.2.5编程规范 197
7.3结构化程序设计 200
7.3.1结构化程序设计的原理 201
7.3.2结构化编程 201
7.4面向对象程序设计 203
7.4.1面向对象语言的特点 203
7.4.2面向对象语言的选择 204
7.4.3面向对象程序设计风格 205
7.5程序效率 206
7.6程序复杂性度量 207
7.7本章小结 209
习题7 209
第8章 软件测试 211
8.1软件测试基础 212
8.1.1什么是软件缺陷 212
8.1.2软件测试的原则 213
8.1.3软件测试过程模型 214
8.1.4软件测试的阶段 216
8.1.5软件测试的工作范畴 218
8.2软件测试基本技术 218
8.2.1黑盒测试和白盒测试 218
8.2.2静态测试和动态测试 219
8.2.3验证与确认 220
8.2.4自动化测试和随机测试 220
8.3黑盒测试法 220
8.3.1等价类划分法 221
8.3.2边界值分析法 222
8.3.3错误推测法 224
8.3.4因果图法 224
8.4白盒测试法 227
8.4.1逻辑覆盖法 227
8.4.2基本路径法 229
8.5软件测试计划 230
8.5.1测试策略 230
8.5.2制定测试计划 232
8.6测试用例设计 233
8.6.1什么是测试用例 233
8.6.2测试用例的书写标准 234
8.6.3测试用例设计的原则 234
8.7面向对象测试 235
8.7.1面向对象测试模型 236
8.7.2面向对象的单元测试 236
8.7.3面向对象的集成测试 238
8.8软件测试自动化 239
8.8.1自动化测试的基本概念 239
8.8.2测试工具的分类及选择 240
8.9本章小结 241
习题8 242
第9章 成本估算与进度规划 246
9.1软件度量与软件生产率 247
9.1.1软件度量 247
9.1.2面向规模的度量 247
9.1.3面向功能的度量 248
9.1.4软件质量的度量 249
9.1.5影响软件生产率的因素 250
9.2软件项目估算与开发成本估算 251
9.2.1软件项目计划的目标 251
9.2.2软件的范围 251
9.2.3软件开发的资源 252
9.2.4软件项目估算 254
9.2.5估算之前的任务分解 254
9.2.6软件开发成本估算 256
9.3进度计划 262
9.3.1各阶段工作量的分配 262
9.3.2制定开发进度计划 262
9.3.3进度安排的方法 263
9.4本章小结 265
习题9 265
第10章 团队建设与沟通管理 268
10.1团队建设的基本概念 268
10.2项目团队的组织 268
10.2.1项目的组织结构模式 269
10.2.2程序设计小组的组织形式 271
10.3团队成员的选择与基本要求 273
10.3.1项目开发各阶段对人员的需求 273
10.3.2配备人员的原则 274
10.3.3对项目经理的要求 274
10.3.4团队成员的招聘与选择 275
10.4团队的建设与管理 276
10.4.1项目成员的使用与培训 276
10.4.2对项目成员的激励 276
10.4.3软件项目的指导 277
10.4.4软件项目的检验 277
10.5团队的沟通管理 278
10.5.1沟通管理与沟通的原则 278
10.5.2沟通方式 278
10.5.3编制项目沟通计划 279
10.6本章小结 281
习题10 281
第11章 风险管理和配置管理 282
11.1风险管理 282
11.1.1软件风险分类 282
11.1.2风险识别 283
11.1.3风险预测 287
11.1.4处理风险的策略 288
11.2质量保证 289
11.2.1软件质量 289
11.2.2软件质量保证措施 290
11.3配置管理 293
11.3.1软件配置管理的内容 293
11.3.2软件配置管理的基本目标 294
11.3.3软件配置管理角色职责 294
11.3.4软件配置管理过程描述 295
11.3.5软件配置管理的关键活动 296
11.4本章小结 301
习题11 302
第12章 软件过程 304
12.1软件过程概述 304
12.2软件过程能力成熟度模型 305
12.2.1软件过程能力成熟度模型(SW-CMM)的诞生 305
12.2.2软件过程能力成熟度模型(CMM)的组织与结构 306
12.2.3能力等级的特点和关键过程域 308
12.2.4实施CMM是软件企业发展的必然趋势 311
12.3软件过程的改进 314
12.3.1软件过程改进的5条原则 315
12.3.2软件过程改进的策略 316
12.3.3软件过程改进战略策划 318
12.3.4软件过程改进建议 320
12.3.5实施SPI的目的 321
12.3.6以项目形式管理SPI 322
12.4本章小结 323
习题12 323
第13章 软件工程标准 325
13.1软件工程标准化 325
13.1.1软件工程标准的概念 325
13.1.2软件工程标准的制定与推行 326
13.1.3软件工程标准层次 326
13.2软件质量认证 326
13.2.1软件质量认证的产生背景 326
13.2.2软件质量认证的标准 327
13.2.3软件质量认证的作用 327
13.2.4 ISO 9000标准的构成 327
13.3 GB/T 8567——2006计算机软件文档编制规范 328
13.3.1使用范围 328
13.3.2文档过程 328
13.3.3文档编制要求 329
13.4本章小结 331
习题13 332
第14章 软件文档 333
14.1软件文档的意义 333
14.2软件文档的作用 333
14.2.1管理依据 333
14.2.2任务之间联系的凭证 333
14.2.3质量保证 334
14.2.4培训与参考 334
14.2.5软件维护支持 334
14.2.6历史档案 334
14.3软件文档的分类 334
14.3.1开发文档 334
14.3.2产品文档 335
14.3.3管理文档 335
14.4软件文档的管理 335
14.4.1概述 335
14.4.2管理者的作用 335
14.4.3制定文档编制策略 336
14.5软件文档的编写技巧 337
14.5.1从技术角度进行文档的编写和评价 337
14.5.2明确文档编写人员的责任 337
14.5.3让编写人员对开发项目有准确的认识 337
14.5.4让开发和设计人员参与文档审阅工作 337
14.6文档编写的常用工具 338
14.7本章小结 338
习题14 338
第15章 软件文档编写指南 339
15.1概述 339
15.2软件开发文档 339
15.2.1可行性分析(研究)报告 339
15.2.2软件需求规格说明 343
15.2.3概要设计书 349
15.2.4详细设计书 357
15.3软件管理文档 359
15.3.1项目开发计划 359
15.3.2软件测试计划 368
15.3.3测试报告 371
15.3.4开发进度月报 372
15.3.5项目开发总结报告 374
15.4软件用户文档 376
15.4.1用户手册 376
15.4.2操作手册 379
15.5本章小结 380
习题15 380
参考文献 381