图书介绍
软件工程PDF|Epub|txt|kindle电子书版本网盘下载
- 鄂大伟主编 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302226802
- 出版时间:2010
- 标注页数:444页
- 文件大小:65MB
- 文件页数:465页
- 主题词:软件工程-高等学校-教材
PDF下载
下载说明
软件工程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1篇 软件工程与项目管理3
第1章 软件工程概述3
1.1 软件的定义与特点3
1.1.1 什么是软件3
1.1.2 软件的特点与本质4
1.1.3 “没有银弹”——复杂性是“软件危机”的本质原因6
1.2 软件工程的定义及研究的内容9
1.2.1 科学、工程与技术的界定9
1.2.2 软件工程的定义与原理10
1.2.3 软件工程的3个要素11
1.2.4 软件开发方法——对客观世界的认知观12
1.2.5 软件工程与相关科学的关系14
1.3 软件工程的教育与知识体系15
1.3.1 软件工程的教育体系15
1.3.2 CC2005的4个方向专业规范17
1.3.3 软件工程的知识体系——SWEBOK18
1.4 软件工程的标准20
1.4.1 软件工程标准化的意义20
1.4.2 软件工程的国际标准与体系21
1.4.3 国家标准22
1.5 计算机辅助软件工程23
1.6 软件工程人员的职业道德与行为准则24
本章小结25
思考与练习26
第2章 软件过程27
2.1 软件过程27
2.1.1 过程及其特征27
2.1.2 软件过程的公共框架28
2.2 软件过程模型29
2.2.1 理解软件过程模型29
2.2.2 瀑布模型29
2.2.3 演化软件过程模型30
2.2.4 快速原型开发方法33
2.2.5 统一软件过程34
2.2.6 核心工作流36
2.2.7 形式化方法模型37
2.2.8 软件复用——基于构件的开发方法37
2.2.9 第4代技术39
2.2.10 微软公司的软件过程模型39
2.3 软件过程改进41
2.3.1 软件能力成熟度模型——CMM与CMMI41
2.3.2 CMM/CMMI的应用及面临的问题44
2.3.3 个体软件过程45
2.3.4 团队软件过程46
2.3.5 CMM、TSP、PSP三者的关系47
本章小结47
思考与练习48
第3章 软件工程领域下的项目管理49
3.1 项目管理的历史实践49
3.1.1 远古的伟大工程实践49
3.1.2 沟通的故事——巴比伦塔的倒塌50
3.2 软件项目管理的范围与内容51
3.2.1 什么是项目管理51
3.2.2 软件项目管理的范围52
3.2.3 人员53
3.2.4 产品55
3.2.5 过程57
3.2.6 项目57
3.3 软件项目管理的活动——从这里开始58
3.3.1 软件项目管理的活动概述59
3.3.2 项目沟通与需求管理59
3.3.3 软件项目计划的制定61
3.3.4 项目范围与管理62
3.3.5 工作分解结构63
3.3.6 软件项目的组织65
3.4 项目进度管理66
3.4.1 项目里程碑67
3.4.2 人员与工作量分配68
3.4.3 项目进度管理的可视化工具69
3.4.4 项目管理软件及其功能70
本章小结72
思考与练习72
第4章 软件项目估算74
4.1 软件项目估算概述74
4.1.1 什么是估算74
4.1.2 软件项目估算的特点75
4.1.3 软件项目估算的复杂性分析75
4.1.4 软件项目估算的相关内容77
4.2 项目规模估算78
4.2.1 基于代码行的规模估算79
4.2.2 功能点估算80
4.2.3 基于计划评审技术的规模估算82
4.3 工作量估算83
4.3.1 用代码行与功能点估算工作量的例子84
4.3.2 基于数学模型的工作量估算84
4.3.3 COCOMO模型85
4.3.4 COCOMOⅡ模型87
4.3.5 Putnam模型90
4.4 软件成本估算91
4.4.1 软件项目成本的组成91
4.4.2 软件成本的估算方法92
4.4.3 估算技术的应用与评价95
4.5 项目进度估算98
4.5.1 三点估算方法98
4.5.2 项目进度获取值分析——项目计划与实际进展的定量比较99
4.6 软件工程经济学101
4.6.1 经济学与工程经济学101
4.6.2 软件工程经济学研究的基本问题101
4.6.3 资金的时间价值102
4.6.4 软件工程经济学中的成本效益评价技术106
本章小结108
思考与练习108
第5章 软件质量管理111
5.1 软件质量及其特性111
5.1.1 难以定义和度量的软件质量111
5.1.2 软件质量特性112
5.1.3 软件质量保证及其活动114
5.2 软件配置管理115
5.2.1 制定项目的配置计划116
5.2.2 软件配置项及其标识117
5.2.3 版本控制118
5.2.4 变更控制120
5.2.5 正式技术复审121
本章小结123
思考与练习124
第6章 软件风险管理125
6.1 软件项目的风险管理125
6.1.1 风险与项目风险125
6.1.2 软件项目风险与管理127
6.1.3 软件风险的定义129
6.1.4 软件风险的类型130
6.2 软件风险管理的体系框架131
6.2.1 常见风险管理过程框架131
6.2.2 软件风险管理的一般过程133
6.3 风险识别134
6.3.1 风险识别过程134
6.3.2 风险识别的方法与工具135
6.4 风险分析138
6.4.1 风险分析过程138
6.4.2 风险分析的技术与工具139
6.5 风险规划143
6.5.1 风险规划过程143
6.5.2 风险规划的工具与技术144
6.6 风险监控144
6.6.1 风险监控过程144
6.6.2 风险监控的技术与方法146
6.6.3 风险监控与管理计划——RMMM计划147
本章小结147
思考与练习148
第2篇 结构化开发方法153
第7章 面向过程的结构化分析153
7.1 系统工程153
7.1.1 系统论153
7.1.2 系统工程154
7.1.3 系统工程层次结构155
7.1.4 业务过程工程156
7.1.5 产品工程156
7.2 需求分析157
7.2.1 需求分析概述和特点158
7.2.2 软件需求分析的目标159
7.2.3 需求分析的过程159
7.2.4 需求获取技术161
7.3 结构化分析方法162
7.3.1 数据流图163
7.3.2 状态图178
7.3.3 实体-关系图(E-R图)178
本章小结180
思考与练习180
第8章 面向过程的结构化设计182
8.1 软件设计的基本概念和原理182
8.1.1 抽象182
8.1.2 信息隐蔽183
8.1.3 模块化设计183
8.1.4 模块独立184
8.1.5 耦合184
8.1.6 内聚185
8.1.7 结构图186
8.2 软件总体设计的任务和目标187
8.3 结构化软件设计188
8.3.1 基本概念188
8.3.2 变换分析191
8.3.3 事务分析194
8.4 过程设计197
8.4.1 程序流程图198
8.4.2 盒式(N-S)图199
8.4.3 PAD200
8.4.4 PDL201
8.4.5 判定表203
8.4.6 判定树203
8.5 Jackson设计方法204
本章小结208
思考与练习208
第9章 面向过程的结构化实现211
9.1 概述211
9.2 编码211
9.2.1 软件编码的基本概念211
9.2.2 程序设计语言的选择212
9.2.3 编码风格213
9.3 软件测试213
9.3.1 软件测试的概述213
9.3.2 软件测试方法215
9.3.3 软件测试步骤224
9.4 调试229
9.5 软件测试文档231
本章小结232
思考与练习232
第10章 软件的技术度量234
10.1 软件度量的基本概念234
10.1.1 测量、测度、度量、指标和估算234
10.1.2 软件度量的分类235
10.1.3 软件度量的目的235
10.1.4 有效软件度量的属性235
10.2 分析模型的度量236
10.2.1 基于功能点的度量236
10.2.2 bang度量237
10.2.3 规格说明质量的度量239
10.3 设计模型的度量239
10.3.1 体系结构设计度量239
10.3.2 构件级设计度量241
10.4 源代码度量244
10.5 对测试的度量246
10.6 对维护的度量246
10.7 软件质量的度量247
本章小结251
思考与练习252
第3篇 面向对象的开发方法257
第11章 面向对象概述257
11.1 面向对象的基本思想257
11.2 面向对象软件开发方法的优缺点259
11.3 面向对象的基本概念260
11.3.1 对象260
11.3.2 类261
11.3.3 属性和方法261
11.3.4 抽象、封装和信息隐藏261
11.3.5 继承262
11.3.6 多态263
11.3.7 关联264
11.3.8 协作264
11.3.9 聚合265
11.3.10 持久性265
11.4 统一建模语言:UML概述266
11.4.1 UML的发展历程266
11.4.2 UML的特点267
11.5 UML的视图268
11.5.1 用例图269
11.5.2 类图269
11.5.3 对象图270
11.5.4 顺序图271
11.5.5 协作图272
11.5.6 状态图272
11.5.7 包图273
11.5.8 部署图273
11.6 面向对象软件的开发过程274
11.7 UML建模工具275
11.7.1 商用建模工具275
11.7.2 开源UML建模工具276
本章小结276
思考与练习277
第12章 面向对象分析279
12.1 收集需求280
12.1.1 面向对象的软件需求概述280
12.1.2 系统范围281
12.1.3 参与者282
12.1.4 用例284
12.1.5 用例图285
12.1.6 用例规约285
12.1.7 使用包组织用例288
12.2 基于类的建模289
12.2.1 识别类289
12.2.2 CRC建模291
12.2.3 分析类的职责293
12.2.4 寻找协作者294
12.2.5 通过场景验证CRC模型294
12.2.6 CRC建模的优缺点296
12.3 类模型296
12.3.1 类、属性和方法297
12.3.2 类的层次结构297
12.3.3 关联297
12.3.4 聚合298
12.3.5 类图298
12.4 动态交互建模299
12.4.1 顺序图300
12.4.2 协作图302
12.4.3 活动图302
12.5 基于控制行为建模304
本章小结305
思考与练习306
第13章 面向对象设计309
13.1 划分分析模型310
13.2 系统逻辑架构312
13.2.1 经典3层架构312
13.2.2 多层架构313
13.3 类模型设计314
13.3.1 类的设计314
13.3.2 接口设计315
13.3.3 属性、方法建模316
13.3.4 对象之间可见性设计316
13.3.5 用例迭代实现317
13.3.6 重构318
13.4 类的设计原则319
13.4.1 开闭原则319
13.4.2 Liskov替换原则320
13.4.3 依赖倒置原则322
13.4.4 接口分离原则322
13.5 设计模式324
13.5.1 单件模式324
13.5.2 抽象工厂模式325
13.6 对象持久性建模327
13.6.1 映射对象328
13.6.2 继承关系映射328
13.6.3 关联和聚合映射330
13.6.4 持久性框架331
13.7 部署建模331
本章小结332
思考与练习333
第14章 面向对象测试335
14.1 全生命周期面向对象测试336
14.2 面向对象测试策略336
14.2.1 面向对象的单元测试337
14.2.2 面向对象的集成测试337
14.2.3 面向对象的确认测试337
14.3 基于场景的模型测试338
14.3.1 场景设计338
14.3.2 测试用例设计339
14.4 类测试340
14.4.1 类的代码检查340
14.4.2 覆盖和路径测试341
14.4.3 类的随机测试341
14.4.4 类的划分测试341
14.5 类间测试342
14.5.1 多个类测试342
14.5.2 从类的行为模型导出的测试343
本章小结343
思考与练习344
第15章 面向对象系统的技术度量345
15.1 OO度量的识别特征345
15.1.1 局部化346
15.1.2 封装346
15.1.3 信息隐蔽346
15.1.4 继承346
15.1.5 抽象346
15.2 分析、设计模型的度量347
15.3 OO项目的度量348
15.4 面向类的度量349
15.4.1 CK度量套件349
15.4.2 LK度量组352
15.4.3 MOOD度量套件353
15.5 面向操作的度量355
15.6 面向对象测试的度量356
本章小结356
思考与练习357
第4篇 软件工程高级专题363
第16章 敏捷过程开发363
16.1 敏捷的定义364
16.1.1 什么是敏捷364
16.1.2 什么是敏捷过程365
16.2 敏捷过程模型365
16.2.1 极限编程365
16.2.2 自适应软件开发367
16.2.3 动态系统开发方法369
16.2.4 Scrum370
16.2.5 Crystal372
16.2.6 特征驱动开发373
16.2.7 精益开发375
16.3 设计自己的敏捷方法378
本章小结378
思考与练习379
第17章 Web工程380
17.1 基于Web的系统及应用380
17.1.1 Web应用的发展380
17.1.2 Web应用的特点和分类383
17.1.3 Web应用的开发团队384
17.2 Web工程386
17.3 Web工程技术386
17.3.1 Web服务器技术387
17.3.2 Web开发技术388
17.3.3 Web辅助技术389
17.4 Web工程的层次391
17.4.1 质量391
17.4.2 过程392
17.4.3 方法393
17.4.4 工具395
17.5 Web工程过程395
17.5.1 分析396
17.5.2 设计398
17.5.3 测试403
17.5.4 发布、维护408
本章小结408
思考与练习408
第18章 形式化方法409
18.1 形式化方法简介409
18.1.1 形式化方法的引入409
18.1.2 形式化方法的分类410
18.1.3 形式化规格方法的主要思想411
18.2 Petri网411
18.2.1 基本概念411
18.2.2 Petri网的性质415
18.2.3 Petri网的分析417
18.2.4 实例:ATM系统423
18.3 Z语言424
18.3.1 基本概念424
18.3.2 模式运算426
18.3.3 操作模式430
18.3.4 实例:ATM系统431
18.4 形式化方法的优缺点432
18.5 形式化方法的发展433
本章小结433
思考与练习434
附录A 软件工程和知识可视化表征436