为了账号安全,请及时绑定邮箱和手机立即绑定

如何绘制好用的软件架构图?

标签:
设计 架构

软件架构图对于任何参与软件构建的人来说都是重要的工具。它们帮助我们理解系统中不同部分是如何共同工作的。但有时,这些图可能会让人感到困惑或过于复杂,让人难以抓住重点。

这些年来,我见过各种各样的架构图。有些非常详细,而有些则相对简单。然而,许多图都存在一个问题——它们没有清晰地展示出系统中最重要的部分。

软件图表常见问题

当我刚开始做软件开发时,我接触到了各种不同类型的架构图。有的太复杂,有的则太简单。很多图都有一些常见的问题,使得它们很难理解。例如:

  1. 细节层次的混合:一个问题是一张图试图一次展示太多内容。例如,一张图可能开始时展示整个系统,然后突然深入到小细节。这样会使读者感到困惑,因为不同层次的细节被混在一起。保持一致性,这样图就容易理解了。
  2. 颜色和大小使用过于复杂:另一个问题是颜色和大小的使用过于复杂,用来表示不同的事物。虽然颜色可以帮助突出重要的部分,但如果使用不当,反而会增加阅读难度。用不同的大小来表示重要性可能会误导读者,尤其是当系统随时间变化时。
  3. 过于复杂的图:一些图试图包含系统的所有细节,使得这些图看起来杂乱无章。当图过于复杂时,很难提取最重要的信息。这不仅没有澄清架构,反而使理解更加困难。

我也犯过类似的错误。我使用过各种工具,比如白板、MS Paint、Photoshop、draw.io 和 canva 来画图。无论你使用哪种工具,很容易陷入追求外观完美的陷阱,而忽略了真正重要的东西——清楚地传达系统的架构。

找到更好的办法

于是,在犯了这些错误之后,我找到了一种更好的方法来创建清晰易懂且实用的软件架构图。这种方法叫作C4模型

在使用C4模型方法的过程中,你也需要一个很好的工具来画系统架构图。其中一个非常好的工具是cloudairy cloudchart

访问此链接: chart.cloudairy.com/signup

使用 Cloudairy Cloudchart 绘制图表

虽然 C4 模型有助于整理您的图表,但您还需要合适的工具来创建和更新这些图表。其中一个非常好的工具是 Cloudairy Cloudchart.

如何使用 Cloudairy Cloudchart 绘制 C4 图表 —— 绘制 C4 图表

使用Cloudairy Cloudchart创建C4模型图表的方法如下:

  1. 从模板入手Cloudairy Cloudchart ,提供了各种类型的图表模板。选择一个匹配你想要创建的图表类型的模板。

2. 添加元素:使用 Cloudairy Cloudchart 的拖放工具添加所需的元素,例如用户、系统和关系(用于上下文图),或容器(用于容器图)。

3. 自定义图表:您可以自定义颜色方案、标签和形状,让它既清晰又吸引人。

4. 实时共同工作:邀请您的团队与您一起工作在图表上。您可以留评论和建议,并确保每个人都同步。

5. 分享你的图表:一旦你的图表准备好了,你可以轻松地将其嵌入文档、演示文稿或项目管理软件中分享。

为什么不选择使用Cloudairy Cloudchart?

Cloudairy Cloudchart是一个在线工具,帮助用户轻松创建软件架构图。Cloudairy Cloudchart 包括以下功能:

  1. 易用性:它具有一个简单的拖放界面,因此你可以快速创建图表而无需花费大量时间学习如何使用该工具。
  2. 协作功能:它允许多人同时编辑一个图表。这对于需要一起头脑风暴、设计和更新架构的团队来说非常有用,特别是如果团队成员分布在不同地点。
  3. 模板和形状:它提供了许多模板和形状来帮助你创建各种类型的图表,包括C4模型所需的那些。
  4. 随时随地访问:由于它是基于云的,你可以从任何设备的任何地方访问你的图表。这对于远程团队特别有用。
  5. 版本控制:它会跟踪你的图表更改,因此你可以看到它们随时间如何演变,并在需要时返回到早期版本。
  6. 利用我们的AI驱动的流程图生成器将您的想法变为现实
  7. 用我们的3D图标将您的云基础设施生动呈现,支持AWS、Azure、GCP和Kubernetes
  8. 用各种便签轻松进行头脑风暴、规划和协作
  9. 丰富您的设计,搜索并直接将图像、图标和GIF导入您的图表
  10. 通过自定义颜色、图标和背景使Cloudchart真正成为您的专属工具
  11. 超过200个预制的云架构模板加速您的设计

