如何画架构图

目录

做一款软件产品,一般要画设计图,常见的有产品图、流程图和架构图。产品图可以看功能和外观,比如页面布局、交互方式和视觉色彩等;流程图可以看基本流程,比如业务流程、计算逻辑、数据流等;架构图有点抽象,主要是看整体结构,比如系统架构、工程架构、算法架构、数据架构等。

产品图和流程图比较直观,而架构图有时候会给人一种花里胡哨的感觉。原因在于,架构图没有严格的定义,也没有统一的标准,表现形式也因人而异。下面说一说我对架构图的理解(仅代表个人观点)。

架构图

先说说架构,它是对具体事物的一个抽象描述。

举个例子,要解释一个软件系统的设计思想,如果对着代码解释,不但效率低,还得让对方懂编程,以及对应的编程语言。更方便的做法是讲结构,不讲细节。用抽象的层次关系(或者模块的组合)来表示一个系统,这就是它的架构。

架构图就是描述架构的示意图,它描述的事物可以是具体的,也可以是抽象的。例如,公司的组织架构是具体的,计算机网络的七层协议是抽象的。

具体怎么画,关键是搞清楚它的目的。比如,给谁看?看什么?

据我观察,架构图主要有如下几个使用场景。

1、向上汇报

要求逻辑正确、结构清晰。不能太简单,否则信息量太少;也不能太复杂,否则细节太多,看起来费劲。架构图的外观和布局要看人下菜,有人喜欢简约,有人喜欢华丽。

2、晋升答辩

架构图作为答辩材料,作用不是给人看懂,而是让人觉得这很厉害。

3、对外宣传

布局和配色要美观,要看起来高大上,从而吸引听众的注意。

4、设计文档

架构图作为设计文档的一部分,是为了让软件的开发和维护更容易。

下面我分享几点画软件架构图的原则。

画图原则

先声明,下面的原则只适用于把架构图当作设计文档的一部分。如果是为了向上汇报、晋升答辩或对外宣传,这些经验不一定适用,或许还会扯你的后腿。

作为目录

我们看书,一般先浏览目录。架构图可以被看成软件系统的目录。看到架构图,可以大致了解系统功能和模块之间的关系。

模块之间的依赖关系,一般用层级表示,即上层依赖下层。

合理抽象

架构图太简单,传递的信息量不足。架构图太复杂,读起来费劲。做好合理的抽象,呈现结构和关系,把细节留给文档。

上图看起来就很复杂,有层次,有嵌套,有横有纵,还有简单的逻辑和解释。不是说复杂不行,而是要想清楚是否有必要。

重点突出

软件项目如果涉及多个职能,建议使用多个架构图,比如画出系统架构、工程架构、算法架构、数据架构等。做好抽象和分类,能让人快速理解项目结构和分工。

上图是 tensorflow 的架构图,虽然不美观,但表达清晰。底层是 C 语言,封装成 C++、Python 接口给用户调用;支持分布式计算、并且适配计算硬件和网络。

总结

架构体现的是对系统的理解,不分好坏,不分贵贱。而是要看,最后实现的系统是否能有效解决问题。架构图作为设计文档的一部分,它的主要作用是帮助大家理解这个系统,从而降低软件的研发和维护成本。把它画成什么样不重要,重要的是让人看懂。

标签 :

相关文章

包材推荐系统的设计与实践

业务背景 在电商或者物流行业中,每天有数以万计的订单需要拣货、打包和出库。打包的过程就是把订单中的商品用包材进行包裹,常见的打包方式有缠膜、装袋和装箱。袋子和箱子有不同的种类和型号,比如袋子有共挤膜袋、镀铝膜袋、塑料袋等。

更多

智能补货系统的设计思路

零售业和制造业,离不开供应链。搞供应链,离不开库存计划。简单来说,就是要回答好两个问题:什么时候进货?进货量是多少?下一个进货订单,从生产到运输和入库,需要一定的时间,短则数天,长则数月。

更多