画出一个nice的架构图是码农进阶的开始。

简介:大家好,我是枫哥🌟一线互联网的IT民工、📝资深面试官、🌹Java跳蚤网课堂创始人。拥有多年一线研发经验,曾就职过科大讯飞、美团网、平安等公司。在上海有自己小伙伴组建的副业团队,目前业余时间专注Java技术分享,春招/秋招/社招/跳槽,一对一学习辅助,项目接活开发。

🎉🎉扫码左侧二维码,加入群聊,一起学习,一起进步!

🌟 欢迎关注 🌟 收藏 🌹留言 🌹

🍊🍊:文末送福利

目录

1.前言

2.架构的定义

 3.架构图的分类

3.1 4+1视图

 3.1.2 逻辑视图

 3.1.3 物理视图

 3.1.4 处理流程视图

 3.1.5 开发视图

3.2 C4视图

3.2.1 语境图(System Context Diagram)

 3.2.2 容器图(Container Diagram)

 3.2.3 组件图(Component Diagram)

 4.怎么画好架构图

4.1 视图的受众

4.2 视图的元素区分


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 开发视图

开发视图用于描述系统的模块划分和组成,并细化到内包的组成设计,为开发人员服务,反映系统开发的实施过程。

 五种架构视图从不同的角度表示软件系统的不同特征,并结合起来作为架构蓝图来描述系统架构。

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 视图的元素区分

可以看出,架构视图是由框架和线条等元素组成的,应使用形状、颜色、线条变化等来区分元素的含义,以避免混淆。架构是一项复杂的工作,只使用单个图表来表示架构很容易造成莫名其妙的语义混乱。

🌹 🌹感谢大家,坚持看完,既然选择了这条路,那就一起加油,一起学习!如果需要学习资源,实战面试资料,项目资源。关注公众号:IT枫斗者,🌟根据关键字领取对应的资料福利🌟!咨询解决问题,公众号私聊枫哥,备注来意。

🍊回复:java全套学习资源

🍊回复:面试资料

🍊回复:枫哥简历

🍊回复:程序员表白神器               

(从此告别程序员单身狗!)

🍊回复:程序员兼职网站

🍊回复:枫哥666                             

( 获取66套项目实战资料,大厂面试视频)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值