大多数团队都有架构图。少有团队信任自己的架构图。
代码库是唯一完全最新的系统记录,但逐文件阅读
它并不是查看边界、依赖方向、数据
访问以及系统形态随时间变化的良好方式。
因此本周我正在进行一个故意简单的实验:
对一个仓库运行架构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。
为什么在编码代理时代更重要
编码代理从编辑周围的文件中学习本地模式。在
半迁移的代码库中,遗留示例多于目标示例,因此代理
可能生成完全合理的代码,将架构推回。
准确的当前模型使控制循环成为可能:
- 推导代码实际实现的架构;
- 声明一个目标不变量;
- 将相关不变量放入编码代理的文件范围上下文;
- 检查生成的代码;以及
- 仅阻止新增违规,因此交付继续而债务逐步减少。
挑战从第一步开始,因为它应该在团队编写任何规则之前提供价值。
参与
运行:
pipx install archsteer && archsteer xray
Enter fullscreen mode Exit fullscreen mode
然后分享一个令人惊讶的发现,并链接到
GitHub上的ArchSteer,或提交
你能找到的最具体的例子,说明模型在你的架构上出了错。
ArchSteer是免费且采用MIT许可的。
最初发布于 archsteer.com。我构建ArchSteer并欢迎对模型的直率反馈。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.