目录 1
序 1
前言 1
第1章 软件工程概论 1
本章学习目标 1
1.1 引言 1
1.2 软件与软件危机 3
1.2.1 软件的定义 3
1.2.2 软件的特点 3
1.2.3 软件的分类 4
1.2.4 软件危机 5
1.3 软件工程的概念 7
1.3.1 软件工程的产生及发展 7
1.3.2 软件工程的定义及目标 9
1.3.3 软件工程学的范畴 10
1.4 软件生存周期及软件开发模型 11
1.4.1 软件生存周期 11
1.4.2 软件生存周期模型 13
1.4.3 瀑布模型(Waterfall Model) 13
1.4.4 演化模型(Evolutional Model) 14
1.4.5 螺旋模型(Spiral Model) 15
1.4.6 智能模型(Intelligence Model) 16
本章小结 16
习题 17
第2章 可行性研究与需求分析 18
本章学习目标 18
2.1 可行性研究 18
2.1.1 问题的定义 18
2.1.2 可行性研究的任务 19
2.1.3 可行性研究的步骤及工具 20
2.1.4 制订项目计划 23
2.2 需求分析 24
2.2.1 需求分析的目标和任务 24
2.2.2 软件需求的获取 25
2.2.3 需求分析的过程 26
2.2.4 快速原型方法 28
2.3 结构化分析方法 30
2.3.1 结构化分析模型 31
2.3.2 数据流图与数据字典 33
2.3.3 Warnier图 38
2.4 需求分析评审 39
2.4.1 需求规格说明书 39
2.4.2 评审过程 40
2.5.1 画分层数据流图 42
2.5 需求分析实例 42
2.5.2 确定数据定义与加工策略 44
2.5.3 实例的需求分析评审 45
本章小结 46
习题 46
第3章 软件设计 47
本章学习目标 47
3.1 软件设计的任务 47
3.2 软件设计的基本概念 49
3.2.1 软件设计的概念 49
3.2.2 模块化与模块独立性 50
3.2.3 抽象与信息隐蔽 55
3.2.4 软件设计原则 57
3.3 结构化设计方法 58
3.3.1 系统结构图 58
3.3.2 变换分析 60
7.4.1 单元测试 1 62
3.3.3 事务分析 63
3.4 设计优化 65
3.5 详细设计 68
3.5.1 详细设计概述 68
3.5.2 程序流程图 68
3.5.3 N-S图(盒图) 71
3.5.4 PAD图 72
3.5.5 判定表与判定树 73
3.5.6 PDL 75
本章小结 76
习题 77
第4章 面向对象技术 78
本章学习目标 78
4.1 面向对象的概念 78
4.1.1 面向对象 78
4.1.2 对象 78
4.1.3 类 79
4.1.4 继承 79
4.1.5 消息 80
4.1.6 多态性 80
4.1.7 封装性 80
4.2 面向对象的开发过程 81
4.2.1 应用生存期 81
4.2.2 类生存期 82
4.3 面向对象分析 83
4.3.1 面向对象分析 84
4.3.2 论域分析 84
4.3.3 应用分析(Application Analysis) 86
4.3.4 对象模型技术(OMT,Object Model Technology) 86
4.4 面向对象的设计与实现 90
4.4.1 高层设计 90
4.4.2 类的设计 91
4.4.3 系统的实现 94
4.5 Coad与Yourdon方法 94
4.5.1 面向对象的分析 95
4.5.2 面向对象的设计 97
4.5.3 Booch的方法 98
4.6.1 软件复用的基本概念 102
4.6 软件复用技术 102
4.6.2 软件复用技术分类 103
4.6.3 论域工程 104
4.6.4 基于构件的软件开发 106
4.6.5 面向对象方法与软件复用 107
习题 108
本章小结 108
第5章 统一建模语言UML 109
本章学习目标 109
5.1 UML的基本概念 109
5.1.1 UML语言的产生 109
5.1.2 UML的定义 110
5.1.3 UML的目标 110
5.1.4 UML语言的应用 110
5.2 UML语言概述 111
5.2.1 视图 111
5.2.2 图 111
5.2.3 UML的模型元素及表示方法 112
5.2.4 UML的通用机制和扩展机制 115
5.2.5 UML的规则 116
5.3 静态建模 117
5.3.1 用例模型 117
5.3.2 类和对象模型 117
5.3.3 类之间的关系 119
5.4 动态建模 122
5.4.1 消息 122
5.4.2 状态图和时序图 123
5.4.3 协作图和活动图 124
5.5 物理架构建模 126
5.5.1 逻辑架构与物理架构 126
5.5.2 组件图与部署图 128
5.6 基于UML的统一建模过程——RUP 128
本章小结 129
习题 130
第6章 编码和编程语言 131
本章学习目标 131
6.1 编码的目的 131
6.2 编码的风格 132
6.2.1 结构化程序设计 132
6.2.2 编码风格 137
6.3 编码语言 144
6.3.1 编码语言的发展 144
6.3.2 常用的编码语言 145
6.3.3 编码语言的选择 147
本章小结 149
习题 149
第7章 软件测试 150
本章学习目标 150
7.1 软件测试的基本概念 150
7.1.1 软件测试的定义 150
7.1.2 软件测试的目的和原则 151
7.1.3 软件测试的对象及信息流 152
7.2 黑盒测试 153
7.2.1 等价类划分法 153
7.2.2 边界值分析 155
7.2.4 因果图法 156
7.2.5 功能图 156
7.3 白盒测试 156
7.2.3 错误推测法 156
7.3.1 逻辑覆盖 157
7.3.2 基本路径测试 162
7.4 软件测试的步骤及过程 162
7.4.2 集成测试 164
7.4.3 确认测试 165
7.4.4 系统测试 166
7.4.5 人工测试 167
7.4.6 软件测试过程 167
7.5 软件的调试及排错 168
7.5.1 错误的诊断及排除 168
7.5.2 常用的几种调试方法 169
7.6.1 面向对象的测试模型 170
7.6 面向对象的软件测试 170
7.6.2 面向对象软件的测试策略 171
7.6.3 面向对象软件测试用例设计 172
本章小结 174
习题 174
第8章 软件维护 175
本章学习目标 175
8.1 软件维护概述 175
8.1.1 软件维护的基本概念 175
8.1.2 软件维护的种类 175
8.1.3 影响软件维护工作量的因素 177
8.1.4 软件维护的策略 177
8.2 软件维护的过程 178
8.2.1 维护机构 178
8.2.3 软件维护工作流程 179
8.2.2 软件维护申请报告 179
8.2.4 软件维护记录及评价 180
8.2.5 修改程序的副作用 181
8.3 软件的可维护性 181
8.3.1 可维护性的定义 182
8.3.2 可维护性的度量 182
8.4 提高可维护性的途径 184
8.4.1 建立明确的软件质量目标和优先级 184
8.4.2 使用提高软件质量的技术和工具 184
8.4.3 进行明确的质量保证审查 185
8.4.4 选择可维护的程序设计语言 187
8.4.5 改进程序的文档 188
8.5 逆向工程和再工程 189
本章小结 189
习题 190
9.1 软件度量技术 191
9.1.1 代码行度量技术 191
本章学习目标 191
第9章 软件工程管理与质量保证 191
9.1.2 功能点度量 192
9.1.3 COCOMO模型 194
9.2 软件估算 195
9.2.1 资源估算 196
9.2.2 成本估算 197
9.2.3 人员的分配与组织 200
9.2.4 项目进度安排 203
9.3 质量保证 208
9.3.1 软件的质量属性 208
9.3.2 质量保证的活动内容 209
9.4 软件可靠性 211
9.5 软件配置管理 211
9.5.1 软件配置管理 212
9.5.2 版本控制 213
9.5.3 配置状态报告 214
9.5.4 配置审计 215
本章小结 216
习题 216
第10章 软件工程标准化 217
本章学习目标 217
10.1 软件工程标准化 217
10.1.1 软件工程标准化的概念 217
10.2.1 ISO 9000系列标准 218
10.2 软件质量认证 218
10.1.2 软件工程标准化的意义 218
10.2.2 软件质量认证 219
10.2.3 ISO 9000-3的要点 219
10.3 软件文档 220
10.3.1 软件文档的作用 220
10.3.2 软件文档的分类 221
10.3.3 文档的管理与维护 221
10.3.4 常用的软件文档 221
10.4 CMM模型 222
10.4.1 软件过程成熟度模型 223
10.4.2 关键过程域 224
10.4.3 成熟度提问单 224
本章小结 226
习题 226
第11章 软件工程环境 227
本章学习目标 227
11.1 什么是软件工程环境 227
11.1.1 软件开发环境的特点 228
11.1.2 软件开发环境的模型 230
11.2 CASE环境 230
11.2.1 CASE环境 230
11.2.2 CASE环境的组成与结构 230
本章小结 233
习题 233
12.1.1 嵌入式系统的定义 234
12.1 嵌入式系统的基础知识 234
本章学习目标 234
第12章 嵌入式系统软件技术 234
12.1.2 嵌入式系统的特点 235
12.1.3 嵌入式系统的应用 236
12.2 嵌入式系统开发过程 236
12.2.1 嵌入式软件的开发特点 237
12.2.2 嵌入式软件的开发过程 238
12.3 嵌入式软件的测试 241
12.3.1 嵌入式软件的测试方法 241
12.3.2 嵌入式软件的测试策略 242
12.3.3 嵌入式软件的测试工具 243
12.4 嵌入式系统的调试 244
12.4.1 嵌入式系统的调试方式 244
12.4.2 嵌入式系统的调试方法 245
本章小结 246
习题 246
参考文献 247