目录 1
编写说明 1
前言 1
第1章 软件工程学概述 1
1.1 软件危机 1
1.1.1 软件开发史与软件危机 1
1.1.2 软件危机产生原因与消除方法 3
1.2 软件工程 4
1.2.1 软件工程的发展 4
1.2.2 软件工程的基本原理 5
1.3 软件开发过程 6
1.3.1 生命周期 6
1.3.2 软件开发模型 8
1.4 软件开发方法 11
1.4.1 结构化的软件开发方法 12
1.4.2 面向数据结构的软件开发方法 12
1.4.3 面向问题分析的软件开发方法 12
1.4.4 原型化软件开发方法 12
1.5 小结 13
习题 13
1.4.5 面向对象的软件开发方法 13
1.4.6 可视化的软件开发方法 13
第2章 可行性研究 15
2.1 可行性研究的任务 15
2.2 可行性研究的过程 17
2.3 系统流程图 18
2.3.1 系统流程图概述 18
2.3.2 符号 18
2.3.3 实例描述 19
2.4.1 数据流图概述 20
2.4.2 符号与命名 20
2.4 数据流图 20
2.4.3 实例描述 22
2.5 成本/效益与风险管理 23
2.5.1 成本估计 23
2.5.2 成本/效益分析方法 23
2.5.3 风险管理 24
2.5.4 优化风险管理的过程 27
2.6 小结 29
习题 29
第3章 需求分析 31
3.1 需求分析的目标和任务 31
3.1.1 需求分析的目标 31
3.1.2 需求分析的任务 31
3.2.1 问题识别 33
3.2 需求分析的过程 33
3.2.2 分析与综合 34
3.2.3 编制需求分析阶段的文档 34
3.2.4 需求分析的评审 34
3.3 需求获取技术 35
3.3.1 获取用户需求的方法 35
3.3.2 支持和监控需求获取的过程 39
3.4 分析建模与规格说明 42
3.4.1 分析建模 42
3.4.2 软件需求规格说明 51
3.6 小结 53
3.5 ER(实体—联系)图 53
习题 55
第4章 系统设计与实现 56
4.1 总体设计 56
4.1.1 总体设计的过程 56
4.1.2 软件设计的概念与原理 58
4.2 详细设计 63
4.2.1 结构化程序设计 64
4.2.2 详细设计工具 66
4.2.3 面向数据结构的设计方法 72
4.3.1 数据库和信息系统 78
4.3.2 数据库设计的特点 78
4.3 数据库设计 78
4.3.3 数据库设计方法简介 79
4.3.4 数据库设计步骤 80
4.4 界面设计 80
4.5 编码 81
4.5.1 程序设计语言 81
4.5.2 程序设计风格 89
4.5.3 程序复杂性度量 93
4.6 小结 96
习题 96
5.1.1 软件测试简介 97
5.1 软件测试概述 97
第5章 软件测试与维护 97
5.1.2 软件测试的目标 98
5.2 软件测试方法 98
5.2.1 软件测试方法简介 98
5.2.2 测试技术 101
5.3 测试步骤 103
5.4 测试用例设计 104
5.5 软件调试 115
5.5.1 调试(Debug,排错) 115
5.5.2 几种主要的调试方法 117
5.5.3 调试原则 118
5.6.1 概述 119
5.6 软件维护 119
5.6.2 软件维护活动 121
5.6.3 可维护性 123
5.6.4 软件维护的副作用 124
5.7 小结 125
习题 125
第6章 面向对象的设计 127
6.1 面向对象的概述 127
6.1.1 面向对象的概念 127
6.1.2 面向对象方法的概念 133
6.1.3 面向对象方法的特点 134
6.1.4 面向对象方法的简介 135
6.1.5 面向对象的建模 138
6.2 面向对象设计的原则 139
6.2.1 软件重用 140
6.2.2 系统设计 142
6.2.3 对象设计 144
6.3 面向对象的分析 145
6.3.1 面向对象分析的基本过程 146
6.3.2 需求分析 149
6.3.3 建立对象模型 150
6.3.4 建立动态模型 152
6.3.5 建立功能模型 155
6.4 面向对象开发中的设计模式 156
6.4.1 设计模式概述 156
6.3.6 基于三个模型的分析过程 156
6.4.2 常用设计模式 158
6.5 面向对象分析和设计的方法 160
6.5.1 面向对象分析的方法 160
6.5.2 面向对象设计的方法 170
6.6 小结 177
习题 178
第7章 面向对象的实现 180
7.1.1 面向对象语言的优点 181
7.1 面向对象编程 181
7.1.2 面向对象语言的技术特点 182
7.1.3 选择面向对象语言 185
7.1.4 流行的面向对象语言及其特点 186
7.2 程序风格 189
7.2.1 技巧与风格 189
7.2.2 可重用性设计 191
7.2.3 可扩充性设计 193
7.2.4 健壮性设计 194
7.3 面向对象测试 195
7.3.1 面向对象测试的特点 196
7.3.3 全生命周期面向对象测试 197
7.3.2 面向对象的测试策略 197
7.3.4 面向对象的测试步骤 204
7.4 小结 207
习题 208
第8章 软件管理技术 210
8.1 软件项目估算 210
8.1.1 参数方程 211
8.1.2 COCOMO模型 212
8.2 计划管理 213
8.2.1 Gantt图 213
8.2.2 工程网络 214
8.3 人员组织 215
8.3.1 Brook定律 215
8.3.2 软件开发组织的管理结构 216
8.3.3 程序设计小组的组织 217
8.4 质量保证 218
8.4.1 软件质量 218
8.4.2 质量保证简介 219
8.5 软件配置管理 223
8.6 小结 228
习题 228
9.1.1 分布式系统与组件技术 230
9.1 分布式系统与基于组件的开发 230
第9章 现代软件工程新技术 230
9.1.2 体系结构 233
9.1.3 基于Java的组件开发 237
9.1.4 基于.NET的组件开发 238
9.2 基于实例的软件开发方法 239
9.3 统一建模语言UML 242
9.4 小结 251
习题 252
附录 253
附录A 可行性研究报告(GB/T8567—1988) 253
附录B 软件需求规格说明书模板(GB/T8567—1988) 259
附录C 概要设计说明书(GB/T8567—1988) 261
附录D 开发进度月报(GB/T8567—1988) 263
附录E 软件需求说明书的编写提示(GB/T8567-1988) 265
附录F 项目开发计划(GB/T8567—1988) 267
附录G 数据库设计说明书(GB/T8567—1988) 269
附录H 数据要求说明书 271
(GB/T8567—1988) 271
附录I 测试计划(GB/T8567—1988) 273
附录J 测试分析报告(GB/T8567—1988) 275
附录K 项目开发总结报告(GB/T8567—1988) 277
附录L 用户手册(GB/T8567—1988) 279
参考文献 283