第1章 概述 1
1.1 软件的概念 1
1.1.1 软件技术的发展阶段 1
目录 1
1.1.2 软件的定义 2
1.1.3 软件的分类 2
1.2.1 什么是软件危机 5
1.2.2 产生软件危机的原因 5
1.2 软件危机 5
1.2.3 解决软件危机的途径 8
1.3 软件工程 8
1.3.1 软件工程的定义 8
1.3.2 软件工程的内容 8
1.3.3 软件工程的基本原理 9
1.3.4 软件工程项目的基本目标 11
1.3.5 软件工程的开发原则 11
1.4.1 软件过程 12
1.4 软件过程和软件生存期 12
1.4.2 软件生存周期 14
1.5 软件开发过程模型 14
1.5.1 瀑布模型 15
1.5.2 原型模型(快速原型模型) 16
1.5.3 螺旋模型 17
1.5.4 喷泉模型 18
1.5.5 构件组装模型 19
1.5.6 统一过程RUP模型 20
1.5.7 第四代技术 21
1.6 软件开发方法简述 21
1.6.1 结构化方法 22
1.6.2 面向数据结构的开发方法 22
1.6.3 面向对象的方法 23
1.6.4 可视化开发方法 24
1.7 软件工程的最新发展动向 24
小结 25
习题1 26
2.1 可行性研究 27
2.1.1 可行性研究的任务 27
第2章 软件计划 27
2.1.2 可行性研究的步骤 28
2.2 系统流程图 30
2.2.1 系统流程图的符号 30
2.2.2 系统流程图举例 31
2.2.3 分层 32
2.3.1 确定软件计划 33
2.3 制定软件计划 33
2.3.2 复审软件计划 37
2.4 成本/效益分析 38
2.4.1 成本估算技术 38
2.4.2 成本/效益分析的方法 42
小结 43
习题2 44
3.1.2 需求的层次 45
3.1.1 需求的概念 45
3.1 需求分析的概念和任务 45
第3章 需求分析 45
3.1.3 需求分析的任务 46
3.2 获取需求的方法 52
3.2.1 存在问题 52
3.2.2 常用方法 52
3.2.3 需求分析的原则 54
3.2.4 需求分析方法概述 54
3.3 结构化分析方法 56
3.3.1 结构化分析方法的基本思想 56
3.3.2 描述工具 56
3.3.3 数据流图 57
3.3.4 数据字典 63
3.3.5 加工逻辑说明 65
3.4 原型法 68
3.4.1 原型的概念 68
3.4.2 快速原型开发过程 70
习题3 72
小结 72
第4章 总体设计 74
4.1 总体设计的任务及目标 74
4.1.1 总体设计的任务 74
4.1.2 总体设计的目标 77
4.2 总体设计的概念和原理 78
4.2.1 软件结构和过程 78
4.2.2 模块化 80
4.3 设计准则 91
4.4 总体设计的常用方法及工具 95
4.4.1 面向数据流的设计方法 95
4.4.2 面向数据结构的分析设计方法 103
小结 111
习题4 112
第5章 详细设计 113
5.1 详细设计的任务 113
5.2 详细设计的原则 113
5.3.1 详细设计的方法 114
5.3 详细设计的方法和工具 114
5.3.2 详细设计的工具 115
5.3.3 详细设计工具的选择 122
5.4 详细设计规格说明与复审 122
5.4.1 详细设计说明 122
5.4.2 设计复审 123
5.5 界面设计 123
5.5.1 用户界面设计的一般原则和步骤 124
5.5.2 字符界面设计 126
5.5.3 菜单设计 127
5.5.4 对话框设计 128
5.5.5 多窗口界面设计 128
5.6 软件体系结构 129
5.6.1 软件体系结构的兴起 129
5.6.2 软件体系结构的概念 129
5.6.3 软件体系结构的现状及发展方向 131
5.6.4 软件体系结构的风格 133
5.6.5 软件体系结构的描述方法 140
5.7 几种新型的软件体系结构 142
5.7.1 正交软件体系结构 142
5.7.2 三层C/S软件体系结构 143
5.7.3 C/S与B/S混合软件体系结构 145
5.8 软件体系结构与操作系统 146
5.8.1 操作系统的体系结构 146
5.8.2 模块结构 146
5.8.3 分层结构 147
5.8.4 微内核结构 148
小结 149
习题5 150
第6章 编码 151
6.1 程序设计语言 151
6.1.1 程序设计语言的分类 151
6.1.2 选择程序设计语言的标准 152
6.2 程序设计风格 153
6.2.1 源程序文档化 153
6.2.3 语句结构 155
6.2.2 数据说明 155
6.2.4 输入和输出(I/O) 156
6.3 实例 157
小结 159
习题6 159
第7章 软件测试 160
7.1 软件测试的任务和目标 160
7.1.1 软件测试的目标 160
7.1.2 软件测试原则 160
7.2.1 白盒测试法 162
7.2 软件测试的方法 162
7.2.2 黑盒测试法 168
7.3 软件测试的步骤 170
7.3.1 单元测试 170
7.3.2 集成测试 171
7.3.3 确认测试 174
7.3.4 系统测试 175
7.4.1 调试过程 176
7.4 调试 176
7.4.2 调试方法 177
7.4.3 调试原则 179
7.5 软件测试工具 179
7.5.1 自动软件测试的优点 180
7.5.2 测试工具分类 180
7.5.3 测试脚本 181
7.5.4 自动测试的相关问题 182
7.5.5 常用软件测试工具及特点 182
7.6 实例 183
小结 186
习题7 187
第8章 软件维护 188
8.1 软件维护的概念 188
8.2 软件维护的特点 189
8.2.1 影响维护的问题很多 189
8.3.1 维护申请报告 190
8.3 软件维护的步骤 190
8.2.2 维护的代价高昂 190
8.3.2 维护工作实施 191
8.3.3 维护文档整理 193
8.3.4 维护活动评价 193
8.4 软件的可维护性 194
8.4.1 影响软件可维护性的因素 194
8.4.2 提高软件的可维护性方法 195
8.5.2 软件的逆向工程和再工程 197
8.5.1 预防性维护 197
8.5 逆向工程和再工程 197
8.6 实例 198
小结 199
习题8 200
第9章 面向对象方法学 201
9.1 面向对象方法学的引入 201
9.1.1 传统方法学的缺点 201
9.1.2 面向对象技术特点 201
9.1.3 面向对象方法学的优点 202
9.2 面向对象的基本概念和特性 203
9.2.1 面向对象的基本概念 203
9.2.2 面向对象的基本特性 206
9.3 面向对象分析 207
9.3.1 面向对象分析的目标和任务 207
9.3.2 面向对象分析的基本原则 207
9.3.3 面向对象分析的基本过程 208
9.3.4 面向对象建模 209
9.4 面向对象设计 210
9.4.1 面向对象设计的基本原则 210
9.4.2 面向对象设计的基本内容 213
9.5 几种流行的面向对象方法 213
9.5.1 Coad-Yourdon方法 213
9.5.2 对象模型技术 219
9.5.3 Booch的方法 220
9.6.2 UML视图 221
9.6.1 统一建模语言概述 221
9.6 统一建模语言 221
9.6.3 对象建模 222
9.6.4 动态建模 228
9.6.5 功能建模 230
9.7 面向对象实现 232
9.7.1 程序设计语言 232
9.7.2 程序设计风格 233
9.7.3 面向对象的程序测试 234
9.8.1 图书馆管理信息系统的需求说明 235
9.7.4 面向对象的软件维护 235
9.8 面向对象实例 235
9.8.2 UML建模 236
小结 243
习题9 244
第10章 软件工程标准化和软件文档 245
10.1 软件工程标准化的概念 245
10.1.1 什么是软件工程标准化 245
10.1.3 软件工程标准化的类型 246
10.1.2 软件工程标准化的意义 246
10.2 软件工程标准的制定与推行 248
10.2.1 软件工程标准的制定与推行 248
10.2.2 软件工程标准在开发机构中的推行 248
10.3 软件工程标准的层次和体系框架 249
10.3.1 软件工程标准的层次 249
10.3.2 软件工程标准的体系框架 251
10.3.3 中国的软件工程标准化工作 254
10.4.1 ISO 9000标准概述 255
10.4 ISO 9000国际标准简介 255
10.4.2 ISO 9000标准的特点 256
10.4.3 ISO 9000标准的构成 257
10.5 软件文档 259
10.5.1 软件文档的作用和分类 259
10.5.2 软件文档的编制要求 262
10.5.3 软件文档的管理和维护 264
小结 264
习题10 265
第11章 软件工程质量 266
11.1 软件质量特性 266
11.1.1 软件质量的定义 266
11.1.2 软件质量的特性 266
11.2 软件质量的度量和评价 271
11.2.1 软件质量的度量 271
11.2.2 软件质量的评价 272
11.3.2 软件质量保证的主要任务 273
11.3.1 什么是软件质量保证 273
11.3 软件质量保证 273
11.3.3 软件质量保证体系 274
11.4 软件质量管理体系 277
11.4.1 软件产品质量管理的特点 277
11.4.2 软件质量管理的指导思想 278
11.4.3 软件开发的质量管理体系 279
小结 280
习题11 280
12.1.2 软件项目管理的主要职能 281
12.1.1 软件项目管理的特点 281
第12章 软件工程项目管理 281
12.1 软件项目管理 281
12.2 常见管理技术及工具简介 282
12.2.1 软件项目管理的主要内容 282
12.2.2 常见工具简介 289
12.3 软件过程成熟度模型 291
12.3.1 CMM概述 291
12.3.2 CMM的成熟度级别 292
12.4 利用CMM对软件机构进行成熟度评估 295
12.5 项目管理认证体系IPMP与PMP 296
12.5.1 IPMP概况 296
12.5.2 PMP简介 297
12.5.3 我国目前的项目管理认证体系的发展状况 298
小结 298
习题12 299
13.1 项目论证和计划 300
13.1.1 系统调查 300
第13章 开发实例 300
13.1.2 新系统的总体功能需求和性能要求 304
13.1.3 完成文档 306
13.2 需求分析 306
13.2.1 数据流分析 306
13.2.2 数据字典 310
13.2.3 处理逻辑描述 319
13.3 系统设计 321
13.2.4 形成需求规格说明书并进行需求评审 321
13.3.1 系统总体概要设计 322
13.3.2 代码设计 327
13.3.3 数据库设计 327
13.3.4 界面设计 329
13.3.5 完成设计文档和设计评审 330
13.4 系统实现 331
小结 331
附录A 项目开发文档 332
参考文献 345