Kim Herzig

Abstract

We present a design study to describe and mitigate cognitive challenges faced by software engineers using modern, cached, and distributed build systems. Today’s modern build systems distribute and parallelize build tasks across thousands of machines, reusing cached build results whenever possible. Despite the sophisticated nature of modern build tools, the core software architecture of the system under build defines
the lower bound for how fast the system can compile. Long, non-parallelizable build chains or slow individual build targets can introduce expensive compilation bottlenecks. Further, the growing complexity of both build systems and software systems under build makes comprehending, debugging, and optimizing build performance a significant challenge faced by many software engineers. We characterize the performance analysis process and identify the main stakeholders involved, key usage scenarios, and elicit important requirements for tool support. We propose an interactive BuildExplorer tool for understanding, optimizing, and
debugging cached and distributed build sessions, justifying our design decisions among alternative solutions. Our novel solution is evaluated through usage scenario walkthroughs, iterative deployments of the tool in the field, and a user study.