首页 > 其他分享 >什么是好的架构图?

什么是好的架构图?

时间:2024-08-24 21:24:45浏览次数:12  
标签:架构 什么 系统 视图 架构图 模型 描述

1.什么是好的架构图?

  • 简洁抽象:好的架构图一定是简洁的,表现上简洁有力,能够一眼看上去就经纬分明。有一定的抽象度的,如果一个架构图存在各种飞线环线,那一定是抽象的不够。抽象才有意义,架构里如果存在各种细节,那就是堆砌。
  • 可解释:好的架构图一定能够用来解释当前系统的现状和行为。
  • 指导行动:好的架构图一定是可以指导行为的,指导行动才是架构图的最大价值。能够预测未来,指导行动。对于某个领域架构图,根据架构图都不知道把某个模块放哪里,那就是失败的。好的架构图应该是对于一个没有经验的人,都能根据架构来做模块划分。
  • 可进化:对应于系统的动态性,架构也会随着时间而进化的。不能进化的架构就像花瓶,看着很美,一碰就碎。

2.架构描述 

        对架构的呈现业界已经存在不同的框架。有4+1视图、C4 模型、TOGAF 提出的企业架构模型等。不管哪种模型,其核心思想都是从不同的维度对软件架构进行描述。下面着重从这几个方面来简述。 

2.1 4+1模式

        4+1视图由 Philippe Kruchten 提出的对软件工程逻辑架构的描述,目前已经成为事实上的软件结构标准,分别以终端使用者、开发者、系统工程师、软件经理等不同的视角对软件进行描述。如下图所示:

  • 逻辑视图(Logic View):终端使用者的视角,从功能角度来描述不同功能组件的层次关系。
  • 开发视图(Development View):开发者视角下,从实现层面描述不同代码的包、类、库的构成关系。
  • 过程视图(Process View):不同组件之间的行为关系,通常以时序图的形式来表示,有一定的时序延展性。
  • 物理视图(Physical View):部署视图,系统所依托的物理视图。
  • 场景视图(Scenarios):系统所涉及的不同对象之间的关系。通常以用例图的形式来呈现。

        基于这5个视角,可以衍生出5种架构模型。场景、功能、实现、过程、部署,一层层的抽象。4+1架构视图,构建了一个观察了解系统框架。它告诉我们可以从逻辑视图、开发视图、过程视图、物理视图、场景视图这几个层面来对系统进行描述、观察、理解。对于一个系统,这5个视角已经是很完备了。值得注意的是4+1更大的价值是提供了一套分析系统的框架,实际上怎么呈现不同的团队可能有不同的形式。对于一个系统从不同的视角看会得到不同的理解,横看成岭侧成峰。

