第1章 引言 1
1.1 写作动机 1
1.2 软件架构 2
1.2.1 软件架构的重要性 2
1.2.2 生命周期活动 3
1.3 架构师的角色 5
1.4 ADD发展史 6
1.5 小结 7
1.6 扩展阅读 8
第2章 架构设计 9
2.1 通用设计 9
2.2 软件架构中的设计 10
2.2.1 架构设计 11
2.2.2 元素交互设计 11
2.2.3 元素内部设计 12
2.3 为什么架构设计如此重要 13
2.4 架构驱动因子 13
2.4.1 设计目的 14
2.4.2 质量属性 15
2.4.3 主要功能 19
2.4.4 架构关注点 20
2.4.5 约束条件 21
2.5 设计概念:用于创建结构的构建块 22
2.5.1 参考架构 22
2.5.2 架构的设计模式 24
2.5.3 部署模式 25
2.5.4 策略 26
2.5.5 外部开发组件 27
2.6 架构设计决策 30
2.7 小结 31
2.8 扩展阅读 32
第3章 架构设计过程 34
3.1 原理性方法的必要性 34
3.2 属性驱动设计3.0 34
3.2.1 步骤1:评审输入 35
3.2.2 步骤2:通过选择驱动因子建立迭代目标 36
3.2.3 步骤3:选择一个或多个系统元素来细化 37
3.2.4 步骤4:选择一个或多个设计概念以满足选中的驱动因子 37
3.2.5 步骤5:实例化架构元素、分配职责和定义接口 37
3.2.6 步骤6:草拟视图和记录设计决策 38
3.2.7 步骤7:分析当前设计、评审迭代目标、实现设计目的 38
3.2.8 按需迭代 39
3.3 根据系统类型遵循设计路线图 39
3.3.1 成熟领域的绿地系统设计 39
3.3.2 新兴领域的绿地系统设计 41
3.3.3 现存系统的设计(棕地) 42
3.4 识别和选择设计概念 42
3.4.1 识别设计概念 42
3.4.2 选择设计概念 43
3.5 结构生成 46
3.5.1 元素实例化 47
3.5.2 划分职责和识别属性 47
3.5.3 建立元素间的关系 48
3.6 定义接口 48
3.6.1 外部接口 48
3.6.2 内部接口 48
3.7 在设计中创建概要文档 51
3.7.1 记录视图的草图 51
3.7.2 记录设计决策 53
3.8 追踪设计进度 55
3.8.1 使用架构待办事项清单 55
3.8.2 使用设计看板 55
3.9 小结 57
3.10 扩展阅读 57
第4章 案例研究:FCAPS系统 59
4.1 商用案例 59
4.2 系统需求 60
4.2.1 用例模型 60
4.2.2 质量属性场景 62
4.2.3 约束条件 62
4.2.4 架构关注点 62
4.3 设计过程 63
4.3.1 ADD步骤1:评审输入 63
4.3.2 迭代1:建立一个完整的系统架构 63
4.3.3 迭代2:识别支持基本功能的架构 70
4.3.4 迭代3:解决质量属性场景的驱动因子(质量属性-3) 77
4.4 小结 80
4.5 扩展阅读 81
第5章 案例研究:大数据系统 82
5.1 商用案例 82
5.2 系统需求 83
5.2.1 用例模型 83
5.2.2 质量属性场景 83
5.2.3 约束条件 84
5.2.4 架构关注点 84
5.3 设计过程 84
5.3.1 ADD方法的步骤1:评审输入 85
5.3.2 迭代1:参考架构和系统整体结构 85
5.3.3 迭代2:技术选择 91
5.3.4 迭代3:数据流元素的细化 99
5.3.5 迭代4:服务层的细化 104
5.4 小结 107
5.5 扩展阅读 107
第6章 案例研究:银行系统 109
6.1 商用案例 109
6.1.1 用例模型 110
6.1.2 质量属性场景 111
6.1.3 约束条件 111
6.1.4 架构关注点 111
6.2 现有的架构文档 112
6.2.1 模块视图 112
6.2.2 分配视图 113
6.3 设计过程 114
6.3.1 ADD方法的步骤1:评审输入 114
6.3.2 迭代1:支持新的驱动因子 114
6.4 小结 118
6.5 扩展阅读 119
第7章 其他设计方法 120
7.1 一种软件架构设计的通用模型 120
7.2 以架构为中心的设计方法 121
7.3 RUP中的架构活动 123
7.4 软件架构设计的过程 124
7.5 一种实现架构与设计的方法 126
7.6 视点与视角方法 127
7.7 小结 129
7.8 扩展阅读 129
第8章 设计过程中的分析 131
8.1 分析和设计 131
8.2 为何分析 133
8.3 分析方法 134
8.4 基于策略的分析 135
8.5 值得反思的问题 137
8.6 基于场景的设计评审 138
8.7 架构描述语言 141
8.8 小结 142
8.9 扩展阅读 142
第9章 组织中的架构设计过程 144
9.1 架构设计与开发生命周期 144
9.1.1 售前阶段的架构设计 145
9.1.2 开发运维阶段的架构设计 146
9.2 组织方面的问题 150
9.2.1 个人设计还是团队设计 150
9.2.2 在组织中应用一套设计概念目录 151
9.3 小结 152
9.4 扩展阅读 152
第10章 结束语 154
10.1 方法的必要性 154
10.2 下一步 155
10.3 扩展阅读 156
附录A 设计概念目录 157
附录B 基于策略的问卷调查 184
术语表 196