面向软件架构师的 11 个最佳开源工具

整理了一份最有用和最容易使用的工具列表。倾向于使用那些有助于可视化、记录和构建架构的工具。

1. Graphviz
Graphviz是我们列表中的第一个工具,因为有几种建模和图表工具以某种方式扩展和使用它。它是一种提供基于代码的方法来生成图形建模图的软件。

注意:本文中将交替使用基于文本和基于代码这两个词。它们的意思相同 - 使用某种形式的语法来绘制图表和模型。另一个需要注意的是,基于代码的图表生成可以轻松添加版本控制并将 CI/CD 集成到图表/模型创建过程中。

为什么架构师应该关心图形可视化?许多应用程序(尤其是大型应用程序)与许多依赖项、微服务、API、第三方集成等高度互连。为了清楚地了解这些互连及其关系,架构师需要以可视化的方式映射它们。Graphviz 提供了一种定义和呈现这些图形的有效方法。

Graphviz 的主要功能

  • 它使用DOT 语言,这是一种简单但功能强大的生成图形的语法。
  • Graphviz 具有命令行界面实用程序,允许用户快速将 DOT 脚本转换为图表。这允许您使用脚本自动执行图表生成工作流程。
  • Graphviz 提供多种布局引擎,使用专门的算法来构造图形。这让架构师可以选择在图形呈现中使用分层、径向或力导向布局。
  • 架构师可以使用其可自定义的布局功能来控制节点定位、边缘连接和层次结构。这可确保您生成的图表适合您的特定需求。
  • 它支持多种输出格式,例如 PNG、SVG、PDF 和 JSON。这些选项可让您轻松将 Graphviz 生成的视觉效果集成到 Web 应用程序和文档中。
我认为 Graphviz 是一种可扩展的工具,可用作其他建模工具的基础组件。但对于图形连接,我发现使用基于图表的工具和拖放功能来绘制它们很容易。


2. PlantUML
继 Graphviz 之后,我们列表中的下一个工具是PlantUML。这是一个基于浏览器的图表工具,使架构师能够使用简单的基于文本的语法创建图表。

PlantUML的主要特点

  • 软件架构师可以生成:
    • UML 图,如序列图、用例图、类图、部署图等。
    • 非 UML 图,如 ER 图、甘特图、EBNF 树等。
  • 您可以通过添加超链接和工具提示来创建交互式图表以提供更多背景信息。
  • PlantUML 允许使用 Unicode、图标和富文本格式来创建视觉增强的图表,以提高可读性和演示效果。
  • 在底层,PlantUML 使用各种渲染引擎来生成图表,为您提供多种选择。其中一些引擎包括 Graphviz(前面介绍过)、Smetana(基于 Graphviz)、Puma 等。
  • 导出图表也很灵活,因为它可以输出 PNG、SVG、LaTeX 甚至 ASCII 艺术。
为了获得更好的图表,我建议更改渲染引擎,因为有时不同的引擎可能会渲染略有不同的图表。