AIRY云端的欢迎界面

什么是C4模型(或C4模型)?

C4模型是一种用于创建软件图的方法,将系统分解成不同层次的细节。这有助于人们从不同的角度把握系统,而不至于感到无所适从。

下面是对C4模型的简单说明:

  1. 上下文图(第一层): 这些图展示了整个系统以及它与其他系统之间的交互方式。这是整体视图,帮助所有相关人士,包括非技术人员,理解系统的主旨。示例:想象你在开发一个网上银行系统。上下文图会展示银行系统本身、使用该系统的客户以及其他与其交互的系统,例如电子邮件服务或大型主机银行系统。这让大家对系统的整体结构及其外部连接有一个清晰的理解。
  2. 容器图(第二层): 这些图更深入地展示了系统的主要部分,如网络应用程序、数据库或服务端。这个层次帮助技术人员了解系统的结构。示例:在在线银行系统中,一个容器图可能会展示客户使用的网络应用程序、存储账户信息的数据库以及处理交易的支付服务端。这有助于团队了解系统的组织方式以及各部分是如何配合的。
  3. 组件图(第三层): 这些图将系统的各个部分分解成更小的组件,展示这些组件如何协同工作。这个层次对于需要理解系统各部分连接方式的开发人员很有用。示例:在在线银行系统的网络应用程序容器中,组件图可能会展示不同的模块,如登录、账户管理和交易处理模块。这有助于开发人员理解网络应用程序的内部结构以及组件之间的互动。
  4. 代码图(第四层): 这些图是最详细的,展示了实际的代码结构或设计。这些图是给需要了解代码组织方式的开发人员用的。示例:代码图可能展示在线银行系统交易处理模块中使用的类和方法。这帮助开发人员了解代码的组织方式以及它如何支持整体架构。

C4模型使用简单的元素,例如使用方框和线条来表示系统的不同部分。它鼓励清晰的标签和简洁的布局,使图表易于理解并便于协作。

C4方案 (C4模型)

C4支持进化架构的理念——即架构可以根据需要变化和成长。C4模型允许你从一个简单的图表开始着手,随着系统的发展逐步增加更多细节。这使它非常适合采用敏捷方法的团队,在这种环境下事物总是在不断变化。

例如,想象你正在处理一个在线银行系统。一级上下文图(Level 1 context diagram)会展示整个系统的结构,包括它如何与用户和其他系统(如电子邮件或 mainframe 系统)连接。这能让每个人清楚地了解系统的整体结构。

在层级 2,你会创建一个图,展示系统的主要组成部分,比如 Web 应用、数据库和支付服务。这有助于团队了解系统的构建方式。

在第3级别,你会创建一个组件分解图,将每个主要部分拆解为更小的组件,例如网页应用程序的各种模块。这有助于开发人员理解所有内容是如何相互配合的。

最后,到第四级,你需要创建代码图,展示代码的具体细节,例如像是类或数据库表这样的。这个级别让开发人员可以看到代码是如何组织的以及它是如何支持系统的。

使用 PlantUML 来画图

虽然 C4 模型帮助你创建清晰的图表,但在系统变化时更新它们仍需要花费大量时间。这时,PlantUML 就能发挥作用了。

