Skip to main content
QUICK REVIEW

[论文解读] Search-Based Software Re-Modularization: A Case Study at Adyen

Casper Schröder, Adriaan van der Feltz|arXiv (Cornell University)|Feb 1, 2021
Software Engineering Research被引用 1
一句话总结

本文针对阿迪安(Adyen)大规模代码库(550万行以上代码)中的软件再模块化问题,开展了一项应用多目标进化优化的案例研究。研究提出了一种新型搜索目标,用于建模传递耦合与构建成本,在可扩展性、模块化质量的可测量提升以及开发人员对推荐结果的验证方面取得成效,但模块移动建议仍不够精确。

ABSTRACT

Deciding what constitutes a single module, what classes belong to which module or the right set of modules for a specific software system has always been a challenging task. The problem is even harder in large-scale software systems composed of thousands of classes and hundreds of modules. Over the years, researchers have been proposing different techniques to support developers in re-modularizing their software systems. In particular, the search-based software re-modularization is an active research topic within the software engineering community for more than 20 years. This paper describes our efforts in applying search-based software re-modularization approaches at Adyen, a large-scale payment company. Adyen's code base has 5.5M+ lines of code, split into around hundreds of modules. We leveraged the existing body of knowledge in the field to devise our own search algorithm and applied it to our code base. Our results show that search-based approaches scale to large code bases as ours. Our algorithm can find solutions that improve the code base according to the metrics we optimize for, and developers see value in the recommendations. Based on our experiences, we then list a set of challenges and opportunities for future researchers, aiming at making search-based software re-modularization more efficient for large-scale software companies.

研究动机与目标

  • 评估基于搜索的再模块化技术在拥有数百万行代码的大型企业系统中的有效性。
  • 解决在快节奏、团队协作开发环境中模块边界常为临时设定所带来的模块化挑战。
  • 将领域特定的、公司内部的度量指标——特别是传递耦合与构建成本——整合到再模块化优化过程中。
  • 评估开发人员对算法推荐在实际工业环境中的感知与实用价值。
  • 识别未来研究在将基于搜索的再模块化扩展至工业软件系统时的关键挑战与机遇。

提出的方法

  • 采用多目标进化优化(具体为 NSGA-III)在数百个模块中探索再模块化解决方案。
  • 定义了一种结合传递耦合与构建成本的新优化目标,反映阿迪安模块缓存系统中的实际性能影响。
  • 在帕累托前沿搜索中引入已知的软件质量度量指标,如内聚性、耦合度与变更频率作为附加目标。
  • 将算法推荐结果过滤并分组为具有代表性的集合,以供开发人员评估,重点聚焦于类移动重构。
  • 通过与模块专家访谈,收集其对推荐结果准确性与实际价值的定性反馈。
  • 提出一种反馈循环机制,将开发人员的感知整合到未来的优化周期中,建议在代码审查过程中集成反馈。

实验结果

研究问题

  • RQ1基于搜索的再模块化技术能否有效扩展至拥有550万行以上代码和数百个模块的企业级代码库?
  • RQ2新型搜索目标(特别是建模传递耦合与构建成本的目标)在提升模块化质量方面的有效性如何?
  • RQ3开发人员在实际应用中对算法生成的再模块化推荐的准确性与价值感知程度如何?
  • RQ4在工业环境中部署基于搜索的再模块化面临哪些关键挑战,应如何应对?
  • RQ5如何系统性地将开发人员反馈整合到优化过程中,以提升推荐的精确度?

主要发现

  • 该基于搜索的方法成功扩展至阿迪安的大规模代码库,生成的解决方案显著改善了耦合度与内聚性等优化度量指标。
  • 结合传递耦合与构建成本的新目标表现出良好的收敛性,并被阿迪安开发人员视为核心要素,从而显著提升了模块缓存效率。
  • 开发人员验证了大多数推荐的类移动重构为准确且具有实用价值,表明算法输出具有很强的实际相关性。
  • 尽管算法能正确识别出位于错误模块中的类,但其建议的重构目标模块往往不够精确,表明需要改进推荐逻辑。
  • 将开发人员反馈整合到优化循环中至关重要,但当前成本较高;未来系统应在代码审查过程中嵌入反馈收集机制,以实现可扩展的、长期的改进。
  • 现有研究往往缺乏在工业环境中的实际验证;本研究强调未来工作需关注领域特定目标与人机协同集成。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。