Managing Software Build Inflation

管理软件构建膨胀

基本信息

  • 批准号:
    RGPIN-2019-06014
  • 负责人:
  • 金额:
    $ 3.5万
  • 依托单位:
  • 依托单位国家:
    加拿大
  • 项目类别:
    Discovery Grants Program - Individual
  • 财政年份:
    2022
  • 资助国家:
    加拿大
  • 起止时间:
    2022-01-01 至 2023-12-31
  • 项目状态:
    已结题

项目摘要

Continuous integration (CI) servers automatically build and test the source code of a project whenever a developer pushes a code change to the version control system, to detect faults and merge conflicts as soon as possible. A CI pipeline consists of a sequence of build stages (e.g., "compile" followed by "test"), each of which comprising one or more parallel build jobs (e.g., "compile" on Java 6 and 7). The behaviour of a build job is specified via build scripts in a domain-specific language like GNU Make. While, conceptually, a CI server is pictured as performing one build for each new code change, in practice its role is much more complex. First of all, the build dashboard of large organizations like Mozilla summarize results for multiple build pipelines. Furthermore, each such pipeline is not run just once for a given code change, but multiple times, since, in each build stage, multiple jobs are run to cover the major configurations of software features and run-time environments the code base is designed for. The large number of features, operating systems, processor models, etc. that the software product should support, yields a combinatorial explosion of build jobs to run for a given code change. The resulting complexity of CI builds not only makes build results harder to interpret, but also increases the build infrastructure cost for organizations, which is a phenomenon that we named "build inflation". Yet, not all builds are equally valuable. For example, a unit test build job failing due to a platform-dependent fault would lead to one build failure and N-1 build successes. While every additional build success does provide some feedback to the organization, developers actually would like to obtain more detailed information about the failing environments. Since even the largest open source or commercial organizations have had to abandon the idea of running builds for each individual code change, this proposal aims to develop innovative methodologies to optimize the cost of builds across all CI pipelines and to improve the interpretation of build failures across configurations and environments: (1) Empirical characterization of build jobs in terms of value and cost. (2) Design of white box build job scheduling approaches, allowing to optimize build job scheduling across feature and environment configurations. (3) Visual summaries of build job results across configurations and environments. (4) Root cause analysis of configuration-(in)dependent build job failures. Given the central role of CI pipelines in modern software development, our research results will be directly applicable by the Canadian industry, providing competitive advantages to both large software companies like Ubisoft, IBM and RIM, and smaller SMEs like Savoir-Faire Linux. The HQP will gain extensive hands-on experience with empirical research techniques and industry-grade CI systems that qualifies them for the much sought after roles of build and release engineers.
持续集成(CI)服务器在开发人员将代码更改推送到版本控制系统时自动构建和测试项目的源代码,以尽快检测错误并合并冲突。CI流水线由一系列构建阶段(例如,“编译”后接“测试”),其中的每一个包括一个或多个并行构建作业(例如,在Java 6和Java 7上编译)。构建作业的行为通过特定于域的语言(如GNU Make)中的构建脚本指定。虽然从概念上讲,CI服务器被描绘为为每个新代码更改执行一个构建,但实际上它的角色要复杂得多。首先,像Mozilla这样的大型组织的构建仪表板总结了多个构建管道的结果。此外,对于给定的代码改变,每个这样的流水线不仅仅运行一次,而是多次运行,因为在每个构建阶段中,运行多个作业以覆盖软件特征的主要配置和代码库被设计用于的运行时环境。软件产品应该支持的大量功能、操作系统、处理器模型等产生了针对给定代码更改运行的构建作业的组合爆炸。CI构建的复杂性不仅使构建结果更难解释,而且还增加了组织的构建基础设施成本,这是我们称之为“构建通货膨胀”的现象。然而,并不是所有的构建都是同样有价值的。例如,由于平台相关的故障而导致单元测试构建作业失败将导致一个构建失败和N-1个构建成功。虽然每一次额外的构建成功都为组织提供了一些反馈,但开发人员实际上希望获得有关失败环境的更详细信息。由于即使是最大的开源或商业组织也不得不放弃为每个单独的代码更改运行构建的想法,因此该提案旨在开发创新方法,以优化所有CI管道的构建成本,并改善对配置和环境中构建失败的解释:(1)构建作业的价值和成本方面的经验表征。(2)设计白色盒构建作业调度方法,允许跨功能和环境配置优化构建作业调度。(3)跨配置和环境的生成作业结果的可视化摘要。(4)配置相关生成作业失败的根本原因分析。鉴于CI管道在现代软件开发中的核心作用,我们的研究成果将直接适用于加拿大行业,为Ubisoft,IBM和RIM等大型软件公司以及Savoir-Faire Linux等小型中小企业提供竞争优势。HQP将获得经验研究技术和行业级CI系统的广泛实践经验,使他们有资格担任构建和发布工程师的角色。

