目录 2
第1部分 软件工程基础 2
第1章 软件工程概述 2
1.1 软件的概念与特点 2
1.2 软件的分类 3
1.3 软件的发展和软件危机 5
1.4 软件过程及其模型 8
1.4.1 软件过程 8
1.4.2 软件过程模型 12
1.4.3 软件工程的目标和原则 25
1.5 软件开发工具 30
1.5.1 软件开发的分析工具 30
1.5.2 CASE工具 31
1.6 未来之路 34
1.7 小结 38
参考文献 39
第2章 软件项目分析 41
2.1 概述 41
2.2.1 代码行技术 44
2.2 软件项目规模估算 44
2.2.2 任务估算技术 45
2.2.3 Delphi法 46
2.2.4 类比法 47
2.2.5 功能点估计法 48
2.2.6 PERT估计法 50
2.3 成本估计与效益分析 52
2.3.1 成本估计 52
2.3.2 效益分析 58
2.4 现有系统分析 59
2.5 可行性研究报告 66
2.5.1 可行性研究 66
2.5.2 可行性研究报告 69
2.6 立项评审 74
2.6.1 立项检查 74
2.6.2 立项评审报告 74
2.7 小结 75
参考文献 75
第3章 需求分析 77
3.1 概述 77
3.1.1 需求的类型 78
3.1.2 需求分析目标 80
3.1.3 需求分析过程 81
3.2 需求获取 85
3.2.1 需求获取方法 86
3.2.2 分析人员与用户的合作关系 87
3.3 需求分析 90
3.3.1 软件需求分析 90
3.3.2 需求和系统模型之间的关系 94
3.4.1 结构化分析 95
3.4 结构化分析方法 95
3.4.2 使用PDL描述需求 106
3.4.3 接口描述 107
3.5 软件原型实现 107
3.5.1 原型的特征 108
3.5.2 原型的选择 108
3.5.3 原型实现方法和工具 109
3.6 需求描述与评审 110
3.6.1 分析建模 110
3.6.2 软件需求规约 111
3.7.1 需求有效性验证 114
3.7 需求验证与评审 114
3.7.2 需求评审 116
3.8 需求管理 117
3.8.1 需求跟踪表 118
3.8.2 需求变更管理 120
3.9 小结 120
参考文献 121
4.1 软件设计过程 123
4.1.1 软件设计的重要性 123
第4章 软件设计 123
4.1.2 总体设计 124
4.1.3 详细设计 124
4.2 结构化软件设计方法 124
4.2.1 功能分解 125
4.2.2 抽象 125
4.2.3 信息隐藏 126
4.2.4 模块化 126
4.2.5 软件设计原则 127
4.2.7 软件结构设计 128
4.2.6 数据设计 128
4.3 模块化设计 129
4.3.1 功能独立性 129
4.3.2 内聚性 129
4.2.8 过程设计 129
4.3.3 耦合度 131
4.4 软件设计工具 133
4.4.1 总体设计工具 133
4.4.2 详细设计工具 135
4.5.1 Jackson结构图 140
4.5 Jackson设计方法 140
4.5.2 Jackson设计方法 141
4.5.3 结构冲突 141
4.6 设计规格说明与评审 142
4.6.1 设计规格说明 142
4.6.2 软件设计评审 143
4.7 小结 144
参考文献 144
5.1.1 程序设计语言特性 145
5.1 程序设计语言 145
第5章 程序编码 145
5.1.2 程序设计语言的分类 147
5.1.3 程序设计语言的选择 148
5.2 程序设计过程 149
5.2.1 结构化程序设计的概念与标准结构 150
5.2.2 结构化编程 152
5.3 程序设计风格 154
5.3.4 适当使用注释 155
5.3.3 坚持按一定的缩进规则书写和录入程序 155
5.3.2 选择有实际含义的标识符作为变量名 155
5.3.1 选用合适的常量标识符 155
5.4 程序效率 157
5.4.1 讨论效率的准则 157
5.4.2 算法对效率的影响 157
5.4.3 影响存储效率的因素 158
5.4.4 影响输入/输出的因素 158
5.5 程序编码优化 158
5.5.1 程序优化的内容与原则 158
5.5.2 程序结构优化的基本方法 160
5.5.3 程序代码优化的基本方法 161
参考文献 165
5.6 小结 165
第6章 软件测试 167
6.1 测试基础 167
6.1.1 软件测试 168
6.1.2 验证和确认 172
6.1.3 测试流程 173
6.2 测试方法 176
6.2.1 测试设计中的系统分析方法 176
6.1.4 测试的组织 176
6.2.2 测试技术的分类 177
6.2.3 逻辑覆盖 183
6.2.4 基本路径测试 184
6.2.5 控制结构测试 188
6.3 测试过程 190
6.3.1 单元测试 191
6.3.2 集成测试 193
6.3.3 确认测试 196
6.3.4 系统测试 197
6.4 调试方法 198
6.3.5 停止测试的时机 198
6.4.1 调试步骤 199
6.4.2 几种主要调试方法 199
6.4.3 调试原则 200
6.5 自动测试工具 201
6.5.1 常用自动测试工具 201
6.5.2 工具对测试工作的影响 202
6.5.3 测试工具的开发 203
6.6 软件可靠性 205
6.5.4 软件质量评测及其工具 205
6.6.1 基本概念 206
6.6.2 软件可靠性与硬件可靠性 209
6.6.3 软件可靠性参数和模型 211
6.6.4 软件可靠性的衡量方法 212
6.6.5 软件的可靠性测试过程 215
6.6.6 提高软件可靠性的方法和技术 216
6.7 小结 219
参考文献 220
7.1.1 软件维护的定义 223
第7章 软件维护 223
7.1 软件维护的概念 223
7.1.2 软件维护的工作量 224
7.1.3 软件维护的代价 224
7.1.4 影响维护的因素 225
7.2 软件维护活动 226
7.2.1 维护机构 226
7.2.2 编写报告 227
7.2.3 软件维护工作流程 227
7.2.4 维护评价 228
7.3 程序修改的副作用 229
7.3.1 修改代码的副作用 229
7.3.2 修改数据的副作用 229
7.3.3 文档的副作用 230
7.4 软件可维护性 230
7.4.1 软件可维护性的定义 230
7.4.2 可维护性的度量 231
7.4.3 评审 231
7.5.2 使用提高软件质量的技术和工具 232
7.5.1 明确软件质量管理目标 232
7.5 提高可维护性的方法 232
7.5.3 选择可维护的程序设计语言 233
7.5.4 改进程序的文档 233
7.5.5 进行明确的质量保证审查 234
7.6 软件再工程 234
7.6.1 再工程的基本概念 234
7.6.2 再工程的相关软件技术 236
7.6.3 再工程应用实例 237
7.7 小结 237
参考文献 238
第2部分 新技术、新方法 243
第8章 软件体系结构 243
8.1 体系结构的概念及描述 243
8.1.1 体系结构的概念 243
8.1.2 体系结构的描述 244
8.1.3 体系结构的生命周期模型 246
8.2 体系结构风格 248
8.2.1 管道过滤模式 248
8.2.2 面向对象模式 250
8.2.3 事件驱动模式 251
8.2.4 分层模式 256
8.2.5 知识库模式 258
8.2.6 解释器模式 260
8.2.7 过程控制环模式 260
8.3 基于体系结构的软件开发 266
8.3.1 体系结构驱动的软件分析设计 266
8.3.2 体系结构评估 270
8.4 多层软件体系结构实例 273
8.4.1 J2EE概述 273
8.4.2 JBoss应用服务器 275
8.5 小结 279
参考文献 279
第9章 面向对象方法 280
9.1 OO基本原理 280
9.1.1 OO基本概念 280
9.1.2 OO的特征 282
9.1.3 OO的要素 283
9.2 OO开发方法 284
9.2.1 Booch方法 284
9.2.2 Coad方法 288
9.2.3 OMT方法 292
9.3 UML技术 304
9.3.1 UML概述 304
9.3.2 UML表示法 305
9.3.3 UML建模实例 312
9.4 小结 317
参考文献 317
10.1 软件复用 318
10.1.1 软件复用概念 318
第10章 软件开发新方法 318
10.1.2 领域工程 321
10.1.3 基于构件的软件开发 323
10.1.4 软件生产线 326
10.2 净室软件工程 327
10.2.1 净室基础 328
10.2.2 净室小组的工作 329
10.2.3 净室技术 330
10.2.4 净室过程 333
10.2.5 净室与其他软件工程实践的关系 334
10.3 敏捷软件工程 336
10.3.1 敏捷方法学 337
10.3.2 敏捷建模 338
10.3.3 敏捷方法 341
10.4 小结 344
参考文献 345
11.1 软件工程标准概述 348
11.1.1 软件工程标准化的意义 348
第11章 软件工程标准 348
第3部分 软件工程管理标准、规范 348
11.1.2 软件工程标准的制订与推行 351
11.1.3 软件工程标准的层次 352
11.1.4 中国的软件标准化工作 353
11.2 软件能力成熟度模型简介 354
11.2.1 CMM概述 354
11.2.2 CMM级别 356
11.2.3 CMM与管理 359
11.2.4 软件过程评估 360
11.2.5 软件过程评估方法 360
11.2.6 从CMM到CMMI 361
11.3.1 ISO9000的管理思想 365
11.3 软件工程国际标准 365
11.3.2 ISO9000族标准构成 366
11.3.3 ISO9000-3实施 369
11.3.4 ISO/IEC15504简介 370
11.3.5 其他软件工程标准 373
11.4 小结 373
参考文献 374
12.1.1 PSP概述 375
第12章 软件工程规范 375
12.1 PSP方法 375
12.1.2 PSP的演化 376
12.1.3 PSP过程实施 377
12.2 TSP方法 379
12.2.1 TSP概述 379
12.2.2 TSP的结构 381
12.2.3 实现TSP的条件 382
12.2.4 TSP实施方法 382
12.3.1 RUP概述 384
12.3 RUP方法 384
12.3.2 RUP应用 385
12.3.3 RUP的核心工作流 386
12.3.4 RUP管理实施 388
12.4 小结 388
参考文献 389
13.1.1 管理目标 390
13.1.2 基本原则 390
13.1 软件管理的目标与基本原则 390
第13章 软件工程管理 390
13.1.3 专题原则 394
13.2 风险管理 396
13.2.1 风险的分类 396
13.2.2 风险的识别 397
13.2.3 风险评估 397
13.2.4 风险的驾驭和监控 398
13.3 组织管理 399
13.3.1 民主制程序员组 399
13.3.2 主程序员组 401
13.3.3 现代程序员组 402
13.3.4 软件项目组 404
13.3.5 IT组织管理 406
13.4 质量管理 408
13.4.1 软件质量概述 409
13.4.2 软件质量因素 411
13.4.3 质量认证 411
13.4.4 测试管理 423
13.5 配置管理 427
13.5.1 配置管理的意义 427
13.5.2 配置管理的实施过程 428
13.5.3 配置控制 431
13.5.4 配置管理计划 435
13.5.5 配置管理报表 439
13.6 软件项目管理 442
13.6.1 软件项目产品的特点 442
13.6.2 软件项目失控的原因 443
13.6.3 软件项目管理的内容 447
13.7 小结 448
参考文献 448
附录A 主要英文缩写 450