Co-evolution of Infrastructure and Source Code - An Empirical Study

TitleCo-evolution of Infrastructure and Source Code - An Empirical Study
Publication TypeConference Proceedings
Year of Publication2015
AuthorsJiang, Yujuan, and Adams Bram
Refereed DesignationRefereed
Secondary Title12th Working Conference on Mining Software Repositories (MSR 2015)
Date Published05/2015

Infrastructure-as-code automates the process of
configuring and setting up the environment (e.g., servers, VMs
and databases) in which a software system will be tested and/or
deployed, through textual specification files in a language like
Puppet or Chef. Since the environment is instantiated automatically
by the infrastructure languages’ tools, no manual
intervention is necessary apart from maintaining the infrastructure
specification files. The amount of work involved with such
maintenance, as well as the size and complexity of infrastructure
specification files, have not yet been studied empirically. Through
an empirical study of the version control system of 265 OpenStack
projects, we find that infrastructure files are large and churn
frequently, which could indicate a potential of introducing bugs.
Furthermore, we found that the infrastructure code files are
coupled tightly with the other files in a project, especially test files,
which implies that testers often need to change infrastructure
specifications when making changes to the test framework and

msrjojo.pdf1.64 MB