第1章 软件工程的基本概念 2
1.1 软件与软件危机 3
1.1.1 软件 3
1.1.2 软件危机 5
1.2 软件工程 6
1.3 软件生命周期 7
1.4 软件过程模型 8
1.4.1 瀑布模型 9
1.4.2 演化模型 10
1.4.3 螺旋模型 10
1.4.4 喷泉模型 11
1.5 小结 12
课外习题 12
第2章 结构化分析与设计 14
2.1 问题定义、可行性研究和项目开发计划 15
2.1.1 问题定义 15
2.1.2 可行性研究 16
2.1.3 项目开发计划 19
2.2 软件需求分析 22
2.2.1 需求分析概述 22
2.2.2 数据流图 27
2.2.3 数据字典 31
2.2.4 需求分析的方法和步骤 34
2.2.5 软件需求说明书 36
2.2.6 结构化分析方法的特点 38
2.3 软件体系结构设计 38
2.3.1 体系结构定义 39
2.3.2 数据设计 39
2.3.3 体系结构风格 41
2.4 概要设计和详细设计 44
2.4.1 概要设计 44
2.4.2 详细设计 59
2.4.3 软件设计规格说明 68
2.5 用户界面设计 70
2.5.1 用户界面应具备的特性 70
2.5.2 用户界面设计的规则 71
2.5.3 用户界面设计模型与过程 72
2.5.4 任务分析 74
2.5.5 界面设计活动 75
2.5.6 实现工具 76
2.6 小结 76
课外习题 77
第3章 原型化开发方法 79
3.1 原型化开发方法的基本原理 80
3.1.1 原型的类型 80
3.1.2 原型使用策略 80
3.1.3 原型化方法的优点 81
3.2 原型化开发模型和开发过程 81
3.3 小结 84
课外习题 84
第4章 面向对象分析与设计 86
4.1 面向对象的基本概念和特点 87
4.1.1 面向对象方法的基本概念 87
4.1.2 面向对象方法的要素 92
4.2 面向对象分析与设计 93
4.2.1 面向对象的分析 94
4.2.2 面向对象的设计 97
4.3 面向对象建模方法 100
4.3.1 标识类及对象 101
4.3.2 标识对象的属性和关联关系 102
4.3.3 标识对象的行为 105
4.3.4 识别对象所属的类和确定结构 107
4.3.5 定义主题 109
4.3.6 动态模型 110
4.3.7 功能模型 113
4.3.8 3个模型之间的关系 114
4.4 软件复用 114
4.4.1 软件复用的概念 114
4.4.2 软件复用的效果 115
4.4.3 软件复用技术 115
4.4.4 面向对象方法与软件复用的关系 116
4.5 小结 118
课外习题 119
第5章 统一建模语言UML基础 121
5.1 UML概述 122
5.1.1 UML的发展历史 122
5.1.2 UML的主要特点 123
5.1.3 UML的应用领域 124
5.2 UML的表示方法 124
5.2.1 UML建模框架 124
5.2.2 UML模型的基本概念 125
5.2.3 UML中的视图 128
5.2.4 UML建模机制 129
5.2.5 使用UML的基本准则 131
5.3 用例和用例图 131
5.3.1 用例模型 131
5.3.2 用例图 132
5.3.3 执行者 133
5.3.4 确定用例 134
5.3.5 用例之间的关系 136
5.4 Rational Rose简介 137
5.5 小结 138
课外习题 138
第6章 软件测试 140
6.1 软件测试的基本概念 141
6.1.1 软件测试的任务 141
6.1.2 软件错误分类 142
6.1.3 软件测试的基本原则 143
6.2 软件测试方法 144
6.2.1 动态测试 144
6.2.2 静态测试 145
6.2.3 正确性证明 146
6.2.4 软件评审 146
6.3 测试用例设计 146
6.3.1 白盒法 147
6.3.2 黑盒法 150
6.3.3 实用测试策略 154
6.4 软件测试过程 154
6.4.1 单元测试 155
6.4.2 集成测试 157
6.4.3 确认测试 158
6.4.4 系统测试 159
6.4.5 软件测试过程模型 160
6.5 小结 161
课外习题 161
第7章 软件维护 163
7.1 软件维护的基本概念 164
7.1.1 软件维护的定义 164
7.1.2 软件维护的类型 164
7.1.3 软件维护的特点 165
7.2 软件维护活动和实施 166
7.2.1 维护机构 166
7.2.2 维护申请报告 166
7.2.3 维护的工作流程 167
7.2.4 维护记录 168
7.2.5 程序修改的步骤 168
7.3 软件可维护性 170
7.3.1 影响可维护性的因素 170
7.3.2 软件可维护性度量 171
7.4 软件维护的副作用 172
7.5 小结 173
课外习题 173
第8章 软件工程环境与工具 175
8.1 软件开发工具 175
8.2 CASE技术 178
8.3 软件开发环境 179
8.4 小结 181
课外习题 181
第9章 软件质量保证与软件质量度量 183
9.1 软件质量概念 184
9.1.1 软件质量的定义 184
9.1.2 软件质量要素 184
9.1.3 影响软件质量的因素 185
9.2 软件质量保证(SQA) 187
9.2.1 软件质量保证的定义 187
9.2.2 软件质量保证主要任务 187
9.3 软件质量度量与评价 189
9.3.1 软件质量的度量 189
9.3.2 软件质量的评价 191
9.4 软件技术评审 194
9.4.1 正式的技术复审 194
9.4.2 复审会议的组织 196
9.4.3 复审报告和记录保存 197
9.4.4 软件缺陷对成本的影响 197
9.5 软件可靠性 197
9.5.1 软件可靠性的定义 197
9.5.2 软件可靠性评价内容 198
9.5.3 软件可靠性的主要指标 199
9.6 小结 200
课外习题 200
第10章 软件管理 203
10.1 软件管理职能 203
10.1.1 软件管理的功能 204
10.1.2 软件项目管理任务 204
10.2 软件项目的组织与计划 205
10.2.1 软件项目的组织结构 205
10.2.2 软件项目的人员配备 207
10.2.3 指导、检验和教育 208
10.2.4 软件项目计划内容 209
10.3 风险分析 209
10.3.1 风险识别 210
10.3.2 风险预测 211
10.3.3 风险的驾驭和监控 211
10.4 项目进度与跟踪 211
10.4.1 制定开发进度计划 211
10.4.2 各阶段工作量的分配 214
10.4.3 成本及进度估算 215
10.4.4 里程碑 215
10.5 软件配置管理 216
10.5.1 软件配置项 216
10.5.2 基线 217
10.5.3 软件配置管理过程 218
10.6 CMM与CMMI 218
10.6.1 能力成熟度模型的结构 219
10.6.2 关键过程域 220
10.6.3 CMM的应用 221
10.6.4 CMMI简介 222
10.7 软件工程标准化与软件文档 223
10.7.1 软件标准化的概念 223
10.7.2 软件工程标准化的作用 224
10.7.3 软件工程国家标准 224
10.7.4 软件文档 225
10.7.5 文档的使用 226
10.8 小结 227
课外习题 228
参考文献 229