第1章 软件工程简介 2
1.1软件、软件危机和软件工程的定义 2
1.1.1软件及其特点 2
第1部分 概 述 2
1.1.2软件危机 3
1.1.3软件工程的定义 5
1.1.4软件工程的基本原理 7
1.2软件开发阶段 9
1.3软件生存周期模型 11
1.3.1 瀑布模型 11
1.3.2螺旋模型 12
1.3.3第四代技术模型 13
1.3.4原型模型 14
1.4.1 文档的作用和分类 16
1.4软件文档 16
1.4.2文档的管理和维护 44
本章小结 45
习题1 45
第2部分 软件生存周期 48
第2章 软件可行性分析 48
2.1可行性分析的任务 48
2.2可行性分析的步骤 49
2.3系统流程图 50
2.4成本/效益分析 52
2.4.1 成本估计 52
2.4.2费用估计 53
2.4.3效益度量方法 54
习题2 55
本章小结 55
文档示例 56
第3章 软件需求分析 62
3.1 软件需求分析的任务 62
3.2软件需求分析的过程 64
3.3需求分析的原则 67
3.4需求分析的方法 68
3.4.1 结构化分析方法 69
3.4.2其他分析方法 76
3.5 图形工具 76
本章小结 78
习题3 78
文档示例 79
4.1.1 软件设计和软件工程 85
4.1 软件设计基础 85
第4章 软件概要设计 85
4.1.2软件设计的原则 86
4.1.3 设计概念 86
4.1.4有效的模块设计 91
4.2概要设计的过程 94
4.3结构化设计方法 95
4.3.1 基本概念 96
4.3.2系统结构图的组成 97
4.3.3 变换分析 99
4.3.4事务分析 102
4.3.5设计优化 103
本章小结 104
习题4 104
文档示例 104
5.2详细设计的任务 113
5.1 结构化程序设计 113
第5章 软件详细设计 113
5.3详细设计的工具 114
5.4面向数据结构的设计方法 117
5.4.1Jackson方法 118
5.4.2 Warnier方法 123
本章小结 124
习题5 124
文档示例 124
第6章 程序编码 143
6.1程序设计语言 143
6.1.1程序设计语言分类 143
6.1.2程序设计语言的选择 145
6.2.1程序设计风格 146
6.2程序设计 146
6.2.2程序设计方法论 149
6.3程序效率 150
本章小结 151
习题6 152
第7章 软件测试 153
7.1 软件测试基础 153
7.1.1 软件测试的定义 153
7.1.2软件测试的目的 153
7.1.3软件测试的原则 154
7.1.4软件可测试性 155
7.2测试用例设计 155
7.2.1 黑盒测试 155
7.2.2 白盒测试 157
7.2.3基于软件开发的测试用例设计 160
7.3软件测试过程 161
7.4 自动软件测试工具 165
本章小结 166
习题7 166
第8章 软件维护 167
8.1软件维护基础 167
8.1.1 软件维护的定义 167
8.1.2软件维护代价 168
8.1.3影响软件维护工作量的因素 168
8.1.4维护的问题 169
8.2软件维护过程 169
8.3软件可维护性 172
8.4逆向工程 173
本章小结 175
习题8 175
9.1 软件开发工具概述 178
9.2软件开发工具的功能 178
第3部分 软件开发工具与设计工具 178
第9章 软件开发工具与环境 178
9.3软件开发工具的特性 180
9.4软件开发工具的分类 181
9.5软件开发环境 183
9.6软件开发过程 185
9.7常用开发环境 186
9.7.1 Windows 98发环境 186
9.7.2 Windows NT开发环境 192
9.7.3 Linux开发环境 196
9.7.4 UNIX程序开发环境 200
9.8软件开发环境与工具的研究、应用与发展 206
9.9 CASE技术 207
习题9 209
本章小结 209
第10章 PowerDesigner 210
10.1 PowerDesigner概述 210
10.1.1 PowerDesigner6.0的模块组成 210
10.1.2 PowerDesigner6.0的模型和对象特性 211
10.2 ProcessAnalyst模块 211
10.2.1概述 212
10.2.2 ProcessAnalyst应用实例 216
本章小结 232
习题10 232
第4部分 软件管理 234
第11章 软件项目管理介绍 234
11.1.1 项目定义与特点 235
11.1项目基础 235
11.1.2 项目的生命周期 236
11.2软件项目管理基础 237
11.2.1 软件项目管理参数 238
11.2.2软件项目管理的组织模式 239
11.2.3项目管理原则 241
本章小结 243
习题11 243
第12章 软件配置管理 244
12.1 软件配置管理基础 244
12.1.1 软件配置管理的历史 244
12.1.2软件配置管理的定义 245
12.1.3软件配置管理的重要性 246
12.1.4 软件配置管理术语 246
12.1.5软件配置管理工具的选择 247
12.2.1 角色分工 248
12.2软件配置管理过程 248
12.2.2管理过程 249
12.2.3关键活动 251
本章小结 255
习题12 255
第13章 软件质量管理 256
13.1软件质量的根源 256
13.1.1 软件不同于硬件或其他产品 256
13.1.2影响软件质量的因素 257
13.2软件质量基础 258
13.2.1 软件质量定义与评价特征 258
13.2.2软件质量框架模型 259
13.2.3软件质量评审指标 260
13.3软件质量管理 263
13.3.1 软件质量保证 263
13.3.3软件质量管理原则 265
13.3.2软件质量控制 265
13.3.4软件质量管理方针 266
本章小结 267
习题13 267
第14章 其他管理内容 268
14.1成本管理 268
14.1.1 软件项目估算 268
14.1.2成本管理 273
14.2风险管理 275
14.2.1 风险的定义 275
14.2.2风险的特点 276
14.2.3风险的分类 276
14.2.4风险管理 278
14.3人力资源管理 282
14.4.1 项目计划内容 285
14.4项目计划 285
14.4.3变动控制 286
14.4.2项目报告 286
14.5软件能力成熟度模型(CMM) 287
14.5.1 软件机构的成熟性 287
14.5.2 CMM的基础 288
14.5.3 CMM与ISO 292
14.5.4 CMM的应用 294
本章小结 296
习题14 296
第15章 项目管理工具 297
15.1 设计目标和选择准则 297
15.2.1 Microsoft Project的功能 299
15.2.2 Microsoft Project管理项目 299
15.2 Microsoft Project 工具 299
本章小结 303
习题15 303
第5部分 面向对象方法学 306
第16章 面向对象方法学 306
16.1 面向对象的概念 306
16.2面向对象方法的优点 308
16.3面向对象分析 309
16.3.1 OOA的主要原则 310
16.3.2 OOA的过程 311
16.4面向对象设计 314
16.4.1 面向对象设计的准则 314
16.4.2 面向对象设计的构成 317
16.4.3面向对象设计的注意事项 320
16.5.2程序设计语言 323
16.5.1 使用面向对象编程的原因 323
16.5面向对象编程 323
16.5.3程序设计风格 325
16.5.4编码调试 326
16.6面向对象测试 328
16.6.1 面向对象软件测试的难点 328
16.6.2OOA和OOD的模型测试 328
16.6.3 面向对象的测试策略 329
16.7面向对象维护 330
16.7.1 问题的提出 331
16.7.2面向对象的软件易于修改但不易理解 331
16.7.3面向对象软件的理解、分析 332
16.7.4面向对象软件的动态联编及多态性 333
16.7.5建议 333
本章小结 334
习题16 335
第17章 UML 336
17.1 UML的产生与发展 336
17.1.1 UML概念 336
17.1.2 UML的组成 336
17.1.3 UML的应用领域 341
17.2 UML的表示法 343
17.2.1 概述 343
17.2.2 用例图 347
17.2.3类图 349
17.3 UML软件开发过程概述 356
本章小结 358
习题17 359
附录A 用Word撰写文档规范 360
参考文献 364