refinend architecture第三阶段总结
第三章主要讲述了refinend architecture阶段,包含了细化架构和逻辑架构的讲解。
细化架构保证为开发提供足够的指导和限制,从概念架构到细化架构,先设计概念架构,构思关键问题的解决策略;再进行细化架构的设计。作者引用一个小故事讲述了细化架构的重要性,概念架构难以支持并行开发。要支持开发组相对独立地进行工作,须要提供指导和限制作用更明确的“规约”级的设计。在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义(只有抽象的组件和抽象的交互机制)。
细化架构和概念架构之间存在的区别:
1.接口。在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义(只有抽象的组件和抽象的交互机制)。
2.子系统。细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口,只有职责,一般是处理组件、数据组件或连接组件中的一种。当然,概念架构中也有“大组件分解成小组件”的设计决策,但并非子系统的含义。
3.交互机制。细化架构中的交互机制应是“实在”的,如基于接口编程、消息机制或远程
方法调用等;而概念架构中的交互机制是“概念化”的,例如“A层使用B层的服务”就是典型的例子,这里的“使用”到了细化架构中可能基于接口编程、消息机制或远程方法调用等其中的一种。
不同涉众看待软件架构的视角是不同的,因此需要优秀的多视图方法:
下面介绍一下本章的大体内容:
一、从第十一章中:细化架构的故事中总结摘录出以下一部分:
架构设计仅仅进行到概念架构层面,对支持团队的并行开发而言是远远不够的;对于多视图方法,要有意识地调整、扩充、改进经典方法以符合实践的真正需要。
从概念架构到细化架构,先设计概念架构,构思关键问题的解决策略;再进行细化架构的设计,以保证为开发提供足够的指导和限制。
二、从第十二章中:什么是Refined Architecture中总结摘录出以下一部分:
架构设计是一门解决复杂问题的实践艺术,于是,以分而治之为思想核心的多视图方法必不可少。
而多视图方法有两个方面的实际意义:利于思考(因为分而治之的思维方式);便于交流(因为在一定程度上分离了涉众关注点)。
一种优秀的多视图方法,应该能够比较完善地覆盖架构设计的各项工作内容,且将每项工作内容明确地、有理有据地、一目了然地划归到不同架构视图中去。
三、从第十三章中:逻辑架构中总结摘录出以下一部分:
一线架构师最缺的不是理论, 也不是技术,而是位于理论和技术之间的“实践策略”和“实践套路”。就划分子系统这个架构师必做的工作而言,其实践策略可归纳为3种:分层的细化;分区的引入;机制的提取。
逻辑架构设计的10条经验要点:划分子系统:分层的细化;目划分子系统:分区的引入;划分子系统:机制的提取;接口的定义:协作决定接口;选用序列图:杜绝协作圉;包-接口图: 从结构到行为的桥;灰盒包圈:描述关键子系统;循序渐进的螺旋思维;设计模式:包内结构;设计模式:包间协作。
设计模式用于逻辑架构设计中主要的两种方式:明确子系统内的结构;明确包间的协作关系。
四、从第十四章中:物理架构、运行架构、开发架构中总结摘录以下一部分:
物理架构必须关注如何配置硬件和网络来满足软件系统的可靠性、可伸缩性、持续可用性、性能、安全性等方面的要求。物理架构设计主要有3项任务:硬件选择与物理拓扑;软件到硬件的影射关系;方案的优化。
很多系统为了应对复杂的业务逻辑或复杂的互操作逻辑(含硬件交互),或者为了优化关键资源使用效率,而必须借助多条控制流并行或并发执行时,就须要设计运行架构。其中运行架构设计的工作看似多而杂,但其实只要把握“控制流图”,就能够提纲挈领地开展其他相关设计。
总之,概念架构与5视图方法的区别及联系可以用两句话概括:概念架构从少数视角、重点视角进行概念级设计;细化架构从多个视角、全面视角进行充分设计。
五、从第十五章中:数据架构的难点:数据分布中总结摘录以下一部分:
越是大系统,数据分布越关键。因此,一线架构师迫切须要建立数据分布策略的大局观。根绝系统数据产生、使用、管理等方面的不同特点,常采用不同的数据分布式存储与处理手段可以归纳为一下6中策略:独立、集中、分区、复制、子集、重组。