乐趣区

关于java:怎么画出好的架构图架构师必备

作者:代码的色调 \
链接:https://juejin.cn/post/706266…

1. 前言

你是否对大厂展现的形形色色,花花绿绿的架构设计图所深深吸引,当咱们想用几张图来介绍下业务零碎,是不是对着画布不知从何下手?作为技术扛把子的筒子们是不是须要一张图来形容零碎,让零碎各个参与方都能看的明确?

如果有这样的困惑,本文将介绍一些画图的方法论,让技术图纸更加清晰。

2. 架构的定义

  • 零碎架构是概念的体现,是对物 / 信息的性能与模式元素之间的对应状况所做的调配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义;
  • 架构就是对系统中的实体以及实体之间的关系所进行的形象形容,是一系列的决策;
  • 架构是构造和愿景.

在 TOGAF 企业架构实践中,架构是从公司策略层面,自顶向下的细化的一部分,从策略 => 业务架构 => 利用 / 数据 / 技术架构,当然老板层关注的是策略与业务架构,咱们搬砖的须要聚焦到利用 / 数据 / 技术架构这一层。

  • 业务架构: 由业务架构师负责,也能够称为业务领域专家、行业专家,业务架构属于顶层设计,其对业务的定义和划分会影响组织架构和技术架构;
  • 利用架构: 由利用架构师负责,须要依据业务场景须要,设计利用的层次结构,制订利用标准、定义接口和数据交互协定等。并尽量将利用的复杂度管制在一个能够承受的程度,从而在疾速的撑持业务倒退的同时,在保证系统的可用性和可维护性的同时,确保利用满足非功能属性的要求如性能、平安、稳定性等。
  • 技术架构: 形容了须要哪些服务;抉择哪些技术组件来实现技术服务;技术服务以及组件之间的交互关系;
  • 数据架构: 形容了数据模型、散布、数据的流向、数据的生命周期、数据的治理等关系;

3. 架构图的分类

零碎架构图是为了形象的示意软件系统的整体轮廓和各个组件之间的互相关系和束缚边界,以及软件系统的物理部署和软件系统的演进方向的整体视图。好的架构图能够让干系人了解、遵循架构决策,就须要把架构信息传递进来。那么,画架构图是为了:解决沟通阻碍 / 达成共识 / 缩小歧义。比拟风行的是 4 + 1 视图和 C4 视图。

3.1 4+ 1 视图

3.1.1 场景视图

用于形容零碎的参与者与性能用例间的关系, 反映零碎的最终需要和交互设计,通常由用例图示意;

3.1.2 逻辑视图

用于形容系统软件性能拆解后的组件关系,组件束缚和边界,反映零碎整体组成与零碎如何构建的过程,通常由 UML 的组件图和类图来示意。

3.1.3 物理视图

用于形容系统软件到物理硬件的映射关系, 反映出零碎的组件是如何部署到一组可计算机器节点上,用于领导软件系统的部署施行过程。

3.1.4 解决流程视图

用于形容系统软件组件之间的通信时序, 数据的输入输出, 反映零碎的性能流程与数据流程, 通常由时序图和流程图示意。

3.1.5 开发视图

开发视图用于形容零碎的模块划分和组成, 以及细化到外部包的组成设计, 服务于开发人员, 反映零碎开发施行过程。

5 种架构视图从不同角度示意一个软件系统的不同特色,组合到一起作为架构蓝图形容零碎架构。

3.2 C4 视图

上面的案例来自 C4 官网,而后加上了一些笔者的了解。

C4 模型应用容器(应用程序、数据存储、微服务等)、组件和代码来形容一个软件系统的动态构造。这几种图比拟容易画,也给出了画图要点,但最要害的是,咱们认为,它明确指出了每种图可能的受众以及意义。

3.2.1 语境图 (System Context Diagram)

用于形容要咱们要构建的零碎是什么,用户是谁,须要如何融入已有的 IT 环境。这个图的受众能够是开发团队的内部人员、内部的技术或非技术人员。

3.2.2 容器图 (Container Diagram)

容器图是把语境图里待建设的零碎做了一个开展形容,次要受众是团队外部或内部的开发人员或运维人员,次要用来形容软件系统的整体状态,体现了高层次的技术决策与选型,零碎中的职责是如何散布的,容器间是如何交互的。

3.2.3 组件图 (Component Diagram)

组件图是把某个容器进行开展,形容其外部的模块,次要是给外部开发人员看的,怎么去做代码的组织和构建,形容了零碎由哪些组件 / 服务组成,了组件之间的关系和依赖,为软件开发如何合成交付提供了框架。

4. 怎么画好架构图

下面的分类是前人的经验总结,图也是从网上摘来的,那么这些图画的好不好呢?是不是咱们要依葫芦画瓢去画这样一些图?先不去管这些图好不好,咱们通过对这些图的分类以及作用,思考了一下,总结下来,咱们认为,明确这两点之后,从受众角度来说,一个好的架构图是不须要解释的,它应该是自描述的,并且要具备一致性和足够的准确性,可能与代码相响应。

4.1 视图的受众

在画出一个好的架构图之前, 首先应该要明确其受众,再想分明要给他们传递什么信息 ,所以,不要为了画一个物理视图去画物理视图,为了画一个逻辑视图去画逻辑视图,而应该依据受众的不同,传递的信息的不同,用图精确地表达出来,最初的图可能就是在这样一些分类里。那么,画出的图好不好的一个间接规范就是:受众有没有精确接管到想传递的信息。

4.2 视图的元素辨别

能够看到架构视图是由方框和线条等元素形成,要利用形态、色彩、线条变动等辨别元素的含意,防止混同。架构是一项简单的工作,只应用单个图表来示意架构很容易造成莫名其妙的语义凌乱。

让咱们一起画出好的架构图!

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版