第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.2.3 软件工程的目标 6
1.2.4 软件工程的原则 7
1.3 软件生存周期 8
1.3.1 软件定义 8
1.3.2 软件开发 9
1.3.3 软件的使用与维护及退役 11
1.4 软件开发模型 12
1.4.1 瀑布模型 12
1.4.2 原型模型 13
1.4.3 螺旋模型 14
1.4.4 喷泉模型 16
1.4.5 变换模型 16
1.4.6 基于四代技术的模型 17
1.4.7 基于知识的智能模型 17
1.5 软件开发方法、工具及环境 18
1.5.1 软件开发方法 18
1.5.2 软件开发工具与环境 18
1.5.3 计算机辅助软件工程 18
习题 19
第2章 软件项目管理 20
2.1 软件度量 20
2.1.1 软件度量的基本概念 20
2.1.2 面向规模的度量 22
2.1.3 面向功能的度量 23
2.2 件项目估算 25
2.2.1 软件项目的估算方法 25
2.2.2 代码行和功能点的估算 27
2.2.3 软件项目的经验估算模型 28
2.3 软件质量度量 33
2.3.1 软件质量的定义 33
2.3.2 软件质量的度量模型 33
2.4 软件复杂性度量 37
2.4.1 软件复杂性的概念及度量原则 37
2.4.2 McCabe度量模型 38
2.4.3 Halstead度量模型 39
2.5 软件可靠性度量 40
2.5.1 软件可靠性的有关概念 40
2.5.2 软件可靠性的估算 42
2.6 软件开发过程的管理 43
2.6.1 软件开发项目管理过程 44
2.6.2 风险分析 44
2.6.3 进度安排 48
2.6.4 软件质量保证 51
2.6.5 软件项目组织的建立与人员分工 53
2.6.6 软件项目的跟踪与控制 56
2.6.7 软件开发标准 56
习题 57
第3章 计算机系统工程 59
3.1 计算机系统工程的概念 59
3.1.1 硬件工程 60
3.1.2 软件工程 60
3.1.3 人机工程 63
3.1.4 数据库工程 63
3.2 行性研究 64
3.2.1 可行性研究的任务及步骤 64
3.2.2 经济可行性研究 65
3.2.3 技术可行性研究 67
3.2.4 选择方案 67
3.3 系统模型 68
3.4.1 系统规格说明 71
3.4.2 系统规格说明的评审 71
3.4 系统规格说明与评审 71
习题 72
第4章 需求分析 73
4.1 需求分析的任务 73
4.2 需求分析的一般性技术 74
4.2.1 初步需求获取技术 74
4.2.2 需求建模技术 76
4.2.3 快速原型技术 76
4.2.4 问题分解与抽象、多视点分析技术 77
4.3 需求规格说明与评审 78
4.3.1 需求规格说明书的作用与内容 78
4.3.2 需求评审 79
习题 80
第5章 面向数据流的分析方法 82
5.1 数据流图与数据字典 82
5.2.1 数据对象、属性与关系 85
5.2 实体-关系图 85
5.2.2 实体-关系图 86
5.3 基于数据流的分析方法 86
5.3.1 创建数据流模型 86
5.3.2 过程规格说明 88
5.4 基于数据流图的需求分析CASE工具 88
5.4.1 核心思想 89
5.4.2 基于CASE工具的需求分析 90
习题 91
第6章 面向数据的分析方法与形式化方法 92
6.1 面向数据结构的系统开发方法 92
6.1.1 Warnier图 92
6.1.2 DSSD方法 93
6.2 Jackson系统开发方法 96
6.2.1 标识实体与行为 96
6.2.2 生成实体结构图 96
6.2.3 创建软件系统模型 97
6.3.1 形式方法的引入 99
6.3 形式化方法简介 99
6.3.2 形式方法的主要思想 100
6.3.3 形式化方法的分类 101
6.3.4 软件形式开发方法 101
6.3.5 形式方法的优缺点 101
习题 102
7.1 面向对象的概念 103
7.1.1 对象(Object) 103
第7章 面向对象的需求分析 103
7.1.2 类(Class) 104
7.1.3 继承(Inheritance) 104
7.1.4 聚合(Aggregation) 104
7.1.5 消息(Message) 104
7.2 面向对象的分析方法 105
7.2.1 OMT方法 105
7.2.2 Booch方法 106
7.2.3 OOSE方法 106
7.2.4 Coad/Yourdon的OOA/OOD方法 107
7.3 面向对象的需求分析CASE工具 113
7.3.1 视 114
7.3.2 UML的图 114
7.3.3 银行系统的需求分析 115
7.4 Rational统一过程 117
7.4.1 时间轴 117
7.4.2 工作流 118
习题 119
7.4.3 微过程的划分 119
第8章 软件设计基础 120
8.1 软件设计基本概念 120
8.1.1 软件设计过程 120
8.1.2 抽象与逐步求精 121
8.1.3 模块化与信息隐藏 123
8.1.4 软件总体结构设计 126
8.1.5 数据结构设计 127
8.1.6 软件过程设计 127
8.2.1 结构化程序设计 128
8.2 软件过程设计技术和工具 128
8.2.2 图形表示法 129
8.2.3 判定表与判定树 130
8.2.4 过程设计语言(PDL) 132
8.3 设计规格说明与评审 133
习题 136
第9章 面向数据流的设计方法 138
9.1 SD方法的设计过程及有关概念 138
9.2 变换分析 139
9.3 事务分析 145
9.4 设计优化及原则 148
9.4.1 启发式设计策略 148
9.4.2 设计优化原则 150
习题 151
第10章 面向数据的设计方法 153
10.1 面向数据设计的概念 153
10.2.2 扩充功能性过程 154
10.2.1 JSD分析技术回顾 154
10.2 Jackson系统开发方法 154
10.2.3 施加时间约束 159
10.2.4 实现与JSP技术 159
10.2.5 产生过程表示 161
10.3 基于结构化数据的系统开发(DSSD)方法 162
10.3.1 DSSD设计步骤 162
10.3.2 推导输出数据的逻辑结构 163
10.3.3 推导处理过程的逻辑结构 164
10.3.4 复杂过程逻辑的描述 165
习题 166
第11章 面向对象的设计方法 168
11.1 面向对象设计的概念 168
11.1.1 对象、操作和消息 168
11.1.2 类、实例和继承 168
11.2 面向对象的设计方法 169
11.2.1 问题域部件(PDC)的设计 169
11.2.2 用户界面部件(HIC)的设计 172
11.2.3 任务管理部件(TMC)的设计 174
11.2.4 数据管理部件(DMC)的设计 175
习题 177
第12章 人机界面设计 178
12.1 人的因素 178
12.1.1 人类感知基础 178
12.1.2 用户的技能 179
12.1.3 任务与用户的特殊要求 179
12.2 人机界面风格 180
12.3 人机界面设计过程 180
12.3.1 界面设计的有关模型 181
12.3.2 任务分析与建模 181
12.3.3 界面设计的一般问题 182
12.3.4 实现工具 182
12.4.1 一般可交互性 183
12.4.2 信息显示 183
12.4 人机界面实现的原则与标准 183
12.4.3 数据输入 184
12.4.4 人机界面标准 184
习题 184
第13章 程序设计语言与编码 186
13.1 程序设计语言 186
13.1.1 程序设计语言的特点 186
13.1.2 程序设计语言的发展和分类 187
13.1.3 程序设计语言的选择标准 188
13.2 编程质量与程序设计语言 189
13.3 编程标准 190
13.4 编程风格 192
13.5 程序设计支持环境(PSE) 193
习题 195
第14章 软件测试 196
14.1 软件测试的基本知识 196
14.1.1 软件测试的目标与原则 196
14.1.2 软件测试的常用方法 197
14.1.3 测试阶段的信息流 198
14.1.4 软件测试的步骤 199
14.1.5 软件测试中常见的错误类型 200
14.2 软件测试技术 201
14.2.1 白盒测试 201
14.2.2 黑盒测试 207
14.3 软件测试过程 210
14.3.1 单元测试 210
14.3.2 集成测试 212
14.3.3 验收测试 215
14.3.4 系统测试 217
14.4 调试 218
14.4.1 调试的概念 218
14.4.2 调试策略 218
14.5.1 自动测试工具 219
14.5 测试工具 219
14.5.2 调试工具 220
习题 220
第15章 软件维护 221
15.1 软件维护的基本内容和分类 221
15.2 软件维护的特点 222
15.2.1 结构化维护与非结构化维护 222
15.2.2 维护成本 223
15.3.1 维护组织 224
15.2.3 维护可能存在的问题 224
15.3 软件维护过程 224
15.3.2 维护的报告与审核 225
15.3.3 维护过程的事件流 225
15.3.4 保存维护记录 227
15.3.5 评价维护活动 227
15.4 维护的副作用 228
15.5.1 影响可维护性的因素 229
15.5.2 可维护性的度量 229
15.5 软件的可维护性 229
15.5.3 可维护性复审 230
习题 230
第16章 软件配置管理 231
16.1 软件配置管理的概念 231
16.1.1 基线技术 231
16.1.2 软件配置项 232
16.2.1 标识配置对象 234
16.2 软件配置管理的任务及标准 234
16.2.2 版本控制 235
16.2.3 修改控制 235
16.2.4 配置审计 237
16.2.5 配置状况报告 237
16.2.6 软件配置管理标准 238
16.3 配置管理的CASE工具 238
习题 239
17.1.2 构造软部件库 240
17.1.1 软件重用的概念和过程 240
17.1 软件重用技术简介 240
第17章 软件开发新技术简介 240
17.1.3 软部件的重用 245
17.1.4 软件重用项目的管理 246
17.2 Internet与Java简介 246
17.2.1 Internet简介 246
17.2.2 Java技术简介 247
17.3 对象链接与嵌入技术简介 250
17.3.1 复合文档的概念 250
17.3.2 实现复合文档的方法—链接和嵌入 251
17.3.3 COM是实现链接和嵌入的技术基础 252
17.3.4 ActiveX 252
17.4 分布式计算技术简介 253
17.4.1 分布式技术概述 253
17.4.2 主流分布式计算技术 254
习题 255
参考文献 256