可能每个软件公司都会有一个岗位:架构师。那么到底架构师是干什么的呢?今天我们来简单探讨一下。

我在如何说清楚软件架构这篇文章里曾经说过一个观点:软件架构是用来说清楚一个事物的结构的

我们稍微深入一下。

这里的事物通常就是指一个系统结构通常就是指系统里的实体以及他们之间的关系。那么就是说,架构师的职责就是做系统设计,明确系统中的实体以及实体间的关系。

当然,架构师肯定不会是做一个凭空的设计,设计的来源通常就是产品的需求,需求作为输入,架构作为输出。我们可以用下面这个图来做一个表示:

这个图的结构类似一个沙漏,上面的部分是一个从需求到目标的收拢过程。需求来自产品的各方利益相关者,架构师应该和产品经理一起逐步将需求明确,聚焦到几个具备可行性的目标上面。在这个过程中,应该保持和需求方的沟通,减少过程中的歧义。当然,少不了的重要工具,就是排优先级了。

接下来就是提出概念的阶段。概念是一种最为简单的系统表示方式。是从需求中提炼出来的,因为这个时候还没开始做设计,我们需要有一些方式来统一表达我们即将要做的东西。

那么为什么需要创造力呢?因为产品还没有做出来,这个东西有可能是一个全新的,也有可能是和某一个东西类似的。那么在这个阶段,架构师可以做一些头脑风暴,把系统中可能有的功能和可能的交互方式描述出来。所以,这其实就是一个需求细化的过程。

最下面就是架构设计的过程了。它又会是一个分解的过程。这个就回到我们上一篇文章提到的那个逐步细化结构的过程。

但是,这里要提到一个复杂度的概念。由于系统本身包含了那么多的实体,以及实体间的关系,所以任何复杂度是任何系统都必备的。而这个复杂度越高,人理解起来越困难。架构师的任务就是要管理这个复杂度,通过分解、抽象、分层等手段,将复杂度“隐藏”起来。

所以,一个架构做的好与不好,也可以通过复杂度来对它进行一个衡量。所谓高内聚,低耦合其实就是在说这个事情。

小结一下,架构师在一个公司里面其实就是扮演的一个承上启下的角色。是一个需求能否转化为落地方案的关键。