第1章 概述 1
1.1 软件的基本概念及特点 1
1.1.1 软件是什么 1
1.1.2 软件的分类 3
1.1.3 软件的发展 5
1.2 软件工程的提出 6
1.2.1 软件工程提出的导火索 6
1.2.2 软件工程的原理 8
1.2.3 软件工程的目标 9
1.3 软件开发方法 10
1.3.1 结构化方法 10
1.3.2 原型化方法 11
1.3.3 面向对象方法 12
1.3.4 敏捷开发方法 13
1.4 软件工程师的职业道德与素质 14
本章小结 15
习题 16
第2章 软件生存周期模型 17
2.1 软件生存周期及其组成 17
2.1.1 软件生存周期的概念和提出的意义 17
2.1.2 软件生存周期的划分与组成 18
2.2 软件开发模型 19
2.2.1 瀑布模型 20
2.2.2 快速原型模型 21
2.2.3 增量模型 22
2.2.4 螺旋模型 22
2.2.5 喷泉模型 23
2.3 常用软件建模工具 24
2.3.1 Microsoft Visio 24
2.3.2 Rational Rose 27
本章小结 28
习题 29
第3章 用户需求调研与可行性分析 30
3.1 用户需求调研 30
3.1.1 关于需求 30
3.1.2 用户需求调研的必要性 30
3.1.3 需求调研方法 32
3.1.4 调研内容和步骤 32
3.2 业务描述 35
3.2.1 业务流程定义 35
3.2.2 业务流程图 36
3.3 软件项目可行性分析 39
3.4 成本效益分析 41
3.4.1 软件开发成本估算 41
3.4.2 软件效益分析 42
本章小结 44
习题 44
第4章 基于结构化方法的需求分析 45
4.1 需求分析简述 45
4.1.1 何为需求分析 45
4.1.2 需求分析的主要任务 46
4.1.3 需求分析的原则 47
4.1.4 需求分析方法的分类 48
4.2 结构化分析 48
4.2.1 结构化分析的特点和原则 48
4.2.2 结构化分析的主要工具 49
4.3 数据流程图的构建 50
4.3.1 构建数据流程图的作用 50
4.3.2 数据流程图的基本符号 51
4.3.3 构建数据流程图的步骤 52
4.3.4 构建数据流程图需要注意的问题 53
4.4 数据字典 56
4.4.1 构建数据字典的意义和用途 56
4.4.2 数据字典的主要内容 56
4.4.3 构建数据字典使用的符号 57
4.4.4 数据字典举例 58
4.5 结构化分析建模综合举例 58
4.5.1 系统数据流程图 58
4.5.2 系统数据字典 61
本章小结 64
习题 64
第5章 系统概要设计 66
5.1 简述 66
5.1.1 概要设计基本任务 66
5.1.2 概要设计基本方法 67
5.2 概要设计基本原理 69
5.2.1 模块化 69
5.2.2 抽象 70
5.2.3 逐步求精 70
5.2.4 信息隐藏和局部化 71
5.2.5 模块独立性 71
5.3 结构化系统设计 74
5.3.1 软件结构图种形式 74
5.3.2 数据流程图的分类 75
5.3.3 变换型设计 76
5.3.4 事务型设计 77
5.4 软件结构的其他描述工具——HIPO图 81
5.5 软件结构的优化准则 83
5.6 结构化设计综合举例 85
本章小结 88
习题 88
第6章 详细设计与编码实现 90
6.1 详细设计的基本任务 90
6.2 详细设计的常用工具 90
6.2.1 程序流程图 91
6.2.2 盒图 92
6.2.3 PAD图 93
6.2.4 判定表与判定树 93
6.2.5 过程设计语言的使用 95
6.3 人机界面的设计 96
6.3.1 人机界面一般风格 97
6.3.2 人机界面设计原则及相关问题 99
6.3.3 人机界面设计过程 100
6.4 详细设计综合举例 100
6.4.1 人机界面 100
6.4.2 数据库表设计 101
6.4.3 模块设计 103
6.5 编码实现 106
6.5.1 编码工具介绍 106
6.5.2 编码工具的选择 107
6.5.3 编码原则 107
6.5.4 编码举例 108
本章小结 111
习题 112
第7章 面向对象技术 113
7.1 面向对象概述 113
7.1.1 面向对象提出的背景 113
7.1.2 面向对象方法简介 114
7.1.3 面向对象基本概念 115
7.1.4 面向对象的特征 118
7.2 面向对象分析 119
7.2.1 面向对象分析任务概述 119
7.2.2 面向对象分析模型 120
7.2.3 面向对象分析过程 126
7.3 面向对象设计 128
7.3.1 面向对象设计任务 128
7.3.2 面向对象设计与面向对象分析的关系 129
7.3.3 面向对象设计基本原则 130
7.3.4 面向对象设计模型 132
7.3.5 面向对象设计过程 132
本章小结 135
习题 135
第8章 UML建模 137
8.1 UML概述 137
8.1.1 发展历史 137
8.1.2 UML简介 138
8.1.3 视图 138
8.1.4 UML中的图 139
8.2 用例模型的构建 140
8.2.1 用例图的模型元素 141
8.2.2 确定参与者 142
8.2.3 确定用例 142
8.3 静态模型的构建 146
8.3.1 类图和对象图 146
8.3.2 标识类的方法 150
8.3.3 包图 153
8.4 动态模型的构建 156
8.4.1 顺序图 156
8.4.2 协作图 157
8.4.3 状态图和活动图 158
8.5 物理体系结构的构建 161
8.5.1 组件图 161
8.5.2 部署图 162
8.6 综合实例 163
8.6.1 系统分析 163
8.6.2 系统设计 172
8.6.3 物理结构设计 176
本章小结 180
习题 181
第9章 测试与维护 183
9.1 软件测试简介 183
9.1.1 测试定义 183
9.1.2 软件测试的原则 184
9.1.3 软件测试的对象 185
9.2 软件测试模型 185
9.2.1 V模型 185
9.2.2 W模型 186
9.3 软件测试的一般过程 187
9.3.1 测试需求分析阶段 187
9.3.2 测试计划阶段 187
9.3.3 测试方案设计阶段 188
9.3.4 测试用例实现阶段 188
9.3.5 测试执行阶段 188
9.3.6 评价与关闭阶段 189
9.4 软件测试常用方法 189
9.4.1 黑盒测试与白盒测试 189
9.4.2 黑盒测试法 189
9.4.3 白盒测试法 194
9.5 面向对象测试 197
9.6 软件测试自动化与测试工具 199
9.6.1 软件测试自动化 199
9.6.2 软件测试工具 200
9.7 软件调试 201
9.7.1 软件调试基本概念 201
9.7.2 软件测试和软件调试的区别 201
9.7.3 软件调试的步骤 201
9.7.4 软件调试方法 202
9.8 软件维护 203
9.8.1 软件维护的定义 203
9.8.2 影响维护工作量的因素 203
9.8.3 软件维护成本 204
9.8.4 软件维护过程 204
9.8.5 软件的可维护性与提高方法 206
本章小结 207
习题 207
第10章 软件项目管理 209
10.1 软件规模估算 209
10.1.1 软件规模估算概述 209
10.1.2 软件规模估算常用方法 210
10.2 风险管理 211
10.2.1 软件项目风险定义及管理重要性 211
10.2.2 风险识别 212
10.2.3 风险分析及量化 212
10.2.4 风险应对计划 212
10.2.5 风险监控 213
10.3 人员组织 213
10.3.1 团队管理概述 213
10.3.2 软件项目组织计划 213
10.3.3 项目组织形式 214
10.3.4 团队的组建 215
10.3.5 团队合作与沟通 217
10.4 进度管理 217
10.4.1 进度管理定义 217
10.4.2 进度管理过程 217
10.4.3 软件项目任务分解 218
10.4.4 软件项目进度计划 219
10.4.5 进度控制 223
10.5 质量管理 224
10.5.1 软件质量的定义 224
10.5.2 软件质量模型 225
10.5.3 软件质量保证 226
10.5.4 软件质量控制 226
本章小结 228
习题 228
参考文献 230