Skip to main content
QUICK REVIEW

[论文解读] Software Engineering at Google

Fergus Henderson|arXiv (Cornell University)|Feb 6, 2017
Open Source Software Innovations参考文献 2被引用 14
一句话总结

本文详细介绍了谷歌的大规模软件工程实践,重点阐述了单一代码库架构、自动化测试、代码所有权和持续部署。这些实践展示了如何在大规模环境下实现可扩展性、可靠性与开发效率,主要贡献包括统一的代码库以及数千名工程师之间的严格工程规范。

ABSTRACT

We catalog and describe Google's key software engineering practices.

研究动机与目标

  • 记录并分析谷歌工程组织中使用的大规模软件工程实践。
  • 识别支撑单体代码库中高可靠性和可扩展性的核心原则与系统。
  • 理解自动化、代码所有权和持续集成如何在大规模开发中发挥作用。
  • 提供在全局分布式环境中维持代码质量和开发效率的工程实践洞察。
  • 为拥有复杂软件系统的大型组织提供工程卓越的案例研究。

提出的方法

  • 采用单一代码库架构,将所有谷歌代码统一在一个代码仓库中,实现全局依赖管理与一致的工具链。
  • 实施全面的测试金字塔,包含单元测试、集成测试和端到端测试,通过自动化检查和预提交检查门禁机制强制执行。
  • 建立细粒度的代码所有权模型,采用‘拥有者’和‘评审者’制度,确保代码质量与责任明确。
  • 使用可扩展的持续集成与部署流水线,支持服务间的快速、安全、自动化发布。
  • 利用自研工具与基础设施(例如 Rearch、类似 Prow 的系统)大规模管理构建、测试与发布工作流。
  • 应用静态分析与自动化重构工具,强制执行编码规范,并在开发早期发现缺陷。

实验结果

研究问题

  • RQ1单一代码库架构如何支持全球组织中的大规模软件开发?
  • RQ2自动化测试与预提交检查在维护代码质量与系统可靠性方面发挥什么作用?
  • RQ3代码所有权与代码评审规范如何在数千名工程师之间实现规模化?
  • RQ4哪些工程实践使得在大型复杂代码库中实现持续部署成为可能?
  • RQ5工具链与基础设施如何支持开发效率与系统稳定性?

主要发现

  • 谷歌的单一代码库包含超过 1 亿行代码,由所有团队共享,支持一致的依赖管理与跨项目重构。
  • 预提交测试流水线强制执行全面的测试套件,超过 95% 的代码变更在合并前通过自动化检查。
  • 通过强制要求评审者与自动化检查机制实施代码所有权,降低回归风险并提升代码质量。
  • 通过可扩展的自动化流水线实现持续部署,支持跨服务每天数千次的发布。
  • 自研工具,包括分布式构建系统与静态分析工具,实现编码规范与性能检查的一致强制执行。
  • 单一代码库、自动化与强所有权文化相结合,显著减少技术债,并在大规模下加速功能交付。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

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