第1章 软件危机与软件工程 1
1.1 软件危机 2
1.1.1 软件危机的表现 2
1.1.2 软件危机的原因 4
1.1.3 解决软件危机的途径 5
1.2 软件工程概述 6
1.2.1 软件工程的定义 6
1.2.2 软件工程的范畴 6
1.2.3 软件开发的几个模型 8
1.2.4 软件生命周期 14
1.2.5 软件工程的目标 15
1.3 软件项目管理概述 16
1.3.1 软件项目管理的特点 16
1.3.2 软件项目管理的目标 18
1.3.3 影响软件项目成功的因素 19
1.4 软件项目失败与成功案例 23
1.4.1 软件项目失败的案例 23
1.4.2 软件项目成功的案例 24
本章小结 25
习题 25
第2章 计算机系统工程 27
2.1 基于计算机系统 28
2.2 计算机系统工程概述 29
2.2.1 人机工程 31
2.2.2 软件工程 32
2.2.3 硬件工程 35
2.2.4 数据库工程 37
术章小结 38
习题 38
第3章 软件需求分析管理 39
3.1 软件需求分析概述 40
3.1.1 软件需求分析的目标 40
3.1.2 软件需求分析的原则 40
3.1.3 软件需求分析的过程 41
3.2 结构化分析方法 42
3.2.1 结构化分析方法概述 42
3.2.2 数据流图 42
3.2.3 数据字典 44
3.2.4 处理说明 45
3.3 如何做好需求分析 46
3.3.1 需求分析的5个阶段 46
3.3.2 需求分析的重要性 48
3.4 图书管理系统需求分析 49
本章小结 54
习题 55
第4章 概要设计 56
4.1 概要设计的任务与过程 57
4.1.1 概要设计的任务 57
4.1.2 概要设计的过程 57
4.2 概要设计原则 58
4.2.1 模块化 58
4.2.2 自项向下,逐步求精 59
4.2.3 模块的低耦合性和高内聚性 59
4.2.4 其他原则 63
4.3 软件结构图 63
4.3.1 软件结构图符号 63
4.3.2 软件结构图绘制步骤 64
4.3.3 数据流图的类型 64
4.3.4 变换分析设计 65
4.3.5 事务分析设计 66
4.3.6 软件结构图绘制实例 67
4.4 案例:图书管理系统的概要设计 69
4.4.1 图书管理系统的结构设计 69
4.4.2 图书管理系统的接口设计 71
4.4.3 图书管理系统的数据结构设计 71
4.4.4 图书管理系统的出错处理设计 72
本章小结 72
习题 73
第5章 详细设计 76
5.1 详细设计的目标和原则 77
5.1.1 详细设计的任务和目标 77
5.1.2 详细设计的原则 78
5.2 详细设计的内容 79
5.2.1 代码设计原则 79
5.2.2 数据库设计 79
5.2.3 界面设计 81
5.2.4 网络结构设计 84
5.3 程序流程图设计 85
5.3.1 N-S图 85
5.3.2 PAD图 87
5.3.3 PDL(结构化语言) 89
5.4 案例分析 91
本章小结 95
习题 95
第6章 软件编程 97
6.1 结构化程序设计方法 98
6.1.1 结构化程序设计的原则 98
6.1.2 逐步求精设计法 99
6.1.3 结构化程序设计风格 101
6.2 程序设计算法与效率 103
6.2.1 程序设计算法 103
6.2.2 程序的运行效率 106
6.3 程序设计语言的特点与应用范围 107
6.3.1 程序设计语言的发展与分类 108
6.3.2 程序设计语言的选择 109
6.4 冗余程序设计与防错程序设计 110
6.4.1 冗余程序设计 110
6.4.2 防错程序设计 110
6.5 软件编码管理 111
6.5.1 软件编码过程的管理 112
6.5.2 编码后的管理 112
本章小结 113
习题 113
第7章 软件测试技术 114
7.1 软件测试的基本概念 115
7.1.1 软件测试的重要性 115
7.1.2 软件测试的定义 115
7.1.3 软件测试与软件调试的区别 116
7.1.4 软件测试的基本原则 116
7.1.5 软件测试的目标 117
7.1.6 软件测试过程 117
7.2 测试团队的组织 118
7.2.1 测试组织者 118
7.2.2 专业测试人员 119
7.2.3 测试配置管理人员 119
7.2.4 测试相关人员 120
7.3 软件测试及测试用例设计 121
7.3.1 软件测试的分类 121
7.3.2 白盒测试及其用例设计 122
7.3.3 黑盒测试及其用例设计 124
7.3.4 静态测试 127
7.3.5 动态测试 128
7.4 软件测试策略 128
7.5 软件测试工具 130
7.6 案例分析 132
7.6.1 图书管理系统黑盒测试用例 132
7.6.2 图书管理系统白盒测试用例 134
7.6.3 图书管理系统界面测试 138
7.6.4 安装/卸载测试 140
本章小结 141
习题 142
第8章 软件维护 144
8.1 软件维护的基本概念 145
8.1.1 软件维护类型 145
8.1.2 软件维护策略 146
8.1.3 软件维护的副作用 147
8.1.4 软件维护的困难 148
8.2 软件维护过程 148
8.2.1 维护组织 148
8.2.2 维护工作流程 149
8.3 软件可维护性 151
8.3.1 影响软件维护的软件属性 151
8.3.2 软件可维护性定量度量 152
8.4 软件再生工程技术 153
本章小结 154
习题 155
第9章 面向对象系统分析与设计 156
9.1 面向对象概述 157
9.1.1 传统开发方法存在的问题 157
9.1.2 面向对象的概念 158
9.1.3 面向对象的特征 160
9.2.1 面向对象开发方法 161
9.2.1 面向对象Coad方法 162
9.2.2 面向对象OMT方法 163
9.2.3 统一软件开发过程——RUP 164
9.3 UML建模 168
9.3.1 UML概论 168
9.3.2 用例图 169
9.3.3 类图 172
9.3.4 包图 175
9.3.5 时序图 176
9.3.6 协作图 177
9.3.7 状态图 178
9.3.8 活动图 180
9.3.9 组件图 181
9.3.10 部署图 181
9.4 UML建模工具——Rational Rose 182
9.4.1 Rational Rose简介 182
9.4.2 Rational Rose安装 182
9.4.3 Rational Rose使用介绍 187
9.5 案例:图书管理系统面向对象分析与设计 192
9.5.1 图书管理系统需求定义 192
9.5.2 图书管理系统分析 193
9.5.3 图书管理系统设计 199
9.5.4 图书管理系统实现 201
本章小结 202
习题 203
第10章 软件项目评审 206
10.1 项目评审概论 207
10.1.1 评审的目的 207
10.1.2 评审人员及其职责 208
10.1.3 评审的基本要求和评审依据 208
10.1.4 评审内容 209
10.1.5 评审方式 209
10.1.6 评审工作程序 211
10.2 各阶段的评审内容和要点 214
10.2.1 需求分析的评审 215
10.2.2 概要设计评审 220
10.2.3 详细设计评审 223
本章小结 224
习题 224
第11章 软件质量保证与软件配置管理 225
11.1 软件质量与SQA 226
11.1.1 SQA的目标 227
11.1.2 软件质量计划 227
11.2 软件配置管理 231
11.2.1 软件配置的重要性 231
11.2.2 软件配置项 233
11.2.3 基线管理 233
11.2.4 软件配置方法 234
11.3 图书管理系统质量保证和配置管理 235
11.3.1 图书管理系统质量保证计划示例 235
11.3.2 图书管理系统软件配置管理计划示例 239
本章小结 242
习题 242
第12章 CMM软件成熟度模型 244
12.1 CMM简介 245
12.2 CMM的5个等级 246
12.3 CMM的模型框架 249
12.4 CMM的关键过程域 250
12.4.1 等级2中的关键过程域 251
12.4.2 等级3中的关键过程域 253
12.4.3 等级4中的关键过程域 254
12.4.4 等级5中的关键过程域 255
12.5 CMM应用案例 255
12.5.1 公司概况 256
12.5.2 CMM实施之路 256
12.5.3 CMM实施总结 260
12.6 中国软件企业CMM的应用现状与趋势 260
本章小结 263
习题 263
第13章 软件工程标准与软件知识产权 265
13.1 软件工程标准 266
13.1.1 软件工程标准的必要性及内容 266
13.1.2 中国软件工程标准 267
13.1.3 国际软件工程标准 267
13.2 计算机软件知识产权 269
13.3 计算机软件知识产权案例分析 274
本章小结 276
习题 276
参考文献 277