架构师到底是干什么的?
可能每个软件公司都会有一个岗位:架构师。那么到底架构师是干什么的呢?今天我们来简单探讨一下。
我在如何说清楚软件架构这篇文章里曾经说过一个观点:软件架构是用来说清楚一个事物的结构的
。
我们稍微深入一下。
这里的事物
通常就是指一个系统
。结构
通常就是指系统里的实体
以及他们之间的关系
。那么就是说,架构师的职责就是做系统设计,明确系统中的实体以及实体间的关系。
当然,架构师肯定不会是做一个凭空的设计,设计的来源通常就是产品的需求
,需求作为输入,架构作为输出。我们可以用下面这个图来做一个表示:
这个图的结构类似一个沙漏,上面的部分是一个从需求到目标的收拢过程。需求来自产品的各方利益相关者,架构师应该和产品经理一起逐步将需求明确,聚焦到几个具备可行性的目标上面。在这个过程中,应该保持和需求方的沟通,减少过程中的歧义。当然,少不了的重要工具,就是排优先级了。
接下来就是提出概念
的阶段。概念是一种最为简单的系统表示方式。是从需求中提炼出来的,因为这个时候还没开始做设计,我们需要有一些方式来统一表达我们即将要做的东西。
那么为什么需要创造力
呢?因为产品还没有做出来,这个东西有可能是一个全新的,也有可能是和某一个东西类似的。那么在这个阶段,架构师可以做一些头脑风暴,把系统中可能有的功能和可能的交互方式描述出来。所以,这其实就是一个需求细化的过程。
最下面就是架构设计的过程了。它又会是一个分解
的过程。这个就回到我们上一篇文章提到的那个逐步细化结构的过程。
但是,这里要提到一个复杂度
的概念。由于系统本身包含了那么多的实体,以及实体间的关系,所以任何复杂度是任何系统都必备的。而这个复杂度越高,人理解起来越困难。架构师的任务就是要管理这个复杂度,通过分解、抽象、分层
等手段,将复杂度“隐藏”起来。
所以,一个架构做的好与不好,也可以通过复杂度来对它进行一个衡量。所谓高内聚,低耦合其实就是在说这个事情。
小结一下,架构师在一个公司里面其实就是扮演的一个承上启下
的角色。是一个需求能否转化为落地方案的关键。