封面
版权信息
题献
译者序
序
前言
致谢
第1章 案例研究
1.1 业务问题
1.1.1 技术挑战
1.1.2 用例
1.1.3 在机器运转过程中进行实时处理与监控
1.1.4 为新机器提供无缝的激活服务
1.1.5 生成工作定单
1.1.6 尽量减少在为全球客户提供服务时所产生的延迟
1.2 小结
第2章 软件架构是什么?为什么需要做软件架构
2.1 背景知识
2.2 软件架构是什么
2.3 为什么需要做软件架构
2.3.1 把架构视为交流工具
2.3.2 对项目规划施加影响力
2.3.3 关注非功能方面的能力
2.3.4 与设计团队和实现团队做出约定
2.3.5 为影响力分析提供支持
2.4 架构视图与架构视点
2.5 小结
2.6 参考资料
第3章 恰到好处地把握架构中的重要方面
3.1 软件架构中需要关注的一些方面
3.2 小结
第4章 系统环境
4.1 业务环境与系统环境之间的辨析
4.2 捕获系统环境
4.2.1 系统环境图
4.2.2 信息流
4.3 案例研究:Elixir的系统环境
4.3.1 Elixir的系统环境图
4.3.2 Elixir的信息流
4.4 小结
4.5 参考资料
第5章 架构概述
5.1 什么是架构概述
5.2 为什么要做架构概述
5.3 企业视图
5.3.1 用户与传输渠道
5.3.2 核心业务流程
5.3.3 数据与信息
5.3.4 技术推动力
5.4 分层视图
5.4.1 第1层:操作层
5.4.2 第2层:服务组件层
5.4.3 第3层:服务层
5.4.4 第4层:业务流程层
5.4.5 第5层:消费者层
5.4.6 第6层:集成层
5.4.7 第7层:QoS层
5.4.8 第8层:信息架构层
5.4.9 第9层:治理层
5.4.10 进一步研究分层视图的用法
5.5 IT系统视图
5.6 案例研究:Elixir的架构概述
5.6.1 Elixir的企业视图
5.6.2 Elixir的业务流程
5.6.3 Elixir的数据及信息
5.6.4 Elixir的技术推动力
5.6.5 Elixir的分层视图
5.6.6 Elixir的IT系统视图
5.7 小结
5.8 参考资料
第6章 架构决策
6.1 为什么需要做架构决策
6.2 怎样开始进行架构决策
6.3 创建架构决策
6.4 案例研究:Elixir的架构决策
6.5 小结
第7章 功能模型
7.1 为什么需要功能模型
7.2 可追溯性
7.3 制定功能模型
7.3.1 逻辑层面的设计
7.3.2 规格层面的设计
7.3.3 物理层面的设计
7.4 案例研究:Elixir的功能模型
7.4.1 逻辑层面
7.4.2 规格层面
7.4.3 物理层面
7.5 小结
7.6 参考资料
第8章 操作模型
8.1 为什么需要操作模型
8.2 可追溯性与服务级别协议
8.3 制定操作模型
8.3.1 概念操作模型
8.3.2 规格操作模型
8.3.3 物理操作模型
8.4 案例研究:Elixir的操作模型
8.4.1 COM
8.4.2 SOM
8.4.3 POM
8.5 小结
8.6 参考资料
第9章 集成:方式与模式
9.1 为什么需要进行集成
9.2 集成方式
9.2.1 用户界面的集成
9.2.2 数据层面的集成
9.2.3 消息层面的集成
9.2.4 API层面的集成
9.2.5 服务层面的集成
9.3 集成模式
9.3.1 同步的请求-响应模式
9.3.2 批次模式
9.3.3 同步的批次请求-应答模式
9.3.4 异步的批次请求-应答模式
9.3.5 存储并转发模式
9.3.6 发布-订阅模式
9.3.7 聚合模式
9.3.8 管道与过滤器模式
9.3.9 消息路由器模式
9.3.10 消息转换器模式
9.4 案例研究:Elixir的集成视图
9.4.1 标签1~5所表示的数据流
9.4.2 标签6~8所表示的数据流
9.4.3 标签9~10所表示的数据流
9.4.4 标签11~12所表示的数据流
9.5 小结
9.6 参考资料
第10章 基础设施问题
10.1 为什么要把基础设施做好
10.2 需要考虑的基础设施问题
10.2.1 网络
10.2.2 托管
10.2.3 高可用性与容错性
10.2.4 灾难恢复
10.2.5 能力规划
10.3 案例研究:Elixir系统的基础设施问题
10.4 小结
10.5 我们现在讲到什么地方了
10.6 参考资料
第11章 分析架构入门
11.1 为什么要做分析
11.2 进行数据分析所采用的维度
11.2.1 操作分析
11.2.2 描述性的分析
11.2.3 预测性的分析
11.2.4 指示性的分析
11.2.5 认知计算
11.3 分析架构的基础
11.3.1 分层视图中的各层及五大支柱
11.3.2 水平层
11.3.3 垂直层
11.3.4 五大支柱
11.4 架构构建块
11.4.1 数据类型层中的ABB
11.4.2 数据获取与访问层中的ABB
11.4.3 数据存储库层中的ABB
11.4.4 模型层中的ABB
11.4.5 数据集成与整合层中的ABB
11.4.6 分析解决方案层中的ABB
11.4.7 消费者层中的ABB
11.4.8 元数据层中的ABB
11.4.9 数据与信息安全层中的ABB
11.4.10 描述性的分析中的ABB
11.4.11 预测性的分析中的ABB
11.4.12 指示性的分析中的ABB
11.4.13 操作分析中的ABB
11.4.14 认知计算中的ABB
11.5 小结
11.6 参考资料
第12章 架构经验谈
12.1 各种敏捷开发观点应该加以融合
12.2 传统的需求收集技术过时了
12.3 MVP范式值得考虑
12.4 不要忙于应付各种事务
12.5 预测性的分析并不是唯一的分析切入点
12.6 领导能力也可以通过培养而获得
12.7 架构不应该由技术来驱动
12.8 开源软件很好,但要谨慎使用
12.9 把看似简单的问题总结起来
12.10 根据技术产品的核心优势来确定架构基线
12.11 小结
12.12 参考资料
附录A 25个实用小知识
A.1 架构与设计有什么区别
A.2 架构模式、设计模式与框架之间有什么区别
A.3 怎样对比自上而下的功能分解技术与面向对象的分析与设计(OOAD)技术
A.4 概念模型、规格模型与物理模型之间有什么区别
A.5 架构原则怎样促使系统架构同时具备灵活性与恢复力
A.6 为什么说物理操作模型(POM)的开发工作可以分成多次迭代来进行
A.7 什么是面向服务的架构
A.8 什么是事件驱动架构
A.9 什么是流程架构
A.10 什么是技术架构
A.11 什么是适配器
A.12 什么是服务注册表
A.13 什么是网络交换区块
A.14 什么是操作型数据仓库
A.15 复合事件处理(CEP)与流计算有什么区别
A.16 读时模式与写时模式技术有什么区别
A.17 什么是Triple Store
A.18 什么是大规模并行处理(MPP)系统
A.19 IBM Watson构建在DeepQA架构之上。什么是DeepQA
A.20 监督式学习与非监督式学习技术有什么区别
A.21 分类学与本体论有什么区别
A.22 什么是Spark?它的工作原理是什么
A.23 云计算平台与范式有哪些优势和挑战
A.24 各种云部署模型之间有什么区别
A.25 什么是Docker技术
A.26 小结
A.27 参考资料
附录B Elixir的功能模型(续)
B.1 逻辑层面
B.1.1 组件的认定
B.1.2 组件的协作
B.2 规格层面
B.2.1 组件职责矩阵
B.2.2 接口规范
B.2.3 把数据实体与子系统关联起来
B.2.4 把各组件安排到适当的层中
B.3 物理层面
更新时间:2019-09-02 17:49:27