3.D2
我们列表中的下一个工具是D2 。声明式图表 (D2) 是由[url=https://github.com/terrastruct]Terrastruct[/url]创建的基于代码的图表工具。它通过允许您执行以下操作来简化创建和维护图表的过程:

  • 通过模块化图表来组织大型图表,这类似于将代码分解为更小、更易于管理的组件。您还可以使用其容器功能对图表进行分组,以提高复杂可视化中的可维护性和可重用性。
  • 使用glob可以轻松地在图表中进行更改。
  • 使用工具提示和超链接为图表提供额外的背景和交互性。
  • 为您的图表添加动画。
  • 使用其在线游乐场快速创建和共享图表,无需安装任何东西。
  • 使用几乎任何自然语言来创建图表。
  • 直接从命令行轻松导出 SVG、PNG 和 PDF 文件。
我喜欢 D2 文档的深度和随之而来的用户友好性。渲染的图表也很棒,精细而流畅。然而,它不是像软件那样的独立工具,因为它是一种语言。除非你使用它的操场或 CLI,否则你需要集成它才能直观。

4. Gaphor
Gaphor是一款符合 UML 2 的建模软件,它实现了 UML、SysMLRAAML标准,并支持C4 模型,使其可用于不同的架构需求。
关键功能

  • 它支持多种建模标准。
  • 添加到模型中的每个元素都以图表的形式直观呈现,消除了隐藏属性或侧面板。这使您的模型易于理解和导航。
  • 您可以使用插件来扩展其功能,以实现代码生成、文档导出和其他集成。
  • 使用其树形视图导航功能,快速定位和管理模型中的不同元素。此功能简化了复杂图表和大型项目的处理。
它更适合那些将标准合规性放在首位的人。此外,由于它是一款独立软件,维护人员的更新不会像基于浏览器的工具那样即时,因为他们需要下载才能获得最新版本。

5.Mermaid
Mermaid是一款基于浏览器的图表工具,可将基于文本的定义转换为动态视觉效果。它允许您使用类似 Markdown 的语法编写图表,并可即时动态地呈现。
其主要特点包括:

  • 一种易于使用的语法,就像编写 Markdown 一样,可以轻松创建和修改视觉效果,而无需复杂的工具。
  • 动态渲染,即您可以使用实时编辑器动态修改图表,并在编辑时立即看到更新。
  • 多图表支持允许架构师创建流程图、序列图、状态图等。
  • 许多可用的集成可与 GitHub、GitLab、Notion、Obsidian 和其他流行工具配合使用。
对于那些想要一款在集成方面表现出色的工具的架构师来说,Mermaid 是更好的选择。具有 JavaScript 背景的人也会喜欢它。

6. Archi
随着系统架构变得越来越复杂,像 TOGAF 这样的企业架构框架和像ArchiMate这样的建模语言变得必不可少。但是,架构师如何在没有昂贵的专有工具的情况下创建清晰、结构化的模型?我发现的一个开源解决方案是Archi。这是一款 ArchiMate 建模软件,专为各种规模的企业架构师和组织而设计,无需专有软件的高昂成本。

Archi 的一些功能包括:

  • Magic Connector - 这项功能可自动正确连接模型元素。这有助于减少手动工作量并提高准确性。
  • ArchiMate Views & Viewpoints 用于将模型与利益相关者的观点相结合,有助于确保不同目标受众的清晰度和相关性。
  • 提示视图可对您的模型元素和关系提供反馈,帮助您应用正确的建模约定和最佳实践。
  • 显示关系的可视化器提供了复杂模型连接的清晰、结构化的视图。
  • 在建立模型之前,可以使用 Sketch View 和 Canvas Modelling 进行头脑风暴、设计和构建想法。
对于 Linux 用户,您可能会发现使用此软件时会出现一些用户界面问题,如下载页面中指出的那样。要更新它,您可能还需要卸载您拥有的版本 - 我不确定这是否适合您。用户指南也是 PDF 文件,这意味着如果架构师下载了 PDF 文件,他们可能会遵循过时的指南。

7. Modelio
另一个以企业架构建模为傲的工具是Modelio。它支持多种行业标准,使其成为从软件设计到企业架构等不同领域工作的绝佳选择。
借助 Modelio,

架构师可以:

  • 由于支持 UML、BPMN、ArchiMate 和 TOGAF 标准,因此可以对业务流程和企业架构进行建模。
  • 使用其 XMI 导入/导出功能轻松地在不同工具之间交换 UML2 模型
  • 使用 HTML 发布器模块以 HTML 形式发布和共享模型。
  • 利用其可扩展性添加自定义方法和技术,使他们能够根据特定的项目需求修改工具。
  • 利用 Jython 脚本自动执行重复任务并提高生产力。
文档、网站和 GitHub 代码都没有定期更新,所以我推断它不是一个可以满足企业架构需求的工具。

8. Diagrams.net(以前称为 Draw.io)
有时,您可能不需要严格的 UML 建模工具。像Diagrams.net这样简单但功能强大的图表工具是一个不错的选择。它与云平台、流行应用程序和版本控制系统集成。它还提供安全第一的设计和高级协作功能。

虽然此工具非常适合 UML 图表,但它的功能不止于此。您还可以创建其他图表类型,如流程图、思维导图等。

它的一些功能包括:

  • 多种存储选择,让用户根据自己的需求安全、高效地工作。
  • 丰富的模板库,可访问 AWS、Azure、GCP、IBM 等平台的各种预构建模板,实现快速系统建模。
  • 使用自动布局和格式化功能自动排列元素,提高可读性。
  • 协作和集成功能可用于与团队合作并将图表集成到您最喜欢的生产力工具中。使用共享光标功能,您可以在处理同一张图表时看到其他团队成员的光标和实时编辑,从而确保团队合作顺畅。
协作功能仅在生产版本中可用,而不在 GitHub 版本中,正如项目的README中指出的那样。
  • 它完全可定制,甚至可嵌入定制软件中以获得完全集成的体验。
  • 最后,由于其 PlantUML 和 Mermaid 支持,您可以使用基于代码的图表自动创建图表。
此工具功能丰富,是那些想在图表工作流程中试用多种功能的人的最佳选择。我最喜欢这个工具 。

9. Excalidraw
Excalidraw是我们列表中的另一个工具。它是一款轻量级的基于浏览器的白板工具,架构师可以使用它来绘制和集思广益建模想法。它的风格给人一种手绘草图的印象。选择 Excalidraw 的一些原因包括:

  • 支持离线工作。它还会自动将工作保存到浏览器,这样您可以在关闭浏览器后从当前位置继续工作。
  • 由于端到端加密功能,数据交换变得安全。
  • 多用户编辑支持团队协作,由于之前强调的加密功能,该功能是安全的。
  • 图像上传功能允许您重复使用图像中的图表。
  • 预先创建的形状和组件,可轻松创建图表。
它虽然入门比较简单但无法生成可靠的架构图。

10. tldraw
tldraw 的使用方式与 Excalidraw 类似,两者具有相同的功能,因此我们不会讨论 tldraw 的功能。但是,tldraw 的一个功能是其SDK。开发人员可以使用 SDK 将白板集成到应用程序中。由于本文面向软件架构师,因此我们不会深入讨论 SDK。

我对它的评价与对 Excalidraw 的评价相同 — — 它只应该用于集思广益。

11. Cerbos PDP
排名第 11 位的是 Cerbos 策略决策点 (PDP)。Cerbos PDP与其他工具的不同之处在于,虽然所有其他工具都专注于图表和可视化,但 Cerbos PDP 却有不同的用途。它提供了一个可以在几分钟内启动并运行的开源授权解决方案。我认为,在设计软件架构时,拥有安全的访问控制与定义系统组件和数据流一样重要。

因此,使用 Cerbos PDP,您可以:

  • 从单一位置定义和管理授权策略,确保整个系统的策略更新的一致性。
  • 根据用户角色、属性和其他上下文因素实施细粒度的访问控制,确保根据特定用户情况调整访问权限。
  • 在提出访问请求时立即评估并执行策略,确保安全性而不影响系统性能。
  • 使用您选择的身份验证服务提供商,因为 Cerbos PDP 支持几乎所有提供商。