第1章 案例研究 1
1.1 业务问题 1
1.1.1 技术挑战 2
1.1.2 用例 2
1.1.3 在机器运转过程中进行实时处理与监控 3
1.1.4 为新机器提供无缝的激活服务 3
1.1.5 生成工作定单 3
1.1.6 尽量减少在为全球客户提供服务时所产生的延迟 4
1.2 小结 4
第2章 软件架构是什么?为什么需要做软件架构 6
2.1 背景知识 6
2.2 软件架构是什么 7
2.3 为什么需要做软件架构 9
2.3.1 把架构视为交流工具 9
2.3.2 对项目规划施加影响力 10
2.3.3 关注非功能方面的能力 11
2.3.4 与设计团队和实现团队做出约定 12
2.3.5 为影响力分析提供支持 12
2.4 架构视图与架构视点 13
2.5 小结 16
2.6 参考资料 16
第3章 恰到好处地把握架构中的重要方面 17
3.1 软件架构中需要关注的一些方面 17
3.2 小结 19
第4章 系统环境 20
4.1 业务环境与系统环境之间的辨析 20
4.2 捕获系统环境 22
4.2.1 系统环境图 23
4.2.2 信息流 25
4.3 案例研究:Elixir的系统环境 27
4.3.1 Elixir的系统环境图 27
4.3.2 Elixir的信息流 32
4.4 小结 33
4.5 参考资料 33
第5章 架构概述 34
5.1 什么是架构概述 34
5.2 为什么要做架构概述 36
5.3 企业视图 37
5.3.1 用户与传输渠道 39
5.3.2 核心业务流程 39
5.3.3 数据与信息 40
5.3.4 技术推动力 41
5.4 分层视图 42
5.4.1 第1层:操作层 45
5.4.2 第2层:服务组件层 45
5.4.3 第3层:服务层 45
5.4.4 第4层:业务流程层 46
5.4.5 第5层:消费者层 46
5.4.6 第6层:集成层 46
5.4.7 第7层:QoS层 46
5.4.8 第8层:信息架构层 47
5.4.9 第9层:治理层 47
5.4.10 进一步研究分层视图的用法 47
5.5 IT系统视图 48
5.6 案例研究:Elixir的架构概述 53
5.6.1 Elixir的企业视图 53
5.6.2 Elixir的业务流程 54
5.6.3 Elixir的数据及信息 54
5.6.4 Elixir的技术推动力 55
5.6.5 Elixir的分层视图 56
5.6.6 Elixir的IT系统视图 57
5.7 小结 58
5.8 参考资料 59
第6章 架构决策 60
6.1 为什么需要做架构决策 60
6.2 怎样开始进行架构决策 61
6.3 创建架构决策 62
6.4 案例研究:Elixir的架构决策 67
6.5 小结 69
第7章 功能模型 71
7.1 为什么需要功能模型 71
7.2 可追溯性 73
7.3 制定功能模型 74
7.3.1 逻辑层面的设计 75
7.3.2 规格层面的设计 79
7.3.3 物理层面的设计 89
7.4 案例研究:Elixir的功能模型 91
7.4.1 逻辑层面 92
7.4.2 规格层面 94
7.4.3 物理层面 97
7.5 小结 98
7.6 参考资料 99
第8章 操作模型 100
8.1 为什么需要操作模型 101
8.2 可追溯性与服务级别协议 102
8.3 制定操作模型 104
8.3.1 概念操作模型 105
8.3.2 规格操作模型 116
8.3.3 物理操作模型 122
8.4 案例研究:Elixir的操作模型 132
8.4.1 COM 132
8.4.2 SOM 137
8.4.3 POM 138
8.5 小结 140
8.6 参考资料 141
第9章 集成:方式与模式 142
9.1 为什么需要进行集成 142
9.2 集成方式 143
9.2.1 用户界面的集成 144
9.2.2 数据层面的集成 144
9.2.3 消息层面的集成 147
9.2.4 API层面的集成 149
9.2.5 服务层面的集成 150
9.3 集成模式 152
9.3.1 同步的请求-响应模式 152
9.3.2 批次模式 153
9.3.3 同步的批次请求-应答模式 153
9.3.4 异步的批次请求-应答模式 153
9.3.5 存储并转发模式 154
9.3.6 发布-订阅模式 154
9.3.7 聚合模式 154
9.3.8 管道与过滤器模式 155
9.3.9 消息路由器模式 155
9.3.10 消息转换器模式 156
9.4 案例研究:Elixir的集成视图 156
9.4.1 标签1~5所表示的数据流 157
9.4.2 标签6~8所表示的数据流 158
9.4.3 标签9~10所表示的数据流 158
9.4.4 标签11~12所表示的数据流 158
9.5 小结 159
9.6 参考资料 160
第10章 基础设施问题 161
10.1 为什么要把基础设施做好 162
10.2 需要考虑的基础设施问题 162
10.2.1 网络 163
10.2.2 托管 165
10.2.3 高可用性与容错性 169
10.2.4 灾难恢复 178
10.2.5 能力规划 178
10.3 案例研究:Elixir系统的基础设施问题 181
10.4 小结 183
10.5 我们现在讲到什么地方了 184
10.6 参考资料 186
第11章 分析架构入门 187
11.1 为什么要做分析 188
11.2 进行数据分析所采用的维度 189
11.2.1 操作分析 189
11.2.2 描述性的分析 190
11.2.3 预测性的分析 190
11.2.4 指示性的分析 191
11.2.5 认知计算 192
11.3 分析架构的基础 194
11.3.1 分层视图中的各层及五大支柱 195
11.3.2 水平层 196
11.3.3 垂直层 199
11.3.4 五大支柱 201
11.4 架构构建块 205
11.4.1 数据类型层中的ABB 206
11.4.2 数据获取与访问层中的ABB 207
11.4.3 数据存储库层中的ABB 208
11.4.4 模型层中的ABB 209
11.4.5 数据集成与整合层中的ABB 210
11.4.6 分析解决方案层中的ABB 211
11.4.7 消费者层中的ABB 213
11.4.8 元数据层中的ABB 213
11.4.9 数据与信息安全层中的ABB 214
11.4.10 描述性的分析中的ABB 215
11.4.11 预测性的分析中的ABB 215
11.4.12 指示性的分析中的ABB 217
11.4.13 操作分析中的ABB 217
11.4.14 认知计算中的ABB 218
11.5 小结 219
11.6 参考资料 220
第12章 架构经验谈 222
12.1 各种敏捷开发观点应该加以融合 222
12.2 传统的需求收集技术过时了 224
12.3 MVP范式值得考虑 225
12.4 不要忙于应付各种事务 226
12.5 预测性的分析并不是唯一的分析切入点 227
12.6 领导能力也可以通过培养而获得 227
12.7 架构不应该由技术来驱动 228
12.8 开源软件很好,但要谨慎使用 230
12.9 把看似简单的问题总结起来 230
12.10 根据技术产品的核心优势来确定架构基线 231
12.11 小结 232
12.12 参考资料 232
附录A 25个实用小知识 233
附录B Elixir的功能模型(续) 252