第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件的特点 2
1.1.2 软件的发展 2
1.1.3 软件危机 3
1.1.4 软件工程的概念 8
1.1.5 软件工程的三要素 8
1.1.6 软件工程方法 9
1.1.7 软件工程的发展历史 9
1.2 软件过程的概念 10
1.2.1 软件生命周期及软件开发过程的定义 10
1.2.2 软件开发过程的制品 12
1.2.3 软件开发工具 13
1.3 软件过程模型 14
1.3.1 瀑布模型 15
1.3.2 快速原型模型 16
1.3.3 增量模型 19
1.3.4 螺旋模型 20
1.3.5 喷泉模型 22
1.3.6 形式化方法模型 23
1.3.7 基于组件的开发模型 24
1.4 Rational统一开发过程 24
1.5 实例:软件外包开发过程 30
1.5.1 外包软件的定义 30
1.5.2 外包软件的开发特点 31
1.5.3 改进方案 31
1.5.4 实施、总结 33
1.6 小结 33
1.7 习题 34
第2章 软件开发方法简介 36
2.1 面向结构的软件工程 36
2.2 结构化方法遵循的基本原则及核心问题 37
2.3 结构化方法的特点 38
2.4 基于Microsoft Office Visio 2007的结构化建模 39
2.4.1 Microsoft Office Visio 2007简介 39
2.4.2 Microsoft Office Visio 2007工作环境 40
2.4.3 Microsoft Office Visio 2007操作入门 41
2.4.4 实践案例 43
2.5 面向对象的软件工程 46
2.6 面向对象方法的基本原则和核心问题 47
2.7 面向对象方法的特点与优势 49
2.8 面向对象的基本概念 50
2.9 面向对象方法学的研究及实践领域 53
2.10 面向对象的统一建模语言介绍 54
2.10.1 统一建模语言概述 54
2.10.2 UML的基本实体 55
2.10.3 常用的UML图 56
2.11 基于Rational Rose 2003的UML建模 61
2.11.1 Rational Rose 2003简介 61
2.11.2 Rational Rose 2003建模环境 61
2.11.3 Rational Rose 2003模型的视图 63
2.11.4 Rational Rose 2003建模界面 63
2.12 结构化方法与面向对象方法比较 65
2.13 小结 66
2.14 习题 66
第3章 结构化分析 68
3.1 可行性研究 68
3.1.1 问题定义 68
3.1.2 可行性研究的内容 70
3.1.3 可行性研究的步骤 71
3.2 需求分析 72
3.3 获取需求的方法 73
3.4 结构化分析方法 75
3.4.1 数据流图 76
3.4.2 数据字典 80
3.4.3 实体关系图 82
3.4.4 状态转换图 83
3.5 快速原型分析方法 84
3.6 结构化分析实例 85
3.7 小结 88
3.8 习题 88
第4章 结构化设计 92
4.1 结构化设计概述 92
4.1.1 结构化设计的任务 92
4.1.2 结构化设计的工作内容及步骤 92
4.2 结构化总体设计 93
4.2.1 总体设计的过程 94
4.2.2 设计原则 95
4.2.3 总体设计的启发规则 95
4.2.4 面向数据流的设计方法 97
4.2.5 结构化总体设计的工具 103
4.2.6 模块结构设计 106
4.2.7 数据存储设计 113
4.3 结构化详细设计 115
4.3.1 结构化详细设计阶段的任务及原则 115
4.3.2 结构化详细设计工具 116
4.3.3 代码设计 120
4.3.4 用户界面设计 120
4.3.5 Jackson程序设计方法 122
4.3.6 Warnier程序设计方法 125
4.3.7 基于组件的设计方法 126
4.4 软件设计说明书结构 127
4.5 结构化设计实例 129
4.6 应用Visio进行数据库建模 136
4.7 应用Visio进行软件界面设计 145
4.8 小结 148
4.9 习题 148
第5章 结构化的实现 152
5.1 结构化实现概述 152
5.2 程序设计语言的选择 153
5.3 程序的复杂性及度量 156
5.3.1 代码行度量法 156
5.3.2 McCabe度量法 156
5.4 结构化测试的任务和目标 157
5.5 结构化测试方法 161
5.5.1 黑盒测试概述 161
5.5.2 白盒测试 168
5.5.3 灰盒测试 174
5.5.4 人工测试 176
5.5.5 自动化测试 177
5.6 结构化测试步骤 178
5.6.1 单元测试 178
5.6.2 集成测试 185
5.6.3 确认测试 189
5.6.4 系统测试 190
5.6.5 验收测试 193
5.7 结构化测试工具 197
5.8 软件测试的误区 199
5.9 软件测试的前景 200
5.10 结构化测试实例 201
5.11 小结 205
5.12 习题 206
第6章 面向对象分析方法 208
6.1 面向对象分析概述 208
6.2 建立基于用例分析的功能模型 210
6.3 建立对象模型 215
6.4 建立动态模型 218
6.4.1 编写脚本 218
6.4.2 设想用户界面 220
6.4.3 事件跟踪图 220
6.4.4 状态图 221
6.5 评审分析模型 224
6.6 面向对象分析实例 225
6.7 小结 228
6.8 习题 228
第7章 面向对象的设计 231
7.1 面向对象的设计方法 231
7.2 面向对象设计的准则 233
7.3 问题域子系统设计 236
7.4 人机交互子系统设计 236
7.5 任务管理子系统设计 237
7.6 数据管理子系统设计 238
7.7 应用Rose建用例图 239
7.8 应用Rose建交互图 242
7.9 应用Rose建类图 249
7.10 应用Rose建状态图和活动图 256
7.11 应用Rose建组件图和部署图 261
7.12 面向对象设计实例 265
7.13 小结 269
7.14 习题 269
第8章 面向对象的实现及测试 271
8.1 面向对象实现语言的选择 271
8.2 面向对象程序设计风格 271
8.3 面向对象软件测试 275
8.3.1 基于面向对象开发过程的测试 276
8.3.2 面向对象软件测试的层次划分及内容 282
8.4 面向对象的测试工具 283
8.5 小结 285
8.6 习题 285
第9章 运行和维护 287
9.1 维护的概念 287
9.2 维护的任务和目的 288
9.3 软件维护的特点 289
9.4 软件维护的步骤 290
9.5 软件的可维护性 293
9.5.1 软件可维护性概述 293
9.5.2 软件维护的类型 294
9.5.3 软件可维护性度量 295
9.6 维护中的组织管理 297
9.7 逆向工程和再工程 299
9.7.1 逆向工程 299
9.7.2 再工程 302
9.8 小结 305
9.9 习题 305
第10章 软件工程标准化和软件质量 307
10.1 软件工程标准化 307
10.2 软件文档 310
10.2.1 软件文档的作用和分类 310
10.2.2 软件文档编制的质量要求 313
10.2.3 软件文档的管理和维护 314
10.3 软件质量特性 314
10.4 软件质量的度量模型 316
10.5 软件质量保证 318
10.6 技术评审 320
10.7 软件质量管理体系 321
10.7.1 软件产品质量管理的特点 321
10.7.2 软件质量管理体系 322
10.8 小结 323
10.9 习题 324
第11章 软件工程项目管理 326
11.1 软件项目管理的内容 326
11.2 软件项目管理的特点和职能 326
11.3 软件项目管理的流程控制分析 328
11.4 计划和组织 335
11.4.1 制定项目计划 335
11.4.2 人员组织与管理 337
11.5 进度计划 338
11.5.1 制定开发进度计划 338
11.5.2 甘特图与时间管理 339
11.5.3 工程网络与关键路径 342
11.6 风险管理 344
11.7 软件成熟度模型 346
11.7.1 CMM概述 346
11.7.2 CMM成熟度级别 347
11.8 项目管理认证体系IPMP与PMP 347
11.9 软件项目管理实例:软件外包项目中的进度管理 349
11.9.1 案例描述 349
11.9.2 案例分析 350
11.10 应用Project 2007进行项目管理 351
11.10.1 Project 2007简介 351
11.10.2 Project 2007工作界面 351
11.10.3 项目管理专用术语概览 353
11.11 Project操作入门 354
11.12 利用Project制定项目计划 360
11.13 小结 368
11.14 习题 368
第12章 结构化开发实例 372
12.1 项目论证和计划 372
12.1.1 系统调查 372
12.1.2 新系统的总体功能需求和性能要求 372
12.1.3 系统开发的框架 373
12.2 可行性分析 373
12.2.1 技术可行性 374
12.2.2 经济可行性 374
12.2.3 管理可行性 374
12.2.4 开发环境可行性 374
12.3 需求分析 374
12.3.1 数据流分析 374
12.3.2 系统流程图 376
12.3.3 数据字典 376
12.4 总体设计 377
12.4.1 功能模块图 377
12.4.2 层次方框图 378
12.4.3 IPO图 378
12.4.4 系统的功能结构图 378
12.4.5 人事管理工作流程模型图 379
12.4.6 系统数据库关系说明图 379
12.5 详细设计 379
12.5.1 查询功能流程图 379
12.5.2 登录界面程序流程图 380
12.5.3 添加功能流程图 380
12.5.4 系统程序流程图 380
12.5.5 系统功能流程图 381
12.6 系统实现 381
12.6.1 实现工具 381
12.6.2 开发平台 382
12.6.3 数据库系统工作结构图 382
12.7 测试与维护 382
12.7.1 测试结果 382
12.7.2 系统维护 383
12.8 小结 386
第13章 面向对象软件开发实例 387
13.1 可行性分析 387
13.2 需求分析 387
13.2.1 用例图 387
13.2.2 活动图 388
13.3 系统详细设计 389
13.4 小结 396
13.5 习题 396
参考文献 398