一线架构师实践指南 阅读笔记02
架构新手和有经验架构师的区别之一,在于是否懂得、并能有效地进行概念架构设计。众所周知,“架构 = 模块 + 接口”,架构新手往往较早的祭出这一法宝,而有经验的架构师不会一上来就关注如何定义“接口”,而往往先注重概念架构的设计。
概念性架构就是对系统设计的最初构想,就是把最关键的设计要素和交互的机制确定下来,然后考虑具体技术的运用,设计出实际架构。
概念架构应该抓大局、不拘小节。
概念架构是对系统设计的最初构想,但绝对不是无关紧要的;相反,它对大型系统的成功非常关键,架构师在设计概念架构时,必须牢牢抓住重大需求,特色需求、高风险需求,有针对性地确定设计策略。反过来讲,一个产品与类似产品在架构上的不同,其实在概念架构设计时就大局已定了。
概念架构一级的设计更重视“找对路子”,它往往是战略而不是战术,他比较策略化而未必全面,他比较强调重点机制的确定而不一定非常完整。
在概念架构设计中,不关注明确的接口定义;之后才是“模块 + 接口”一级的设计。对大型系统而言,这一点恰恰是必需的。
平时在架构设计中,也要先考虑概念一级的架构设计,而不是要一开始就想到“模块 + 接口”,先做模块分割,做一些大的子系统其切割以及需求调研,当到模块设计时再考虑接口问题。
概念性架构界定系统的高层组件,以及他们之间的关系。概念性架构意在对系统进行适当分析,而不陷入细节,借此,可以与管理人员、市场人员、用户等非技术人员交流架构。概念性架构规定了每个组件的非正式规约及架构图,但不涉及接口细节。
概念架构设计分为三个步骤:
1. 初步设计。基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计。这一步并不总是需要,但对于架构师而言,是“新系统”就必须重视这一步。
2.高层分割。对系统这个黑盒子进行高层切分,例如切分复杂系统为多个二级系统,或者直接切分系统为具体子系统。:
3.考虑非功能需求。概念架构≠理想化架构,所以不仅要考虑功能,也必须考虑非功能。具体方法是采用ADMEMS推荐目标-场景决策表。