An empirical study of unspecified dependencies in make-based build systems
An empirical study of unspecified dependencies in make-based build systems
复制标题
DOI:
10.1007/s10664-017-9510-8
复制
发表时间:
2017-04
影响因子:
4.1
通讯作者:
C. Bezemer;Shane McIntosh;Bram Adams;D. Germán;A. Hassan
中科院分区:
文献类型:
--
作者:
C. Bezemer;Shane McIntosh;Bram Adams;D. Germán;A. Hassan
Software developers rely on a build system to compile their source code changes and produce deliverables for testing and deployment. Since the full build of large software systems can take hours, the incremental build is a cornerstone of modern build systems. Incremental builds should only recompile deliverables whose dependencies have been changed by a developer. However, in many organizations, such dependencies still are identified by build rules that are specified and maintained (mostly) manually, typically using technologies likemake. Incomplete rules lead to unspecified dependencies that can prevent certain deliverables from being rebuilt, yielding incomplete results, which leave sources and deliverables out-of-sync. In this paper, we present a case study on unspecified dependencies in themake-based build systems of theglib, openldap, linuxandqtopen source projects. To uncover unspecified dependencies inmake-based build systems, we use an approach that combines a conceptual model of the dependencies specified in the build system with a concrete model of the files and processes that are actually exercised during the build. Our approach provides an overview of the dependencies that are used throughout the build system and reveals unspecified dependencies that are not yet expressed in the build system rules. During our analysis, we find that unspecified dependencies are common. We identify 6 common causes in more than 1.2 million unspecified dependencies.