图书介绍
面向对象软件工程PDF|Epub|txt|kindle电子书版本网盘下载
- DavidC.Kung著;牟永敏,邢颖译 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302460947
- 出版时间:2017
- 标注页数:548页
- 文件大小:107MB
- 文件页数:567页
- 主题词:面向对象语言-程序设计
PDF下载
下载说明
面向对象软件工程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1部分 引言与系统工程3
第1章 引言3
1.1 什么是软件工程3
1.2 为什么要用软件工程4
1.3 软件生命周期行为5
1.3.1 软件开发过程5
1.3.2 软件质量保证8
1.3.3 软件项目管理9
1.4 面向对象的软件工程10
1.4.1 面向对象的建模和设计语言10
1.4.2 面向对象的开发过程10
1.4.3 面向对象的开发方法11
1.4.4 OO会取代传统的方法吗11
1.5 软件工程和计算机科学11
小结12
深入阅读12
章节复习问题13
练习13
第2章 软件过程和方法14
2.1 系统开发的挑战14
2.2 软件过程15
2.3 瀑布模型的优势和问题16
2.4 软件开发是一个险恶问题16
2.5 软件过程模型17
2.5.1 原型过程18
2.5.2 演化过程18
2.5.3 螺旋模型18
2.5.4 统一过程19
2.5.5 个人软件过程20
2.5.6 团队软件过程24
2.5.7 敏捷过程26
2.6 软件开发方法30
2.6.1 过程和方法的区别30
2.6.2 方法的好处31
2.6.3 结构化方法32
2.6.4 经典的面向对象方法32
2.7 敏捷方法32
2.7.1 动态系统开发方法(DSDM)34
2.7.2 Scrum35
2.7.3 特征驱动的开发35
2.7.4 极限编程36
2.7.5 敏捷还是计划驱动36
2.8 本书中的过程和方法一览37
小结41
深入阅读41
章节复习问题42
练习42
第3章 系统工程43
3.1 什么是系统43
3.2 什么是系统工程44
3.3 系统需求定义47
3.3.1 识别业务需求47
3.3.2 定义系统需求48
3.4 系统结构设计48
3.4.1 系统分解49
3.4.2 需求分配51
3.4.3 结构设计图52
3.4.4 子系统功能和接口规格说明55
3.5 子系统开发56
3.5.1 面向对象的上下文图56
3.5.2 面向对象的上下文图的用途57
3.5.3 工程团队的协作58
3.6 系统集成、测试和部署58
3.7 系统配置管理58
小结60
深入阅读60
章节复习问题60
练习60
第2部分 分析和体系结构设计65
第4章 获取软件需求65
4.1 什么是需求获取65
4.2 获取需求的重要性67
4.3 获取需求的挑战67
4.4 需求的类型68
4.5 获取需求的步骤69
4.5.1 收集信息70
4.5.2 构建分析模型73
4.5.3 获取需求和约束74
4.5.4 需求规格标准77
4.5.5 进行可行性研究77
4.5.6 审查需求规格说明书77
4.6 应用敏捷原则79
4.7 需求管理和工具80
小结81
深入阅读81
章节复习问题81
练习82
第5章 领域建模84
5.1 什么是领域建模84
5.2 为什么要进行领域建模85
5.3 面向对象和类图85
5.3.1 外延定义和意向定义85
5.3.2 类和对象86
5.3.3 对象和属性87
5.3.4 关联88
5.3.5 多重性和角色89
5.3.6 聚合90
5.3.7 继承90
5.3.8 继承和多态91
5.3.9 关联类91
5.4 领域建模的步骤93
5.4.1 收集应用领域信息94
5.4.2 头脑风暴94
5.4.3 对头脑风暴结果分类95
5.4.4 领域模型可视化98
5.4.5 领域建模审查清单102
5.5 综合103
5.6 领域建模的方针105
5.7 应用敏捷原则106
5.8 领域建模的工具支持107
小结108
深入阅读109
章节复习问题109
练习109
第6章 架构设计111
6.1 什么是架构设计111
6.2 架构设计的重要性112
6.3 架构设计过程112
6.3.1 确定架构设计目标113
6.3.2 确定系统类型114
6.3.3 应用架构样式117
6.3.4 进行定制的架构设计124
6.3.5 明确子系统功能和接口124
6.3.6 审查架构设计125
6.4 架构样式和包图125
6.5 应用软件设计准则126
6.5.1 什么是软件设计准则127
6.5.2 为改变而设计127
6.5.3 关注点分离128
6.5.4 信息隐藏129
6.5.5 高内聚129
6.5.6 低耦合129
6.5.7 保持简单和直接130
6.6 架构设计的方针131
6.7 架构设计和设计模式131
6.8 应用敏捷原则132
小结132
深入阅读132
章节复习问题133
练习133
第3部分 交互式系统的建模和设计137
第7章 从需求获取用例137
7.1 什么是参与者137
7.2 什么是用例138
7.3 业务过程、操作和活动138
7.4 从需求获取用例的步骤140
7.4.1 识别用例140
7.4.2 明确用例范围146
7.4.3 用例上下文可视化147
7.4.4 检查用例规约151
7.4.5 将用例分配给迭代152
7.5 导出用例的方针153
7.6 应用敏捷原则155
7.7 用例建模的工具支持155
小结157
深入阅读157
章节复习问题157
练习158
第8章 参与者-系统交互建模159
8.1 什么是参与者-系统交互建模159
8.2 参与者-系统交互建模的重要性160
8.3 参与者-系统交互建模的步骤160
8.3.1 初始化一个两列的表161
8.3.2 明确参与者-系统交互的步骤161
8.3.3 检查参与者-系统交互规约161
8.4 明确可替换的流162
8.5 使用用户界面原型163
8.6 不要显示异常处理166
8.7 用例的先决条件和后置条件166
8.8 包含其他用例167
8.9 用其他用例继续167
8.10 常见问题168
8.11 应用敏捷原则170
小结170
深入阅读171
章节复习问题171
练习171
第9章 对象交互建模172
9.1 什么是对象交互建模172
9.2 UML顺序图173
9.2.1 概念和表示法173
9.2.2 展示类的实例173
9.2.3 顺序图说明174
9.2.4 顺序图用于分析和设计176
9.2.5 正确使用表示方法178
9.3 对象交互建模的步骤179
9.3.1 收集业务过程的信息180
9.3.2 识别非普通步骤180
9.3.3 为非普通步骤书写场景181
9.3.4 构建场景表183
9.3.5 怎么写场景183
9.3.6 从场景表得到顺序图188
9.3.7 对象交互建模检查清单194
9.4 应用敏捷原则195
9.5 对象交互建模的工具支持197
小结197
深入阅读197
章节复习问题197
练习198
第10章 应用职责分配模式199
10.1 什么是设计模式199
10.2 为什么要用设计模式200
10.3 情景特定模式和职责分配模式200
10.4 模式规约201
10.5 控制器模式202
10.5.1 激励示例202
10.5.2 什么是控制器204
10.5.3 应用控制器模式204
10.5.4 控制器的类型206
10.5.5 跟踪记录用例状态206
10.5.6 臃肿的控制器207
10.5.7 比较不同的设计208
10.5.8 何时应用控制器模式209
10.5.9 使用控制器的方针210
10.6 专家模式210
10.6.1 信息专家210
10.6.2 应用专家模式211
10.6.3 包含不止一个对象的专家模式212
10.6.4 何时应用专家模式213
10.6.5 使用专家模式的方针213
10.7 创建者模式213
10.7.1 什么是创建者213
10.7.2 应用创建者模式214
10.7.3 创建者模式的优势215
10.7.4 何时应用创建者模式215
小结216
深入阅读216
章节复习问题216
练习217
第11章 获取设计类图219
11.1 什么是设计类图220
11.2 设计类图的用途220
11.3 获取设计类图的步骤221
11.3.1 识别类221
11.3.2 识别方法222
11.3.3 识别属性224
11.3.4 类之间的关系226
11.3.5 识别关系226
11.3.6 设计类图检查清单228
11.4 用包图组织类228
11.5 应用敏捷原则230
11.6 设计类图的工具支持231
小结231
深入阅读231
章节复习问题231
练习231
第12章 用户接口设计232
12.1 什么是用户接口设计232
12.2 用户接口设计为什么重要233
12.3 图形用户接口组件234
12.3.1 容器组件235
12.3.2 输入、输出和信息展示组件235
12.3.3 使用GUI组件的方针237
12.4 用户接口设计过程237
12.4.1 案例研究:为状态图编辑器设计用户接口238
12.4.2 识别系统主要显示方式238
12.4.3 生成布局设计草图240
12.4.4 明确交互行为242
12.4.5 构建原型242
12.4.6 用户评估用户接口设计243
12.4.7 用户接口设计检查清单244
12.5 设计用户支持功能245
12.6 用户接口设计的方针245
12.7 应用敏捷原则247
12.8 用户接口设计的工具支持247
小结248
深入阅读248
章节复习问题248
练习249
第4部分 其他类型系统的建模和设计253
第13章 事件驱动系统的对象状态建模253
13.1 什么是对象状态建模253
13.2 为什么要进行对象状态建模254
13.3 基本定义254
13.4 对象状态建模的步骤255
13.4.1 收集和分类状态行为信息256
13.4.2 构建领域模型来展示上下文258
13.4.3 构建状态迁移表260
13.4.4 状态迁移表的用途261
13.4.5 将状态迁移表转换为分析状态图262
13.4.6 将分析状态图转换为设计状态图264
13.4.7 状态建模检查清单265
13.5 状态模式265
13.5.1 约定的方法265
13.5.2 什么是状态模式266
13.5.3 应用状态模式266
13.6 实时系统的建模与设计269
13.6.1 转换图式270
13.6.2 定时状态机271
13.6.3 中断处理272
13.7 应用敏捷原则273
13.8 对象状态建模的工具支持274
小结274
深入阅读275
章节复习问题275
练习275
第14章 转换型系统的活动建模278
14.1 什么是活动建模278
14.2 为什么使用活动建模279
14.3 活动建模:技术背景279
14.3.1 流程图280
14.3.2 佩特里网280
14.3.3 数据流图281
14.4 UML活动图282
14.5 活动建模的步骤283
14.5.1 识别活动和工作流284
14.5.2 产生一个初步活动图286
14.5.3 引入条件分支、分叉和连接287
14.5.4 精炼复杂的活动287
14.5.5 活动建模审核检查表288
14.6 与其他图之间的关系288
14.7 应用敏捷原则289
14.8 活动建模的工具支持289
小结289
深入阅读290
章节复习问题290
练习290
第15章 基于规则的系统的建模与设计291
15.1 什么是决策表292
15.2 决策表的用处293
15.3 系统化的决策表构造293
15.4 渐进式决策表构造294
15.5 检查所需的属性295
15.6 决策表合并296
15.7 根据决策表生成代码296
15.8 应用解释器模式297
15.8.1 定义业务规则语法297
15.8.2 在类图中表示规则298
15.8.3 构建解析器和变量查找上下文299
15.8.4 解释业务规则299
15.8.5 动态更新规则300
15.8.6 解释方法的优点300
15.9 在测试驱动开发中使用决策表300
15.10 决策树301
15.11 应用敏捷原则301
小结302
深入阅读302
章节复习问题302
练习303
第5部分 应用情景特定模式307
第16章 应用模式来设计状态图编辑器307
16.1 应用模型的过程308
16.2 案例研究:状态图编辑器310
16.3 处理复杂的结构311
16.3.1 表示递归的整体-部分结构311
16.3.2 使用策略提供布局选择315
16.3.3 用迭代器访问复杂的结构316
16.3.4 通过访问者分析复杂的结构317
16.3.5 通过备忘录存储和恢复对象状态320
16.4 创建和构造复杂的对象321
16.4.1 创建系列产品321
16.4.2 构建大型的复杂对象324
16.4.3 通过享元重用对象326
16.5 图形用户界面的设计和显示327
16.5.1 跟踪编辑状态327
16.5.2 响应编辑事件328
16.5.3 转换接口330
16.5.4 提供上下文相关的帮助333
16.5.5 使用装饰增强显示能力335
16.6 应用敏捷原则338
小结338
深入阅读338
章节复习问题339
练习339
第17章 应用模式来设计持久性框架340
17.1 直接访问数据库会出现的问题340
17.2 通过桥隐藏持久存储341
17.3 将数据库请求封装为命令344
17.4 用远程代理隐藏网络访问348
17.5 用模板方法共享通用代码351
17.6 通过工厂方法检索不同的对象353
17.7 用原型减少类的数量355
17.8 应用敏捷原则358
小结358
深入阅读358
章节复习问题358
练习358
第6部分 实现和质量保证363
第18章 实现方面的考虑363
18.1 编码标准363
18.1.1 什么是编码标准363
18.1.2 为什么要建立编码标准367
18.1.3 代码审查清单367
18.1.4 编码标准实施准则367
18.2 组织实现部件369
18.3 根据设计生成代码370
18.3.1 实现类和接口370
18.3.2 从顺序图到方法代码骨架370
18.3.3 实现关联关系371
18.4 给团队成员分配任务372
18.5 结对编程372
18.6 测试驱动开发373
18.6.1 测试驱动开发的工作流程373
18.6.2 测试驱动开发的优点375
18.6.3 潜在问题375
18.7 应用敏捷原则376
18.8 对实现的工具支持376
小结376
深入阅读377
章节复习问题377
练习377
第19章 软件质量保证379
19.1 软件质量保证的益处379
19.2 软件质量属性379
19.3 质量测量和度量381
19.3.1 质量测量和度量的实用性382
19.3.2 常规质量度量382
19.3.3 对面向对象软件重用传统度量387
19.3.4 面向对象质量度量387
19.4 软件验证与确认技术389
19.4.1 审查389
19.4.2 走查390
19.4.3 同行审查391
19.5 生命周期中的验证和确认392
19.6 软件质量保证功能393
19.6.1 过程和标准的定义394
19.6.2 质量管理396
19.6.3 过程改进397
19.7 应用敏捷原则398
19.8 SQA的工具支持399
小结399
深入阅读400
章节复习问题400
练习400
第20章 软件测试401
20.1 什么是软件测试402
20.2 为什么进行软件测试402
20.3 传统的黑盒测试403
20.3.1 功能性测试:一个例子403
20.3.2 等价类划分404
20.3.3 边界值分析405
20.3.4 因果分析407
20.4 传统的白盒测试407
20.4.1 基路径测试408
20.4.2 圈复杂度409
20.4.3 流图测试覆盖准则409
20.4.4 测试循环410
20.4.5 数据流测试411
20.4.6 数据流测试的覆盖准则412
20.4.7 过程间数据流测试412
20.5 测试覆盖率413
20.6 一个通用的软件测试过程413
20.7 面向对象的软件测试415
20.7.1 基于用例的测试415
20.7.2 用ClassBench进行对象状态测试416
20.7.3 测试类的层次结构418
20.7.4 测试异常处理能力419
20.8 测试Web应用程序420
20.8.1 Web应用程序测试的面向对象模型420
20.8.2 使用面向对象模型进行静态分析421
20.8.3 使用面向对象模型生成测试用例421
20.8.4 用httpUnit进行Web应用程序测试422
20.9 非功能性需求的测试422
20.9.1 性能和压力测试422
20.9.2 安全测试423
20.9.3 测试用户界面423
20.10 生命周期中的软件测试424
20.11 回归测试426
20.12 什么时候停止测试426
20.13 应用敏捷原则427
20.14 测试的工具支持427
小结427
深入阅读428
章节复习问题428
练习428
第7部分 维护和配置管理433
第21章 软件维护433
21.1 什么是软件维护433
21.2 软件变化的因素434
21.3 系统演化的雷曼定律434
21.4 软件维护的类型435
21.5 软件维护过程和活动435
21.5.1 维护过程模型436
21.5.2 理解程序437
21.5.3 变更识别和分析437
21.5.4 配置变更控制439
21.5.5 变更实施、测试和交付440
21.6 逆向工程440
21.6.1 逆向工程工作流440
21.6.2 逆向工程的用途440
21.6.3 逆向工程:案例研究441
21.7 软件再工程441
21.7.1 再工程的目标441
21.7.2 软件再工程的过程442
21.7.3 软件再工程:案例研究443
21.8 软件维护的模式444
21.8.1 用外观模式简化客户端接口444
21.8.2 用中介者模式简化组件交互445
21.8.3 软件维护的模式445
21.9 应用敏捷原则449
21.10 软件维护的工具支持449
小结450
深入阅读450
章节复习问题450
练习450
第22章 软件配置管理452
22.1 软件生命周期的基准452
22.2 什么是软件配置管理453
22.3 为什么需要软件配置管理454
22.4 软件配置管理的功能454
22.4.1 软件配置识别455
22.4.2 软件配置变更控制456
22.4.3 软件配置审核457
22.4.4 软件配置状态的审计458
22.5 敏捷项目中的配置管理458
22.6 软件配置管理工具458
小结460
深入阅读460
章节复习问题460
练习461
第8部分 项目管理和软件安全465
第23章 软件项目管理465
23.1 项目组织466
23.1.1 项目形式466
23.1.2 团队结构467
23.2 工作量评估方法468
23.2.1 功能点方法468
23.2.2 COCOMOⅡ模型469
23.2.3 Delphi评估方法474
23.2.4 敏捷评估474
23.3 项目计划和调度476
23.3.1 PERT图476
23.3.2 Gantt图和人员分配477
23.3.3 敏捷规划478
23.4 风险管理479
23.4.1 风险识别479
23.4.2 风险分析和优先级划分480
23.4.3 风险管理规划482
23.4.4 风险解决和监控482
23.5 过程改进482
23.6 应用敏捷原则484
23.7 项目管理的工具支持484
小结485
深入阅读485
章节复习问题486
练习486
第24章 软件安全488
24.1 什么是软件安全489
24.2 安全要求489
24.3 安全软件设计原则490
24.4 安全软件设计模式491
24.5 软件安全的7个最佳实践493
24.6 通过攻击树进行风险分析494
24.7 生命周期中的软件安全性494
24.7.1 规划阶段的安全495
24.7.2 迭代阶段的安全501
24.8 应用敏捷原则503
24.9 软件安全的工具支持504
小结504
深入阅读505
章节复习问题505
练习506
附录A 个人软件过程:估计、规划和质量保证507
A.1 PSP中的工作量估计507
A.2 PSP中的软件质量保证508
A.3 设计和质量508
附录B Java技术510
B.1 使用数据库连接510
B.1.1 什么是数据库连接510
B.1.2 设置数据源510
B.1.3 从程序中访问数据库511
B.2 使用Swing512
B.2.1 用JFrame创建主窗口512
B.2.2 利用布局管理器来布局组件513
B.2.3 使用动作监听器处理按钮事件515
B.2.4 实现绘图功能515
B.3 使用JSP517
B.3.1 什么是JSP517
B.3.2 JSP工作流517
B.3.3 用JSP容器安装Web服务器518
B.3.4 使用JSP518
附录C 软件工具521
C.1 NetBeans521
C.2 使用JUnit522
C.3 在NetBeans中运行JUnit525
C.4 Emma覆盖工具525
C.5 Cobertura覆盖工具526
C.6 使用HttpUnit测试Web应用程序527
C.6.1 配置IDE 以使用HttpUnit527
C.6.2 在HttpUnit中实现测试用例528
C.7 在NetBeans中使用cvs和Subversion529
C.7.1 创建CVS远程存储库529
C.7.2 在NetBeans中安装Subversion530
C.7.3 从存储库检出文件531
C.7.4 编辑源和查看变更533
C.7.5 查看文件状态533
C.7.6 比较文件版本534
C.7.7 合并存储库中的更改534
C.7.8 解决冲突534
C.7.9 更新本地副本534
C.7.10 提交本地文件到存储库535
C.7.11 导入文件到存储库535
附录D 项目概要536
D.1 汽车租赁系统536
D.2 国家贸易展览服务系统536
D.3 海外留学管理系统537
D.4 UML类图编辑器539
D.5 无线电通信模拟器540
D.6 对象状态测试环境541
参考文献543