模块 1 软件工程概述
1.1 软件工程的背景 2
1.1.1 软件的定义与特点 2
1.1.2 软件的发展历程与软件危机 3
1.1.3 软件工程 6
1.2 软件的生命周期及其开发模型 8
1.2.1 软件生命周期 8
1.2.2 软件开发模型 9
1.3 软件开发方法 15
1.4 软件工具与集成化开发环境 19
习题 1 21
模块 2 软件可行性分析与需求分析
2.1 项目可行性分析 24
2.1.1 可行性分析的意义和任务 24
2.1.2 可行性分析的要素 24
2.1.3 可行性分析的过程 26
2.1.4 系统流程图与工作流程 28
2.2 需求分析 29
2.2.1 需求分析的概念 29
2.2.2 需求分析的内容 31
2.2.3 需求分析的任务 31
- ii -
软件工程
2.2.4 需求分析的过程 32
2.2.5 需求分析模型 34
2.3 数据流分析技术 36
2.3.1 分析方法 36
2.3.2 数据流图 37
2.3.3 数据字典 41
习题 2 44
模块 3 软件设计
3.1 系统设计 47
3.1.1 系统设计的基本任务与基本原则 47
3.1.2 软件结构的设计优化原则 50
3.1.3 软件系统的设计技术 51
3.2 详细设计 60
3.2.1 详细设计的基本任务 60
3.2.2 详细设计的描述方法 61
3.2.3 Jackson 程序设计方法 65
3.3 数据库的结构设计 71
3.3.1 逻辑结构设计 71
3.3.2 物理结构设计 72
3.4 典型的软件体系结构 75
3.4.1 客户端 / 服务器结构 75
3.4.2 三层 C/S 结构 77
3.4.3 浏览器 / 服务器结构 79
习题 3 80
模块 4 软件编码与实现
4.1 程序设计语言 84
4.1.1 工程特性 84
4.1.2 技术特性 84
4.2 程序设计风格 85
4.2.1 源程序文档化 85
- iii -
目 录
4.2.2 数据说明 86
4.2.3 语句构造 87
4.2.4 输入和输出 87
4.2.5 程序效率 88
4.3 软件界面设计 88
4.4 结构化程序设计 90
习题 4 91
模块 5 面向对象方法
5.1 面向对象方法概述 93
5.2 面向对象分析 97
5.3 统一建模语言 108
5.3.1 UML 概述 108
5.3.2 常用 UML 建模工具简介 111
5.4 面向对象的设计与实现 113
5.4.1 面向对象的设计 113
5.4.2 面向对象的设计原则与启发规则 114
5.4.3 系统分解 115
5.4.4 类中的服务、关联设计 119
5.4.5 设计优化 120
5.4.6 面向对象的实现 121
习题 5 124
模块 6 软件测试
6.1 软件测试的目标与原则 127
6.1.1 软件测试的目标 127
6.1.2 软件测试的原则 127
6.2 软件测试的方法 128
6.2.1 软件测试方法分类 128
6.2.2 测试用例的设计 129
6.3 软件测试的步骤和策略 139
6.3.1 软件测试的步骤 139
- iv
-
软件工程
6.3.2 软件测试的策略 140
6.4 面向对象的软件测试 153
6.5 停止测试 158
6.6 自动化测试工具 159
6.6.1 白盒测试工具 159
6.6.2 黑盒测试工具 161
习题 6 161
模块
7 软件维护
7.1 软件维护的内容及特点 165
7.1.1 软件维护的内容 165
7.1.2 软件维护的特点 166
7.2 软件可维护性 167
7.2.1 可维护性的定义 167
7.2.2 可维护性的度量 168
7.2.3 提高可维护性的方法 168
7.3 维护任务的实施 171
7.3.1 建立维护机构 171
7.3.2 维护流程 172
7.3.3 保存维护记录 173
7.3.4 维护活动的评价 173
习题 7 174
模块
8 软件管理
8.1 软件质量与质量保证 177
8.1.1 概述 177
8.1.2 质量度量模型 179
8.1.3 软件复杂性 180
8.1.4 软件可靠性 182
8.1.5 软件评审 184
8.1.6 软件容错技术 186
8.2 软件工程管理的内容 189
- v -
目 录
8.3 软件项目计划 190
8.3.1 软件项目计划的概念 190
8.3.2 软件项目计划的内容 191
8.3.3 制定软件工程规范 192
8.3.4 软件开发成本估算 193
8.3.5 风险分析 194
8.3.6 软件项目进度安排 195
8.3.7 软件质量保证 197
8.4 软件能力成熟度模型 198
8.4.1 CMM 基本概念 198
8.4.2 能力成熟度模型集成 CMMI 201
习题 8 201
模块 9 软件工程标准与文档编制
9.1 软件工程标准 205
9.1.1 软件工程标准化概况 205
9.1.2 软件工程标准化的分类 205
9.2 软件工程国家标准 206
9.3 软件工程文档标准 208
9.3.1 软件生存周期与文档的编制 208
9.3.2 文档的作用与分类 208
9.3.3 文档编制中要考虑的因素 209
9.4 计算机软件开发文档编制 211
9.4.1 可行性分析(研究)报告编制参考 212
9.4.2 软件开发计划编制参考 214
9.4.3 需求规格说明编制参考 220
9.4.4 系统 / 子系统设计(结构设计)说明编制 226
9.4.5 软件用户手册编制参考 232
9.4.6 软件测试计划编制参考 235
9.4.7 软件测试报告编制指南 239
9.4.8 开发进度月报编制参考 241
9.4.9 项目开发总结报告编制参考 243
习题 9 245
附录 综合开发练习 246
一、基本情况 246
二、业务需求情况 246
三、需求分析情况 248
四、文档要求 250
习题参考答案 251
参考文献 254