extjs实现组织架构图_如何画好一张架构图?

c77e3236977546a7e8bc56cfd60d5bd4.png

简介: 架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。较长,同学们可收藏后再看。

b402f913eb753f2d97920e557a42b06e.png

什么是架构图?

如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义,如果我们把这个问题进行拆分(如下图)理解起来就会容易一点。

架构图 = 架构 + 图

按照这个等式,我们可以把问题转换:

  • 架构是什么?
  • 图是什么?

图是什么?这个比较容易回答,图是一种信息的表达方式,所以架构图,即表达“架构”的图,也就是一种架构的表达方式。也即:

架构图 = 架构的表达 = 表达架构的图

按照这种思路我们需要回答:

  • 什么是架构?要表达的到底是什么?
  • 如何画好一张架构图?

接下来的内容基本上就是按照这两个维度来做分析。

什么是架构?要表达的到底是什么?

Linus 03 年在聊到拆分和集成时有一个很好的描述:

I claim that you want to start communicating between independent modules no sooner than you absolutely HAVE to, and that you should avoid splitting things up until you really need to, because that communication complexity often swamps the complexity of the actual pieces involved in it.(让我们认识到一种现象,把复杂系统拆分成模块,似乎并没有降低整个系统的复杂度。它降低的只是子系统的复杂度。而整个系统的复杂度,反而会由于拆分后的模块之间,不得不进行交互,变得更加复杂。)

我理解这里描述的系统拆分就是架构的过程,基本出发点是为了效率,通过架构的合理拆分(无论是空间还是时间上的拆分),最终目的让效率最大化。那到底什么是架构,其实没有完全统一且明确的定义,如下三个定义可以参考。

在百度百科上的定义:

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,⽤于指导⼤型软件系统各个方面的设计。

在 Wikipedia 上的定义:

Architecture is both the process and the product of planning, designing, and constructing buildings or any other structures.

ISO/IEC 42010:20072 中对架构有如下定义:

The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. 

cf9679d5ebe4e220dd47652b9328961c.png

这三个定义也是见仁见智,但是我们基本可以得出:架构体现的是整体结构和组件之间的关系。

架构的本质

这里引用三个观点来探讨架构的本质:

  • 架构的本质是为了管理复杂性。
  • 架构的本质就是对系统进行有序化重构,不断减少系统的“熵”,使系统不断进化。
  • 架构的本质就是对系统进行有序化重构,以符合当前业务的发展,并可以快速扩展。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值