第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件的发展过程 1
目录 1
1.1.2 什么是软件 3
1.1.3 软件的分类 4
1.2 软件危机 6
1.2.1 软件危机的表现 7
1.2.2 产生软件危机的原因 8
1.2.3 解决软件危机的方法 9
1.3 软件工程 9
1.3.1 什么是软件工程 9
1.3.2 软件工程的目标 10
1.4 软件工程方法学 11
1.4.1 软件生命周期方法学 11
1.3.3 软件工程原则 11
1.4.2 面向对象方法学 13
1.5 软件过程 13
1.5.1 瀑布模型 13
1.5.2 快速原型模型 14
1.5.3 螺旋模型 15
1.6 小结 16
习题 17
2.1.1 传统软件开发方法存在的问题 19
第2章 面向对象技术基础 19
2.1 面向对象概述 19
2.1.2 面向对象的基本概念 20
2.2 对象 22
2.2.1 一个对象实例 22
2.2.2 对象的定义 23
2.2.3 对象的特点 23
2.3.1 面向对象方法学的基本原则 24
2.3 面向对象方法学概述 24
2.3.2 面向对象方法学的优点 25
2.3.3 典型的面向对象过程模型 26
2.4 对象模型 27
2.4.1 类的表示 27
2.4.2 类之间的关系 29
2.5 小结 30
习题 31
第3章 需求分析 32
3.1 软件的可行性研究 32
3.1.1 可行性研究的任务 32
3.1.2 可行性研究的步骤 33
3.2 系统开发计划 34
3.2.1 系统开发计划的内容 34
3.3 需求分析的任务 35
3.2.2 系统开发计划复审 35
3.4 需求分析的方法 37
3.4.1 面向数据流的分析方法的思路 37
3.4.2 结构化分析方法的过程 37
3.5 数据流图 38
3.5.1 数据流图中的符号 38
3.5.2 设计数据流图的步骤 39
3.5.3 案例分析 40
3.5.4 数据流元素的命名 42
3.5.5 绘制数据流图应注意的问题 42
3.5.6 数据流图的用途 43
3.6 数据词典 44
3.6.1 数据词典的应用范围 44
3.6.2 数据词典的定义 44
3.6.3 数据词典的用途 46
3.6.4 数据词典的实现 46
3.7.1 回溯分析方法 47
3.7 需求分析过程 47
3.7.2 用户复查 48
3.7.3 细化数据流图 48
3.7.4 修正开发计划 48
3.7.5 书写文档 49
3.7.6 审查和复审 49
3.8 需求分析的其他工具 49
3.8.1 E-R模型 49
3.8.2 层次方框图 50
3.8.3 IPO图 51
3.8.4 Warnier图 51
3.9 软件需求的验证 51
3.9.1 需求规格说明 51
3.9.2 验证软件需求正确性的原则 52
3.10 实例——商场管理信息系统需求分析 53
3.9.3 验证软件需求的方法 53
3.11 小结 54
习题 55
第4章 系统体系结构设计 56
4.1 系统设计的核心内容 56
4.2 软件体系结构的概念 57
4.2.1 软件体系结构的兴起 57
4.2.2 软件体系结构的定义 58
4.3.1 软件体系结构的风格概述 59
4.3 软件体系结构的风格 59
4.3.2 两层客户机/服务器结构 60
4.3.3 三层客户机/服务器结构 62
4.4 软件体系结构设计 64
4.4.1 软件体系结构设计原则 64
4.4.2 体系结构的选择 66
4.4.3 技术选型 67
4.4.4 体系结构设计步骤 67
4.4.5 三层客户机/服务器结构的应用 68
4.5 模块设计 71
4.5.1 模块与模块化 71
4.5.2 模块设计原则 72
4.5.3 模块设计步骤 72
4.6 小结 73
习题 73
第5章 用户界面设计 74
5.1 什么是好的用户界面 74
5.2 用户界面的风格分析 75
5.3 学生成绩管理系统用户界面设计 75
5.3.1 “学生成绩管理”菜单设计 75
5.3.2 “增加学生成绩”窗口设计 78
5.4 用户界面设计原则 80
5.5 用户界面设计步骤 87
5.6 用户界面设计的评价 89
5.7 小结 89
习题 90
第6章 数据库设计 91
6.1 数据库设计的基本概念 91
6.1.1 数据库设计引论 91
6.1.2 数据库设计过程 92
6.2 数据库概念设计 93
6.2.1 E-R数据模型 94
6.2.2 E-R图 96
6.2.3 扩充E-R数据模型 97
6.2.4 局部概念结构设计 97
6.2.5 总体概念结构设计 98
6.3 逻辑结构设计 98
6.3.1 E-R图到关系模型的转换 99
6.3.2 逻辑模式的规范化、调整和实现 101
6.4 物理结构设计 101
6.5 商场管理信息系统的数据库设计举例 101
6.5.1 概念设计 101
6.5.2 逻辑设计 103
6.6 小结 110
习题 111
第7章 类和对象的设计 112
7.1 建立类和对象的模型 112
7.1.1 什么是模型 112
7.1.2 建模的目的 113
7.1.3 面向对象分析设计模型的一般形式 113
7.1.4 面向对象分析设计的一般原则 116
7.2 寻找系统中的类 117
7.2.1 列出需求说明中的名词 118
7.2.2 筛选出候选类 120
7.3 确定类或对象之间的关系 122
7.3.1 找出关联关系 122
7.3.2 组成关系 126
7.3.3 继承关系 128
7.4 设计类的属性 130
7.5 设计类的职责 132
7.5.1 分析系统的交互行为 132
7.5.2 将交互行为分配到类或对象 134
7.6 小结 138
习题 138
第8章 详细设计 140
8.1 什么是详细设计 140
8.2 结构化设计 141
8.2.1 程序流程图 141
8.2.2 盒图 145
8.2.3 PAD 146
8.2.4 判定表 148
8.2.5 判定树 149
8.2.6 过程设计语言 150
8.3.1 Jackson图 151
8.3 Jackson设计方法 151
8.3.2 Jackson设计方法 152
8.3.3 使用Jackson方法开发实例 153
8.4 小结 156
习题 156
第9章 协作与子系统 158
9.1 协作 158
9.1.1 什么是协作 158
9.1.2 发现协作 159
9.1.3 将协作记录到类图中 160
9.1.4 检查协作 160
9.2 子系统 160
9.2.1 子系统的粒度 161
9.2.2 子系统的交互 161
9.2.3 子系统的组织方案 162
9.3 人机交互子系统 163
9.2.4 子系统的连接 163
9.3.1 设计用户界面的原则 164
9.3.2 设计人机交互子系统的策略 165
9.4 数据管理子系统 166
9.4.1 选择数据存储管理模式 166
9.4.2 设计数据管理子系统 167
9.5 问题域子系统 169
9.5.1 需求变化 169
9.5.2 重用已有的类 169
9.5.3 设计组合类 170
9.6 任务管理子系统 170
9.6.1 分析并发性 170
9.6.2 划分、设计任务管理子系统 170
9.7 小结 172
习题 172
10.1 程序设计风格 173
10.1.1 代码的结构 173
第10章 编码 173
10.1.2 数据说明和语句构造 174
10.1.3 结构化程序设计 174
10.2 研制界面 175
10.2.1 前台销售子系统 175
10.2.2 财务管理子系统 176
10.2.3 业务部门子系统 178
10.2.4 库房管理子系统 179
10.2.5 人事管理子系统 181
10.3 代码分析与实现 183
10.3.1 前台销售子系统 183
10.3.2 业务管理子系统 186
10.3.3 人事管理子系统 187
10.3.4 库房管理和财务管理 189
习题 190
10.4 小结 190
第11章 测试与维护 191
11.1 软件测试的步骤 191
11.2 白盒测试和黑盒测试 192
11.3 模块测试 193
11.4 集成测试 194
11.4.1 渐进式测试 194
11.4.2 不同测试策略的比较 196
11.5 验收测试 197
11.6 测试方案设计 198
11.6.1 逻辑覆盖法 198
11.6.2 边界值分析法 201
11.6.3 等价划分法 201
11.6.4 错误推测法 204
11.7 调试方法与技术 204
11.7.1 调试方法 204
11.8 测试工具 206
11.7.2 调试技术 206
11.9 软件系统维护 207
11.9.1 软件系统维护的基本概念 208
11.9.2 软件系统维护的方式 209
11.9.3 软件系统维护的过程 210
11.9.4 软件系统可维护性度量 212
11.10 小结 214
习题 215
第12章 管理技术 216
12.1 项目管理 216
12.1.1 什么是项目 216
12.1.2 什么是项目管理 217
12.1.3 项目管理的各个阶段 217
12.1.4 软件项目管理的任务、目标 219
12.2 人员组织 219
12.2.2 人员素质 220
12.2.1 项目参与者 220
12.2.3 软件项目组的结构 223
12.2.4 高效的项目开发组 223
12.3 成本估算 224
12.3.1 估算策略 224
12.3.2 常用的成本估算模式 225
12.4 进度计划 228
12.4.1 软件开发项目的并行性 228
12.4.2 阶段工作量的分配 229
12.4.3 项目开发的进度安排图 230
12.5 质量管理 231
12.5.1 软件质量 232
12.5.2 质量保证 234
12.6 小结 235
习题 236
附录A 课程设计题目 237
附录B 面向对象设计的常用符号 238
参考文献 241