第1章 软件工程概述 1
1.1 软件与软件危机 1
1.1.1 软件的定义与特点 1
1.1.2 软件的发展 2
1.1.3 软件危机 3
1.2 软件工程简述 5
1.2.1 软件工程定义 5
1.2.2 软件工程目标与原理 5
1.2.3 软件工程的基本原则 7
1.2.4 软件工程的内容 8
1.3 软件开发方法和理论 9
1.3.1 软件工程的3种开发方法 9
1.3.2 软件工程的5个面向理论 10
1.4 软件生存周期 10
1.4.1 软件生存周期的定义 10
1.4.2 软件生存周期划分阶段的原则 11
1.4.3 软件生存周期各阶段的任务 11
1.5 软件开发模型 12
1.5.1 瀑布模型 12
1.5.2 增量模型 13
1.5.3 螺旋模型 14
1.5.4 快速原型模型 15
1.5.5 喷泉模型 15
1.5.6 统一过程 16
1.6 典型例题解析 16
1.7 本章小结 18
1.8 习题 18
第2章 软件立项与合同 20
2.1 软件项目立项 20
2.1.1 软件项目分类 20
2.1.2 项目立项 21
2.1.3 项目可行性分析 21
2.1.4 可行性研究报告的主要内容 24
2.1.5 召开项目启动会议 25
2.2 系统流程图 25
2.3 成本-效益分析 27
2.3.1 成本估算方法 27
2.3.2 效益分析 31
2.4 软件投标及签订合同 32
2.5 制定项目任务书 33
2.6 软件项目计划 34
2.7 利用Project制定项目计划 34
2.8 典型例题解析 34
2.9 本章小结 35
2.10 习题 36
第3章 需求分析 37
3.1 需求分析概述 37
3.1.1 需求分析的定义 37
3.1.2 需求分析的重要性 37
3.1.3 需求分析的困难 38
3.2 需求分析的任务、过程和主要步骤 38
3.2.1 需求分析的任务 38
3.2.2 需求分析的工作过程 39
3.2.3 需求分析的主要步骤 40
3.2.4 需求分析的原则 41
3.3 需求调查的开展 42
3.3.1 需求调查规程 42
3.3.2 需求调查的方法 43
3.4 需求分析方法 44
3.5 结构化分析方法及工具 45
3.5.1 自顶向下逐层分解 45
3.5.2 数据流图 45
3.5.3 数据字典 49
3.5.4 加工逻辑说明 51
3.6 面向对象分析方法 53
3.6.1 面向对象的基本概念 53
3.6.2 面向对象分析过程 54
3.6.3 面向对象分析的3个模型 55
3.6.4 面向对象分析的5个层次 56
3.6.5 统一建模语言 56
3.7 软件需求规格说明书 56
3.8 需求变更 57
3.8.1 需求变更的代价和风险 57
3.8.2 需求变更控制过程 57
3.8.3 需求变更控制报告 58
3.9 典型例题解析 59
3.10 本章小结 60
3.11 习题 60
第4章 系统设计 62
4.1 系统设计的基本概念 62
4.2 系统设计的目的和任务 63
4.2.1 概要设计的基本任务 63
4.2.2 详细设计的基本任务 64
4.3 概要设计 64
4.3.1 概要设计原理 64
4.3.2 软件结构优化准则 68
4.3.3 软件结构设计的图形工具 70
4.3.4 面向数据流的设计方法 73
4.3.5 软件体系结构设计 77
4.3.6 概要设计说明书 81
4.4 详细设计 81
4.4.1 结构化程序设计方法 82
4.4.2 详细设计描述工具 82
4.4.3 用户界面设计 86
4.4.4 Jackson方法 89
4.4.5 详细设计说明书 92
4.5 数据库设计 92
4.5.1 数据库设计的目标 92
4.5.2 数据库设计的步骤 92
4.5.3 数据库设计的内容 93
4.6 面向对象设计 95
4.7 典型例题解析 95
4.8 本章小结 97
4.9 习题 98
第5章 软件实现 101
5.1 程序设计语言选择 101
5.2 结构化程序设计 102
5.2.1 关于GOTO语句的争论 102
5.2.2 结构化程序设计的原则 102
5.2.3 程序设计自顶向下、逐步求精 103
5.3 源程序设计风格 103
5.3.1 源程序文档化 103
5.3.2 语句结构 104
5.3.3 数据说明 104
5.3.4 输入和输出 104
5.3.5 效率 105
5.4 程序复杂性度量 105
5.4.1 代码行度量法 105
5.4.2 McCabe度量方法 106
5.4.3 Halstead度量方法 106
5.5 软件实现文档 107
5.6 典型例题解析 108
5.7 本章小结 109
5.8 习题 109
第6章 软件测试 111
6.1 软件测试目的和任务 111
6.2 软件测试的原则 112
6.3 软件测试的内容 113
6.4 软件测试方法 114
6.4.1 静态测试与动态测试 114
6.4.2 黑盒测试与白盒测试 114
6.5 软件测试步骤 125
6.5.1 单元测试 126
6.5.2 集成测试 128
6.5.3 确认测试 130
6.6 测试案例分析 131
6.6.1 测试引言 131
6.6.2 测试环境配置 132
6.6.3 测试计划 133
6.6.4 测试的自动化工具 138
6.6.5 测试的任务和安排 138
6.6.6 测试评价的标准 138
6.7 软件测试文档 139
6.7.1 测试计划 139
6.7.2 测试用例 139
6.7.3 测试报告 140
6.7.4 软件产品测试提问单 140
6.8 调试 142
6.8.1 调试的目的 142
6.8.2 调试技术 143
6.9 典型例题解析 145
6.10 本章小结 149
6.11 习题 149
第7章 软件发布与实施 151
7.1 软件产品分类 151
7.2 软件产品发布 152
7.3 软件培训 153
7.3.1 软件培训的3个层次 153
7.3.2 软件培训的文档 154
7.3.3 软件培训的流程 154
7.3.4 培训考核 155
7.4 软件产品实施 155
7.5 典型例题解析 157
7.6 本章小结 157
7.7 习题 158
第8章 软件维护 159
8.1 软件维护的概念 159
8.1.1 软件维护的定义 159
8.1.2 软件维护的原因 160
8.1.3 影响维护工作量的因素 160
8.1.4 软件维护的成本 161
8.2 软件的可维护性 162
8.3 软件维护的过程 166
8.4 软件维护的管理方法 167
8.5 软件维护文档 168
8.6 自动维护的工具 170
8.7 典型例题解析 171
8.8 本章小结 172
8.9 习题 172
第9章 软件配置管理 174
9.1 软件配置管理概念 174
9.1.1 配置管理的必要性 174
9.1.2 软件配置管理 175
9.1.3 软件配置项 176
9.1.4 基线 176
9.1.5 基线库 177
9.2 软件配置管理过程 178
9.2.1 软件配置项的标识 178
9.2.2 版本控制 179
9.2.3 变更控制 179
9.2.4 配置审计 180
9.2.5 状态报告 180
9.3 常用软件配置管理工具简介 181
9.4 本章小结 182
9.5 习题 182
第10章 软件项目管理 184
10.1 软件项目管理概念 184
10.1.1 项目干系人 184
10.1.2 软件项目管理 185
10.1.3 软件项目管理框架 186
10.1.4 软件项目管理过程 187
10.2 软件项目的团队组织 188
10.2.1 项目组人员管理原则 188
10.2.2 团队组织结构 189
10.3 软件度量 189
10.3.1 面向规模的度量 190
10.3.2 面向功能的度量 191
10.4 项目计划和跟踪 193
10.4.1 项目计划的制定 193
10.4.2 项目计划的跟踪与控制 194
10.5 风险管理 196
10.5.1 风险管理基础 197
10.5.2 风险识别 199
10.5.3 风险管理过程、原则 201
10.6 质量管理 205
10.6.1 软件质量 205
10.6.2 软件质量保证 206
10.6.3 CMM&CMMI 206
10.7 案例分析 208
10.7.1 建立“航空机票预订”项目的过程模型 208
10.7.2 实施跟踪与控制 209
10.8 本章小结 211
10.9 习题 212
第11章 软件工程常用工具 213
11.1 软件工程工具的分类 213
11.2 项目管理工具Microsoft Office Project 2007 215
11.2.1 Microsoft Office Project 2007简介 215
11.2.2 Microsoft Office Project 2007工作环境 215
11.2.3 Microsoft Office Project 2007使用示例 218
11.2.4 实验题目 224
11.3 统一建模语言及建模工具Rational Rose 224
11.3.1 UML简介 224
11.3.2 UML图 226
11.3.3 建模工具Rational Rose 2003 231
11.3.4 实验题目 237
11.4 建模工具Microsoft Office Visio 2007 240
11.4.1 Microsoft Office Visio 2007简介 240
11.4.2 Microsoft Office Visio 2007工作环境 240
11.4.3 Microsoft Office Visio 2007使用示例 242
11.4.4 实验题目 247
11.5 建模与设计工具PowerDesigner 15 247
11.5.1 PowerDesigner简介 247
11.5.2 PowerDesigner 15简介 248
11.5.3 PowerDesigner 15使用示例 250
11.5.4 实验题目 255
11.6 软件测试工具LoadRunner9.5 256
11.6.1 LoadRunner简介 256
11.6.2 LoadRunner 9.5工作环境 256
11.6.3 LoadRunner的功能 257
11.6.4 实验题目 264
11.7 版本控制工具VSS 264
11.7.1 VSS 2005工作环境及简单原理 264
11.7.2 VSS 2005使用示例 267
11.7.3 实验题目 276
11.8 本章小结 277
第12章 开发实例 278
12.1 项目概述 278
12.1.1 系统调查 278
12.1.2 系统的总体功能需求和性能要求 279
12.1.3 系统处理流程和数据流程 279
12.1.4 系统开发框架 280
12.2 可行性分析 280
12.2.1 技术可行性 280
12.2.2 经济可行性 280
12.2.3 社会可行性 281
12.2.4 开发环境可行性 281
12.3 项目开发计划 281
12.3.1 工作任务、任务分解与人员分工 281
12.3.2 进度计划 282
12.4 需求分析 283
12.4.1 需求概述 283
12.4.2 功能需求 283
12.4.3 非功能需求 285
12.5 系统设计 285
12.5.1 建立对象模型 285
12.5.2 建立动态模型 287
12.5.3 数据库设计 288
12.5.4 用户界面设计 290
12.6 系统实现 290
12.6.1 实现工具 290
12.6.2 软件编码原则 290
12.7 测试与维护 290
12.7.1 测试方案 290
12.7.2 测试项目 290
12.7.3 测试项目说明 291
12.7.4 软件测试分析报告 293
12.8 本章小结 294
12.9 习题 294
附录 295
1 可行性研究报告 295
2 项目开发计划 296
3 软件需求规格说明书 300
4 概要设计说明书 301
5 详细设计说明书 303
6 用户操作手册 303
7 软件测试计划 304
8 软件测试报告 305
9 软件配置管理计划 306
10 项目开发总结报告 307
参考文献 309