2.2 C4模型

        C4 模型是由 Simon Brown 在2006年至2011年之间创建,在4+1模型的基础上建立( https://c4model.com/ ),实际上就是以下4个单词的缩写:

  • 上下文 Context:描述的系统与周边系统、人的关系。重点是该系统与外界的关系。这里的外界包含人、以及其他的系统。
  • 容器 Containers:容器是一个功能的单位,是从技术层面来描述,可以是一个服务,也可以是一个技术组件或者一个功能模块。例如一个基金系统会包含交易服务、订单服务、商品服务等。
  • 组件 Components:组件是容器的的组成,组件是对容器的放大,例如商品服务里包含 sku 管理、行情数据、衍生指标等。
  • 代码 Code:这一层次是代码级别,包含接口、类、对象的继承、组合、包含等。

        该模型是对一个系统从宏观到微观逐级展开来描述,犹如拿着放大镜从太空看地球一样。第一层看到的是地球与其星球的环绕、第二层是看到地球上的山川海河,第三层看到的是不同的国家城市,第四层看到的是不同的房子家庭。

        C4 模型基于4+1模型,但是也有些差异。如果说4+1重点是横看成岭侧成峰。那 C4 模型则是一窥到底的放大镜。C4 模型告诉我们,不同抽象层次的关注点、挑战点、问题域都是不同的,站在不同的层次就要思考对应的事情。关注点一旦与该层次不匹配就会出现逻辑错乱问题。能分清楚问题域在何种层次其实已经把问题解决一大半了。

        有时候,在低层次很难解的问题,上升一个层次就迎刃而解了。有时候,在高层次看不清的问题, 降低一个层次就一目了然了。高层次是低一层的抽象,低层次是高一层的具化。高手应该是能够识别不同的抽象层次,并且可以游刃有余地在不同抽象层次之间穿梭。处于高层次时不应该被低层次的具体牵绊,处于低层次的时候也不应该好高骛远。

2.3 TOGAF-4A 架构

  • 业务架构:业务战略,治理,组织和关键业务流程。从企业视角来看,重在价值、信息、协作,关联多部门。
  • 应用架构:要部署的各个应用程序的蓝图,其交互以及与组织核心业务流程的关系。
  • 数据架构:一个组织的逻辑和物理数据资产和数据管理资源的结构。
  • 技术架构:支持部署业务,数据和应用程序服务所需的逻辑软件和硬件功能。这包括IT基础设施,中间件,网络,通信,处理和标准。

        TOGAF 认为架构的目的是为了帮助企业实现如下能力:异构到同构(塑造同构 IT)、事后到事先(塑造规划 IT)、离散到统一(塑造统一 IT)、无序到有序(塑造有序 IT)。

2.4 实际模型-互联网模型

        实际上,相对于传统的软件系统,互联网行业发展比较快,业务存活周期比较短,就形成了互联网行业特定的架构描述方式。更多是以业务架构、技术架构、部署架构三种形式呈现。

  • 业务架构:从业务角度描述系统承载的功能集合、领域边界、各组成部分的逻辑关系。区别于技术架构,业务架构图里避免出现技术类的术语,如 DB、MySQL、CMQ、同步、异步、并发等。
  • 技术架构:从技术角度描述系统各组成部件之间的交互关系,技术架构体现的要具有技术特色,例如同步、异步、消息等。
  • 部署架构:从物理角度描述系统的部署分布。

标签:架构,什么,系统,视图,架构图,模型,描述
From: https://blog.csdn.net/huaqianzkh/article/details/141504976

相关文章

  • [操作系统]访问一个逻辑地址发生了什么
    当CPU想要访问一个逻辑地址的时候,我们需要做两个步骤,地址转换和内存访问地址转换逻辑地址是程序内部使用的地址,并非真正的物理地址。从逻辑地址到物理地址的映射,由页表来完成,页表的内容包括,逻辑页号,物理页号,有效位,有效位表示这一页是否在内存中。页表存放在内存中,如果需要频繁......
  • 一个专业的功能测试需要会什么知识?
    作者:博为峰51testing链接:https://www.zhihu.com/question/529397667/answer/2489317623来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。①测试的理论基础--------初级不管你以前有没有学过计算机,有没有计算机基础,学习测试的理论都是首要的,不管你......
  • 加密指定的文件类型是什么?有哪些?「保姆式图文指南」
    文件安全是企业和个人不可忽视的重要议题。加密指定的文件类型,作为保护敏感数据的有效手段,越来越受到人们的关注。本文将为您提供一份详尽的“保姆式图文指南”,帮助您了解并实践文件加密的精髓。一、什么是加密指定的文件类型?加密指定的文件类型,是指针对具有特定扩展名或......
  • 云 VS 边缘计算,关系与区别是什么?
    云计算和边缘计算的区别是什么?云是一种IT环境,可以抽象、汇集和共享整个网络中的IT资源。边缘是网络边缘的计算位置,以及这些物理位置上的硬件和软件。是在云中运行工作负载,而边缘计算是在边缘设备上运行工作负载。边缘是云的一部分吗?某种程度上是。边缘设备可以是云的组......
  • 风力发电机组的防雷装置工作原理是什么
    风力发电机组的防雷装置工作原理主要包括以下几点:1.避雷针:安装在风力发电机组的最高点,如叶片、机舱或塔顶,作为雷电的接闪器。当雷电云层接近时,避雷针能吸引雷电并将其引向自身,然后通过引下线和接地装置将雷电流安全地导入大地,从而保护风力发电机组的其他部分免受雷击。2.引......
  • IP Transit是什么意思
    IPTransit:以BGP为桥梁,构建全球互联网高速通道在当今这个信息爆炸的时代,稳定、高速、灵活的互联网连接已成为企业成功的关键要素之一。IPTransit服务,凭借其卓越的BGP直连技术与中国联通骨干网络的深度融合,为企业客户量身定制了一套全方位的互联网穿透解决方案,不仅确保了数据传输......
  • Java开发-面试题-0019-static 关键字平时用过吗,怎么用的,有什么好处,原理是什么
    更多内容欢迎关注我(持续更新中,欢迎Star✨)Github:CodeZeng1998/Java-Developer-Work-Note(技术)微信公众号:CodeZeng1998(生活)微信公众号:好锅其他平台:CodeZeng1998、好锅static关键字平时用过吗,怎么用的,有什么好处,原理是什么static修饰范围变量方法代码快内部类用法......
  • MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?
    问题我们在设计表结构的时候,设计规范里面有一条如下规则:对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。为什么这么规定,主要基于两个方面基于存储空间的考虑基于性能的考虑网上说Varchar(50)和varchar(500)存储空间上是一样的,真的是这样吗?基于性能......
  • Android Kotlin优化代码整洁:with、applay以及run是什么,作用,区别
    目录为什么需要使用with、applay以及runwith、applay以及run是什么、作用以及三者区别一、为什么需要使用with、applay以及run我们在开发项目的过程当中,不可避免,一个界面的内容会有很多,如下initivew方法,会有Recyclerview的初始化,长按以及触摸事件设置,以及生命周期的注册,主......
  • 什么是大模型?一文读懂大模型的基本概念_看完这篇就足够了~
    大模型是指具有大规模参数和复杂计算结构的机器学习模型。本文从大模型的基本概念出发,对大模型领域容易混淆的相关概念进行区分,并就大模型的发展历程、特点和分类、泛化与微调进行了详细解读,供大家在了解大模型基本知识的过程中起到一定参考作用。本文目录如下:·大模型的......