PlantUML 是一个工具,它允许您使用纯文本来绘制图表。您无需使用绘图程序,只需编写成代码即可绘制图表。这样做有几个好处:

  1. 版本控制: 因为 PlantUML 图表只是文本,您可以将它们保存在像 GIT 这样的版本控制系统中。这使得跟踪更改和与他人协作变得容易。
  2. 协作: PlantUML 的文本格式使得与您的团队共享和编辑图表变得容易。您可以直接在代码里审阅和更新图表。
  3. 自动化: 您可以通过将 PlantUML 集成到开发流水线中来自动化创建和更新图表的过程。例如,您可以设置一个 Jenkins 作业,每当代码变更时,都自动生成最新的图表。
  4. 集成: PlantUML 与流行的代码编辑器(如 Visual Studio Code 和 IntelliJ IDEA)配合得很好,因此您可以在不离开编码环境的情况下创建和更新图表。

这里展示了一个如何使用PlantUML为网上银行系统创建一级系统环境图的例子。

    [@startuml](http://twitter.com/startuml)  
    !include C4_Context.pumlLAYOUT_WITH_LEGEND()标题:电子商务平台系统上下文图Person(customer, "在线购物者", "通过电子商务平台购买商品的顾客。")  
    Person(admin, "系统管理员", "管理平台并确保其平稳运行和高效运作。")  
    System(ecommerce_system, "电子商务平台", "允许顾客浏览商品、下单和支付。")  
    System_Ext(payment_gateway, "在线支付网关", "处理在线支付。")  
    System_Ext(warehouse_system, "仓储管理系统", "管理库存和配送流程。")  
    Rel(customer, ecommerce_system, "浏览并购买商品")  
    Rel(admin, ecommerce_system, "管理和监控平台的运行")  
    Rel(ecommerce_system, payment_gateway, "处理在线支付")  
    Rel(ecommerce_system, warehouse_system, "发送订单详情和配送信息")  
    [@enduml](http://twitter.com/enduml)

在这个例子中,图表示的是电商平台与在线买家、系统管理员、支付网关(如支付宝或微信支付)和仓库管理系统(如WMS系统)间的互动。它展示了系统中各实体间的联系。

其他图表及工具

PlantUML 还允许你创建其他类型的图表,例如系统架构图、动态图(如活动图)和部署图(Deployment Diagrams)。这些图表可以帮助你更好地理解系统的更复杂的部分。

这些插件工具可以让你直接在开发环境中创建和查看图示。如果你喜欢的话,甚至可以使用 Docker 来搭建一个本地的 PlantUML 服务。

docker run -d -p 8080:8080 plantuml/plantuml-server:tomcat  # 运行一个后台的PlantUML服务 (run a background PlantUML server)

这给你更多的掌控,并确保你的图表不依赖外部服务的支持。

使用PlantUML遇到的挑战:

虽然PlantUML是个不错的工具,但它也存在一些难题。例如,定位箭头和框这样的元素可能比较麻烦,尤其是在复杂的图表中。不同于图形工具中直接拖放,使用PlantUML时,你得通过代码来调整布局,这可能需要一点时间。

另一个不便之处是,PlantUML 需要一个服务器组件来生成图表,这可能没有一些可以直接在浏览器中工作的工具方便。不过,版本控制、协作和自动化的优势通常比这些挑战更有利。

软件架构图是理解系统如何运作并进行沟通的强大工具。但要发挥其效力,这些图需要清晰、一致且易于更新,以符合这些需求。C4 模型提供了一种简单而强大的方法来创建符合这些需求的图。

通过使用工具如PlantUML,你可以更轻松地制作、更新和分享你的图表,确保它们随着系统的发展依然有用。选用合适的方法和工具,你可以制作帮助团队更好地理解系统并更高效工作的图。

所以,愿你的图表清晰易懂,永远保持最新。使用"cloudairy cloudchart"和PlantUML,你将拥有所有创建优秀软件架构图所需的工具。

Cloudairy 云图表注册链接: https://chart.cloudairy.com/signup

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消