项目成果

期刊论文数量(0)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ monograph.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ sciAawards.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ conferencePapers.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ patent.updateTime }}

Adams, Bram其他文献

cregit: Token-level blame information in git version control repositories
  • DOI:
    10.1007/s10664-019-09704-x
  • 发表时间:
    2019-08-01
  • 期刊:
  • 影响因子:
    4.1
  • 作者:
    Germans, Daniel M.;Adams, Bram;Stewart, Kate
  • 通讯作者:
    Stewart, Kate
Continuously mining distributed version control systems: an empirical study of how Linux uses Git
  • DOI:
    10.1007/s10664-014-9356-2
  • 发表时间:
    2016-02-01
  • 期刊:
  • 影响因子:
    4.1
  • 作者:
    German, Daniel M.;Adams, Bram;Hassan, Ahmed E.
  • 通讯作者:
    Hassan, Ahmed E.

Adams, Bram的其他文献

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

{{ truncateString('Adams, Bram', 18)}}的其他基金

Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPIN-2019-06014
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPAS-2019-00075
  • 财政年份:
    2020
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Accelerator Supplements
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPIN-2019-06014
  • 财政年份:
    2020
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPAS-2019-00075
  • 财政年份:
    2020
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Accelerator Supplements
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPIN-2019-06014
  • 财政年份:
    2019
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPAS-2019-00075
  • 财政年份:
    2019
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Accelerator Supplements
Reverse Engineering a Data Lake for Data Science******
对数据科学的数据湖进行逆向工程*****
  • 批准号:
    537315-2018
  • 财政年份:
    2018
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Engage Grants Program
Empirical Analysis of Build System Smells and Refactorings
构建系统气味和重构的实证分析
  • 批准号:
    RGPIN-2014-04838
  • 财政年份:
    2018
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Empirical Analysis of Build System Smells and Refactorings
构建系统气味和重构的实证分析
  • 批准号:
    RGPIN-2014-04838
  • 财政年份:
    2017
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Empirical Analysis of Build System Smells and Refactorings
构建系统气味和重构的实证分析
  • 批准号:
    RGPIN-2014-04838
  • 财政年份:
    2016
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual

相似海外基金

Leveraging the wisdom of the crowd to build an ecosystem of software ecosystems in the context of polyglot microservices-based applications
在基于多语言微服务的应用程序背景下,利用人群的智慧构建软件生态系统的生态系统
  • 批准号:
    RGPIN-2020-06411
  • 财政年份:
    2022
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Self-Sketching Domain Specific Accelerators: Build Hardware from Software
自绘制领域特定加速器:从软件构建硬件
  • 批准号:
    RGPIN-2018-06795
  • 财政年份:
    2022
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Leveraging the Build System to Support Modern Software Release Practices
利用构建系统支持现代软件发布实践
  • 批准号:
    RGPIN-2016-04350
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPIN-2019-06014
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Collaborative Research: Developing Online Laboratories for Computer Science Students to Learn How to Build Accessible Software and to Use Artificial Intelligence/Machine Learning
合作研究:为计算机科学专业的学生开发在线实验室,以学习如何构建无障碍软件和使用人工智能/机器学习
  • 批准号:
    2111108
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Standard Grant
Collaborative Research: Developing Online Laboratories for Computer Science Students to Learn How to Build Accessible Software and to Use Artificial Intelligence/Machine Learning
合作研究:为计算机科学专业的学生开发在线实验室,以学习如何构建无障碍软件和使用人工智能/机器学习
  • 批准号:
    2111152
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Standard Grant
Self-Sketching Domain Specific Accelerators: Build Hardware from Software
自绘制领域特定加速器:从软件构建硬件
  • 批准号:
    RGPIN-2018-06795
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Leveraging the wisdom of the crowd to build an ecosystem of software ecosystems in the context of polyglot microservices-based applications
在基于多语言微服务的应用程序背景下,利用人群的智慧构建软件生态系统的生态系统
  • 批准号:
    RGPIN-2020-06411
  • 财政年份:
    2021
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
Managing Software Build Inflation
管理软件构建膨胀
  • 批准号:
    RGPAS-2019-00075
  • 财政年份:
    2020
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Accelerator Supplements
Leveraging the wisdom of the crowd to build an ecosystem of software ecosystems in the context of polyglot microservices-based applications
在基于多语言微服务的应用程序背景下,利用人群的智慧构建软件生态系统的生态系统
  • 批准号:
    RGPIN-2020-06411
  • 财政年份:
    2020
  • 资助金额:
    $ 3.5万
  • 项目类别:
    Discovery Grants Program - Individual
{{ showInfoDetail.title }}

作者:{{ showInfoDetail.author }}

知道了