第1章 绪论 1
1.1 基础知识 1
1.1.1 软件工程的产生 1
1.1.2 软件工程的概念 2
1.1.3 软件开发环境 2
1.1.4 软件工具 2
1.1.5 计算机辅助软件工程 3
1.2 单元练习 3
1.2.1 填空题 3
1.2.2 选择题 5
1.2.3 简答题 10
1.3 参考答案 11
第2章 软件工程的基本理论 21
2.1 基础知识 21
2.1.1 软件工程过程 21
2.1.2 软件生存周期 21
2.1.3 软件生存周期模型 22
2.1.4 软件开发的增量模型 22
2.1.5 软件开发方法 24
2.2 单元练习 24
2.2.1 填空题 24
2.2.2 选择题 27
2.2.3 简答题 33
2.3 参考答案 33
第3章 可行性研究 45
3.1 基础知识 45
3.1.1 可行性研究的任务 45
3.1.2 可行性研究的具体步骤 46
3.1.3 可行性研究报告的主要内容 47
3.1.4 成本-效益分析 47
3.1.5 项目开发计划 47
3.2 单元练习 48
3.2.1 填空题 48
3.2.2 选择题 49
3.2.3 简答题 52
3.3 参考答案 52
第4章 软件需求分析与概念模型 59
4.1 基础知识 59
4.1.1 需求分析的概念 59
4.1.2 需求分析的基本原则 59
4.1.3 需求分析的基本任务 60
4.1.4 结构化分析方法 60
4.1.5 结构化分析的步骤 60
4.1.6 数据流图 61
4.1.7 数据字典 62
4.1.8 加工逻辑的描述 62
4.1.9 IDEF方法 63
4.2 单元练习 63
4.2.1 填空题 63
4.2.2 选择题 65
4.2.3 简答题 76
4.3 参考答案 76
第5章 总体设计 92
5.1 基础知识 92
5.1.1 软件总体设计的基本任务 92
5.1.2 软件设计的基本原理 93
5.1.3 软件结构图 94
5.1.4 软件结构设计优化准则 94
5.1.5 面向数据流的设计方法 95
5.1.6 IDEF0图的设计方法 96
5.1.7 表示软件结构的另一种图形工具——HIPO图 97
5.2 单元练习 97
5.2.1 填空题 97
5.2.2 选择题 101
5.2.3 简答题 108
5.3 参考答案 108
第6章 软件细节设计 122
6.1 基础知识 122
6.1.1 详细设计的基本任务 122
6.1.2 结构化程序设计方法的基本要点 122
6.1.3 详细设计描述 123
6.1.4 Jackson方法 124
6.2 单元练习 124
6.2.1 填空题 124
6.2.2 选择题 126
6.2.3 简答题 130
6.3 参考答案 130
第7章 面向对象方法学 137
7.1 基础知识 137
7.1.1 传统方法学的缺点 137
7.1.2 面向对象的基本概念 139
7.1.3 面向对象模型 139
7.2 单元练习 140
7.2.1 填空题 140
7.2.2 选择题 142
7.2.3 简答题 145
7.3 参考答案 145
第8章 模型 151
8.1 基础知识 151
8.1.1 统一建模语言 151
8.1.2 UML建模机制 153
8.1.3 UML的评价 154
8.1.4 对象模型 156
8.1.5 动态模型 157
8.1.6 功能模型 158
8.2 单元练习 159
8.2.1 填空题 159
8.2.2 选择题 160
8.2.3 简答题 164
8.3 参考答案 166
第9章 对象分析 172
9.1 基础知识 172
9.1.1 对象、主动对象以及它们的类 172
9.1.2 表示法 173
9.1.3 研究问题域 173
9.1.4 发现对象 173
9.1.5 对象分类,建立类图的对象层 174
9.1.6 对象的属性和服务 174
9.1.7 定义属性 175
9.1.8 定义服务 177
9.1.9 建立类图的特征层 178
9.2 单元练习 179
9.2.1 填空题 179
9.2.2 选择题 180
9.2.3 简答题 187
9.3 参考答案 188
第10章 关系分析 196
10.1 基础知识 196
10.1.1 整体-部分结构 196
10.1.2 一般-特殊结构 199
10.1.3 实例连接 202
10.1.4 消息连接 202
10.1.5 如何建立消息连接 205
10.2 单元测试 206
10.2.1 填空题 206
10.2.2 选择题 207
10.2.3 简答题 211
10.3 参考答案 212
第11章 面向对象设计原则 217
11.1 基础知识 217
11.1.1 类型一致性与闭合行为 217
11.1.2 封装与共生性 219
11.1.3 继承与多态性的危险性 220
11.1.4 状态空间和行为 223
11.2 单元练习 224
11.2.1 填空题 224
11.2.2 选择题 225
11.2.3 简答题 227
11.3 参考答案 228
第12章 对象设计 233
12.1 基础知识 233
12.1.1 组合三种模型 234
12.1.2 设计算法 235
12.1.3 设计优化 235
12.1.4 控制实现 235
12.1.5 继承的调整 236
12.1.6 关联设计 236
12.1.7 对象的表示 237
12.1.8 物理打包 237
12.1.9 设计决策文档 237
12.1.10 系统总体方案 238
12.1.11 软件体系结构 239
12.1.12 如何设计控制驱动部分 239
12.2 单元练习 241
12.2.1 填空题 241
12.2.2 选择题 242
12.2.3 简答题 249
12.3 参考答案 249
第13章 接口设计 252
13.1 基础知识 252
13.1.1 软件界面设计 252
13.1.2 设计人机交互子系统 253
13.1.3 图形用户界面设计 253
13.1.4 多媒体用户界面设计 254
13.1.5 数据管理系统及其选择 254
13.1.6 数据接口 255
13.1.7 对象存储方案和数据接口的设计策略 256
13.2 单元练习 257
13.2.1 填空题 257
13.2.2 选择题 259
13.2.3 简答题 262
13.3 参考答案 263
第14章 形式化方法 268
14.1 基础知识 268
14.1.1 形式化方法的概念 268
14.1.2 有限状态机 268
14.1.3 Petri网 269
14.1.4 净室方法学 269
14.2 单元练习 269
14.2.1 填空题 269
14.2.2 选择题 270
14.2.3 简答题 271
14.3 参考答案 271
第15章 软件实现 274
15.1 基础知识 274
15.1.1 程序设计语言特性 274
15.1.2 程序设计语言的选择 274
15.1.3 程序设计风格 276
15.2 单元练习 277
15.2.1 填空题 277
15.2.2 选择题 278
15.2.3 简答题 284
15.3 参考答案 284
第16章 软件质量 294
16.1 基础知识 294
16.1.1 软件质量的概念 294
16.1.2 质量度量模型 294
16.1.3 软件复杂性 294
16.1.4 软件可靠性 295
16.1.5 软件评审 295
16.1.6 软件容错技术 296
16.2 单元练习 296
16.2.1 填空题 296
16.2.2 选择题 298
16.2.3 简答题 307
16.3 参考答案 307
第17章 软件测试 317
17.1 基础知识 317
17.1.1 软件测试的目的 317
17.1.2 软件测试的原则 317
17.1.3 测试方法 318
17.1.4 黑盒测试法与白盒测试法 318
17.1.5 黑盒技术 318
17.1.6 白盒技术 319
17.1.7 软件测试过程 320
17.1.8 调试 320
17.2 单元练习 321
17.2.1 填空题 321
17.2.2 选择题 323
17.2.3 简答题 337
17.3 参考答案 337
第18章 软件维护 359
18.1 基础知识 359
18.1.1 软件维护的内容 359
18.1.2 软件维护的特点 360
18.1.3 软件维护的困难性 360
18.1.4 软件维护的费用 360
18.1.5 软件维护任务的实施 360
18.1.6 软件的可维护性 361
18.2 单元练习 361
18.2.1 填空题 361
18.2.2 选择题 363
18.2.3 简答题 370
18.3 参考答案 371
第19章 软件项目管理与计划 385
19.1 基础知识 385
19.1.1 软件项目管理的内容 385
19.1.2 软件项目计划 385
19.1.3 软件配置管理 385
19.1.4 软件工程标准化与软件文档 386
19.2 单元练习 386
19.2.1 填空题 386
19.2.2 选择题 388
19.2.3 简答题 397
19.3 参考答案 398
附录 综合测试试题及参考答案 410
综合测试试题(一) 410
综合测试试题(一)参考答案 413
综合测试试题(二) 416
综合测试试题(二)参考答案 418
综合测试试题(三) 421
综合测试试题(三)参考答案 424
综合测试试题(四) 426
综合测试试题(四)参考答案 429
综合测试试题(五) 432
综合测试试题(五)参考答案 435