图书介绍
软件系统架构 使用视点和视角与利益相关者合作 原书第2版PDF|Epub|txt|kindle电子书版本网盘下载
![软件系统架构 使用视点和视角与利益相关者合作 原书第2版](https://www.shukui.net/cover/26/30358623.jpg)
- (英)NickRozanski,EoinWoods著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111421863
- 出版时间:2013
- 标注页数:420页
- 文件大小:159MB
- 文件页数:442页
- 主题词:软件开发
PDF下载
下载说明
软件系统架构 使用视点和视角与利益相关者合作 原书第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 简介1
1.1 利益相关者、视点和视角1
1.2 本书结构4
1.3 谁应该阅读本书5
1.4 本书约定5
第一部分 架构的基本原则8
第2章 软件架构概念8
2.1 软件架构8
2.1.1 系统元素和关系8
2.1.2 基本系统属性9
2.1.3 设计和发展的原则10
2.1.4 系统属性和内部组织形式10
2.1.5 软件架构的重要性13
2.2 架构元素13
2.3 利益相关者14
2.3.1 个人、团队或组织14
2.3.2 兴趣和关注点15
2.3.3 利益相关者的重要性16
2.4 架构描述16
2.5 核心概念之间的关系17
2.6 小结18
2.7 延伸阅读19
第3章 视点和视图20
3.1 架构视图22
3.2 视点23
3.3 核心概念之间的关系24
3.4 使用视点和视图的好处24
3.5 视点缺陷25
3.6 视点目录25
3.7 小结27
3.8 延伸阅读28
第4章 架构视角29
4.1 质量属性29
4.2 架构视角30
4.3 向视图应用视角33
4.4 应用视角的结果34
4.4.1 深入的观点34
4.4.2 提升35
4.4.3 精品内容35
4.5 核心概念之间的关系35
4.6 使用视角的好处36
4.7 视角的缺陷37
4.8 视角与视点对比37
4.9 视角种类38
4.10 小结39
4.11 延伸阅读39
第5章 软件架构师的角色41
5.1 架构定义过程41
5.1.1 架构定义不仅是设计42
5.1.2 需求分析和架构定义之间的区别43
5.1.3 架构定义和设计之间的区别43
5.2 架构师的角色44
5.3 核心概念之间的相互关系46
5.4 架构专门化47
5.5 组织情境47
5.5.1 业务分析师47
5.5.2 项目经理47
5.5.3 设计主管48
5.5.4 技术专家49
5.5.5 开发者49
5.6 架构师的技能49
5.7 架构师的责任50
5.8 小结51
5.9 延伸阅读51
第二部分 软件架构过程54
第6章 软件架构过程简介54
第7章 架构定义过程55
7.1 指导原则55
7.2 过程产出物56
7.3 过程情境56
7.4 支持活动57
7.5 架构定义活动60
7.6 过程完成标准62
7.7 软件开发生命周期中的架构定义64
7.7.1 瀑布式方法64
7.7.2 迭代方法65
7.7.3 敏捷方法65
7.8 小结66
7.9 延伸阅读67
第8章 关注点、原则和决定68
8.1 专注于问题的关注点70
8.1.1 业务策略70
8.1.2 业务目标和驱动力70
8.1.3 系统范围和需求71
8.1.4 业务标准和政策72
8.2 专注于解决方案的关注点72
8.2.1 IT策略72
8.2.2 技术目标和驱动力72
8.2.3 技术标准和政策73
8.3 其他现实世界中的约束73
8.4 什么决定了好的关注点75
8.5 架构原则75
8.5.1 什么造就了好的原则78
8.5.2 定义自己的原则78
8.6 架构决定79
8.7 使用原则关联关注点和决定81
8.8 检查列表82
8.9 小结83
8.10 延伸阅读83
第9章 确定并引入利益相关者84
9.1 利益相关者的选择84
9.2 利益相关者的类别85
9.2.1 出资方86
9.2.2 评估者86
9.2.3 沟通者86
9.2.4 开发人员87
9.2.5 维护人员87
9.2.6 生产工程师87
9.2.7 供应商87
9.2.8 支持人员87
9.2.9 系统管理员88
9.2.10 测试人员88
9.2.11 用户88
9.3 示例88
9.3.1 非专门设计的部署项目88
9.3.2 软件产品开发项目89
9.3.3 合作开发89
9.4 代理利益相关者90
9.5 利益相关者组90
9.6 利益相关者的责任90
9.7 检查列表91
9.8 小结91
9.9 延伸阅读92
第10章 识别并使用场景93
10.1 场景类型93
10.2 使用场景94
10.3 识别场景并排定优先级95
10.4 捕获场景96
10.5 什么造就了好场景98
10.6 应用场景98
10.6.1 纸质模型98
10.6.2 走查99
10.6.3 模拟100
10.6.4 原型实现的测试100
10.6.5 完整规模真实测试100
10.7 有效使用场景100
10.7.1 识别一系列重点场景101
10.7.2 使用清晰的场景101
10.7.3 尽早使用场景101
10.7.4 包含对系统质量场景的使用101
10.7.5 包含对故障场景的使用101
10.7.6 让利益相关者紧密参与101
10.8 检查列表102
10.9 小结102
10.10 延伸阅读103
第11章 使用样式和模式104
11.1 设计模式介绍104
11.2 样式、模式和惯用法105
11.2.1 架构样式106
11.2.2 软件设计模式106
11.2.3 语言惯用法106
11.2.4 使用样式、模式和惯用法107
11.3 模式和架构策略107
11.4 架构样式的例子108
11.5 使用架构样式的好处110
11.6 样式和架构描述111
11.7 应用设计模式和语言惯用法111
11.8 检查列表113
11.9 小结113
11.10 延伸阅读113
第12章 创建架构模型115
12.1 模型为什么重要115
12.2 模型的类型117
12.2.1 定性模型117
12.2.2 定量模型118
12.2.3 示意图119
12.3 建模语言119
12.3.1 架构描述语言119
12.3.2 统一建模语言120
12.3.3 可执行的领域专用语言121
12.3.4 其他建模语言121
12.4 创建有效模型的准则121
12.4.1 有目的地建模121
12.4.2 应对受众122
12.4.3 仔细、准确地抽象122
12.4.4 根据风险确定工作重点123
12.4.5 选择描述性的名称123
12.4.6 定义你的术语123
12.4.7 以简单为目标124
12.4.8 使用已定义的标记法124
12.4.9 了解暗示的语义124
12.4.10 验证模型125
12.4.11 保持模型的活力125
12.5 和敏捷团队一起建模125
12.6 检查列表126
12.7 小结127
12.8 延伸阅读127
第13章 创建架构描述128
13.1 有效架构描述的属性129
13.1.1 正确129
13.1.2 充分129
13.1.3 及时130
13.1.4 简洁131
13.1.5 清晰131
13.1.6 最新132
13.1.7 精确133
13.2 词汇表134
13.3 ISO标准134
13.4 架构描述的内容135
13.4.1 文档控制135
13.4.2 内容表135
13.4.3 介绍和管理纲要135
13.4.4 利益相关者136
1 3.4.5 通用架构原则136
13.4.6 架构设计决定136
13.4.7 视点136
13.4.8 视图136
13.4.9 质量属性摘要137
13.4.10 重要的方案137
13.4.11 亟待解决的问题137
13.4.12 附录138
1 3.5 展现架构描述138
13.6 检查列表139
13.7 小结140
13.8 延伸阅读140
第14章 评估架构141
14.1 为什么要评估架构141
14.2 评估技术142
14.2.1 演讲142
14.2.2 正式评审和结构化的走查143
14.2.3 通过使用场景来评估144
14.2.4 原型和概念验证系统145
14.2.5 骨架系统146
14.3 基于场景的评估方法146
14.3.1 以架构为中心的活动147
14.3.2 以利益相关者为中心的活动149
14.4 在软件生命周期内评估150
14.5 验证现存系统的架构151
14.6 记录评估结果153
14.7 选择评估方法154
14.8 检查列表154
14.9 小结155
14.10 延伸阅读155
第三部分 视点类型158
第15章 视点类型简介158
第16章 情境视点160
16.1 关注点161
16.1.1 系统范围和责任161
16.1.2 外部实体和服务以及所用数据的标识161
16.1.3 外部实体的本质和特征162
16.1.4 外部接口的标识和职责162
16.1.5 外部接口的本质和特征163
16.1.6 其他外部依赖关系163
16.1.7 对系统环境的影响164
16.1.8 总体完成度、一致性和连贯性164
16.1.9 利益相关者的关注点165
16.2 模型165
16.2.1 情境模型165
16.2.2 交互场景169
16.3 问题和缺陷169
16.3.1 遗漏或者错误的外部实体169
16.3.2 遗漏隐藏的依赖关系169
16.3.3 松散或不精确的接口描述170
16.3.4 详细程度不合适170
16.3.5 范围蔓延170
16.3.6 隐藏或假设的情境和范围171
16.3.7 过于复杂的交互171
16.3.8 过度使用术语171
16.4 检查列表172
16.5 延伸阅读172
第17章 功能视点173
17.1 关注点173
17.1.1 功能能力173
17.1.2 外部接口174
17.1.3 内部结构174
17.1.4 功能设计哲学174
17.1.5 利益相关者的关注点175
17.2 模型176
17.3 问题和缺陷184
17.3.1 设计很差的接口184
17.3.2 难以理解的职责184
17.3.3 基础架构作为功能性元素184
17.3.4 过载的视图185
17.3.5 没有元素定义的图186
17.3.6 难以调节多位利益相关者的需求186
17.3.7 错误的详细程度187
17.3.8 “神元素”187
17.3.9 过多依赖关系188
17.4 检查列表188
17.5 延伸阅读188
第18章 信息视点190
18.1 关注点191
18.1.1 信息结构和内容191
18.1.2 信息目的和用途191
18.1.3 信息所有权192
18.1.4 企业拥有的信息193
18.1.5 标识符和映射关系194
18.1.6 信息语义的易变性195
18.1.7 信息存储模型196
18.1.8 信息流197
18.1.9 信息一致性198
18.1.10 信息质量199
18.1.11 及时性、延迟和寿命200
18.1.12 归档和保留信息201
18.1.13 利益相关者的关注点201
18.2 模型202
18.2.1 静态信息结构模型202
18.2.2 信息流模型204
18.2.3 信息生命周期模型206
18.2.4 其他类型的信息模型207
18.3 问题和陷阱209
18.3.1 数据展现不兼容209
18.3.2 不可避免的多个更新器210
18.3.3 键值匹配缺陷211
18.3.4 接口复杂211
18.3.5 过载的中心数据库212
18.3.6 不一致的分布式数据库213
18.3.7 信息质量很差213
18.3.8 信息延迟过大213
18.3.9 容量不足214
18.4 检查列表214
18.5 延伸阅读215
第19章 并发视点216
19.1 关注点217
19.1.1 任务结构217
19.1.2 功能元素与任务的映射关系218
19.1.3 进程间通信218
19.1.4 状态管理218
19.1.5 同步和整合218
19.1.6 支持可伸缩性219
19.1.7 启动和关闭219
19.1.8 任务故障219
19.1.9 重入219
19.1.10 利益相关者的关注点220
19.2 模型220
19.2.1 系统级别的并发模型220
19.2.2 状态模型225
19.3 问题和缺陷228
19.3.1 对错误的并发建模228
19.3.2 错误地对并发建模228
19.3.3 过度复杂229
19.3.4 资源竞争229
19.3.5 死锁230
19.3.6 竞争条件230
19.4 检查列表230
19.5 延伸阅读231
第20章 开发视点232
20.1 关注点232
20.1.1 模块组织232
20.1.2 通用处理233
20.1.3 设计的标准化233
20.1.4 测试的标准化233
20.1.5 测试辅助233
20.1.6 代码行组织233
20.1.7 利益相关者的关注点233
20.2 模型234
20.2.1 模块结构模型234
20.2.2 通用设计模型235
20.2.3 代码行模型238
20.3 问题和缺陷239
20.3.1 过多细节239
20.3.2 过载的架构描述239
20.3.3 不平均的重点240
20.3.4 缺少开发者的关注240
20.3.5 精度不足240
20.3.6 特定环境的问题240
20.4 检查列表241
20.5 延伸阅读241
第21章 部署视点243
21.1 关注点243
21.1.1 所需的运行时平台243
21.1.2 硬件或者托管平台所需的规格和品质244
21.1.3 第三方软件需求244
21.1.4 技术兼容性244
21.1.5 网络需求245
21.1.6 所需的网络能力245
21.1.7 物理约束245
21.1.8 利益相关者的关注点245
21.2 模型246
21.2.1 运行时平台模型246
21.2.2 网络模型249
21.2.3 技术依赖关系模型250
21.2.4 模型之间的关系251
21.3 问题和缺陷252
21.3.1 不清晰或者不精确的依赖关系252
21.3.2 未经验证的技术253
21.3.3 不合适或者遗漏的服务级别协议253
21.3.4 缺少专家的技术知识253
21.3.5 未能及时考虑部署环境254
21.3.6 忽略站点间的复杂性254
21.3.7 提供的净空不合适254
21.3.8 未指定灾难恢复环境255
21.4 检查列表255
21.5 延伸阅读256
第22章 运维视点257
22.1 关注点257
22.1.1 安装和升级257
22.1.2 功能迁移258
22.1.3 数据迁移258
22.1.4 运维监控和控制259
22.1.5 警告260
22.1.6 配置管理260
22.1.7 性能监控260
22.1.8 支持261
22.1.9 备份和还原261
22.1.10 第三方环境中的运维262
22.1.11 利益相关者的关注点262
22.2 模型263
22.2.1 安装模型263
22.2.2 迁移模型265
22.2.3 配置管理模型265
22.2.4 管理模型267
22.2.5 支持模型270
22.3 问题和缺陷273
22.3.1 缺少运维人员的参与273
22.3.2 缺少撤销计划273
22.3.3 缺少迁移计划273
22.3.4 不充分的迁移窗口274
22.3.5 遗漏管理工具274
22.3.6 生产环境的约束274
22.3.7 缺少到生产环境中的整合275
22.3.8 不充分的备份模型275
22.3.9 不合适的警告275
22.4 检查列表276
22.5 延伸阅读276
第23章 保持视图一致性277
23.1 视图之间的关系277
23.2 情境和功能视图的一致性278
23.3 情境和信息视图的一致性278
23.4 情境和部署视图的一致性279
23.5 功能和信息视图的一致性279
23.6 功能和并发视图的一致性279
23.7 功能和开发视图的一致性280
23.8 功能和部署视图的一致性280
23.9 功能和运维视图的一致性280
23.10 信息和并发视图的一致性281
23.11 信息和开发视图的一致性281
23.12 信息和部署视图的一致性281
23.13 信息和运维视图的一致性281
23.14 并发和开发视图的一致性282
23.15 并发和部署视图的一致性282
23.16 部署和运维视图的一致性282
第四部分 视角284
第24章 视角类型简介284
第25章 安全性视角286
25.1 对视图的适用性287
25.2 关注点287
25.2.1 资源287
25.2.2 当事人287
25.2.3 策略287
25.2.4 威胁288
25.2.5 机密性288
25.2.6 完整性288
25.2.7 可用性288
25.2.8 可说明性289
25.2.9 检测和恢复289
25.2.10 安全机制289
25.3 活动:应用安全视角290
25.3.1 确定敏感资源290
25.3.2 定义安全性策略291
25.3.3 识别对系统的威胁293
25.3.4 设计安全性实现294
25.3.5 评估安全风险296
25.4 架构策略296
25.4.1 应用识别出的安全性原则296
25.4.2 对用户进行身份验证298
25.4.3 授权访问298
25.4.4 确保信息保密性299
25.4.5 确保信息的完整性299
25.4.6 确保可负责性300
25.4.7 保护可用性300
25.4.8 整合安全性技术301
25.4.9 提供安全性管理301
25.4.10 使用第三方的安全性基础架构301
25.5 问题和缺陷302
25.5.1 复杂的安全性策略302
25.5.2 未经验证的安全性技术302
25.5.3 没有针对故障设计系统302
25.5.4 缺少管理工具303
25.5.5 技术驱动的方法303
25.5.6 没有考虑时间源303
25.5.7 过度依赖于技术304
25.5.8 没有清晰的需求或模型304
25.5.9 把安全性作为事后的想法305
25.5.10 忽略内部人员的威胁305
25.5.11 假设客户端是安全的305
25.5.12 嵌入在应用程序代码中的安全性306
25.5.13 零碎的安全性306
25.5.14 临时的安全技术306
25.6 检查列表307
25.6.1 获取需求的检查列表307
25.6.2 架构定义的检查列表307
25.7 延伸阅读308
第26章 性能和可伸缩性视角309
26.1 对视图的适用性310
26.2 关注点310
26.2.1 响应时间310
26.2.2 吞吐量311
26.2.3 可伸缩性312
26.2.4 可预测性312
26.2.5 硬件资源需求312
26.2.6 峰值负载行为312
26.3 活动:应用性能和可伸缩性视角313
26.3.1 获取性能需求314
26.3.2 创建性能模型314
26.3.3 分析性能模型316
26.3.4 执行实际的测试317
26.3.5 根据需求评估317
26.3.6 重做架构318
26.4 架构策略318
26.4.1 优化重复的处理318
26.4.2 通过复制减少竞争319
26.4.3 对处理按优先级排序320
26.4.4 合并相关的工作321
26.4.5 随时间分发处理321
26.4.6 最小化对共享资源的使用321
26.4.7 重用资源和结果322
26.4.8 分解和并行化322
26.4.9 增强或扩展323
26.4.10 舒缓降级324
26.4.11 使用异步处理324
26.4.12 放松事务的一致性324
26.4.13 做出设计折中325
26.5 问题和缺陷325
26.5.1 不精确的性能和可伸缩性目标325
26.5.2 不实际的模型326
26.5.3 对复杂情况使用简单的度量326
26.5.4 不合适的分区326
26.5.5 无效的环境和平台假设327
26.5.6 太多间接层327
26.5.7 与并发相关的竞争327
26.5.8 数据库竞争328
26.5.9 事务过载328
26.5.10 粗心地分配资源329
26.5.11 忽视网络和进程中调用的区别329
26.6 检查列表330
26.6.1 针对获取需求的检查列表330
26.6.2 针对架构定义的检查列表330
26.7 延伸阅读330
第27章 可用性和弹性视角332
27.1 对视图的适用性332
27.2 关注点332
27.2.1 服务的类型333
27.2.2 有计划的停机时间333
27.2.3 未经计划的停机时间334
27.2.4 维修时间334
27.2.5 灾难恢复334
27.3 活动:应用可用性和弹性视角335
27.3.1 捕获可用性需求335
27.3.2 创建可用性日程表336
27.3.3 评估平台的可用性337
27.3.4 评估功能可用性339
27.3.5 根据需求进行评估340
27.3.6 应用策略以重做架构341
27.4 架构策略342
27.4.1 选择容错硬件342
27.4.2 使用高可用性集群和负载均衡342
27.4.3 日志事务343
27.4.4 应用软件可用性解决方案344
27.4.5 选择或创建容错软件344
27.4.6 设计故障345
27.4.7 考虑组件复制345
27.4.8 放松事务一致性345
27.4.9 确定备份和灾难恢复解决方案346
27.5 问题和缺陷346
27.5.1 故障单点346
27.5.2 级联故障347
27.5.3 由于过载造成的不可用348
27.5.4 过分激进的可用性需求348
27.5.5 无效的错误侦测349
27.5.6 对组件弹性的过度估计349
27.5.7 忽略全球可用性需求350
27.5.8 不兼容的技术350
27.6 检查列表351
27.6.1 针对需求获取的检查列表351
27.6.2 针对架构定义的检查列表351
27.7 延伸阅读352
第28章 演进视角353
28.1 对视图的适用性354
28.2 关注点354
28.2.1 产品管理354
28.2.2 变化的量级354
28.2.3 变化的维度355
28.2.4 变化的可能性355
28.2.5 变化的时间跨度355
28.2.6 何时为变化支付355
28.2.7 由外部因素驱动的变更356
28.2.8 开发复杂度356
28.2.9 知识的保存356
28.2.10 变更的可靠性357
28.3 活动:应用演进视角357
28.3.1 描绘演进需求的特征357
28.3.2 评估当前演进的难易程度358
28.3.3 考虑演进的取合359
28.3.4 重做架构359
28.4 架构策略359
28.4.1 包含变更359
28.4.2 创建可扩展的接口360
28.4.3 应用促进变更的设计技术361
28.4.4 应用基于元模型的架构样式361
28.4.5 把变化点构建到软件中362
28.4.6 使用标准的扩展点362
28.4.7 达到可靠地变更363
28.4.8 保存开发环境364
28.5 问题和缺陷364
28.5.1 对错误的维度按优先级排序364
28.5.2 永远不会发生的变更364
28.5.3 演进对重要质量属性的影响365
28.5.4 过度依赖特定的硬件或软件365
28.5.5 丢失开发环境366
28.5.6 临时的发布管理366
28.6 检查列表367
28.6.1 对于需求获取的检查列表367
28.6.2 对于架构设计的检查列表367
28.7 延伸阅读367
第29章 其他视角369
29.1 可访问性视角370
29.1.1 对视图的适用性370
29.1.2 关注点371
29.1.3 活动:应用可访问性视角371
29.1.4 架构策略371
29.1.5 问题和缺陷372
29.1.6 检查列表372
29.1.7 延伸阅读373
29.2 开发资源视角373
29.2.1 对视图的适用性374
29.2.2 关注点374
29.2.3 活动:应用开发资源视角375
29.2.4 架构策略375
29.2.5 问题和缺陷376
29.2.6 检查列表376
29.2.7 延伸阅读377
29.3 国际化视角377
29.3.1 对视图的适用性377
29.3.2 关注点378
29.3.3 活动:应用国际化视角379
29.3.4 架构策略379
29.3.5 问题和缺陷379
29.3.6 检查列表380
29.3.7 延伸阅读380
29.4 位置视角380
29.4.1 对视图的适用性381
29.4.2 关注点381
29.4.3 活动:应用位置视角382
29.4.4 架构策略382
29.4.5 问题和缺陷383
29.4.6 检查列表383
29.4.7 延伸阅读384
29.5 法规视角384
29.5.1 对视图的适用性384
29.5.2 关注点385
29.5.3 活动:应用法规视角386
29.5.4 架构策略386
29.5.5 问题和缺陷386
29.5.6 检查列表386
29.5.7 延伸阅读387
29.6 易用性视角387
29.6.1 对视图的适用性387
29.6.2 关注点388
29.6.3 活动:应用易用性视角389
29.6.4 架构策略389
29.6.5 问题和缺陷389
29.6.6 检查列表390
29.6.7 延伸阅读390
第五部分 把所有内容组合起来第30章 作为软件架构师工作392
30.1 项目生命周期中的架构392
30.1.1 小型和低风险项目中的架构392
30.1.2 敏捷项目中的架构393
30.1.3 计划驱动项目中的架构395
30.1.4 大型项目中的架构396
30.2 支持不同类型的项目398
30.2.1 内部系统开发398
30.2.2 新产品开发399
30.2.3 企业服务399
30.2.4 对已经存在系统的扩展400
30.2.5 程序包实现400
30.2.6 Internet支持程序401
30.2.7 退役401
附录A 其他视点集402
参考文献408