ArchSteer

大多数团队都有架构图。少有团队信任自己的架构图。

代码库是唯一完全最新的系统记录,但逐文件阅读
它并不是查看边界、依赖方向、数据
访问以及系统形态随时间变化的良好方式。

因此本周我正在进行一个故意简单的实验:

对一个仓库运行架构X光扫描,并发现一件你不知道的事情。

挑战

你需要Python 3.10或更高版本:

pipx install archsteer
cd your-repo
archsteer xray

Enter fullscreen mode Exit fullscreen mode

打开 .archsteer/report.html,然后寻找一个惊喜:

  • 跨越你认为干净边界的依赖;
  • 拥有远超其名称暗示的系统模块;
  • 在意外层级的数据访问;
  • 无人记得的外部调用站点;
  • 仍存在于当前架构中的遗留架构;或
  • 本应产生ADR的结构变化。

分享发现、如果模型错误则打开issue,或将结果
保密。这三种结果都有用。

功能与限制

ArchSteer静态读取仓库并生成代码派生的模型、
实时架构文档、图表、演进源以及针对边界变更的草稿ADR。
它本地运行,不执行目标
代码,不上传仓库,且不需要账户。

该模型是启发式的。它应成为架构师可以整理的
始终最新的起点,而不是系统以某种方式运行的正式证明。自信错误的边界正是我希望
报告的那类结果。

当前语言支持涵盖Python、TypeScript/JavaScript、Java Spring和
Salesforce Apex。

为什么在编码代理时代更重要

编码代理从编辑周围的文件中学习本地模式。在
半迁移的代码库中,遗留示例多于目标示例,因此代理
可能生成完全合理的代码,将架构推回。

准确的当前模型使控制循环成为可能:

  1. 推导代码实际实现的架构;
  2. 声明一个目标不变量;
  3. 将相关不变量放入编码代理的文件范围上下文;
  4. 检查生成的代码;以及
  5. 仅阻止新增违规,因此交付继续而债务逐步减少。

挑战从第一步开始,因为它应该在团队编写任何规则之前提供价值。

参与

运行:

pipx install archsteer && archsteer xray

Enter fullscreen mode Exit fullscreen mode

然后分享一个令人惊讶的发现,并链接到
GitHub上的ArchSteer,或提交
你能找到的最具体的例子,说明模型在你的架构上出了错。
ArchSteer是免费且采用MIT许可的。


最初发布于 archsteer.com。我构建ArchSteer并欢迎对模型的直率反馈。