图书介绍
软件工程 第2版PDF|Epub|txt|kindle电子书版本网盘下载
- 李代平等编著 著
- 出版社: 北京:清华大学出版社
- ISBN:7302157316
- 出版时间:2008
- 标注页数:524页
- 文件大小:32MB
- 文件页数:547页
- 主题词:软件工程-高等学校-教材
PDF下载
下载说明
软件工程 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 基础理论3
第1章 绪论3
1.1 软件概述3
1.1.1 什么是计算机软件4
1.1.2 软件的特点4
1.1.3 软件的分类5
1.1.4 软件的发展7
1.1.5 软件危机8
1.2 软件工程10
1.2.1 软件工程与方法学10
1.2.2 软件工程的基本原理12
1.2.3 软件工程的目标13
1.2.4 软件工程的内容15
1.2.5 软件工程原则16
1.2.6 软件工程面临的问题17
小结18
综合练习一18
第2章 基本理论20
2.1 软件工程过程20
2.2 软件生命周期21
2.2.1 软件分析时期22
2.2.2 软件设计时期23
2.2.3 编码与测试时期24
2.2.4 运行与维护时期24
2.3 软件生命周期模型25
2.3.1 软件生命周期模型的概念25
2.3.2 瀑布模型25
2.3.3 原型模型27
2.3.4 增量模型28
2.3.5 螺旋模型30
2.3.6 喷泉模型31
2.3.7 基于知识的模型32
2.3.8 变换模型33
2.4 软件开发方法33
2.4.1 结构化方法33
2.4.2 Jackson方法34
2.4.3 维也纳开发方法34
2.4.4 面向对象的开发方法35
2.5 软件工具与开发35
2.5.1 软件工具箱36
2.5.2 软件开发环境36
2.5.3 计算机辅助软件工程36
小结37
综合练习二37
第3章 可行性研究39
3.1 可行性研究任务与步骤39
3.1.1 研究任务40
3.1.2 研究步骤43
3.2 系统分析44
3.2.1 系统分析员44
3.2.2 面临的问题域45
3.2.3 通信技术46
3.3 分析原理47
3.3.1 信息域48
3.3.2 建立模型49
3.3.3 分解49
3.4 系统模型与模拟50
3.4.1 系统模型50
3.4.2 系统建模和模拟51
3.5 成本-效益分析52
3.6 可行性研究的文档54
3.7 项目开发计划55
3.7.1 方案选择55
3.7.2 制定项目开发计划56
小结57
综合练习三57
第二部分 结构化方法第4章 软件需求分析61
4.1 需求分析61
4.1.1 需求分析的特点61
4.1.2 需求分析的原则62
4.1.3 需求分析的任务62
4.1.4 需求分析的方法64
4.2 结构化分析65
4.2.1 自顶向下逐层分解66
4.2.2 结构化分析步骤67
4.3 系统流程图67
4.4 数据流图69
4.4.1 基本图形符号70
4.4.2 画数据流图71
4.4.3 结构化分析方法的应用74
4.5 数据字典78
4.5.1 内容及格式78
4.5.2 数据字典的实现81
4.6 关系数据理论81
4.6.1 数据依赖81
4.6.2 关系模式的操作异常82
4.6.3 范式83
4.6.4 EAR方法87
小结90
综合练习四90
第5章 总体设计91
5.1 软件设计的重要性91
5.2 设计过程92
5.3 软件总体设计93
5.4 设计基本原理95
5.4.1 抽象95
5.4.2 细化95
5.4.3 模块化96
5.4.4 软件体系结构97
5.4.5 程序结构98
5.4.6 数据结构99
5.4.7 软件过程100
5.5 体系结构设计101
5.5.1 软件结构图102
5.5.2 模块的大小103
5.5.3 扇出和扇入与深度和宽度104
5.5.4 模块的耦合105
5.5.5 模块的内聚107
5.5.6 结构设计的一般准则109
5.5.7 模块的作用域与控制域110
5.6 结构化设计111
5.6.1 数据流的类型111
5.6.2 过程步骤113
5.6.3 变换分析设计113
5.6.4 事务分析设计115
5.6.5 混合流设计116
5.6.6 结构化设计方法应用示例118
5.6.7 设计的后期处理119
5.7 软件结构优化119
5.7.1 软件结构设计优化准则120
5.7.2 软件结构的HIPO图121
小结121
综合练习五122
第6章 软件详细设计123
6.1 细节设计的任务与方法123
6.1.1 细节设计的基本任务123
6.1.2 细节设计方法124
6.2 设计表示法125
6.2.1 结构化语言125
6.2.2 判定表126
6.2.3 判定树127
6.3 结构化程序设计127
6.3.1 程序流程图128
6.3.2 三种基本控制结构128
6.3.3 常用符号130
6.4 结构化定理131
6.4.1 程序函数131
6.4.2 基本定理132
6.4.3 常见错误133
6.4.4 过程设计语言135
6.5 面向数据结构的设计138
6.5.1 Jackson图139
6.5.2 纲要逻辑140
6.5.3 Jackson方法141
6.5.4 JSP应用141
6.5.5 JSD方法144
小结149
综合练习六149
第三部分 面向对象方法与实现第7章 面向对象方法概论153
7.1 面向对象简介153
7.1.1 什么是面向对象154
7.1.2 面向对象方法的历史及现状155
7.2 面向对象的相关概念155
7.2.1 对象156
7.2.2 类157
7.2.3 对象图158
7.2.4 属性158
7.2.5 服务(操作或方法)159
7.2.6 封装160
7.2.7 继承160
7.2.8 多重继承163
7.2.9 消息166
7.2.10 结构与连接166
7.2.11 多态性168
7.2.12 永久对象171
7.2.13 主动对象171
7.2.14 对象类的表示方法172
7.3 链接与关联172
7.3.1 一般概念172
7.3.2 重数173
7.3.3 关联的重要性174
7.3.4 三元关联174
7.3.5 关联的候选关键字174
7.3.6 异或关联175
7.3.7 资格关联175
7.3.8 链接属性175
7.3.9 用关联模型化为类175
7.3.10 角色名176
7.3.11 排序176
7.3.12 资格符177
7.4 构造分组177
7.4.1 模块177
7.4.2 表177
小结178
综合练习七178
第8章 模型180
8.1 统一建模语言180
8.1.1 模型的建立182
8.1.2 UML的基本图标182
8.1.3 UML语义186
8.1.4 UML的基本元素188
8.1.5 UML的词别189
8.2 UML的评价189
8.2.1 UML成功的因素189
8.2.2 UML能够起到的积极作用190
8.2.3 UML不能起到的作用190
8.2.4 UML存在的缺点与问题191
8.2.5 从U2P提案看UML的未来196
8.3 对象模型198
8.3.1 表示方法198
8.3.2 表示结构199
8.3.3 例子201
8.4 动态模型201
8.4.1 事件和状态202
8.4.2 操作206
8.4.3 嵌套状态图207
8.4.4 实践技巧210
8.5 功能模型211
8.5.1 数据流图211
8.5.2 指定的操作212
8.5.3 约束213
8.5.4 功能模型的实例214
8.5.5 功能模型与对象模型和动态模型的关系216
小结217
综合练习八218
第9章 对象分析219
9.1 对象、主动对象以及它们的类219
9.2 研究问题域和用户需求221
9.2.1 研究用户需求,明确系统责任221
9.2.2 研究问题域222
9.2.3 确定系统边界223
9.3 发现对象224
9.3.1 正确地运用抽象原则224
9.3.2 策略与启发224
9.3.3 审查和筛选226
9.3.4 识别主动对象228
9.4 对象的发现和标识228
9.4.1 动机229
9.4.2 方法229
9.4.3 三视图模型(3VM)230
9.4.4 语言信息分析231
9.5 对象分类,建立类图的对象层233
9.5.1 异常情况的检查和调整233
9.5.2 类的命名234
9.5.3 建立类图的对象层234
9.6 对象的属性和服务234
9.7 定义属性236
9.7.1 策略与启发236
9.7.2 审查与筛选237
9.7.3 推迟到OOD考虑的问题239
9.7.4 属性的命名和定位240
9.7.5 属性的详细说明240
9.8 定义服务240
9.8.1 对象的状态与状态转换图241
9.8.2 行为分类242
9.8.3 发现服务的策略与启发243
9.8.4 审查与调整244
9.8.5 认识对象的主动行为244
9.8.6 服务的命名和定位245
9.8.7 服务的详细说明245
9.9 应用实例246
9.9.1 功能需求246
9.9.2 发现对象247
9.9.3 对象层表示247
9.9.4 电梯系统的属性描述248
9.9.5 电梯系统的服务定义249
9.9.6 电梯系统的特征层255
小结256
综合练习九256
第10章 关系分析257
10.1 整体-部分结构257
10.1.1 整体-部分结构及其用途257
10.1.2 表示法260
10.1.3 如何发现整体-部分结构260
10.1.4 审查与筛选261
10.1.5 简化对象的定义262
10.1.6 支持软件复用262
10.1.7 整体-部分结构的进一步运用263
10.1.8 调整对象层和属性层264
10.2 一般-特殊结构265
10.2.1 一般-特殊结构及其用途265
10.2.2 表示法266
10.2.3 如何发现一般-特殊结构266
10.2.4 审查与调整267
10.2.5 多继承及多态性问题268
10.2.6 一般-特殊结构的简化270
10.2.7 调整对象层和特征层271
10.3 实例连接271
10.3.1 简单的实例连接271
10.3.2 复杂的实例连接及其表示272
10.3.3 三元关联问题274
10.3.4 如何建立实例连接274
10.3.5 对象层、特征层的增补及实例连接说明276
10.4 消息连接276
10.4.1 消息的定义276
10.4.2 顺序系统中的消息276
10.4.3 并发系统中的消息277
10.4.4 消息对OOA的意义280
10.4.5 OOA对消息的表示——消息连接280
10.5 如何建立消息连接281
10.5.1 建立控制线程内部的消息连接281
10.5.2 建立控制线程之间的消息连接282
10.5.3 对象分布问题及其消息的影响282
10.6 消息的详细说明283
10.7 电梯例子284
10.7.1 一般-特殊关系284
10.7.2 整体-部分关系284
10.7.3 连接284
10.7.4 电梯控制系统的关系层285
小结286
综合练习十286
第11章 面向对象设计原则287
11.1 类型一致性与闭合行为287
11.1.1 类与类型287
11.1.2 类型一致性原则288
11.1.3 闭合行为原则289
11.2 封装与共生性289
11.2.1 封装结构289
11.2.2 共生性291
11.2.3 面向对象系统中共生性的滥用292
11.2.4 共生性的术语293
11.3 领域、依附集和内聚294
11.3.1 对象类的领域294
11.3.2 依附集296
11.3.3 类的内聚:一个类和它的特性298
11.4 继承与多态性的危险性299
11.4.1 继承的滥用300
11.4.2 错误的聚集300
11.4.3 倒置的层次结构300
11.4.4 混淆类及其实例300
11.4.5 误用301
11.4.6 多态性的危险性301
11.5 状态空间和行为303
11.5.1 一个类的状态空间和行为303
11.5.2 子类的状态空间303
11.5.3 子类的行为304
11.5.4 类的不变式304
11.5.5 前置条件和后置条件305
11.5.6 类接口中支持的状态306
11.5.7 类接口中支持的行为307
11.5.8 类接口中操作的聚合308
小结308
综合练习十一308
第12章 对象设计310
12.1 对象设计综述310
12.1.1 从分析和系统结构着手310
12.1.2 对象设计的步骤311
12.1.3 对象模型工具311
12.2 组合三种模型312
12.3 设计算法312
12.3.1 选择算法313
12.3.2 选择数据结构314
12.3.3 定义内部类和操作315
12.3.4 指定操作的职责315
12.4 设计优化316
12.4.1 添加冗余关联获取有效访问316
12.4.2 重新安排执行次序以获得效率317
12.4.3 保存导出属性避免重复计算318
12.5 控制实现319
12.5.1 在程序内进行状态设置319
12.5.2 状态机器引擎319
12.5.3 控制作为并发任务320
12.6 继承的调整320
12.6.1 重新安排类和操作320
12.6.2 抽象出公共的行为321
12.6.3 使用授权共享实现322
12.7 关联设计323
12.7.1 分析关联遍历323
12.7.2 单向关联323
12.7.3 双向关联323
12.7.4 链接属性324
12.8 对象的表示324
12.9 物理打包325
12.9.1 信息隐藏325
12.9.2 实体的相关性326
12.9.3 构造模块326
12.10 设计决策文档327
12.11 控制驱动部分327
12.12 相关技术问题327
12.12.1 系统总体方案328
12.12.2 软件体系结构329
12.12.3 分布式系统的体系结构风格329
12.12.4 系统的并发性332
12.13 如何设计控制驱动部分335
12.13.1 选择软件体系结构风格335
12.13.2 确定系统分布方案336
12.13.3 识别控制流339
12.13.4 用主动对象表示控制流342
12.13.5 把控制驱动部分看作一个主题343
小结343
综合练习十二344
第13章 接口设计346
13.1 人的因素347
13.1.1 分析活动者347
13.1.2 从Use Case分析人机交互348
13.1.3 分析处理异常事件的人机交互350
13.1.4 命令的组织351
13.1.5 输出信息的组织结构354
13.2 界面设计风格355
13.2.1 菜单的选择355
13.2.2 对话框357
13.2.3 窗口357
13.3 人机界面的设计准则358
13.4 人机界面设计过程359
13.4.1 用户界面模型360
13.4.2 界面支持系统361
13.4.3 界面元素362
13.4.4 设计的形式362
13.5 描述方法与技术364
13.5.1 灵境技术365
13.5.2 多通道人机交互技术366
13.6 数据管理系统及其选择367
13.7 技术整合373
13.8 数据接口375
13.9 对象存储方案和数据接口的设计策略376
13.9.1 针对文件系统的设计376
13.9.2 针对RDBMS的设计380
13.9.3 使用OODBMS389
小结389
综合练习十三390
第14章 形式化方法392
14.1 基础知识392
14.1.1 形式化方法概念392
14.1.2 形式化规约语言393
14.2 有限状态机(FSM)395
14.3 Petri网基本原理396
14.3.1 静态结构397
14.3.2 动态特征397
14.3.3 转移启动规则398
14.3.4 行为特性400
14.3.5 行为特性分析方法402
14.3.6 结构特性分析方法408
14.3.7 Petri网到程序结构的转换411
小结414
综合练习十四414
第15章 软件实现416
15.1 程序设计语言的特性及选择416
15.1.1 程序设计语言特性416
15.1.2 程序设计语言的选择418
15.2 程序设计风格420
15.3 程序设计效率422
15.3.1 代码效率422
15.3.2 内存效率423
15.3.3 I/O效率423
15.4 冗余编程424
15.5 软件容错技术424
15.5.1 容错软件425
15.5.2 容错的一般方法426
15.5.3 容错软件的设计过程428
15.5.4 软件的容错系统结构429
小结431
综合练习十五432
第四部分 质量与工程管理第16章 软件质量435
16.1 软件质量概述435
16.1.1 软件质量的定义435
16.1.2 软件质量特性435
16.1.3 软件质量特性之间的竞争439
16.2 软件质量的度量和评价441
16.2.1 软件质量的度量441
16.2.2 软件质量度量的分类441
16.2.3 软件质量评价442
16.3 软件质量保证444
16.3.1 软件质量保证的概述444
16.3.2 软件质量保证原则445
16.3.3 软件质量保证计划445
16.3.4 软件质量保证的措施446
16.3.5 软件质量管理小组446
16.4 技术评审与审查446
16.4.1 评审过程447
16.4.2 选择参加评审的成员447
16.4.3 评审的管理和组织448
16.4.4 评审的方法448
16.4.5 走查和审查448
16.4.6 开发过程的评审448
16.4.7 对评审的综合评价450
16.5 软件的可靠性450
小结452
综合练习十六452
第17章 软件测试454
17.1 软件测试概述454
17.1.1 软件测试的目的454
17.1.2 软件测试的原则455
17.2 测试方法455
17.2.1 静态测试455
17.2.2 动态测试456
17.3 测试用例的设计457
17.3.1 白盒技术457
17.3.2 黑盒技术461
17.4 测试过程465
17.4.1 软件测试过程中的信息465
17.4.2 软件测试的步骤与各开发阶段的关系466
17.4.3 单元测试466
17.4.4 集成测试468
17.4.5 确认测试470
17.5 调试471
小结472
综合练习十七473
第18章 软件维护474
18.1 软件维护概述474
18.1.1 软件维护的定义474
18.1.2 影响维护工作的因素475
18.1.3 维护成本475
18.2 软件可维护性476
18.2.1 软件可维护性的定义476
18.2.2 可维护性的度量476
18.3 软件维护的特点478
18.3.1 非结构化维护和结构化维护478
18.3.2 维护的困难性479
18.3.3 软件维护的费用480
18.4 软件维护的实施481
18.4.1 维护的组织481
18.4.2 维护的流程481
18.4.3 维护技术483
18.4.4 维护的副作用483
18.5 维护“老化代码”484
18.6 逆向工程和再工程485
18.6.1 预防性维护485
18.6.2 逆向工程的元素486
18.6.3 再工程中的重构技术487
小结490
综合练习十八490
第19章 软件项目管理与计划492
19.1 软件项目管理概述492
19.1.1 软件管理的对象492
19.1.2 软件开发中的资源493
19.1.3 分解技术494
19.2 项目管理过程494
19.3 软件开发成本估算495
19.3.1 软件开发成本估算方法496
19.3.2 软件开发成本估算的经验模型497
19.4 风险分析499
19.4.1 风险识别499
19.4.2 风险估算500
19.4.3 风险评价500
19.4.4 风险驾驭和监控501
19.5 进度安排503
19.5.1 软件开发小组人数与软件生产率503
19.5.2 任务的确定与并行性503
19.5.3 制定开发进度计划504
19.5.4 进度安排的图形方法505
19.5.5 项目的追踪和控制506
19.6 软件项目的组织507
19.6.1 软件项目管理的特点507
19.6.2 软件项目组织的建立508
19.6.3 人员配备510
小结512
综合练习十九512
参考答案514
参考文献524