第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件的定义与特征 1
1.1.2 软件系统 2
1.2 软件工程的知识体系 2
1.3 软件工程的产生与定义 3
1.3.1 软件工程的产生 3
1.3.2 软件工程的定义 3
1.4 软件工程的原则 4
1.5 软件工程的目标 5
1.6 软件工程的基本原理 5
1.7 软件工程思维的培养 7
本章小结 7
习题一 8
第2章 软件生命周期与开发模型 9
2.1 软件生命周期 9
2.1.1 计划时期 9
2.1.2 开发时期 10
2.1.3 运行与维护时期 12
2.2 软件开发方法综述 12
2.2.1 结构化方法 12
2.2.2 面向数据结构的软件开发方法 12
2.2.3 面向问题的分析方法 12
2.2.4 面向对象的开发方法 13
2.2.5 原型化方法 13
2.2.6 可视化开发方法 13
2.3 软件开发模型 15
2.3.1 瀑布模型 16
2.3.2 螺旋模型 17
2.3.3 增量模型 18
2.3.4 喷泉模型 19
2.3.5 RAD模型 20
2.3.6 迭代式模型 22
2.4 快速原型开发 23
2.4.1 什么是软件原型化方法 23
2.4.2 软件原型的分类 23
2.4.3 原型生存周期 24
2.4.4 快速原型的优点 26
本章小结 26
习题二 26
第3章 可行性研究与项目计划 28
3.1 可行性研究 28
3.1.1 可行性研究的任务 28
3.1.2 可行性研究的步骤 28
3.2 《可行性分析报告》格式 29
3.3 项目立项 32
3.4 项目计划 32
3.4.1 项目工作计划 32
3.4.2 硬件资源规划 32
3.4.3 软件资源规划 33
本章小结 33
习题三 33
第4章 软件需求分析 35
4.1 软件需求分析的目标和任务 35
4.1.1 需求分析的目标 35
4.1.2 需求分析的任务 35
4.2 需求分析的过程 37
4.2.1 问题识别 37
4.2.2 分析与综合 38
4.2.3 编制需求分析文档 39
4.2.4 综合评审 39
4.2.5 需求变更管理 39
4.3 数据流图 40
4.3.1 数据流图的构成 41
4.3.2 数据流图的原则与步骤 42
4.3.3 举例 44
4.4 数据字典 45
4.4.1 数据字典的用途 46
4.4.2 数据字典的内容 46
4.4.3 定义数据的方法 48
4.5 《需求分析报告》格式 49
4.6 需求分析报告书写示例:社区信息化服务系统需求分析报告 52
本章小结 60
习题四 60
第5章 结构化软件设计 64
5.1 概要设计综述 64
5.1.1 概要设计的内容 64
5.1.2 软件体系结构 65
5.2 概要设计原则 68
5.2.1 结构化设计原则 68
5.2.2 模块独立性 70
5.3 概要设计工具 70
5.3.1 IPO图 70
5.3.2 模块结构图 72
5.4 《概要设计说明书》格式 76
5.5 详细设计 77
5.5.1 详细设计的任务 77
5.5.2 网络设计内容 78
5.5.3 《详细设计说明书》格式 79
本章小结 80
习题五 80
第6章 数据库设计 82
6.1 数据库设计的重要性 82
6.2 需求分析阶段的设计 82
6.2.1 数据流图示例 83
6.2.2 数据字典示例 84
6.3 概念设计阶段 85
6.3.1 概念模型的表示方法 85
6.3.2 E-R图的绘制步骤 85
6.4 逻辑设计阶段 93
6.4.1 逻辑模型的转换规则 94
6.4.2 模式转换示例 95
6.5 物理设计阶段 96
6.6 《数据库设计说明书》格式 97
本章小结 99
习题六 99
第7章 用户界面设计 101
7.1 用户类型 101
7.2 用户界面的设计思想 101
7.3 用户界面的风格变迁 102
7.4 用户界面的设计原则 102
7.4.1 用户友好界面的设计原则 102
7.4.2 一般交互原则 103
7.4.3 信息显示原则 103
7.4.4 数据输入原则 103
7.4.5 布局合理化原则 104
7.5 用户界面设计方法 104
7.5.1 界面一致性 104
7.5.2 菜单的设计 105
7.5.3 鼠标与键盘对应原则 107
7.5.4 向导使用原则 108
7.5.5 系统响应时间 108
7.5.6 用户帮助设施 108
7.5.7 出错信息和警告 109
7.5.8 输入界面设计 109
7.5.9 基于Web的用户界面设计 110
7.5.10 输出界面设计 113
本章小结 114
习题七 114
第8章 面向对象方法与UML建模语言 115
8.1 传统方法学 115
8.2 面向对象方法的基本概念 115
8.2.1 对象 115
8.2.2 类 116
8.2.3 实例 116
8.2.4 消息 116
8.2.5 方法 116
8.2.6 属性 117
8.2.7 继承 117
8.2.8 多态性 117
8.2.9 重载 117
8.3 UML的主要内容 117
8.3.1 为什么要建模 118
8.3.2 UML建模机制 118
8.3.3 UML的结构 118
8.3.4 UML中的事务 119
8.3.5 UML中的关系 119
8.3.6 UML中的视图 125
8.4 UML的图 125
8.4.1 类图 126
8.4.2 用例图 127
8.4.3 对象图 128
8.4.4 包图 129
8.4.5 交互图 130
8.4.6 状态图 131
8.4.7 活动图 132
8.4.8 组件图 133
8.4.9 部署图 134
本章小结 135
习题八 135
第9章 Rational Rose建模工具 138
9.1 Rational Rose简介 138
9.2 Rose界面简介 138
9.3 Rose模型的4个视图 141
9.3.1 Use Case视图 141
9.3.2 Logical视图 143
9.3.3 Component视图 144
9.3.4 Deployment视图 145
9.4 创建角色(Actor) 145
9.5 删除元素 147
9.6 创建用例,建立角色和用例的关联 147
9.7 使用序列图/协作图描述每个用例 148
9.7.1 创建序列图 148
9.7.2 描述对象 148
9.8 建立静态模型 151
9.9 实现模型 153
本章小结 155
习题九 155
第10章 软件编程 157
10.1 什么是编程 157
10.2 程序设计语言特点与应用范围 157
10.2.1 程序设计语言的发展与分类 157
10.2.2 程序设计语言的选择 159
10.3 Java程序设计风格 160
10.4 程序设计算法与效率 161
10.4.1 程序设计算法 161
10.4.2 程序的运行效率 162
10.5 程序说明书 163
10.5.1 C/S结构 163
10.5.2 B/S结构 163
本章小结 164
习题十 164
第11章 软件测试流程 166
11.1 软件测试的基本概念 166
11.1.1 什么是软件测试 166
11.1.2 软件缺陷 168
11.1.3 软件测试与软件开发的关系 169
11.1.4 软件测试的误区 170
11.2 软件测试流程概述 170
11.3 单元测试 171
11.3.1 单元测试的概念 171
11.3.2 单元测试的内容 171
11.3.3 单元测试的步骤 172
11.4 集成测试 173
11.4.1 集成测试的定义 173
11.4.2 集成测试的层次 173
11.4.3 集成测试的方式 173
11.5 确认测试 176
11.6 系统测试 178
11.6.1 系统测试的流程 178
11.6.2 系统测试的目标 178
11.6.3 几种常见的系统测试方法 178
11.7 基于Web的系统测试 180
11.7.1 功能测试 180
11.7.2 性能测试 182
11.7.3 可用性测试 183
11.7.4 客户端兼容性测试 184
11.7.5 安全性测试 184
11.8 验收测试 185
11.8.1 验收测试的内容与标准 185
11.8.2 验收测试的常用策略 185
11.8.3 验收测试的过程 185
本章小结 186
习题十一 187
第12章 软件测试方法 190
12.1 软件测试方法 190
12.2 静态测试 190
12.2.1 类型冲突 190
12.2.2 子程序参数错误 191
12.2.3 数据错误 191
12.2.4 内存泄漏 192
12.2.5 越界 192
12.2.6 指针错误 193
12.2.7 空悬指针 194
12.2.8 内存处理的逻辑错误 195
12.2.9 代码规则错误实例 195
12.3 动态测试 196
12.4 白盒测试 196
12.4.1 白盒测试概述 196
12.4.2 语句覆盖 198
12.4.3 判断覆盖 198
12.4.4 条件覆盖 198
12.4.5 判断/条件覆盖 199
12.4.6 条件组合覆盖 200
12.4.7 路径覆盖 200
12.5 黑盒测试 201
12.5.1 黑盒测试概述 201
12.5.2 等价类划分 201
12.5.3 边界值分析 203
本章小结 204
习题十二 204
第13章 软件测试工具LoadRunner 208
13.1 LoadRunner的测试流程介绍 208
13.2 测试需求分析 208
13.2.1 分析应用需求 208
13.2.2 确定测试目标 209
13.3 录制和编辑脚本 209
13.3.1 录制和编辑脚本 210
13.3.2 回放脚本 215
13.3.3 优化脚本 216
13.3.4 文本检查 224
13.4 场景创建(设计)与运行 224
13.4.1 创建(设计)运行场景 224
13.4.2 在实际运行时如何查看脚本 226
13.4.3 运行场景 227
13.5 分析及监视场景 230
本章小结 233
习题十三 233
第14章 软件项目管理 234
14.1 项目 234
14.1.1 项目的定义与属性 234
14.1.2 项目的特点与三大要素 234
14.1.3 项目的生命周期 235
14.1.4 制约项目成功的因素 235
14.2 项目管理 235
14.3 软件项目管理的特点与复杂性 236
14.3.1 软件项目的特点 236
14.3.2 软件项目管理的复杂性 237
14.4 合格的项目经理 238
14.5 软件项目管理的内容 238
14.5.1 项目范围的管理 238
14.5.2 项目进度管理 239
14.5.3 人员组织与管理 240
14.5.4 项目的质量管理 242
14.5.5 项目风险管理 243
14.5.6 项目管理各项内容的关系 243
14.6 软件配置管理 243
14.7 项目案例分析 243
本章小结 245
习题十四 245
第15章 项目管理工具Project 2003 247
15.1 启动和退出Project 2003 247
15.2 Project 2003的主界面 247
15.3 创建和管理项目的任务 250
15.3.1 创建项目文件 250
15.3.2 分解任务 251
15.3.3 安排项目任务的工期 251
15.4 分配项目资源 252
15.4.1 资源概述 252
15.4.2 建立资源库 252
15.4.3 为任务分配资源 252
15.4.4 管理资源 252
15.5 解决项目中的资源冲突 253
第16章 实验指导 254
16.1 先修课程 254
16.2 实训目的 254
16.3 实训内容 254
16.4 实训基本要求 255
16.5 实训成绩评定 255
参考文献 256