第1章 概述 1
1.1软件 1
1.1.1软件 1
1.1.2软件危机 2
1.2软件工程的概念 4
1.2.1软件工程的定义 4
1.2.2软件工程的基本原理 4
1.2.3软件工程的目标 6
1.2.4软件工程的原则 7
1.3软件生存周期 7
1.3.1软件定义 8
1.3.2软件开发 9
1.3.3软件的使用与维护及退役 10
1.4软件开发模型 11
1.4.1瀑布模型 11
1.4.2原型模型 13
1.4.3螺旋模型 13
1.4.4喷泉模型 15
1.4.5变换模型 15
1.4.6基于四代技术的模型 16
1.4.7基于知识的智能模型 16
1.5软件开发方法、工具及环境 17
1.5.1软件开发方法 17
1.5.2软件开发工具与环境 17
1.5.3计算机辅助软件工程 17
习题 18
第2章 软件项目管理 19
2.1软件度量 19
2.1.1软件度量的基本概念 19
2.1.2面向规模的度量 21
2.1.3面向功能的度量 22
2.2软件项目估算 24
2.2.1软件项目的估算方法 24
2.2.2代码行和功能点的估算 26
2.2.3软件项目的经验估算模型 26
2.3软件质量度量 35
2.3.1软件质量的定义 36
2.3.2软件质量的度量模型 36
2.4软件复杂性度量 39
2.4.1软件复杂性的概念及度量原则 39
2.4.2 McCabe度量模型 40
2.4.3 Halstead度量模型 41
2.5软件开发过程的管理 42
2.5.1软件开发项目管理过程 42
2.5.2风险分析 43
2.5.3进度安排 46
2.5.4软件质量保证 49
2.5.5软件项目组织的建立与人员分工 51
2.5.6软件项目的跟踪与控制 53
2.5.7软件配置管理 53
2.5.8软件开发标准 59
习题 60
第3章 计算机系统工程 62
3.1计算机系统工程的概念 62
3.1.1硬件工程 63
3.1.2软件工程 63
3.1.3人机工程 65
3.1.4数据库工程 66
3.2可行性研究 67
3.2.1可行性研究的任务及步骤 67
3.2.2经济可行性研究 68
3.2.3技术可行性研究 69
3.2.4选择方案 70
3.3系统模型 71
3.4系统规格说明书与评审 73
3.4.1系统规格说明书 73
3.4.2系统规格说明书的评审 74
习题 74
第4章 需求分析 75
4.1需求分析的任务 75
4.2需求分析的一般性技术 76
4.2.1初步需求获取技术 76
4.2.2需求建模技术 78
4.2.3快速原型技术 78
4.2.4问题分解与抽象、多视点分析技术 79
4.3需求规格说明书与评审 79
4.3.1需求规格说明书的作用与内容 79
4.3.2需求评审 81
习题 81
第5章 面向数据流的分析方法 83
5.1数据流图与数据字典 83
5.1.1数据流图 83
5.1.2数据字典 86
5.2实体—关系图 88
5.2.1数据对象、属性与关系 88
5.2.2实体—关系图 90
5.3基于数据流的分析方法 91
5.3.1创建数据流模型 91
5.3.2过程规格说明 92
5.4基于CASE工具的需求分析 93
5.4.1核心思想 93
5.4.2基于CASE工具的需求分析 94
习题 95
第6章 面向数据的分析方法与形式化方法 96
6.1面向数据结构的系统开发方法 96
6.1.1 Warnier图 96
6.1.2 DSSD方法 97
6.2 Jackson系统开发方法 99
6.2.1 Jackson图 100
6.2.2改进的Jackson图 100
6.2.3标识实体与行为 100
6.2.4生成实体结构图 101
6.2.5创建软件系统模型 101
6.3形式化方法简介 103
6.3.1形式化方法的引入 103
6.3.2形式化方法的主要思想 104
6.3.3形式化方法的分类 105
6.3.4软件形式化开发方法 105
6.3.5形式化方法的优缺点 105
6.3.6应用形式化方法的准则 106
习题 106
第7章 软件设计基础 107
7.1软件设计基本概念 107
7.1.1软件设计过程 107
7.1.2抽象与逐步求精 108
7.1.3模块化与信息隐藏 110
7.1.4软件总体结构设计 115
7.1.5数据结构设计 116
7.1.6软件过程设计 116
7.2软件过程设计技术和工具 117
7.2.1结构化程序设计 117
7.2.2程序流程图 118
7.2.3盒图(N-S图) 118
7.2.4 PAD图 120
7.2.5判定表与判定树 121
7.2.6过程设计语言(PDL) 122
7.3设计规格说明书与评审 124
习题 126
第8章 面向数据流的设计方法 128
8.1 SD方法的设计过程及有关概念 128
8.2变换分析 129
8.3事务分析 135
8.4设计优化及原则 138
8.4.1启发式设计策略 138
8.4.2设计优化原则 140
习题 141
第9章 面向数据结构的设计方法 143
9.1面向数据结构设计的概念 143
9.2 Jackson系统开发方法 144
9.2.1 JSD技术 144
9.2.2 Jackson伪代码逻辑结构 144
9.2.3确定输入/输出数据的逻辑结构 145
9.2.4找出输入/输出数据结构中有对应关系的数据单元 145
9.2.5产生过程表示 146
9.2.6列出所有操作和条件并分配到Jackson结构图中 147
9.2.7根据Jackson结构图产生结构正文描述 148
9.3基于结构化数据的系统开发(DSSD)方法 149
9.3.1 DSSD设计步骤 149
9.3.2推导输出数据的逻辑结构 150
9.3.3推导处理过程的逻辑结构 151
9.3.4复杂过程逻辑的描述 152
习题 153
第10章 人机界面设计 155
10.1人的因素 155
10.1.1人类感知基础 155
10.1.2用户的技能 156
10.1.3任务与用户的特殊要求 156
10.2人机界面风格 156
10.3人机界面设计过程 157
10.3.1界面设计的有关模型 157
10.3.2任务分析与建模 158
10.3.3界面设计的一般问题 158
10.3.4实现工具 160
10.4人机界面实现的原则与标准 161
10.4.1一般可交互性 161
10.4.2信息显示 161
10.4.3数据输入 162
10.4.4人机界面标准 163
习题 163
第11章 程序设计语言与编码 164
11.1程序设计语言的特性及选择 164
11.1.1程序设计语言特性 164
11.1.2程序设计语言的选择 165
11.2程序设计风格 168
11.3程序设计效率 170
11.3.1代码效率 170
11.3.2内存效率 170
11.3.3 I/O效率 170
11.4冗余编程 171
习题 172
第12章 软件测试 173
12.1软件测试的基本知识 173
12.1.1软件测试的目标与原则 173
12.1.2软件测试的常用方法 174
12.1.3测试阶段的信息流 175
12.1.4软件测试的步骤 175
12.1.5软件测试中常见的错误类型 177
12.2软件测试技术 178
12.2.1白盒测试 178
12.2.2黑盒测试 183
12.3软件测试过程 186
12.3.1单元测试 186
12.3.2集成测试 188
12.3.3验收测试 191
12.3.4系统测试 192
12.4调试 193
12.4.1调试的概念 193
12.4.2调试策略 194
12.5软件可靠性度量 195
12.5.1软件可靠性的有关概念 195
12.5.2软件可靠性的估算 197
12.5.3软件可靠性估算举例 198
12.6测试工具 200
12.6.1自动测试工具 201
12.6.2调试工具 201
习题 201
第13章 软件维护 203
13.1软件维护概述 203
13.1.1软件维护的定义 203
13.1.2影响维护工作的因素 204
13.1.3维护成本 204
13.2软件可维护性 204
13.2.1软件可维护性的定义 205
13.2.2可维护性的度量 205
13.2.3可维护性复审 207
13.3软件维护的特点 207
13.3.1非结构化维护和结构化维护 207
13.3.2维护的困难性 207
13.3.3软件维护的费用 208
13.4软件维护的实施 209
13.4.1维护的组织 209
13.4.2维护的流程 210
13.4.3维护技术 211
13.4.4维护的副作用 211
习题 212
第14章 面向对象开发方法 213
14.1面向对象基本问题 213
14.1.1面向对象的基本概念 213
14.1.2面向对象的编程 215
14.1.3结构化与面向对象 219
14.2面向对象开发方法和过程 220
14.2.1面向对象方法 220
14.2.2 Rational统一过程(Rational Unifiied Process, RUP) 228
14.2.3面向对象的工具 230
14.2.4统一建模语言(UML) 230
14.3业务建模 236
14.3.1业务建模概述 236
14.3.2业务用例模型 237
14.3.3业务用例实现(business usecase realization) 241
14.4需求 244
14.4.1需求建模概述 244
14.4.2从业务模型到系统模型 244
14.4.3获取系统需求 245
14.4.4系统主角的提取 245
14.4.5需求的用例描述 246
14.4.6用例的精化 248
14.5分析 249
14.5.1分析建模概述 249
14.5.2发现分析类 250
14.5.3分析类之间的关系 254
14.5.4发现分析包 256
14.5.5用例实现 259
14.5.6活动图 262
14.6设计 262
14.6.1设计概述 262
14.6.2架构设计 264
14.6.3设计类 264
14.6.4精化分析类之间的关系 267
14.6.5接口、组件和子系统 270
14.6.6用例实现一设计 274
14.6.7状态图 275
14.7实现 277
14.7.1实现概述 277
14.7.2组件图(component diagram) 278
14.7.3从设计模型到代码的映射 278
14.8面向对象系统的测试 280
14.8.1面向对象测试概述 280
14.8.2面向对象软件的测试过程 281
14.9部署 282
14.9.1部署概述 282
14.9.2架构实现 283
14.9.3部署图 283
14.10 RUP生命周期 285
14.10.1迭代概述 286
14.10.2先启阶段 288
14.10.3精化阶段 289
14.10.4构建阶段 290
14.10.5产品化阶段 290
习题 291
参考文献 292