第一部分 认识架构 1
第1章 生命周期 2
1.1 生命周期的识别 3
1.2 核心与非核心生命周期 3
1.3 生命周期与分工 5
第2章 时间 9
第3章 为什么会产生架构 11
3.1 分工 11
3.2 分工和生命周期 12
第4章 什么是架构 13
4.1 架构产生的条件 13
4.2 什么是架构 15
4.3 架构的生命周期 17
第5章 架构和树 19
5.1 树与增长 19
5.2 架构和树 20
第6章 概念 22
6.1 何为名相 22
6.2 究竟什么才是相 23
6.3 概念是沟通的基础 23
6.4 把握概念的力量 24
第7章 什么是抽象 26
7.1 个性与共性 26
7.2 个性是基础 28
第8章 识别问题 29
8.1 面对问题有哪些困难 29
8.2 如何识别问题 30
8.3 寻找问题主体 32
第9章 切分的原则 34
9.1 切分就是利益的调整 34
9.2 为什么需要切分 35
9.3 切分的原则 35
9.4 树和分层 36
9.5 切分与建模 37
9.6 切分的输出和组织架构 38
第10章 架构与流程 40
10.1 什么是流程 40
10.2 流程和架构拆分的关系 41
第11章 什么是架构师 42
11.1 架构师做什么 42
11.2 架构师也是人 43
11.3 人人都是架构师 43
11.4 架构师和权利 44
第二部分 软件架构 47
第12章 什么是软件 48
12.1 以模拟人为目标的冯·诺依曼结构和图灵机 48
12.2 成本为王 49
12.3 天空才是极限 49
12.4 软件的作用 50
第13章 软件的生命周期 53
13.1 软件的开发生命周期 54
13.2 软件开发的增长 55
13.3 软件开发的迭代 56
13.4 软件的运行生命周期 57
第14章 什么是软件架构 58
14.1 要解决什么问题 58
14.2 分别是谁的问题呢 59
14.3 分别有什么问题 59
14.4 分析问题 60
14.5 会生成哪些架构 62
14.6 什么是软件架构 63
第15章 什么是软件架构师 65
15.1 软件架构师的区别 65
15.2 软件架构师的困境 66
15.3 生命周期的思考 67
15.4 软件架构师的权力 67
15.5 软件架构师和技术人员对技术的态度区别 68
15.6 架构师是技术的使用者 69
15.7 如何保障架构落地 70
第16章 业务、架构和技术三者的关系 73
16.1 什么是技术 74
16.2 业务和架构及技术之间的关系 75
16.3 技术人员和业务人员的关系 76
16.4 重新发明轮子 77
16.5 开源技术 78
第17章 软件研发 81
17.1 软件工程师的兴起和使命 81
17.2 分工的困境 83
17.3 软件的迭代 85
17.4 软件开发的分工 87
17.5 软件开发模式和架构 88
17.6 软件工程师的支持者 90
第18章 软件的架构拆分 92
18.1 软件拆分的原动力 92
18.2 软件开发团队的拆分 95
18.3 软件的拆分 96
18.4 软件开发的基础技术 98
18.5 软件拆分的第二动力 100
18.6 架构一步到位 100
第19章 如何写好代码 102
19.1 什么叫业务逻辑 108
19.2 业务逻辑分散的危害 108
19.3 业务逻辑内聚的好处 110
19.4 代码架构实例 111
19.5 代码误解 113
19.6 软件的拆分 114
第20章 单元测试 116
20.1 什么是单元测试 116
20.2 单元测试的困境 116
20.3 单元测试测什么 117
20.4 如何改造代码 118
20.5 为什么要做单元测试 121
20.6 如何做单元测试 123
第21章 软件架构和面向对象 125
21.1 什么是面向过程 125
21.2 什么是面向对象 126
21.3 生命周期和面向对象及面向过程 127
21.4 架构和面向对象及面向过程 127
21.5 面向对象的误区 128
21.6 对象和生命 130
第22章 软件架构与设计模式 131
22.1 模式以及模式的意义 131
22.2 什么是设计模式 132
22.3 软件设计模式 133
22.4 设计模式和架构 134
22.5 设计模式的误区 136
第23章 软件架构和软件框架 139
23.1 访问类框架 139
23.2 业务类框架 141
23.3 什么是框架 141
23.4 框架的特点 142
第24章 软件运维 143
24.1 软件运行生命周期 143
24.2 什么是软件运维 144
24.3 运维的业务模型 146
24.4 控制变化 147
24.5 监控变更 150
24.6 预警变更 152
24.7 主导变更 154
24.8 提升变更质量 157
24.9 运维的架构拆分 158
第25章 软件访问生命周期 161
25.1 软件访问的业务模型 161
25.2 软件访问路径的架构拆分 163
25.3 大规模软件访问的架构拆分 165
25.4 集群 166
25.5 数据中心 168
第26章 软件架构和大数据 172
26.1 什么是大数据 172
26.2 如何做好大数据 173
26.3 软件大数据 174
第27章 软件架构和建筑架构 177
27.1 软件架构和建筑架构的目标之异同 177
27.2 软件和建筑的架构扩展之异同 180
第三部分 软件架构的应用 183
第28章 交易 184
28.1 什么是交易 184
28.2 货币的出现 185
28.3 企业的实质 186
28.4 软件对交易的影响 187
28.5 软件的交易 187
28.6 企业的核心 188
第29章 产品 190
29.1 什么是产品 190
29.2 什么是商品 194
29.3 识别产品 195
29.4 产品系统 196
29.5 产品列表 197
29.6 产品详情 197
29.7 商品的规则 198
第30章 用户 199
30.1 什么是用户 199
30.2 为什么需要用户 200
30.3 客户的出现 201
30.4 用户的生命周期 201
30.5 用户的识别 202
第31章 订单 203
31.1 什么是订单 203
31.2 订单的生命周期架构拆分 204
31.3 订单支付 206
31.4 订单生命周期 207
第32章 交易系统 208
32.1 企业的架构拆分 208
32.2 软件系统的建模 212
32.3 访问业务模型 216
32.4 交易软件系统的架构拆分 219
32.5 服务的产生和粒度 220
32.6 用户系统的拆分 221
第33章 事务 226
33.1 什么是事务 227
33.2 软件中的事务 228
33.3 数据库事务的滥用 229
33.4 数据库的正确使用方式 229
33.5 服务调用 230