描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111749080
编辑推荐
1)从架构知识模型、架构落地方法、架构思维模式三大维度介绍架构师的能力模型,带你穿越“认知迷雾”,轻松完成架构师入门2)融合TOGAF、DDD、RUP等主流架构方法论,抽象出一个具有高度普适性的架构认知框架,教你从容应对驾驶师岗位面临的难题
内容简介
本书由资深架构师撰写,从架构知识模型、架构落地方法和架构思维模式三大维度剖析架构师的能力模型。具体而言,本书融合TOGAF、DDD、RUP等主流架构方法论,抽象出一个具有高度普适性的架构认知框架,帮助读者轻松入门,成为合格架构师。全书共10章,分为三部分。第一部分(第1章)提出一种架构认知的方法论,即架构认知框架 = 架构知识模型 + 架构落地方法 + 架构思维模式,后续章节围绕此方法论展开。第二部分(第2~4章)介绍架构知识模型,该模型将大量的架构知识点进行分类与结构化,因为同类架构知识之间通常存在一些共性规则,可以相互借鉴。第三部分(第5~10章)介绍架构落地方法和架构思维模式。本部分提出一个标准化的端到端架构落地方法,该方法是在RUP、DDD和TOGAF等各类架构理论基础上融合而成的,以帮助读者有效应对复杂系统的设计。最后,本部分介绍了10种(5对)架构思维模式,旨在帮助架构师提升认知水平,以应对复杂系统的整体性挑战。
目 录
前言
第一部分 架构认知框架1
第1章 架构认知框架概述2
1.1 简单的架构知识模型2
1.2 架构落地方法5
1.3 架构思维模式8
1.4 初识架构认知框架10
1.5 编程和架构的关系:从微观到宏观11
1.6 本章小结13
第二部分 架构知识模型15
第2章 信息交换17
2.1 系统描述的3种维度17
2.2 系统模型的分类20
2.3 架构落地方法中的系统模型21
2.4 从模型演进看系统认知方式的转变23
2.5 本章小结27
第3章 架构编排28
3.1 社会组织的内核28
3.2 架构编排的内核31
3.3 系统模型的架构编排34
3.4 高并发系统的架构编排36
3.5 高可用系统的架构编排39
3.6 本章小结42
第4章 架构演进43
4.1 敏捷的本质43
4.2 DevOps的本质48
4.3 敏捷和DevOps的关系50
4.4 可演进系统的架构编排51
4.5 本章小结54
第三部分 架构落地方法与架构思维模式55
第5章 预备知识57
5.1 架构落地方法57
5.1.1 需求分析57
5.1.2 架构设计59
5.1.3 系统实现60
5.1.4 系统维护60
5.2 企业架构框架TOGAF61
5.2.1 TOGAF标准结构61
5.2.2 TOGAF的双飞轮模型65
5.2.3 TOGAF的核心思想67
5.2.4 TOGAF标准存在的主要问题69
5.3 理解企业和企业架构69
5.3.1 企业是什么69
5.3.2 一个用于理解企业的模型71
5.3.3 企业架构的本质及作用72
5.3.4 企业与企业架构的关系 72
5.4 本章小结73
第6章 需求分析74
6.1 需求捕获74
6.1.1 明确系统业务目标74
6.1.2 识别系统分类75
6.1.3 分析需求组成76
6.1.4 捕获利益攸关者需求78
6.1.5 划分需求优先级78
6.1.6 区分变与不变的需求79
6.1.7 输出需求说明书80
6.2 业务架构设计81
6.2.1 业务架构的前置步骤81
6.2.2 业务架构是什么82
6.2.3 业务架构的核心关注点84
6.2.4 业务架构的理解误区85
6.2.5 业务架构的设计方法86
6.3 本章小结90
第7章 架构设计91
7.1 应用架构设计91
7.1.1 应用架构的核心关注点92
7.1.2 应用拆分和整合的思路93
7.1.3 应用架构的理解误区95
7.1.4 应用架构的设计方法95
7.2 数据架构设计98
7.2.1 数据架构是什么98
7.2.2 数据架构的核心关注点99
7.2.3 数据架构的理解误区100
7.2.4 数据架构的设计方法101
7.3 技术架构设计105
7.3.1 技术架构是什么105
7.3.2 技术架构的核心关注点108
7.3.3 技术架构的理解误区109
7.3.4 技术架构的设计方法110
7.4 DDD设计112
7.4.1 DDD与面向对象的关系112
7.4.2 DDD的本质115
7.4.3 DDD方法存在的不足115
7.4.4 DDD战略设计:领域和微服务如何划分116
7.4.5 DDD战术设计:创新还是新瓶装旧酒120
7.5 架构设计的最后一站121
7.5.1 不忘初心,与业务目标对齐121
7.5.2 能力和目标匹配122
7.5.3 平衡的重要性123
7.5.4 短期利益与长期利益的抉择124
7.5.5 架构的可追溯性125
7.5.6 简化设计:只进行最低限度的设计126
7.6 本章小结127
第8章 系统实现128
8.1 分离性128
8.1.1 分离性是什么129
8.1.2 代码中的分离性130
8.1.3 分离性的落地实践135
8.2 复用性135
8.2.1 复用性是什么135
8.2.2 从程序员角度看复用的层次136
8.2.3 复用是银弹吗138
8.2.4 中台的难点139
8.3 防御性140
8.3.1 防御性是什么140
8.3.2 冲突发生的地方:边界140
8.3.3 防御性编程的思路141
8.4 一致性143
8.4.1 一致性是什么143
8.4.2 代码中的一致性145
8.4.3 降低一致性成本的思路147
8.5 本章小结149
第9章 系统维护150
9.1 如何从根本上定位问题150
9.1.1 一种系统思考的方式151
9.1.2 观察系统的3个层次152
9.1.3 定位问题的三步法154
9.2 如何从数据中找到规律156
9.2.1 统计学的两条知名曲线156
9.2.2 曲线背后的规则157
9.2.3 曲线在实践中的运用157
9.3 如何维持系统的规模扩张159
9.3.1 软件系统也逃不脱的熵增定律159
9.3.2 软件系统如何对抗熵增160
9.3.3 为什么说熵减是积分过程161
9.4 本章小结163
第10章 底层思维模式164
10.1 还原与整体164
10.1.1 整体是局部的总和吗165
10.1.2 还原论在编程和架构中的应用165
10.1.3 整体论在编程与架构中的应用167
10.1.4 还原论和整体论的关注点169
10.2 降维与升维172
10.2.1 通过现实案例理解降维和升维的含义173
10.2.2 降维思维在编程和架构中的应用174
第一部分 架构认知框架1
第1章 架构认知框架概述2
1.1 简单的架构知识模型2
1.2 架构落地方法5
1.3 架构思维模式8
1.4 初识架构认知框架10
1.5 编程和架构的关系:从微观到宏观11
1.6 本章小结13
第二部分 架构知识模型15
第2章 信息交换17
2.1 系统描述的3种维度17
2.2 系统模型的分类20
2.3 架构落地方法中的系统模型21
2.4 从模型演进看系统认知方式的转变23
2.5 本章小结27
第3章 架构编排28
3.1 社会组织的内核28
3.2 架构编排的内核31
3.3 系统模型的架构编排34
3.4 高并发系统的架构编排36
3.5 高可用系统的架构编排39
3.6 本章小结42
第4章 架构演进43
4.1 敏捷的本质43
4.2 DevOps的本质48
4.3 敏捷和DevOps的关系50
4.4 可演进系统的架构编排51
4.5 本章小结54
第三部分 架构落地方法与架构思维模式55
第5章 预备知识57
5.1 架构落地方法57
5.1.1 需求分析57
5.1.2 架构设计59
5.1.3 系统实现60
5.1.4 系统维护60
5.2 企业架构框架TOGAF61
5.2.1 TOGAF标准结构61
5.2.2 TOGAF的双飞轮模型65
5.2.3 TOGAF的核心思想67
5.2.4 TOGAF标准存在的主要问题69
5.3 理解企业和企业架构69
5.3.1 企业是什么69
5.3.2 一个用于理解企业的模型71
5.3.3 企业架构的本质及作用72
5.3.4 企业与企业架构的关系 72
5.4 本章小结73
第6章 需求分析74
6.1 需求捕获74
6.1.1 明确系统业务目标74
6.1.2 识别系统分类75
6.1.3 分析需求组成76
6.1.4 捕获利益攸关者需求78
6.1.5 划分需求优先级78
6.1.6 区分变与不变的需求79
6.1.7 输出需求说明书80
6.2 业务架构设计81
6.2.1 业务架构的前置步骤81
6.2.2 业务架构是什么82
6.2.3 业务架构的核心关注点84
6.2.4 业务架构的理解误区85
6.2.5 业务架构的设计方法86
6.3 本章小结90
第7章 架构设计91
7.1 应用架构设计91
7.1.1 应用架构的核心关注点92
7.1.2 应用拆分和整合的思路93
7.1.3 应用架构的理解误区95
7.1.4 应用架构的设计方法95
7.2 数据架构设计98
7.2.1 数据架构是什么98
7.2.2 数据架构的核心关注点99
7.2.3 数据架构的理解误区100
7.2.4 数据架构的设计方法101
7.3 技术架构设计105
7.3.1 技术架构是什么105
7.3.2 技术架构的核心关注点108
7.3.3 技术架构的理解误区109
7.3.4 技术架构的设计方法110
7.4 DDD设计112
7.4.1 DDD与面向对象的关系112
7.4.2 DDD的本质115
7.4.3 DDD方法存在的不足115
7.4.4 DDD战略设计:领域和微服务如何划分116
7.4.5 DDD战术设计:创新还是新瓶装旧酒120
7.5 架构设计的最后一站121
7.5.1 不忘初心,与业务目标对齐121
7.5.2 能力和目标匹配122
7.5.3 平衡的重要性123
7.5.4 短期利益与长期利益的抉择124
7.5.5 架构的可追溯性125
7.5.6 简化设计:只进行最低限度的设计126
7.6 本章小结127
第8章 系统实现128
8.1 分离性128
8.1.1 分离性是什么129
8.1.2 代码中的分离性130
8.1.3 分离性的落地实践135
8.2 复用性135
8.2.1 复用性是什么135
8.2.2 从程序员角度看复用的层次136
8.2.3 复用是银弹吗138
8.2.4 中台的难点139
8.3 防御性140
8.3.1 防御性是什么140
8.3.2 冲突发生的地方:边界140
8.3.3 防御性编程的思路141
8.4 一致性143
8.4.1 一致性是什么143
8.4.2 代码中的一致性145
8.4.3 降低一致性成本的思路147
8.5 本章小结149
第9章 系统维护150
9.1 如何从根本上定位问题150
9.1.1 一种系统思考的方式151
9.1.2 观察系统的3个层次152
9.1.3 定位问题的三步法154
9.2 如何从数据中找到规律156
9.2.1 统计学的两条知名曲线156
9.2.2 曲线背后的规则157
9.2.3 曲线在实践中的运用157
9.3 如何维持系统的规模扩张159
9.3.1 软件系统也逃不脱的熵增定律159
9.3.2 软件系统如何对抗熵增160
9.3.3 为什么说熵减是积分过程161
9.4 本章小结163
第10章 底层思维模式164
10.1 还原与整体164
10.1.1 整体是局部的总和吗165
10.1.2 还原论在编程和架构中的应用165
10.1.3 整体论在编程与架构中的应用167
10.1.4 还原论和整体论的关注点169
10.2 降维与升维172
10.2.1 通过现实案例理解降维和升维的含义173
10.2.2 降维思维在编程和架构中的应用174
前 言
为什么写作本书
程序员如何成长为架构师?程序员在成长为架构师的路上,通常会遇到许多问题,以下列举了其中一些比较普遍的。
1)架构知识点繁多,是否存在一个简单的架构知识模型,方便记忆和学习?
2)一个复杂系统是如何设计出来的?是否有架构落地的指南?
3)自己目前处于哪个阶段?是否存在清晰的架构学习框架?
4)DDD(领域驱动设计)和面向对象之间存在什么样的关系?DDD的本质又是什么?
5)敏捷和DevOps是两个事物,还是一个事物的两个方面?它们的关系和本质到底是什么?
6)虽然架构知识掌握得不错,但在面对复杂系统设计时仍然感到没有头绪或者缺乏信心,这种情况应该如何改善?
7)每次较大的业务需求变更,都会导致前期架构设计大的调整甚至推倒重来,如何有效提高处理这种情况的能力?
总之,程序员在成长为架构师的过程中通常会经历3个阶段,每个阶段都有一道主要关卡,即该阶段中的最大难关。一般而言,只有跨过了这道关卡,才表明已经掌握了该阶段的知识,并成功进入下一个阶段。上述问题实际上都可以对应到3个阶段及其关卡中。
第一个阶段是知识体系搭建,即初期如何学习并掌握大量的架构知识。这一阶段的关键是寻找好的学习方法或途径,否则很容易被困在“知识迷雾”中。问题1到问题4可划到这一阶段。
第二个阶段是认知突破。许多架构师深有体会,即使已经掌握了丰富的架构技能,在面对复杂系统挑战时也不能游刃有余地处理。因为架构是一项综合性工作,更需要技术之外的认知提升来应对复杂情况,否则就容易陷入“认知瓶颈”。上面的问题5到问题7可划到这一阶段。
第三个阶段是架构本质探寻。当一位架构师已经具备了驾驭复杂系统的能力后,就会开始思考架构知识体系的本质是什么,并能持续更新架构知识体系,提升认知和解决问题的能力。
本书旨在为读者厘清架构师成长之路上的3个阶段及关卡,并对每个阶段的问题进行答疑解惑。
本书特色
1)关注本质的理解。尽管本书是一本架构技术类的书籍,但是讨论的内容并不仅仅停留在技术层面,而是尝试探讨技术的本质或原理是什么,让读者尽可能知其然,也知其所以然。例如,本书探讨了敏捷、DevOps、DDD等多种技术的本质。
2)关注案例的类比。不论架构设计还是编程,都属于计算机虚拟世界中的技术。本书将现实世界中的案例与虚拟世界中的技术进行类比,帮助读者更深入地理解相关技术。
3)关注模型的抽象。通过模型来学习相关知识对读者很有帮助。本书不仅提出了架构知识的模型,在讲解企业架构框架TOGAF、数字化等内容时,同样构建出相关的模型,以方便读者学习。
4)关注思维的融入。思维模式与技术应用之间的关系,就像是一座冰山的水面下和水面上的关系。我们往往只关注“水面上”的部分,而忽略了“水面下”的部分,这是不完整、不深入的。本书将重点介绍10种底层思维模式,希望能为架构师提供一种打破“认知瓶颈”的思路。
读者对象
本书主要适合以下读者阅读。
1)程序员。通过本书,程序员可以学到一种成长为架构师的认知框架。该框架内部已将编程和架构关联起来,能够让程序员从现有编程知识出发,更快地掌握架构相关知识。
2)架构师。通过本书,架构师可以学到一种全面认识企业架构的方法。
3)需求分析人员或产品经理。通过本书,需求分析人员或产品经理可以掌握一套需求分析和业务架构设计的方法,建立对企业、需求和架构的完整认知闭环。
如何阅读本书
本书共10章,分为3个部分。
第一部分(第1章)提出一种架构认知的方法论,即架构认知框架 = 架构知识模型 + 架构落地方法 + 架构思维模式,后续章节将会围绕此方法论展开。
第二部分(第2~4章)介绍架构知识模型,即架构知识模型涵盖信息交换、架构编排、架构演进。该模型将大量的架构知识进行分类与结构化,同类架构知识之间通常存在一些共性规则,可以相互借鉴。
第2章介绍信息交换,帮助读者从全局视角厘清系统描述的3种维度及相应的模型。
第3章介绍架构编排,探讨架构编排的真正内核,给出一种架构设计的通用思路,即从编排维度来解决高并发、高可用等设计问题。
第4章介绍架构演进,重点探讨了敏捷和DevOps的关系与本质。
第三部分(第5~10章)介绍架构落地方法与架构思维模式。本书提出一个标准化的端到端架构落地方法,该方法是在RUP(统一软件开发过程)、DDD和TOGAF(The Open Group开发的一种架构框架)等各类架构理论基础上融合而成的,以帮助读者有效应对复杂系统的设计。然而在面对复杂多变的系统设计时,架构师所面临的主要挑战往往不只是技术层面,更多的是对业务、环境、技术、管理等整体性的认知和把控。本部分提出的架构思维模式旨在帮助架构师提升认知水平,以应对复杂系统的整体性挑战。
第5章重点介绍企业架构框架TOGAF,并对其中的企业和企业架构概念进行了扩展介绍,让读者站在宏观视角看待企业架构和实施方法。
第6章介绍需求分析阶段的落地方法,让读者对从需求捕获到业务架构设计的整个流程有一个完整的认识。
第7章详细介绍架构设计阶段的落地方法,同时详细介绍应用架构、数据架构和技术架构的设计,并深入探讨了DDD的本质、DDD与面向对象的关系以及战略和战术设计。本章是架构设计的核心内容,希望读者通过本章的学习能真正领会每一项架构设计的核心关注点,澄清理解上的误区,从而在实践中自如地运用。
第8章重点介绍系统实现阶段的高质量代码标准。
第9章关注系统维护阶段,介绍问题定位、数据分析和系统规模扩张的有效应对策略。
第10章以辩证思维的方式介绍5对底层思维模式,希望读者能够认识到思维模式的重要性,并加以实践。
程序员如何成长为架构师?程序员在成长为架构师的路上,通常会遇到许多问题,以下列举了其中一些比较普遍的。
1)架构知识点繁多,是否存在一个简单的架构知识模型,方便记忆和学习?
2)一个复杂系统是如何设计出来的?是否有架构落地的指南?
3)自己目前处于哪个阶段?是否存在清晰的架构学习框架?
4)DDD(领域驱动设计)和面向对象之间存在什么样的关系?DDD的本质又是什么?
5)敏捷和DevOps是两个事物,还是一个事物的两个方面?它们的关系和本质到底是什么?
6)虽然架构知识掌握得不错,但在面对复杂系统设计时仍然感到没有头绪或者缺乏信心,这种情况应该如何改善?
7)每次较大的业务需求变更,都会导致前期架构设计大的调整甚至推倒重来,如何有效提高处理这种情况的能力?
总之,程序员在成长为架构师的过程中通常会经历3个阶段,每个阶段都有一道主要关卡,即该阶段中的最大难关。一般而言,只有跨过了这道关卡,才表明已经掌握了该阶段的知识,并成功进入下一个阶段。上述问题实际上都可以对应到3个阶段及其关卡中。
第一个阶段是知识体系搭建,即初期如何学习并掌握大量的架构知识。这一阶段的关键是寻找好的学习方法或途径,否则很容易被困在“知识迷雾”中。问题1到问题4可划到这一阶段。
第二个阶段是认知突破。许多架构师深有体会,即使已经掌握了丰富的架构技能,在面对复杂系统挑战时也不能游刃有余地处理。因为架构是一项综合性工作,更需要技术之外的认知提升来应对复杂情况,否则就容易陷入“认知瓶颈”。上面的问题5到问题7可划到这一阶段。
第三个阶段是架构本质探寻。当一位架构师已经具备了驾驭复杂系统的能力后,就会开始思考架构知识体系的本质是什么,并能持续更新架构知识体系,提升认知和解决问题的能力。
本书旨在为读者厘清架构师成长之路上的3个阶段及关卡,并对每个阶段的问题进行答疑解惑。
本书特色
1)关注本质的理解。尽管本书是一本架构技术类的书籍,但是讨论的内容并不仅仅停留在技术层面,而是尝试探讨技术的本质或原理是什么,让读者尽可能知其然,也知其所以然。例如,本书探讨了敏捷、DevOps、DDD等多种技术的本质。
2)关注案例的类比。不论架构设计还是编程,都属于计算机虚拟世界中的技术。本书将现实世界中的案例与虚拟世界中的技术进行类比,帮助读者更深入地理解相关技术。
3)关注模型的抽象。通过模型来学习相关知识对读者很有帮助。本书不仅提出了架构知识的模型,在讲解企业架构框架TOGAF、数字化等内容时,同样构建出相关的模型,以方便读者学习。
4)关注思维的融入。思维模式与技术应用之间的关系,就像是一座冰山的水面下和水面上的关系。我们往往只关注“水面上”的部分,而忽略了“水面下”的部分,这是不完整、不深入的。本书将重点介绍10种底层思维模式,希望能为架构师提供一种打破“认知瓶颈”的思路。
读者对象
本书主要适合以下读者阅读。
1)程序员。通过本书,程序员可以学到一种成长为架构师的认知框架。该框架内部已将编程和架构关联起来,能够让程序员从现有编程知识出发,更快地掌握架构相关知识。
2)架构师。通过本书,架构师可以学到一种全面认识企业架构的方法。
3)需求分析人员或产品经理。通过本书,需求分析人员或产品经理可以掌握一套需求分析和业务架构设计的方法,建立对企业、需求和架构的完整认知闭环。
如何阅读本书
本书共10章,分为3个部分。
第一部分(第1章)提出一种架构认知的方法论,即架构认知框架 = 架构知识模型 + 架构落地方法 + 架构思维模式,后续章节将会围绕此方法论展开。
第二部分(第2~4章)介绍架构知识模型,即架构知识模型涵盖信息交换、架构编排、架构演进。该模型将大量的架构知识进行分类与结构化,同类架构知识之间通常存在一些共性规则,可以相互借鉴。
第2章介绍信息交换,帮助读者从全局视角厘清系统描述的3种维度及相应的模型。
第3章介绍架构编排,探讨架构编排的真正内核,给出一种架构设计的通用思路,即从编排维度来解决高并发、高可用等设计问题。
第4章介绍架构演进,重点探讨了敏捷和DevOps的关系与本质。
第三部分(第5~10章)介绍架构落地方法与架构思维模式。本书提出一个标准化的端到端架构落地方法,该方法是在RUP(统一软件开发过程)、DDD和TOGAF(The Open Group开发的一种架构框架)等各类架构理论基础上融合而成的,以帮助读者有效应对复杂系统的设计。然而在面对复杂多变的系统设计时,架构师所面临的主要挑战往往不只是技术层面,更多的是对业务、环境、技术、管理等整体性的认知和把控。本部分提出的架构思维模式旨在帮助架构师提升认知水平,以应对复杂系统的整体性挑战。
第5章重点介绍企业架构框架TOGAF,并对其中的企业和企业架构概念进行了扩展介绍,让读者站在宏观视角看待企业架构和实施方法。
第6章介绍需求分析阶段的落地方法,让读者对从需求捕获到业务架构设计的整个流程有一个完整的认识。
第7章详细介绍架构设计阶段的落地方法,同时详细介绍应用架构、数据架构和技术架构的设计,并深入探讨了DDD的本质、DDD与面向对象的关系以及战略和战术设计。本章是架构设计的核心内容,希望读者通过本章的学习能真正领会每一项架构设计的核心关注点,澄清理解上的误区,从而在实践中自如地运用。
第8章重点介绍系统实现阶段的高质量代码标准。
第9章关注系统维护阶段,介绍问题定位、数据分析和系统规模扩张的有效应对策略。
第10章以辩证思维的方式介绍5对底层思维模式,希望读者能够认识到思维模式的重要性,并加以实践。
评论
还没有评论。