第1章 概论 1
1.1软件的概念 1
1.1.1软件的定义以及特点 1
1.1.2软件技术的发展阶段 2
1.1.3软件的分类 3
1.2软件危机 6
1.2.1软件危机的定义 6
1.2.2软件危机产生的原因 7
1.2.3解决软件危机的途径 8
1.3软件工程 8
1.3.1软件工程的定义和研究对象 8
1.3.2软件工程的基本原理 9
1.3.3软件工程项的基本目标 10
1.3.4软件工程的基本原则 10
1.4软件生存周期 11
1.4.1软件生存周期的概念 11
1.4.2软件开发工具 12
1.5 软件开发过程模型 13
1.6 软件开发方法简述 20
1.7 软件工程的最新发展动向 21
1.8 经典例题讲解 22
小结 24
习题 24
第2章 结构化分析 26
2.1 可行性研究 26
2.1.1 问题定义 26
2.1.2 可行性研究的任务 26
2.1.3 可行性研究步骤 26
2.2 系统流程图 29
2.2.1 系统流程图的符号 30
2.2.2 系统流程图举例 31
2.2.3分层 32
2.3 制订软件计划 32
2.3.1 确定软件计划 32
2.3.2复审软件计划 34
2.4成本/效益分析 34
2.4.1成本估算技术 34
2.4.2成本/效益分析的方法 37
2.5需求分析的概念和任务 38
2.5.1需求分析的概念 38
2.5.2需求分析的层次 38
2.5.3需求分析的目标和任务 39
2.5.4需求分析的原则 40
2.5.5需求规格说明书 41
2.5.6评审 43
2.6获取需求的方法 45
2.6.1存在问题 45
2.6.2常用方法 45
2.6.3需求分析的过程 47
2.6.4结构化需求分析方法 47
2.7传统的软件建模 48
2.7.1软件建模 48
2.7.2数据模型的实体-联系图建立 48
2.7.3功能模型、行为模型的建立及数据字典 49
2.7.4构建数据流图实例 51
2.7.5快速原型法分析实例 53
2.8经典例题讲解 54
小结 61
习题 61
第3章 结构化设计 63
3.1总体设计的任务及过程 63
3.1.1总体设计的任务 63
3.1.2总体设计的过程 63
3.2总体设计的原理 65
3.2.1软件结构和过程 65
3.2.2模块设计 65
3.2.3结构设计 72
3.3设计准则 74
3.4总体设计的常用方法及工具 75
3.4.1而向数据流的设计方法 75
3.4.2总体设计中的工具 79
3.5模块结构设计 82
3.6数据存储设计 82
3.7模型-视图-控制器框架 83
3.7.1 MVC模式 83
3.7.2 MVC中的模型类、视图类和控制类 83
3.7.3 MVC的实现 84
3.8总体设计说明书编写规范 85
3.9详细设计阶段的任务 87
3.10结构化详细设计的原则 88
3.11结构化详细设计的方法和工具 88
3.11.1详细设计的方法 88
3.11.2详细设计的工具 89
3.11.3详细设计工具的选择 97
3.12详细设计规格说明与复审 98
3.12.1详细设计说明 98
3.12.2设计复审 99
3.13面向数据结构的结构化设计方法 99
3.14 Jackson程序设计方法 99
3.14.1 Jackson方法的基本思想 100
3.14.2 Jackson结构图 100
3.14.3 Jackson方法的设计技术 100
3.15 Waier程序设计方法 100
3.15.1 Warnier方法的基本思想 100
3.15.2 Warnier方法的设计技术 101
3.16基于组件的设计方法 101
3.17界面设计 102
3.17.1用户界面设计的一般原则和步骤 102
3.17.2字符界面设计 104
3.17.3菜单设计 105
3.17.4对话框设计 106
3.17.5多窗口界而设计 107
3.18软件体系结构 107
3.18.1软件体系结构的兴起 107
3.18.2软件体系结构的概念 108
3.18.3软件体系结构的现状及发展方向 109
3.18.4软件体系结构的描述方法 111
3.19软件体系结构与操作系统 113
3.19.1分层结构 113
3.19.2微内核结构 115
3.20经典例题讲解 117
小结 128
习题 128
第4章 编码及测试 131
4.1程序设计语言 131
4.1.1程序设计语言的发展及分类 131
4.1.2选择程序设计语言的标准 134
4.2程序设计风格 135
4.2.1源程序文档化 135
4.2.2数据说明 136
4.2.3表达式和语句结构 136
4.2.4输入和输出 137
4.3序效率 138
4.4编程安全 139
4.5结构化程序设计方法 141
4.6程序的复杂性及度量 143
4.6.1代码行度量法 143
4.6.2 McCabe度量法 143
4.6.3 lHalstead度量法 145
4.7软件测试基础 146
4.7.1软件测试的意义 146
4.7.2基本概念 146
4.7.3软件测试的目的、任务、原则和研究对象 148
4.7.4软件测试的发展历史及趋势 150
4.8软件测试的方法 150
4.8.1静态测试和动态测试 150
4.8.2黑盒测试和白盒测试 151
4.9软件测试的步骤 156
4.9.1单元测试 156
4.9.2集成测试 160
4.9.3确认测试 164
4.9.4系统测试 165
4.9.5验收测试 168
4.10软件测试 171
4.10.1软件测试角色 171
4.10.2软件测试的需求规格说明 172
4.10.3软件测试设计说明 177
4.11测试设计和管理 178
4.11.1错误曲线 178
4.11.2测试用例设计 179
4.12软件测试工具 187
4.12.1自动软件测试的优点 187
4.12.2测试工具分类 188
4.12.3自动测试的相关问题 190
4.13经典例题讲解 191
小结 194
习题 195
第5章 软件维护及软件再工程 198
5.1软件维护的概念 198
5.1.1软件维护的定义 198
5.1.2软件维护的分类 198
5.1.3软件维护成本 200
5.2软件维护的特点 201
5.3软件维护过程 202
5.4软件维护的步骤 205
5.5软件的可维护性 206
5.5.1影响软件可维护性的因素 206
5.5.2软件可维护性度量 208
5.5.3提高软件的可维护性方法 208
5.6逆向工程和再工程 210
5.6.1预防性维护 210
5.6.2软件的逆向工程和再工程 211
5.6.3软件再工程的过程 211
5.6.4软件再工程的方法 212
小结 213
习题 213
第6章 面向对象方法学 215
6.1面向对象方法学概述 215
6.1.1面向对象方法学的要点 215
6.1.2面向对象方法学的优点 216
6.2面向对象的概念 218
6.2.1对象 218
6.2.2其他概念 220
6.3面向对象建模 222
6.4对象模型 223
6.4.1类图的基本符号 223
6.4.2表示关系的符号 224
6.5功能模型 228
6.5.1用例图 228
6.5.2用例建模 229
6.6 3种模型之间的关系 230
6.7经典例题讲解 231
小结 232
习题 233
第7章 面向对象分析 234
7.1面向对象分析的基本过程 234
7.1.1概述 234
7.1.2三个子模型与五个层次 234
7.2需求陈述的书写 235
7.3建立对象模型 236
7.3.1确定类与对象 236
7.3.2确定关联 237
7.3.3划分主题 237
7.3.4确定属性 237
7.3.5识别继承关系 238
7.3.6反复修改 238
7.4建立动态模型 238
7.5建立功能模型 240
7.5.1画出基本系统模型图 240
7.5.2画出功能级数据流图 240
7.5.3描述处理框功能 240
7.6定义服务 240
7.7经典例题讲解 241
小结 244
习题 244
第8章 面向对象设计 246
8.1面向对象设计的准则 246
8.1.1模块化 246
8.1.2抽象化 246
8.1.3信息隐藏和封装 247
8.1.4对象的高内聚和弱耦合 247
8.1.5可扩充性 247
8.1.6可重用性 247
8.2启发规则 247
8.2.1设计结果应该清晰易懂 247
8.2.2一般——特殊结构的深度应适当 248
8.2.3设计简单的类 248
8.2.4使用简单的协议 248
8.2.5使川简单的服务 249
8.2.6把设计变动减至最小 249
8.3软件重用 249
8.3.1概述 249
8.3.2类构件 250
8.3.3软件垂用的效益 250
8.4系统分解 251
8.4.1子系统之间的两种交互方式 251
8.4.2组织系统的两种方案 252
8.4.3设计系统的拓扑结构 252
8.5设计问题域子系统 253
8.6.设计人-机交互子系统 254
8.6.1设计人-机交互界面的准则 254
8.6.2设计人-机交互子系统的策略 255
8.7设计任务管理子系统 256
8.7.1确定事件驱动型任务 256
8.7.2确定时钟驱动型任务 256
8.7.3确定优先任务和关键任务 256
8.7.4确定协调任务 257
8.7.5确定资源需求 257
8.8设计数据管理子系统 257
8.8.1选择数据存储管理模式 257
8.8.2设计数据管理子系统 258
8.9设计类中的服务 259
8.9.1确定类中应有的服务 259
8.9.2涉及实现服务的方法 260
8.10设计关联 260
8.10.1关联的遍历 260
8.10.2实现单向关联 260
8.10.3实现双向关联 261
8.10.4链属性的实现 262
8.11设计优化 262
8.11.1确定优先级 262
8.11.2提高效率的几项技术 262
8.11.3调整继承关系 263
8.12经典例题讲解 263
小结 265
习题 265
第9章 面向对象实现 266
9.1面向对象语言 266
9.1.1面向对象语言的优点 266
9.1.2而向对象语言的技术特点 266
9.1.3选择面向对象语言的原则 267
9.2面向对象程序设计风格 268
9.2.1提高可重用性 268
9.2.2提高可扩充性 269
9.2.3提高健壮性 269
9.3测试策略 270
9.3.1面向对象测试模型 270
9.3.2面向对象分析的测试 270
9.3.3面向对象设计的测试 270
9.3.4面向对象编程的测试 271
9.3.5面向对象的单元测试 271
9.3.6面向对象的集成测试 271
9.3.7面向对象的系统测试 272
9.4经典例题讲解 272
小结 274
习题 274
第10章 软件工程标准化和软件文档 276
10.1软件工程标准化的概念 276
10.1.1什么是软件工程标准化 276
10.1.2软件工程标准化的意义 276
10.1.3软件工程标准化的类型 277
10.2软件工程标准的制定与推行 278
10.3软件工程标准的层次和体系框架 279
10.3.1软件工程标准的层次 280
10.3.2软件工程过程中版本控制与变更控制处理过程 280
10.3.3中国的软件工程标准化工作 281
10.4 ISO 9000国际标准简介 282
10.5软件文档 285
10.5.1软件文档的作用和分类 285
10.5.2对软件文档编制的质量要求 287
10.5.3软件文档的管理和维护 288
10.6经典例题讲解 289
小结 290
习题 291
第11章 软件工程质量及项目管理 293
11.1软件质量特性 293
11.1.1软件质量的定义 293
11.2软件质量的特性 294
11.2.1软件质量的度量模型 295
11.2.2软件度量和软件质量的度量 296
11.2.3软件质量的度量模型 298
11.3软件质量保证 301
11.3.1什么是软件质量保证 301
11.3.2软件质量保证的主要任务 301
11.3.3软件质量保证策略 302
11.4技术评审 302
11.5软件质量管理体系 305
11.5.1软件产品质量管理的特点 305
11.5.2软件质量管理的指导思想 306
11.5.3软件质量管理体系 307
11.6软件项目管理 311
11.6.1软件项目管理的特点 312
11.6.2软件项目管理的主要职能 312
11.6.3软件项目管理的主要内容 312
11.7基于CASE技术的开发工具简介 313
11.8软件项目管理活动 314
11.8.1计划项目 314
11.8.2项目组织 315
11.8.3控制项目 317
11.8.4终结项目 317
11.9成本估算 317
11.10计划和组织 318
11.10.1项目计划的制定 318
11.10.2项目组人员管理原则 319
11.10.3人员组织与管理 320
11.11进度计划 321
11.11.1制定开发进度计划 321
11.11.2 Gantt图与时间管理 322
11.11.3 工程网络与关键路径 322
11.11.4项目进度跟踪与控制 325
11.12风险管理 326
11.12.1风险识别与分类 326
11.12.2风险评估与分析 329
11.12.3风险策划与管理 330
11.12.4风险规避与监控 332
11.13项目管理认证体系IPMP与PMP 332
11.13.1 IPMP概况 332
11.13.2 PMP简介 333
11.13.3我国目前的项目管理认证体系的发展状况 334
11.14经典例题讲解 334
小结 337
习题 338
第12章 开发实例 340
12.1项目论证和计划 340
12.1.1系统调查 340
12.1.2新系统的总体功能需求和性能要求 340
12.1.3系统开发的框架 341
12.2可行性分析 341
12.3需求分析 342
12.3.1数据流分析 342
12.3.2系统流程图 343
12.3.3数据字典 344
12.4总体设计 345
12.4.1功能模块图 345
12.4.2层次方框图 345
12.4.3 IPO图 346
12.4.4系统的功能结构图 346
12.4.5人事管理工作的工作流程模型图 346
12.4.6系统数据库关系说明图 347
12.5详细设计 347
12.6系统实现 348
12.7测试与维护 349
12.7.1测试结果 350
12.7.2系统维护 350
小结 353
习题 354
参考文献 356