← 最新论文
💻 computer science

ModARO: A Modular Approach to Architecture Reconstruction of Distributed Microservice Codebases

本文提出了 ModARO,一种用于微服务架构重构的模块化方法,该方法能够实现在分布式仓库中创建和复用特定技术的提取器,通过一个经过验证且灵活的框架,有效地解决了架构漂移和文档挑战问题。

原作者: Oscar Manglaras, Alex Farkas, Thomas Woolford, Christoph Treude, Markus Wagner

发布于 2026-02-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Oscar Manglaras, Alex Farkas, Thomas Woolford, Christoph Treude, Markus Wagner

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你是一位庞大且繁忙城市的管理者,这座城市完全由无数微小的、独立的社区组成。每个社区(一个微服务)都由不同的团队建造,使用不同的建筑材料(编程语言)、不同的蓝图(配置)以及不同的风格。虽然这使得城市在构建时非常灵活且快速,但也使得理解整个城市变得异常困难。如果一个社区更改了它的水管系统,会对另一个社区的电网产生什么影响?通常,城市规划者(开发者)会逐渐失去对全局的掌控,而旧的地图(文档)也会变得过时。

本文介绍了一个名为 ModARO 的新工具,它旨在通过观察建筑本身来自动重绘城市地图。以下是其工作原理的简单解释:

1. 问题所在:“一刀切”的困境

想象你有一个机器人,它可以通过阅读蓝图来了解一座房子是如何建造的。

  • 问题: 在微服务世界中,每座房子都不一样。一座是用木头(Java)造的,一座是用钢材(Python)造的,还有一座是用玻璃(Go)造的。一个被编程为阅读木头蓝图的机器人,在面对钢材蓝图时就会失效。
  • 复杂性: 此外,这些社区往往散落在不同的城市(独立的代代码仓库)中。你不能只派一个机器人去观察整个城市;你必须向每个社区分别派遣一个机器人,然后尝试将它们的报告缝合在一起。

2. 解决方案:ModARO(模块化乐高套装)

作者创建了 ModARO,它就像是一个用于构建绘图机器人的通用乐高套装。与其为特定的城市建造一个巨大的、僵化的机器人,不如构建许多细小的、可互换的提取器(Extractors)(即乐高积木)。

  • 提取器: 这些是专门的小型脚本。一个脚本知道如何阅读“木头”蓝图(Java 文件),另一个知道“钢材”(Python),还有一个知道如何阅读“城市规划法”(Docker 配置文件)。
  • 共享语言(模型): 为了让这些不同的脚本相互沟通,它们都会将发现的结果记录在一个共享笔记本(架构模型)中。
    • 类比: 想象“木头”机器人发现了一扇门,并在笔记本中写下“在位置 X 发现门”。“钢材”机器人不需要知道“木头”机器人是如何找到门的;它只需阅读笔记本,看到“门在 X”,然后添加自己的笔记:“门是锁着的”。
    • 因为它们都遵循相同的笔记本格式,所以即使你以后把“木头”机器人换成“竹子”机器人,系统的其余部分仍能正常运行而不发生崩溃。

3. “分布式”的魔力

论文强调了一个独特的功能:分布式架构重构

  • 旧方法: 要绘制整个城市的地图,你必须把每个社区的所有蓝图收集到一个巨大的房间里,进行分类,然后绘制地图。这很慢,并且破坏了社区的“独立性”。
  • ModARO 的方法: 你向社区 A 发送一个机器人。它绘制出属于自己的部分地图并保存。你向社区 B 发送一个机器人。它绘制出属于自己的部分。稍后,当城市准备好部署时,你只需合并这两个局部地图。
  • “追溯链接”: 有时社区 A 会说:“我连接到社区 B”,但它还不知道 B 的地址。ModARO 允许社区 A 写下一个“占位符笔记”(一个链接),写道:“连接到任何名为‘B’的对象”。一旦所有地图合并,系统会自动找到“B”并将点与点连接起来。

4. 它奏效了吗?(测试)

研究人员通过两种方式测试了这个系统:

测试 A:“现实世界”挑战(10 个开源项目)
他们选取了 10 个不同的开源微服务项目(规模大小不一,使用不同的语言),并要求 ModARO 仅根据提供的代码和文档来重建它们的地图。

  • 结果: 它奏效了!ModARO 成功地从多种技术中提取了架构细节(例如哪些服务相互通信、它们使用什么语言以及数据库的位置)。
  • 局限性: 它无法读取“读心术”类的信息(例如,如果代码中没有明确写出,它无法理解某个服务在高级层面上“做什么”),也无法处理那些需要人类直觉才能解码的复杂、动态代码中的信息。

测试 B:人类测试(8 名行业开发者)
他们邀请 8 名专业软件开发者使用 ModARO,并将其与现有的工具 ReSSA 进行对比。

  • 结论: 开发者们更倾向于使用 ModARO。
  • 原因: 他们发现 ModARO 更易于使用,因为它感觉就像是在编写他们熟悉的普通代码,而另一个工具则感觉像是在解一些令人困惑的单行谜题。
  • 不足之处: 他们仍然觉得使用“正则表达式”(一种搜索文本模式的方法)来查找特定代码有些困难。他们希望有更智能的工具能更好地理解代码结构,但他们非常喜欢 ModARO 的整体灵活性。

总结

ModARO 是一个让开发者能够构建小型、可复用的“侦察兵”来探索复杂软件系统不同部分的工具。这些侦察兵将他们的发现记录在一个共享笔记本中,从而使系统能够自动拼凑出完整的架构地图,即使该系统分布在不同的文件夹中或使用了多种不同的编程语言。它让保持“城市地图”实时更新变得更加容易、快速,且不易出现人为错误。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →