第1章 软件工程概述 1
1.1 软件 1
1.1.1 软件概念 1
1.1.2 软件特点 2
1.1.3 软件分类 4
1.2 软件工程 6
1.2.1 工程技术 7
1.2.2 工程管理 9
1.2.3 工程目标 11
1.3 主流方法学 11
1.3.1 结构化方法学 11
1.3.2 面向对象方法学 12
1.4 常用软件工具 14
1.4.1 Visio 14
1.4.2 PowerDesigner 15
1.4.3 Rational Rose 15
小结 17
习题 17
第2章 软件开发过程模式 19
2.1 软件生存周期 19
2.1.1 软件定义期 19
2.1.2 软件开发期 20
2.1.3 软件运行与维护期 21
2.2 瀑布模式 22
2.2.1 瀑布模式的特点 22
2.2.2 瀑布模式的作用 23
2.3 原型进化模式 24
2.3.1 软件原型 24
2.3.2 原型进化过程 24
2.4 增量模式 25
2.4.1 增量开发过程 26
2.4.2 增量模式的特点 27
2.4.3 增量模式的优越性 27
小结 28
习题 28
第3章 软件项目管理 29
3.1 开发团队 29
3.1.1 软件开发机构 29
3.1.2 软件项目组 30
3.1.3 项目组管理机制 31
3.2 项目计划 34
3.2.1 任务分配 34
3.2.2 项目进度计划 35
3.2.3 项目计划书 36
3.3 项目成本估算 37
3.3.1 程序代码行成本估算 37
3.3.2 软件功能点成本估算 39
3.3.3 软件过程成本估算 42
3.4 软件文档管理 43
3.4.1 文档概念 43
3.4.2 文档分类 44
3.4.3 软件文档与软件生存周期之间的关系 45
3.4.4 文档的使用者 45
3.4.5 文档编码 46
3.4.6 文档格式 47
3.5 软件配置管理 48
3.5.1 软件配置概念 48
3.5.2 软件配置规划 49
3.5.3 软件变更控制 50
3.5.4 软件版本控制 51
3.6 软件质量管理 52
3.6.1 质量标准 52
3.6.2 质量计划 52
3.6.3 质量保证 53
小结 54
习题 55
第4章 计算机系统工程 56
4.1 计算机体系结构 56
4.1.1 系统特征 56
4.1.2 体系结构 57
4.2 软件系统高层分析 60
4.2.1 分析内容 60
4.2.2 分析建模 60
4.3 项目可行性分析 63
4.3.1 分析目的 63
4.3.2 分析内容 64
4.3.3 分析报告 65
小结 66
习题 67
第5章 需求分析 68
5.1 分析任务与过程 68
5.1.1 需求问题 68
5.1.2 分析任务 69
5.1.3 任务承担者 70
5.1.4 分析过程 70
5.2 获取用户需求 72
5.2.1 识别用户 72
5.2.2 从调查中收集用户需求 74
5.2.3 建立需求规约 76
5.3 需求建模 77
5.3.1 业务树图 77
5.3.2 业务用例图 78
5.3.3 业务活动图 79
5.4 需求验证 80
5.4.1 通过原型进行需求验证 80
5.4.2 通过评审进行需求验证 81
5.5 需求规格说明书 81
小结 82
习题 83
第6章 结构化分析建模 84
6.1 分析建模特点 84
6.2 数据建模 85
6.2.1 实体及实体间关系 85
6.2.2 传统ER建模 86
6.2.3 基于工具的ER建模 86
6.2.4 建模举例 87
6.3 功能建模 89
6.3.1 数据流图(DFD) 90
6.3.2 数据流细化 91
6.3.3 建模举例 92
6.4 行为建模 94
6.4.1 状态转换图(STD) 94
6.4.2 建模举例 95
6.5 数据字典 96
6.5.1 数据定义 96
6.5.2 功能定义 99
6.5.3 行为定义 99
小结 100
习题 101
第7章 基于UML的面向对象分析建模 104
7.1 UML特点 104
7.1.1 建模语言 104
7.1.2 建模过程 105
7.1.3 建模管理 106
7.2 用例建模 107
7.2.1 图形元素 107
7.2.2 参与者关系 108
7.2.3 用例关系 108
7.2.4 建模举例 110
7.3 活动建模 112
7.3.1 图形元素 112
7.3.2 业务级活动建模 112
7.3.3 用例级活动建模 113
7.4 类分析建模 115
7.4.1 实体类 115
7.4.2 实体类关系 116
7.4.3 建模举例 118
小结 119
习题 120
第8章 概要设计 121
8.1 设计任务与过程 121
8.1.1 设计任务 121
8.1.2 设计过程 123
8.2 系统构架 124
8.2.1 软件系统支持环境 124
8.2.2 软件系统体系结构 124
8.3 数据结构 125
8.3.1 程序数据结构 125
8.3.2 数据库结构 126
8.4 程序结构 128
8.4.1 程序模块 128
8.4.2 模块独立性 129
8.4.3 结构化程序结构 134
8.4.4 面向对象程序结构 135
8.5 概要设计说明书 137
小结 138
习题 139
第9章 结构化设计建模 141
9.1 建模语言 141
9.1.1 程序结构图 141
9.1.2 HIPO图 143
9.1.3 框架伪码 144
9.2 基于数据流的结构映射 145
9.2.1 变换流映射 145
9.2.2 事务流映射 146
9.2.3 混合流映射 148
9.3 设计举例 150
小结 155
习题 155
第10章 基于UML的面向对象设计建模 157
10.1 面向对象设计方法 157
10.1.1 两种设计方法的比较 157
10.1.2 UML设计建模 159
10.2 逻辑结构设计 161
10.2.1 系统构架 161
10.2.2 类体元素 162
10.2.3 设计类图 166
10.3 动态过程设计 171
10.3.1 协作图 171
10.3.2 时序图 172
10.3.3 状态图 175
10.4 物理装配与部署 176
10.4.1 程序构件图 176
10.4.2 系统部署图 178
小结 180
习题 181
第11章 用户界面设计 183
11.1 界面设计特点 183
11.2 界面类型 184
11.2.1 窗体 184
11.2.2 Web页 186
11.3 界面功能 187
11.3.1 信息表示 187
11.3.2 系统交互 188
11.3.3 联机支持 188
11.4 界面行为导航 189
11.5 其他界面问题 191
小结 192
习题 192
第12章 算法设计与编码 193
12.1 结构化流程控制 193
12.2 算法设计工具 194
12.2.1 程序流程图 194
12.2.2 NS图 196
12.2.3 PAD图 197
12.2.4 PDL语言 198
12.3 Jackson设计方法 198
12.3.1 设计步骤 199
12.3.2 设计举例 200
12.4 程序编码 203
12.4.1 编程语言 203
12.4.2 编程规范 205
小结 207
习题 208
第13章 软件测试 210
13.1 测试目的、计划与方法 210
13.1.1 测试目的 210
13.1.2 测试计划 211
13.1.3 测试方法 211
13.2 测试任务 212
13.2.1 单元测试 212
13.2.2 集成测试 214
13.2.3 确认测试 216
13.3 测试用例 218
13.3.1 白盒测试用例设计 218
13.3.2 黑盒测试用例设计 220
13.4 面向对象程序测试 222
13.4.1 面向对象单元测试 222
13.4.2 面向对象集成测试 223
13.4.3 面向对象确认测试 223
13.5 程序调试 223
13.5.1 诊断方法 224
13.5.2 调试策略 224
小结 225
习题 226
第14章 软件维护 228
14.1 软件维护分类 228
14.2 软件可维护性 229
14.3 软件维护实施 230
14.3.1 维护机构 230
14.3.2 维护过程 231
14.4 逆向工程与再工程 233
小结 234
习题 234
参考文献 235